Munki Manifest Selector

A few days ago, I was prompted to publicly release a project that I’ve been using internally to add a bit of Munki-awareness to my DeployStudio workflows. So, once I caught my breath at work, I added the Munki Manifest Selector project to github. Since the documentation is severely lacking, I thought I might post something a little less README-ish in hopes of helping folks along with the installation process.

But first, a few words. Munki Manifest Selector is an OS X application, but was designed specifically for use within DeployStudio. So if you double click it, it’s going to close immediately because it didn’t find the command line arguments it needs to do its job. Also, the app was built using the 10.7 SDK and as such your DeployStudio runtime environment must be 10.7 or higher.

Getting Started

  1. Download:
  2. Copy the app and script into ‘Scripts’ in your DeployStudio repository
  3. Right click the app bundle to show its contents, then edit Contents/Info.plist and change Manifests URL to something like

That’s pretty much it. To use the app within a DeployStudio workflow, you just include a ‘Generic’ script task and point it to That script will launch the app with some default options specified. You can edit this script to include some default options (defined below). The only required option is targetVolume which is used by the app to know where it should write the resulting ManagedInstalls.plist file.

Populating the Manifests Popup Menu

The content of the manifest popup menu comes from a plist that you’ll need to create, probably on your Munki sever since you’ve already got that up and running. The contents are pretty simple. Here’s an example:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "">
<plist version="1.0">

In the above example, if the user selects “Groups/FacultyStaff”, the value that will be written to <targetVolume>/Library/Preferences/ManagedInstalls.plist‘s ClientIdentifier key will be “Groups/FacultyStaff/__FacultyStaffTemplate“. In my setup, I use this __*Template file as a ‘master’ file for all of the machine-specific manifests within that group. This way I can control what apps are delivered to all of the machines in the group (by editing the __*Template file) or for a specific machine’s manifest which has the __*Template manifest listed in its included_manifests array.

Supported Arguments

By specifying any of the capitalized arguments, you’re specifying a default value for the user interface. For example, passing –InstallAppleUpdates on the command line will tick the corresponding box when the app launches. –enableMunkiBootstrapMode is the exception here since it is not capitalized but does have an affect on the state of the UI. See the included for an example of how to launch the app.

  • –InstallAppleUpdates
  • –SuppressAutoInstall
  • –SuppressLoginWindowInstall
  • –SuppressStopButtonOnInstall
  • –SuppressUserNotification
  • –InstallRequiresLogout
  • –ShowRemovalDetail
  • –SoftwareRepoURL
  • –SoftwareUpdateServerURL
  • –DaysBetweenNotifications
    • This should not be a number of days like Munki expects, but rather a value that matches one available in the UI, such as “Hourly” (0), “Daily” (1), “Weekly” (7), “Monthly” (30)
  • –targetVolume
    • Example: “/Volumes/Macintosh HD”
  • –enableMunkiBootstrapMode

What’s It Look Like?MMS



    1. Fixed. But keep in mind, this project is one that works great in my environment but it hasn’t really been properly documented or vetted for others. I open sourced it so that if others found it useful, modifications could be made to suit other needs. In other words, this isn’t a project that gets as much of my attention as it probably should. Disclaimers aside, I hope it helps! 😉

Leave a Reply

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

You are commenting using your 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