30 Nov How to Distribute Mac App Store Apps with LANDESK Management Suite
Installing an OS X application purchased with a VPP token can require a lot of man power. Due to digital rights management, Apple ID’s and user agreements, it’s not easy to just deploy an application as can be done for an application you have the installer for. This whitepaper will discuss how an application installer found in the Mac App Store (MAS) can be captured and used to deploy to your OS X devices.
The LANDESK Management Suite Mac agent is capable of supporting many different package types, such as dmg, pkg, mpkg, shell scripts, a simple .app, mobileconfig and even .workflow scripts built within Automator. While this flexibility works in most scenarios, you’ll notice that it requires access to the install files. If a developer only releases their application via the Mac App Store, such as the iWork suite developed by Apple. However, with a little bit of work, you can capture the installers from the Mac App Store and subsequently push those applications out.
The LANDESK administrator will need to have access to an OS X device that has purchased the application that is intended to be distributed, yet that does not have the application currently installed. A VM set aside just for downloading Apps may be an efficient method for the ongoing software distribution.
Note: Ensure you have adequate license coverage via a VPP purchase prior to distributing your application.
Enable Debug Mode for the Mac App Store (MAS)
When an application is downloaded from the MAS, the installer file is downloaded, executed and then promptly removed. By enabling debug mode for the MAS, we can create a link to the downloaded installer(s) allowing for future use on more than just the machine currently downloading the app.
- Quit the Mac App Store if currently opened
- Open Terminal and run the command ‘defaults write com.apple.appstore ShowDebugMenu -bool true’
Note: To disable debug mode, use the following command: ‘defaults write com.apple.appstore ShowDebugMenu -bool false’
Download the Installer for the App to Patched
Once the debug mode is enabled, it will be possible to capture the download installer file for later use in patching.
- Launch the App Store App (notice you should now have a Debug menu item) and navigate to the Purchased tab. Sign in if prompted.
- Select the app to be patched and click Install
- Once the install process shows visible progress in the download process, hit the pause button
- From the Debug menu, select the option Show Download Folder
- Finder will open and you’ll need to navigate inside the com.apple.appstore folder
- Locate the folder with a string of numbers, this should be your app, and navigate inside of it
You now need to create a hard link between the randomly named download to a file name and path of where to store the installer. You’ll do this by opening Terminal and use the ‘ln’ command followed by the path of the installer from the Mac App Store and then the path to where you want to save your copy of the installer that won’t be deleted as soon as . The easiest way to enter the path of the randomly named installer is to drag and drop it into terminal after typing ‘ln’
- Launch Terminal and type ln /path/to/macappstore.pkg /path/to/savedinstaller.pkg
- Return to the Mac App Store purchased tab and resume the download
- When the installation for your app finishes, you’ll have a signed installer from Apple to use to update your fleet of Mac devices
Automating for Multiple Concurrent Downloads
If the manual linking process described above seems a bit burdensome when in need of downloading many applications, Max Schlapfer has created a script to not only automate the creation of the hard links, but it also has the capability to download multiple files at once. To download Max’s AppStoreExtract script, see https://github.com/maxschlapfer. These next steps are not requisite, if you have all of the installers you desire, skip to the next section.
Note: You do not need the Debug mode enabled for the Mac App Store, as outlined above, for this script to work.
- Download Max’s script from Github and extract it to a folder location of choice
- Open terminal and execute the script by typing in ‘./path/to/script/AppStoreExtract.sh’ and hitting Return
- Launch the App Store App and navigate to the Purchased tab. Sign in if prompted.
- Click Install on all of the Apps you want to create installers for and wait for them to complete the install process
- When the installation process has finished, return to the Terminal window and hit any key to finish the script. When asked to finalize the packages, type Y.
- The script will name the output files according the product and version and then convert them to DMG files and store them in the /Users/Shared/AppStore_Packages folder
Creating LANDESK Management Suite Mac Packages
Now that you have the installers downloaded from the Mac App Store, creating the LANDESK Mac package is the easy part. You just need to copy all of the installers you’ve created to your package share. If you have a .pkg file, make sure you zip it prior to copying into a Windows file share. If you have dmg files, you can copy those directly to your package location.
- Open the LANDESK Console
- Navigate to the top menu bar, select Tools > Distribution > Distribution Packages.
- In the lower left menu tree, highlight My Packages or Public Packages from within the Distribution Packages window
- On the Distribution menu bar, press the New Package button and select New Macintosh Package.
- Give the package a name
- Provide a description as well as any metadata information desired
- Set the primary file to the zip or dmg file you previously transferred to your software distribution folder
- Fill out the Metadata details if desired, specifically supplying a logo so it shows up properly in the portal
- Save the package
Creating a Scheduled Mac Software Distribution Task
- Right click on the Mac software distribution package created and select Create Scheduled Task
- From the network view, select and drag the desired machine(s), user(s) or query(ies) and drop them onto the task
- Now, right click on the task and select properties
- Set the desired Task type under Task Settings as to whether you want a push, a policy or a hybrid of the two types in a policy-supported push
- Set the radio button in the Portal Settings to either Recommended or Optional if you desire to put the package into Workspaces. If you’d like to automatically deploy the app, select Run automatically
- Change the Reboot Settings or Distribution and Patch settings if desired
- Set the schedule task settings with the appropriate start time