Cache Catalina Upgrade

New Contributor

I have a script that will install Catalina however I'm struggling to get a script working that will cache the "Install macOS" to the applications folder.

I have a copy of the .app and have built a .pkg as well but I can't get a script to deploy either of them.

Can anyone point me in the right direction?


Contributor III

This is a good place to start, covers allot of Catalina install methods.

Legendary Contributor III

What do you mean by "script to deploy either of them"? Maybe that was just a typo, but just in case, you would deploy a .pkg or .dmg file of the installer in a policy, which will drop it into the location specified in the package.

To be sure, it's a large file to deploy, so you may be seeing issues with bandwidth and the process timing out as it pushes the large file down to the Mac. If so, I wish I could offer a good alternative, but other than allowing your users to download Catalina from the Mac App Store, the only other way to get it to their Macs is with a standard package. I don't believe there is a good scripted way to make it download to their machines. If there is, I'd be interested to know how.

Esteemed Contributor II

@mm2270 Once upon a time I "borrowed" the modified and wrapper from erase-install so I could download the Mojave installer directly from Apple's update servers as part of my Mojave update script. I dropped it because every time Apple updated the Mojave installer I had to disable the update item in Self Service until I could qualify the new bits.

New Contributor III

Hi @Beckett ,

I create this script with the jamf helper if you have already cached Catalina .app to the /Application folder. we are using this. I hope it should work for you.


Heading to be used for jamfHelper

heading="Please wait as we prepare your computer for macOS Catalina..."

Title to be used for jamfHelper


This process will take approximately 40-50 minutes.

Once completed your computer will reboot and begin the upgrade."

Icon to be used for jamfHelper

icon=/Applications/Install macOS

Launch jamfHelper

/Library/Application Support/JAMF/bin/ -windowType fs -title "" -icon "$icon" -heading "$heading" -description "$description" &

jamfHelperPID=$(echo $!)

Start macOS Upgrade

/Applications/Install macOS --rebootdelay 2 --agreetolicense --forcequitapps --pidtosignal $jamfHelperPID &

exit 0

New Contributor II


Do you know how to allow temporary caching so you can cache catalina to the Application folder?

New Contributor

@akhan.admin Did you find a way to cache the "Install macOS" to the /Application folder?
Thank you in advance.

New Contributor III

The only way I can think of to cache or place the "Install macOS" to the Applications folder is to build a package that simply copies the file into the Applications folder. Then you can call it later with a script to start the upgrade process.

Valued Contributor


I’ve build a package consisting of the .app

Next year it will be easier as you will be able to run the command to download the installer from the web and it will download the latest version.

New Contributor II

@Ajayv Before messaging you I tried what @smpotter described but its not working.

Valued Contributor

Once I had the complete installer I copied it to the Applications folder.

Then used Composer to package it.

You can scope the install command to:

Machines that you want to upgrade such as “lab 123” and have “cache installer” policy.

This way the user won’t see the “install” until the machine has the .app first.

New Contributor III

@tal - Use VPP to cache the installer in /Applications

Esteemed Contributor II

Using VPP to cache the App Store delivered version of a macOS installer has been problematic in the past due to not always getting the full installer, and if you're using a script like macOSUpgrade it won't work with the stub OS installer that's designed to be run by a user. Has that behavior changed with macOS Catalina?


@atomczynski that is very fascinating! How do you call the Installer after it has been cached? That's the one thing that I haven't been able to wrap my head around? Do you run a Policy to Install the cached package under Maintenance? Please let me know. Intriguing discussion, Gents!

Valued Contributor


I've been using
File and Process

/Applications/Install macOS --agreetolicense  --rebootdelay 90 --forcequitapps


/Applications/Install macOS --agreetolicense  &