GarageBand 10.2 complete install recipe?

New Contributor III

Can anyone suggest a recipe to do a complete installation of GarageBand 10.2 in a multi user, school lab environment on Sierra. App, all sounds and loops, indexed, receipts, no admin login, soup to nuts.

We have tried several of the posted methods with varying degrees of success. Some of the referenced versions and paths for the loops and receipts are different from what I see in fresh installs today.

Seems like the ideal solution would be installing the App as a Mac App Store App via JSS then adding sounds and loops as captured .pkg or .dmg files for all users.

Thank You



I know I am using the App Store extraction script to any of our "base" apps from the App Store

Not sure if this would get you a pkg at least to get started with and then if would need to use composer to ensure sounds, etc. are included as not sure if the App Store install has everything you are looking for

See AppStore Extractor Script

Valued Contributor

Hi there. I've spent many hours..days...doing this. I have my method outlined here on my blog. However, I've changed some things.

1: I now use Carl Ashley's appleLoops installer script for installing the content, I package the script to /usr/local/bin so I can invoke it by typing 'appleloops' in terminal. I set up a local mirror on a network accessible web server using this command

/path/to/appleloops --mirror-paths --apps GarageBand logicpro MainStage -d /path/to/share -m -o

2: When I install Garageband in our labs I push the app and run a quick script I created; as you can see from the script, I have a policy in my jss for appleloops that just installs it to /usr/local/bin if it's not installed.


if [ ! -f "/usr/local/bin/appleloops" ]; then
    echo "Installing Apple-Loops-Install script from JSS"
    /usr/local/jamf/bin/jamf policy -event apple-loops-installer
    /usr/local/bin/appleloops --mute-progress-bar --deployment $4 --pkg-server http://<url-for-loop-share>/appleloops
    if [ ! -f "/usr/local/bin/appleloops" ]; then # Did the install work?
        echo "Unable to install Apple-Loops-Install script, aborting!"
        exit 1
  /usr/local/bin/appleloops --mute-progress-bar --deployment $4 --pkg-server http://<url-for-loop-share>/appleloops


3: The hardest part is actually the indexing. If you follow my blog post, you'll see how I get the indexing to work for all user accounts. It's the same idea with Garageband only. Here's a screenshot of my package for the index NOTE THE KEYCHAINS FOLDER :

I literally just did this last night and it worked perfectly for me.

Valued Contributor

For some reason I cannot edit my post...but the highlighted folder in that image is the Keychains folder. Just create it in composer in ~/Library/Keychains, set the prefs to what you see there.

Oh and the $4 is used for the type of content you want to install using Jamf's script parameters. So you set it to -m, -o, or -m -o (mandatory, optional, both).

The great thing about the method I use now is that I don't have to worry about missing receipts because all of the loops are actually installed instead of being dropped via a pkg or dmg. It takes a but longer (maybe 45-60 minutes depending on computer and bandwidth I guess) but it has worked very well for me..and I don't have to netboot now!

Contributor III

I dont want all of my machines trying to download all of the loops at the same time. What I do is I collect the loops folder and copy the folder to the workstations, I then use a script to install all of the loops. When I install in the lab, all of the loops are installed and the loops are indexed. I keep the folder structure with all of the loops handy to assist in keeping the app up to date. This way I only need to copy the new files and use the script to install them

Valued Contributor

@CapU That's what my old method in the blog did, create a giant package. It became a problem when the receipts needed to be dropped in and you can't do that with SIP, so we decided to install via NetBoot and it worked but it was a pain.

The appleLoops script is great if you set up a local repo for the loops, it keeps traffic internal and it drops the receipts in properly.

Both work though!

New Contributor III

Wanted to update this thread. Thanks to everyone for their input.

Just finished my first run through of @jmahlman method. Think I am 85-90% successful.

Getting GarageBand App into Composer is straightforward.

Used to download sounds and loops - ended up using our cache server as a repository instead of a file share. I have only done a couple tests and this seems to work really well. In general is a very powerful tool and flexible enough to do whatever we need.

My Composer capture of the indexing looks a lot simpler than the one @mahlman posted - more testing needed on my end to see if what I captured is going to work. I am getting some keychain errors and not sure if they are related to GB or something else. I added a Keychain folder to the capture. Anyone have any ideas?

Moving forward - this recipe seems fine for new installs but I have hundreds of GB installs already out there that I may need to "fix". Since most of them should be from the same re-image and should have the same set of loops, I am thinking I could run Composer to capture indexing on those machines then just deploy that package to fix until the next complete reimage.

Valued Contributor

@bzuckrow The method I outlined works with updates and fresh installs.

In order to get the index I did exactly what you stated; install everything, run composer, open Garageband, index, close, check Composer.

You must add the blank Keychains folder or else you'll have password/keychain issues. Not sure why, but I found it doesn't work without it.

New Contributor III

The plot thickens....

Users pointed out that they have MANY other sound files from older versions of GB that they use too. Sound Effects etc. They saved these as .caf files.

What would be the best way to install these .caf files??

It looks like I can copy these to /Library/Audio/Apple Loops/Apple and do a re-index.

Then - What do you think about copying ALL the loop and sounds as .caf files then re-index?? works really well but I am wondering if this would be quicker.

Valued Contributor

@bzuckrow If you have custom sounds, I would say you can either package those up separately and install those after running appleloops, or you can use your method of packaging everything up and grabbing the index.

I decided to move away from my big packaging method for 2 reasons; first, I was not having fun re-creating a 50+ GB package every time loops updated and secondly, the packaging method will not work in the future due to not being able to get the receipts in place.

It is definitely faster to push out a big package than running the appleLoops script but again, this may not work for long.

Valued Contributor

I should add, if you are upgrading your apps, not freshly installing, make sure that there is only one logicpro10XX.plist file in the /Logic Pro I pushed an update package to our test machines and couldn't figure out why it was not seeing the 1040 plist and only seeing the previous version (1032), it was because it had BOTH plist files. So now we just remove Logic then lay a clean app down.