Garageband 10.0.3 Deployment Issue

TomDay
Release Candidate Programs Tester

I have a pkg file for garageband 10.0.3 using Rich's method, works perfectly if I run the pkg right on my laptop. However, that same file that is uploaded to the JSS will not work properly. I try via Casper remote and Casper imaging, log files say it installs properly but no installation to be found anywhere on the laptop. 10.0.2 pkg I have installs as designed in all scenarios. I've tried 3 clean downloads from the App store with the method mentioned above. Any thoughts?

54 REPLIES 54

cdev
Contributor III

I've had the same issue with GBand... Wound up using Composer to snapshot the installation to get things to work correctly. The biggest upside is that I could then download all of the extra instruments and loops (which are a separate download once you install the app) and include those in the composer-created image.

davidacland
Honored Contributor II
Honored Contributor II

We use the same app store capture method. I grabbed a 10.0.3 pkg last week on a new project and deployed it using Casper Imaging. All worked ok. Didn't try deploying any other way though.

Not much help but just thought I'd mention it so you know it has worked!

daz_wallace
Contributor III

Hi @TomDay

We use another method to package and deploy Apple iWork and iLife apps (including GarageBand).

We simply package the .app bundle using composer and deploy this and the loops to the end user devices.

All works find, but for updates you'll either need to give the end users' the Apple ID details you used (we don't do this nor recommend it) or you package the update and redeploy.

Keeping the app and extras (such as the loops) is better for us as it allows us to redeploy one or the other as required.

Hope that helps!

Darren

TomDay
Release Candidate Programs Tester

Interesting @cdev, I've seen a number for posts that talk about issues with Computer and iLife/iWork. Glad to hear it worked for you, I'll give it a shot. Thank you.

TomDay
Release Candidate Programs Tester

Working on this now, follow up question on the MASReceipt file. If I delete that out of the contents and then recreate with a dummy file, I shouldn't be promoted on machines that have this deployed with the ID originally used, correct?

if [ -d /Applications/GarageBand.app ];then mkdir -m 755 /Applications/GarageBand.app/Contents/_MASReceipt touch /Applications/GarageBand.app/Contents/_MASReceipt/receipt

1BigGeek
New Contributor III

I just went through the garage band thing last week. We wanted a "complete" install for our labs. In this poor guide the first batch of downloaded packages makes the first prompt to download disappear. The second batch of downloaded packages gets you the entire setup. The packages change every so often as well.

My guide

Maybe this is helpful. YMMV

StoneMagnet
Contributor III

JD,

Thanks, your guide was very helpful.

I don't know if it's due to Dropbox processing your guide PDF, but the postinstall script requires major edits to use due to substitution of what looks like a dash but isn't as the leading character for the command flags. I didn't realize this when editing in BBEdit, but when you paste the script into Composer it deletes them (but doesn't bother to warn you), so it took me a while to figure out why the script looked fine in BBEdit but didn't work.

Unfortunately even after fixing that, and successfully deploying the full GarageBand content package, I'm seeing GarageBand trying to do the initial instrument download when first run on a newly imaged machine.

1BigGeek
New Contributor III

@StoneMagnet Im sorry about the script being all mangled. I'll look for a better way to share that.
I wonder if something has changed since I did my initial work. Everything has to be exact for it to believe it has all the content, which keeps it from prompting. I'm under deadline on another project but I'll come back to this when I'm done and go through it again.

Kumarasinghe
Valued Contributor

StoneMagnet
Contributor III

@Kumarasinghe That Python script is definitely handy. At first I thought it was only a subset of the package files captured by watching the MAS deployment, but it appears several of those files (MAContent10_PremiumPreLoops*.pkg) are simply placeholders for content that actually exists in MAContent10_GarageBandPremiumContent.pkg

@JDP GitHub might be your best bet for posting instructions and an un-mangled script. I wouldn't want you to waste time looking at my mystery initial instrument download until I can determine if it was just a one time error, or if I didn't re-package the installers properly, but you might want to remove the superfluous placeholder content packages mentioned above. I'm in the same boat with priorities and the GarageBand content is down the list a ways. I'll post an update if I find a reproducible cause and/or fix once I get back to this topic.

bpavlov
Honored Contributor

I couldn't get that Python script to run. However, the guide by @JDP seems to be pretty simple and straight forward to follow. It's a shame that Apple doesn't just add these components to the app itself whenever there is an update. It would really make this entire process easier from a deployment perspective. Even as an end-user, who really wants to download an app only to find out there are more updates you need to download after the initial download? Even if it means the app would be bigger than 1GB I would prefer to download 3-5GB at once then having to download them in separate installments as I'm clicking around the app. Oh well, I digress...

rdwhitt
Contributor II

The python script seems to list out everything you need.

$ ./garagebandContent.py list
http://audiocontentdownload.apple.com/lp10_ms3_content_2015/MAContent10_GarageBandCoreContent_v3.pkg
http://audiocontentdownload.apple.com/lp10_ms3_content_2015/MAContent10_GarageBandCoreContent2.pkg
http://audiocontentdownload.apple.com/lp10_ms3_content_2013/MAContent10_GarageBandPremiumContent.pkg
http://audiocontentdownload.apple.com/lp10_ms3_content_2013/MAContent10_GB_StereoDrumKitsSongWriter.pkg
http://audiocontentdownload.apple.com/lp10_ms3_content_2013/MAContent10_GB_StereoDrumKitsAlternative.pkg
http://audiocontentdownload.apple.com/lp10_ms3_content_2013/MAContent10_GB_StereoDrumKitsRock.pkg
http://audiocontentdownload.apple.com/lp10_ms3_content_2013/MAContent10_GB_StereoDrumKitsRnB.pkg
http://audiocontentdownload.apple.com/lp10_ms3_content_2013/MGBContentCompatibility.pkg

I downloaded and installed each of those packages and everything in GarageBand seemed to be enabled.

bpavlov
Honored Contributor

Those aren't all the packages though:

lp10_ms3_content_2015
MAContent10_GarageBandCoreContent2.pkg
MAContent10_GarageBandCoreContent_v3.pkg
MAContent10_PremiumPreLoopsChillwave.pkg
MAContent10_PremiumPreLoopsDeepHouse.pkg
MAContent10_PremiumPreLoopsDubstep.pkg
MAContent10_PremiumPreLoopsElectroHouse.pkg
MAContent10_PremiumPreLoopsGarageBand.pkg
MAContent10_PremiumPreLoopsHipHop.pkg
MAContent10_PremiumPreLoopsJamPack1.pkg
MAContent10_PremiumPreLoopsModernRnB.pkg
MAContent10_PremiumPreLoopsRemixTools.pkg
MAContent10_PremiumPreLoopsRhythmSection.pkg
MAContent10_PremiumPreLoopsSymphony.pkg
MAContent10_PremiumPreLoopsTechHouse.pkg
MAContent10_PremiumPreLoopsWorld.pkg

lp10_ms3_content_2013
MAContent10_GB_StereoDrumKitsAlternative.pkg
MAContent10_GB_StereoDrumKitsRnB.pkg
MAContent10_GB_StereoDrumKitsRock.pkg
MAContent10_GB_StereoDrumKitsSongWriter.pkg
MAContent10_GarageBandPremiumContent.pkg

I tried running the python script but kept getting an error. Fully patched 10.10.4 machine running GarageBand 10.1.0.

bpavlov
Honored Contributor

Just in case anyone is wondering, the packages do need to be installed in a specific order (basically by the date last modified of each package) which as of today looks like this. If you don't do it this way then some of the loops will not install and will need to be re-installed.

lp10_ms3_content_2015
MAContent10_GarageBandCoreContent_v3.pkg
MAContent10_PremiumPreLoopsChillwave.pkg
MAContent10_PremiumPreLoopsDeepHouse.pkg
MAContent10_PremiumPreLoopsDubstep.pkg
MAContent10_PremiumPreLoopsElectroHouse.pkg
MAContent10_PremiumPreLoopsGarageBand.pkg
MAContent10_PremiumPreLoopsHipHop.pkg
MAContent10_PremiumPreLoopsJamPack1.pkg
MAContent10_PremiumPreLoopsModernRnB.pkg
MAContent10_PremiumPreLoopsRemixTools.pkg
MAContent10_PremiumPreLoopsRhythmSection.pkg
MAContent10_PremiumPreLoopsSymphony.pkg
MAContent10_PremiumPreLoopsTechHouse.pkg
MAContent10_PremiumPreLoopsWorld.pkg
MAContent10_GarageBandCoreContent2.pkg

lp10_ms3_content_2013
MAContent10_GarageBandPremiumContent.pkg
MAContent10_GB_StereoDrumKitsAlternative.pkg
MAContent10_GB_StereoDrumKitsRock.pkg
MAContent10_GB_StereoDrumKitsRnB.pkg
MAContent10_GB_StereoDrumKitsSongWriter.pkg

GabeShack
Valued Contributor III

I re-typed up the script from @JDP and put the packages in order based on the post from @bpavlov .
I have not tested this yet, but am about to and will update the post.

#!/bin/sh
freeSpace=`df -k /tmp | tail -1 | awk '{print $4} '`

if (("$freeSpace" > "16000000"))
then
sleep 5
/usr/sbin/installer -pkg /private/tmp/MAContent10_GarageBandCoreContent_v3.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsChillwave.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsDeepHouse.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsDubstep.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsElectroHouse.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsGarageBand.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsHipHop.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsJamPack1.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsModernRnB.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsRemixTools.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsRhythmSection.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsSymphony.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsTechHouse.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_PremiumPreLoopsWorld.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_GarageBandCoreContent2.pkg -target /
sleep 5
/usr/sbin/installer -pkg /private/tmp/MAContent10_GarageBandPremiumContent.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_GB_StereoDrumKitsAlternative.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_GB_StereoDrumKitsRock.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_GB_StereoDrumKitsRnB.pkg -target /
/usr/sbin/installer -pkg /private/tmp/MAContent10_GB_StereoDrumKitsSongWriter.pkg -target /
else
echo "You must have more than 15.25GB free to install GarageBand additional content.  Aborting install and cleaning up packages"
exit 1      ## Failure
fi
sleep 5
rm -rf /private/tmp/MAContent10_GarageBandCoreContent_v3.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsChillwave.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsDeepHouse.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsDubstep.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsElectroHouse.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsGarageBand.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsHipHop.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsJamPack1.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsModernRnB.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsRemixTools.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsRhythmSection.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsSymphony.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsTechHouse.pkg
rm -rf /private/tmp/MAContent10_PremiumPreLoopsWorld.pkg
rm -rf /private/tmp/MAContent10_GarageBandCoreContent2.pkg
rm -rf /private/tmp/MAContent10_GarageBandPremiumContent.pkg
rm -rf /private/tmp/MAContent10_GB_StereoDrumKitsAlternative.pkg
rm -rf /private/tmp/MAContent10_GB_StereoDrumKitsRock.pkg
rm -rf /private/tmp/MAContent10_GB_StereoDrumKitsRnB.pkg
rm -rf /private/tmp/MAContent10_GB_StereoDrumKitsSongWriter.pkg

exit 0      ## Success

This works flawlessly when run as Install at Reboot!
Gabe Shackney
Princeton Public Schools

Gabe Shackney
Princeton Public Schools

jacob_salmela
Contributor II

I have been working on something similar that will download all the .pkgs for all the content for both Logic and GarageBand. Initial tests look promising.

GabeShack
Valued Contributor III

I tested pasting this script into the postinstall section after making the pkg of all the individual pkg's per @JDP s instructions. All works fine when running this with Casper. Thanks!

Gabe Shackney
Princeton Public Schools

Gabe Shackney
Princeton Public Schools

apizz
Valued Contributor

Thanks to all the contributors to this thread. I didn't realize right up before I started imaging our laptop carts that my Garageband install .dmg was not including all the loops I thought I grabbed via snapshot.

Thanks for the BIG save :)

apizz
Valued Contributor

So I did a test of this and it's not recognizing either the essential or additional 'premium' loops. I have just the Garageband .pkg that I grabbed from the App Store download / Debug menu and the essential & premium loops .pkg w/ postinstall script as outlined in previous posts.

I install both during Imaging but when Garageband opens it doesn't recognize either. Should both these be installed after imaging? Garageband during imaging and the essential and additional loops immediately after imaging? Via policy at login?

Thanks in advance.

GabeShack
Valued Contributor III

The script must be bundled with the pkg installer created from all the individual GarageBand downloads. Then I have it install at boot after imaging checked in Casper admin.

Gabe Shackney
Princeton Publuc Schools

Gabe Shackney
Princeton Public Schools

apizz
Valued Contributor

Thanks, @gshackney. I have the script already bundled with the pkg installer for the loops, but did not have them install at boot after imaging. Will give that a shot and report.

apizz
Valued Contributor

Woot! Worked like a charm. Was worried at the end because of how long the post image installation took, but I guess there's a lot of GBs. Still ...

So you have to install all the loops post image for it to work. Good to know. Thanks again, @gshackney

GabeShack
Valued Contributor III

Yea takes awhile, but worth it if it works properly.

Gabe Shackney
Princeton Public Schools

Gabe Shackney
Princeton Public Schools

mtward
New Contributor III

@gshackney @aporlebeke @jacob_salmela @JDP

EDIT: retracted because I didn't read correctly at first! It seems like a combination of @JDP's PDF of the process and @gshackney's script, it gets the job done. Thanks

jacob_salmela
Contributor II

@mtward I just used this script the other day to deploy to an existing Mac with GarageBand/Logic. I used the script to download and the .pkgs and then made them available the the JSS for deployment. You can pick and choose which loops/sounds/lessons to install by commenting out ones you do not need.

mtward
New Contributor III

@jacob_salmela Thanks! As I made my edit above I've got your script running on one Mac, almost finished. So all the pkg's will be in /tmp when finished.

I don't know if I even need to pick through them, do I? If I were to take all of the pkgs that your script downloads, throw them into composer and make one big package and deploy out to all macs with GarageBand, that seems like it would work.

You mentioned that some of these are Logic files though, but don't those cross back and forth between both Garageband and Logic?

Does your script get the files that are downloaded when going to "GarageBand > Update Sound Library..."?

Thanks!

Nix4Life
Valued Contributor

@JDP's guide plus installPKG gets the job done. use 3 line postinstall script (w/installPKG)to install Garageband app, then the 2013 pkgs then the 2015pkgs. one neat pkg that gets it done

LSinNY

musat
Contributor III

I tried running the Python script today and am getting the error:

Traceback (most recent call last):
  File "./download-gb-content.py", line 230, in <module>
    sys.exit(main())
  File "./download-gb-content.py", line 206, in main
    gb_plist = download_gb_plist()
  File "./download-gb-content.py", line 82, in download_gb_plist
    raise ProcessorError("Can't download %s: %s" % (base_url, e))
NameError: global name 'ProcessorError' is not defined

I had already downloaded the files using a different method (utilizing proxy server logs), but I wanted to make sure that I had everything. Everything is working so I think I do, but it would be nice to have a script to double check later on.

jacob_salmela
Contributor II

@musat you can try my bash script that downloads all the Garageband content. I have had good luck with it.

apizz
Valued Contributor

Because of Apple's certs expiring (Rich's post) - I've been redownloading all of the packages we grabbed from the Mac App Store. As a result I've revisited the Garageband packaging process. As far as I can tell, below is now the current list of loop packages:

# Core Content
MAContent10_GarageBandCoreContent2.pkg

# Additional Content
MAContent10_GarageBandPremiumContent.pkg
MAContent10_GB_StereoDrumKitsAlternative.pkg
MAContent10_GB_StereoDrumKitsRnB.pkg
MAContent10_GB_StereoDrumKitsRock.pkg
MAContent10_GB_StereoDrumKitsSongWriter.pkg

Seems that the long laundry list of core content PKGs have been bundled into a new, single PKG?

EDIT: I was mistaken. Looks like some packages had been installed on the machine I was using previously, thus my much shorter list of PKGs. Or perhaps a bit of wishful thinking ...

donmontalvo
Esteemed Contributor III

@jacob_salmela your script was extremely useful, thanks!

--
https://donmontalvo.com

jacob_salmela
Contributor II

@donmontalvo No problem! I was just about to respond to this to let you know I found all the URLs. for the new 2016 content.

apizz
Valued Contributor

@jacob_salmela I just used your AWESOME script to download all the Garageband content, however I found one small typo which would only affect folks who uncommented out the installer -pkg portion of the 2016 content section:

echo "** Downloading 2016 content..."
for ((i = 0; i < "${#content2016[@]}"; i++))
do
    echo "Downloading ${content2016[$i]}..."
    curl -o "$downloadFolder"/"${content2016[$i]}" http://audiocontentdownload.apple.com/lp10_ms3_content_2016/"${content2016[$i]}"
    TYPO IN THIS LINE ---> #installer -pkg "$downloadFolder"/"${content2013[$i]}" -target /  <--- TYPO IN THIS LINE
done

It looks like it should be installer -pkg "$downloadFolder"/"${content2016[$i]}" -target / instead of content2013.

jacob_salmela
Contributor II

@aporlebeke no problem! I'm glad it was useful. (I fixed the typo--thanks for catching it).

apizz
Valued Contributor

@jacob_salmela :)

One other small thing - I know you specify /tmp as the download directory for the PKG downloads, but when I changed to a different directory I got an error in the part of the script when trying to extract the .tar file because of the explicit use of the /tmp for extraction.

Original here:

echo "** Downloading legacy content..."
for ((i = 0; i < "${#legacyContent[@]}"; i++))
do
    filename=$(echo "${legacyContent[$i]}" | awk -F'/' '{print $NF}')
    if [[ "$filename" = "GarageBandExtraContent.tar" ]];then
        echo "Downloading $filename..."
        curl -o "$downloadFolder"/"$filename" "${legacyContent[$i]}"
        # Unarchive to get the .pkg
        tar -xf "$downloadFolder"/"$filename" -C /tmp
        filenamePkg=$(echo "$filename" | cut -d'.' -f-1)
        tar -xf "$downloadFolder"/"$filenamePkg".pkg.tar -C /tmp
        #installer -pkg "$downloadFolder"/"$filenamePkg".pkg -target /
    else
        echo "Downloading $filename..."
        curl -o "$downloadFolder"/"$filename" "${legacyContent[$i]}"
        #installer -pkg "$downloadFolder"/"${legacyContent[$i]}" -target /
    fi
done

Updated for the specified download directory here. I also added the removal of the original .tar and extracted .pkg.tar file so as to only leave you with the final desired PKG.

echo "** Downloading legacy content..."
for ((i = 0; i < "${#legacyContent[@]}"; i++))
do
    if [[ "$filename" = "GarageBandExtraContent.tar" ]];then
        echo "Downloading $filename..."
        curl -o "$downloadFolder"/"$filename" "${legacyContent[$i]}"
        # Unarchive to get the .pkg
        tar -xf "$downloadFolder"/"$filename" -C "$downloadFolder"
        filenamePkg=$(echo "$filename" | cut -d'.' -f-1)
        tar -xf "$downloadFolder"/"$filenamePkg".pkg.tar -C "$downloadFolder"
        # rm -rf "$downloadFolder"/"$filenamePkg".pkg.tar
        # rm -rf "$downloadFolder"/"$filenamePkg".tar
        # installer -pkg "$downloadFolder"/"$filenamePkg".pkg -target /
    else
        echo "Downloading $filename..."
        curl -o "$downloadFolder"/"$filename" "${legacyContent[$i]}"
        #installer -pkg "$downloadFolder"/"${legacyContent[$i]}" -target /
    fi
done

I would make all these recommendations via pull requests, but I haven't really learned the git commands and processes outside of a basic tutorial video some months ago. On my to-do list :)

Thanks again

jacob_salmela
Contributor II

@aporlebeke fixed! Thanks. I have been using git for a long time and I still don't get it!

JesseNCSD
New Contributor III

@jacob_salmela @donmontalvo Et al.

I used to be able to get a core install of GB 10.1 to ~20 packages and a fair amount of content with no nagging prompts, like @bpavlov's post mentioned above.

Jacob's script has a metric ton of content comparatively speaking! Is there an optimized subset of this stuff? Do they have to install in a certain order?

For you folks installing the GB content with 10.x - are you wrapping this huge list of stuff in a container and installing it all or what? Letting GB install an index all the content and then building a compiled package? (A la this post)

I prefer the packages to building a monolithic package, but Jacob's list is a little larger than I expected.

jacob_salmela
Contributor II

@JesseNCSD It does download a ton of stuff! I also just updated the script and added the Chinese loops from GarageBand 10.1.2.

It's been a while since I have installed it, but I do recall there being a certain order of them but I don't know the validity of that claim.

jacob_salmela
Contributor II

Oh and if you don't want all of the content, you could probably skip the Instrument lessons and the Logic content. That would reduce the overall size of everything.