Best Practices to Package Garageband 10.3.2 with All Loops?

dwaterbury
New Contributor III

Hi Everyone,
After 2 years of using an older package of Garageband with All Loops, it's time for me to repackage it and I'm wondering how to best do it. In the past, I created a 10Gig+ package of Garageband and all the loops using Composer (this is why it's been 2 years). The music teachers want the students to have access to all the loops and since we have Standard accounts it makes it easier if Garageband is just ready to go without Admin privileges to install the loops later.

Should I try to install Garageband using Mac Apps Store and then try to push the loops after? We don't assign the students Apple IDs so I'm not sure if I can push out Garageband directly to devices. I had tried in the past but did not seem to have success. And then where would I find the loops? They seem to be buried in various locations.

Thank you in advance for any advice and guidance.

62 REPLIES 62

chrisdaggett
Contributor II

@scerazy Very unfortunate that Carl Ashley chose to scrub the internet of all his work rather than pass it on to the community. Hopefully somebody has a copy saved locally and we can modify it among the JAMF Community to keep it going.

GabeShack
Valued Contributor III

Looks like internet archive to the rescue:
https://archive.org/details/github.com-carlashley-appleloops_-_2019-12-18_10-55-41

Gabe Shackney
Princeton Public Schools

Gabe Shackney
Princeton Public Schools

scerazy
New Contributor III

To open v2 git bundle .bundle that is inside the archive... on Windows

Download portable:
https://git-scm.com/download/win

"Unbundle":
https://statagroup.com/articles/git-bundle

W:	empPortableGit>git clone ../carlashley-appleloops_-_2019-12-18_10-55-41.bundle
Cloning into 'carlashley-appleloops_-_2019-12-18_10-55-41'...
Receiving objects: 100% (462/462), 21.31 MiB | 33.93 MiB/s, done.
Resolving deltas: 100% (233/233), done.

But surely somebody has the latest master.zip available? Because it is not here:
https://web.archive.org/web/20210117105359/https://github.com/carlashley/appleLoops/

or one can use https://github.com/davidteren/lpx_links but changing file_helpers.rb to read:

  def logic_app_path
    '/Applications/GarageBand.app/Contents/Resources'
  end

  # Returns current filename: i.e. 'logicpro1040.plist'
  def plist_file_name
    `cd '#{logic_app_path}' && find . -name  garageband1021.plist`

Luke_cater
New Contributor III

I see Carl Ashley is no longer supported. Though I would have a go getting ideas from other people in the thread. 

This is what I came up with for Mandatory loops and the same can be done for all sounds. 

Feedback always welcome :-)

#!/bin/sh
#
#

# Create directory /tmp/jamf, continue if directory already exists
mkdir /tmp/jamf || :

# Change directory to /tmp/jamf
cd /tmp/jamf

#Download installer container into /tmp/jamf
# -O downloads file without changing its name

curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0048_AlchemyPadsDigitalHolyGhost.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0310_UB_DrumMachineDesignerGB.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0312_UB_UltrabeatKitsGBLogic.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0314_AppleLoopsHipHop1.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0315_AppleLoopsElectroHouse1.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0316_AppleLoopsDubstep1.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0317_AppleLoopsModernRnB1.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0320_AppleLoopsChillwave1.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0321_AppleLoopsIndieDisco.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0322_AppleLoopsDiscoFunk1.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0323_AppleLoopsVintageBreaks.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0324_AppleLoopsBluesGarage.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0325_AppleLoopsGarageBand1.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0354_EXS_PianoSteinway.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0357_EXS_BassAcousticUprightJazz.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0358_EXS_BassElectricFingerStyle.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0371_EXS_GuitarsAcoustic.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0375_EXS_GuitarsVintageStrat.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0482_EXS_OrchWoodwindAltoSax.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0484_EXS_OrchWoodwindClarinetSolo.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0487_EXS_OrchWoodwindFluteSolo.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0491_EXS_OrchBrass.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0509_EXS_StringsEnsemble.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0536_DrummerClapsCowbell.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0537_DrummerShaker.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0538_DrummerSticks.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0539_DrummerTambourine.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0540_PlugInSettingsGB.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0554_AppleLoopsDiscoFunk2.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0557_IRsSharedAUX.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0560_LTPBasicPiano1.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0593_DrummerSoCalGBLogic.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0597_LTPChordTrainer.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0598_LTPBasicGuitar1.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0615_GBLogicAlchemyEssentials.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0637_AppleLoopsDrummerKyle.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0646_AppleLoopsDrummerElectronic.pkg
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/MAContent10_AssetPack_0910_PlugInSettingsGBLogic.pkg

# Run installer package with the boot drive as the destination

for pkg in $( ls /tmp/jamf/*.pkg ); do
    echo "Installing $pkg"
    installer -pkg $pkg -target /
done

# Clean up

rm -r /tmp/jamf

 

 

MALmen
New Contributor III

Hello Luke. How can this be done for all sounds? :) And how can we keep it up to date?

PaulHazelden
Valued Contributor

I have given up on automating it. Once a term I will set up a fresh Mac in my Test group and install GarageBand, and then capture the loops pkg files. Then build an installer to install them all. I do the same with Logic. I find it always works that way, and only takes me a week to sort them both out and get them uploaded to the server for distribution. There is a lot of waiting involved, so its done over a week, not taking me a full time week.

MALmen
New Contributor III

Do you capture with composer? I have no luck capturing any files garageband is downloading. Do you know where it is stored?

PaulHazelden
Valued Contributor

No I dont use Composer to capture them.

First run GarageBand, and it will want to install the essential sounds, let it, but do not put in your admin password to install them. It will download them all though.

Then go to /private/var/folders. In here you will have a bunch of folders with two charecter names. What you need to do at this point is to go to the View Menu at the top of the screen and then choose View Options for that folder, and then tick to calculate all sizes. Sit back and wait for it to do so. One of those folders will show up with a few Gb in it, that is the one you want. Follow the big folder down. I think on mine it is in a folder called q_, and then a great long line of charecters, and then a folder called 0, and in there will be the one with all the stuff you want.

There will be two types of files, the pkg's are the ones you want, I usually copy them to a folder on the desktop. Dont move them, you want them to still be there to actually install.

Once you have a copy of them all, then go ahead and let GarageBand install them.

At this point I will normally reboot the Mac, I want the Admin authorisation to install to be totally gone for the next step.

Open GB again and tell it to download and install the sounds, but the same as with the essential sounds you want it to stop before it installs the files. Back to the same location and copy out the huge folder full of pkg files.

Now comes the fun bit...

I break them into folders with about 5Gb max size, and put them in a location where you can access them on all the Macs they are going to. I have a place in the var folder that I use, but you can use the tmp folder if you want. Then use Composer to make an individual pkg of each of these folders. i think I get 5 for GB and 14 for Logic. Then a post install script to install all of them.

Dont upload them all as their individual pkg files to your Jamf server - the Logic one has close to 900 pkg files in it, and I for one do not want to hunt through those looking for something to add to a policy or try to add 900 pkg's to a policy.

# Install the pkg files found in a temp location

for PKG in $(ls "<path/to/files>" | grep "pkg$")
do
/usr/sbin/installer -pkg <path/to/files>/"$PKG" -tgt / -allowUntrusted
# Then it will remove the installers
rm -Rf <path/to/files>/"$PKG"
done

 

I use this script to loop through the pkg files and install them and then delete them as I go. Works well, you can also use a Parameter for the Path, and then use the same script set to run after with a different parameter to provide the correct path to each of your folders.

I limit the size to the 5 Gb to make it work better. there used to be a 5Gb limit on files, I believe this is higher now. The whole thing appears to move along at that size, uploading to the server, replicationg to distribution points, sending out to the Macs for installation, and installing them.

Hope this helps

MALmen
New Contributor III

Thank you for the info! :)

MALmen
New Contributor III

I have tried this and got all the files mentioned for the basic loops, but after installation GarageBand still want admin right to install the loops :/

PaulHazelden
Valued Contributor

It will be the progress bar, still has the install in progress.
Open GB and then in the center at the top will be the LCD screen thing. The bottom line of this is a progress bar. Click on it and then cancel everything. It should be happy. It will only be there for the users who have tried the download without Admin permission. Anyone who has ignored it or refuesed it will have nothing there and no problems.
It is not obvious that it is a progress bar, but it is.

Luke_cater
New Contributor III

Hi Malmen, 

I haven't found a way of automating it but it looks like Apple my have a script for us now as per cvangorp post. My version was the same as other people just skipping the composer bit. 

Once GB is installed, click download all sound but don't install! Then go to /private/var/folders find all the pkg's then I just copied them into excel and added the first part of the URL. That then gave me the full path. 

cvangorp
New Contributor III

Reach out to your Apple SE or Apple Rep, they now have developed script available by request. Their licensing doesn't allow sharing of the script by you can ask for it.   Very similar to Carl's script.  Is meant to work with MDM's and works with GB and Logic. I have yet to use but received it earlier this spring.

Luke_cater
New Contributor III

Hi @cvangorp I spoke to multiple people at Apple and they couldn't find any scripts to give. They said they can create one but it would cost $$$. Do you have any sort of reference I can use? Or did you pay for this service?

GabeShack
Valued Contributor III

I believe I can supply it. Let me just check first

Gabe Shackney
Princeton Public Schools

MALmen
New Contributor III

that would be awesome! 

Were you able to find out if you could supply it?

GabeShack
Valued Contributor III

I am not able to supply it but you do need to speak with your SE from Apple and they can provide it.

Gabe Shackney
Princeton Public Schools

cvangorp
New Contributor III

Script is called GB loops, I got it as it was mentioned via our monthly webex meeting with Apple SE for Higher Ed and if we wanted it to let our SE know.   I had mentioned it to our Apple SE over a year ago that I was looking for something like this to replace Carl's script.

Luke_cater
New Contributor III

Thanks @cvangorp but Apple is not willing to supply the script unless you have at least enterprise support, which from my understanding gives you an SE. For those in same boat as me and not able to afford this service I have three methods. 

1. You could use the script I posted earlier in the thread but may need to be checked when there is an update to GB. 

2. This won't install the loops before hand but a standard user can click install with out having to enter creds and the same if the user attempted to install all sounds at a later date. 

/usr/bin/security authorizationdb write system.install.apple-software allow

 3. Digging into GB a bit further I found a plist which gave me all the pkg names. which I could then curl ( Little more automated than method 1) Also note its about 40GB in total so can take a while to download and install. 

# Create directory /tmp/jamf, continue if directory already exists
mkdir /tmp/jamf || :

# Change directory to /tmp/jamf
cd /tmp/jamf

#Download installer container into /tmp/jamf
# -O downloads file without changing its name

# Current Plugins and Sounds
for line in $(/usr/bin/defaults read /Applications/GarageBand.app/Contents/Resources/garageband*.plist Packages | /usr/bin/grep "DownloadName" | awk '{ print $3 }' | sed 's|["";,]||g' | grep -v "lp10_ms3_content")
do
curl -O https://audiocontentdownload.apple.com/lp10_ms3_content_2016/$line
done

#Legacy Plugins and Sounds

cd /tmp/jamf

for line in $(/usr/bin/defaults read /Applications/GarageBand.app/Contents/Resources/garageband*.plist Packages | /usr/bin/grep "DownloadName" | awk '{ print $3 }' | sed 's|["";,]||g' | grep '../lp10_ms3_content_2013' | sed 's/^.\{3\}//')
do
curl -O https://audiocontentdownload.apple.com/$line
done

# Run installer package with the boot drive as the destination

for pkg in $( ls /tmp/jamf/*.pkg ); do
echo "Installing $pkg"
installer -pkg $pkg -target /
done

#Clean up

rm -r /tmp/jamf


 

GabeShack
Valued Contributor III

I don’t have enterprise support. The sales rep can refer you to your specific SE. you don’t need to pay a dime. It’s free. Just need to reach out to them. 

Gabe Shackney
Princeton Public Schools

Luke_cater
New Contributor III

3rd times a charm. Got the script. 

Thanks @GabeShack and @cvangorp 

hodgesji
Contributor

For those that weren't aware, I believe the appleLoops tool has been deprecated and there is a new tool on CarlAshley's github: 
https://github.com/carlashley/loopdown