Home > Mac administration, Mac OS X > Downloading installer packages from the Mac App Store with AppStoreExtract

Downloading installer packages from the Mac App Store with AppStoreExtract

As part of my work, I occasionally need to download installer packages for certain applications from the Mac App Store. In particular, I routinely download and archive certain Apple applications from the MAS to guard against the possibility that Apple will remove older versions of a particular application that I still need to have available.

A tool that has helped me with this has been Max Schlapfer‘s AppStoreExtract script. This script is designed to make copies of the installers from the Mac App Store, and is able to handle multiple installer downloads at once.

AppStoreExtract is available from GitHub at the following address:

https://github.com/maxschlapfer/MacAdminHelpers

For more details on how to download installers from the MAS using AppStoreExtract, see below the jump.

1. If needed, download the AppStoreExtract script and store it in a convenient location.

2. Once the AppStoreExtract script is available, open the Mac App Store and sign in with the appropriate Apple ID for the applications in question.

3. Open Terminal and begin running the script.

Screen Shot 2015 11 19 at 1 56 32 PM

Note: Run the script with the logged-in user’s privileges. Do not run this script with root privileges, as the script will not locate the appropriate Mac App Store download folder when running as root.

4. You’ll be notified that you can press any key to finish the process once the software has been downloaded from the MAS.

Screen Shot 2015 11 19 at 2 53 26 PM

5. Go to the Mac App Store’s Purchased list.

Screen Shot 2015 11 19 at 2 43 08 PM

6. Click the Install button for the desired application(s).

Screen Shot 2015 11 19 at 12 58 21 PM

7. Wait for the MAS to complete installation of all the desired applications.

Screen Shot 2015 11 19 at 2 36 02 PM

8. Go back to Terminal and press any key.

9. When prompted to finalize the packages, press the Y key followed by the Return key on your keyboard.

10. The script will rename the downloaded installers to match the application name and version, then create a disk image with the installer package contained inside.

Screen Shot 2015 11 19 at 1 48 00 PM

11. The disk images will be stored in /Users/Shared/AppStore_Packages

Screen Shot 2015 11 19 at 1 49 29 PM

Screen Shot 2015 11 19 at 1 49 49 PM

These downloaded installers will be signed with the Mac App Store’s certificate. From there, you can use it on its own or as part of a deployment workflow.

Screen Shot 2015 11 19 at 1 50 03 PM

Screen Shot 2015 11 19 at 1 49 57 PM

When the applications in question are installed on a Mac using the downloaded installer package, there will not be a _MASReceipt from the App Store included as part of the application. This means that the applications are not tied to a specific Apple ID.

  1. November 19, 2015 at 9:36 pm

    Thanks for this great tutorial! Very handy.

  2. November 19, 2015 at 10:16 pm

    You can also use this tool to capture update packages by going to the Updates tab instead of the Installers tab, but of course it will only serve you the diff between the previously installed version and the new one.

  3. Joss Brown
    November 19, 2015 at 11:07 pm

    How would removing the _MASReceipt be of any use? I can understand that this (probably) works for keeping older versions of freeware that you downloaded from the AppStore—and I do think that’s a great option—, but in your example (in the image above) you’re downloading Keynote, Numbers & Pages: these are apps you need to pay for, so they will only run when they’re linked to your AppStore account, or any other AppStore user who’s a registered buyer of those apps. Or am I missing something?

    Your readers should also note that removing the _MASReceipt might be illegal in their respective countries; it is illegal in Germany… as long as it’s for personal and private use (incl. copies for family & close friends) it’s not enforced by penalty, but it’s still de facto illegal.

  4. November 20, 2015 at 3:04 pm

    This is beyond awesome, thanks!

  5. December 1, 2015 at 3:19 pm

    Holy wah! This is awesome. Thanks Rich, and Max!

  6. MiqViq
    December 9, 2015 at 3:38 pm

    Developer Max kindly added a method (just add argument -m, like ‘AppStoreExctract.sh -m’) for saving the package file formatted as “KeyNote-6.6.1.pkg” as this is much more munki-friendly way of naming the packages.

  7. Zesa
    April 20, 2016 at 7:52 am

    In any apps, I take the message that the app is damage. (after installation the dmg). I try it on different clients.

  8. Kat
    February 22, 2017 at 5:18 pm

    THIS IS AMAZING. HOLY WOW. hey thanks.

  9. Anne
    March 6, 2017 at 11:15 pm

    This is excellent. I haven’t been using this extract script long enough to test what happens when there’s an update to the app that I’ve packaged using that method. Does the App Store recognize there’s an update?

    • Jesse
      June 14, 2017 at 4:25 pm

      Because it is not tied to an Apple ID, it will not automatically update via the App Store.

  10. sunlite
    November 11, 2017 at 1:54 am

    Dear All – all apps installed using the extracted dmg file are receiving the message that suggest the application is damaged. Any one else get this? Any suggestions on how to resolve this?

    • Darin
      February 6, 2018 at 4:09 pm

      To piggy back on sunlite’s question – recently I’ve been getting a “find: /var/volders/zz/zyxvpxv16cs (omitted for space): No such file or directory”. I’ve used this wonderful script with success in the past but now I get this. Any ideas? Or has Apple gotten wise and shut it down?

      • zesa0
        February 15, 2018 at 9:11 am

        Same here 😦

  11. Jay
    November 28, 2018 at 4:44 pm

    looks like apple got wise and shut it down

    • Joss Brown
      November 28, 2018 at 8:22 pm

      Still working fine here.

  12. Naveed Abbas
    March 9, 2019 at 3:43 pm

    If you try to run this script on Mojave, you’d have to add “sh” before command (example $ sh AppStoreExtract.sh)

  13. JC
    May 21, 2019 at 2:18 pm

    I have been using AppStoreExtract.sh for some time. This week I am rebuilding a computer and tried to run the old package (specifically Numbers and Pages) from the file that was saved from AppStoreExtract. The installer package runs fine and everything completes successfully, however when I go the Applications folder the installed app is not present.

    While I have been saving these install packages for a while, this is the first attempt to use them and I am on a Mojave 10.14.3 system.

    Any suggestions as to what I am doing wrong.

    • Joss
      May 21, 2019 at 6:00 pm

      I just tested it with an extracted app, and the installation using the pkg works fine. If it doesn’t work in your case, instead you could try to use the freeware “Suspicious Package” by Mothers Ruin Software to manually extract the app (with root privileges) into the /Applications folder.

      • JC
        May 21, 2019 at 9:00 pm

        I guess my first question is what version of MacOS are you running on?

        After I attempted installation from the saved dmg from AppStoreExtract, I did notice that in System Information (System Report) > Software > Installations it did show that the package was installed (actually multiple times, as I tried multiple times). I also ran the log file (Command L) during installation and didn’t see anything overly odd during the installation, but I could not examine the tmp files as they are deleted about as fast as they are created once you tell the Installation GUI to Install. However, in System Information (System Report) > Software > Applications the app simply did not show.

        I am familiar with “Suspicious Package”. I picked one of my problem dmg files and exported it with Suspicious Package. When I tried to start the app the OS reported that the app was damaged and needed to be deleted immediately.

        These previous attempts to load an app saved with AppStoreExtract where from a different computer, but it was also running Mojave. So I tried Suspicious Package export on a AppStoreExtract package that I freshly captured yesterday on my new computer and I had no problem running the app from the Applications Folder.

        It seems hard to imagine that all the old AppStoreExtract packages I tried to load (and failed) in the last week were damaged, but I guess anything is possible. So, I went back in time with Time Capsule and restored the original AppStoreExtract download for the file I have been working with from the other computer. Using Suspicious Package to export, it also started up with the file is damaged message.

        At this point I am beginning to believe that I have a bunch of bad App Store Extracts. With yesterdays fresh download extract working fine I assume I simply have to re-download everything fresh and capture a clean AppStoreExtract as I do so.

        Thank you for your input.

    • JC
      June 4, 2019 at 12:05 am

      I just wanted to close the discussion I started. Going under the assumption that the extracts that I had were bad packages, I went back to my main download computer and re-did the AppStoreExtracts. This time I took the advice from Naveed Abbas and assured I used the command “$ sh AppStoreExtract.sh”.

      After I copied the extracted files to another system, they installed fine.

      In looking back, I have no understanding as to what might have been wrong with the old files. Looking forward I know it works great and I am thankful that Max Schlapfer put this out there for us to use.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: