Refactoring MDS Package Folder Path Config

You are here:

We are currently developing a new way for MDS to handle the Packages & Apps path. Currently, when a user creates an MDS workflow and selects a value for “Packages & Apps Folder”, this is written to the Imagr configuration file by scanning the specified folder contents and writing information on the current contents of the folder. If the user then changes the contents of the folder, MDS must again save information on the new contents.

The new method for this will instead just have MDS write the folder path to the Imagr config, and Imagr will then be able to scan the folder and work with the packages it currently contains. This will let the user just change the folder contents without needing to save config again in MDS.

To make this happen, however, MDS will need the new version of Imagr. We currently have a beta 1.3 of MDS that uses the new version of Imagr (1.5). The MDS 1.3 beta is available here. Please delete the version of Imagr on the external drive resources in order for MDS to copy a new version to the external drive.

Packages Only

If your workflow is not installing macOS and is only installing packages, there will be a section in the plist for components that looks like this:

<key>components</key>
<array>
  <dict>
    <key>first_boot</key>
    <false/>
    <key>type</key>
    <string>package</string>
    <key>url</key>
    <string>file:///Volumes/MacDeployStick/Deploy/Workflows/install_apps/Packages/Chrome.pkg</string>
  </dict>
</array>

You can modify the components section like this, changing “type” from “package” to “package_folder”, and then changing “url” to just be the folder url like this:

<key>components</key>
<array>
  <dict>
    <key>first_boot</key>
    <false/>
    <key>type</key>
    <string>package_folder</string>
    <key>url</key>
    <string>file:///Volumes/MacDeployStick/Deploy/Workflows/install_apps/Packages/</string>
  </dict>
</array>

With this change and the new beta Imagr, When the workflow is run it will scan the current contents of the Packages folder and install all packages there.

Packages and macOS

If your workflow is also installing macOS, the changes will be different. The plist “components” section will instead have a subsection for “additional_package_urls” that looks like this:

<key>components</key>
<array>
  <dict>
    <key>additional_package_urls</key>
    <array>
<string>file:///Volumes/MacDeployStick/Deploy/Workflows/macos_and_packages/Packages/Chrome.pkg</string>
<string>file:///Volumes/MacDeployStick/Deploy/Workflows/macos_and_packages/Packages/Firefox.pkg</string>
    </array>
    <key>ramdisk</key>
    <true/>
    <key>type</key>
    <string>startosinstall</string>
    <key>url</key>
    <string>file:///Volumes/MacDeployStick/Deploy/macOS/mojave.dmg</string>
  </dict>
</array>

This can be modified by eliminating the individual pkg file strings and instead just having one url for the Packages folder:

<key>components</key>
<array>
  <dict>
    <key>additional_package_urls</key>
    <array><string>file:///Volumes/MacDeployStick/Deploy/Workflows/macos_and_packages/Packages/</string>
    </array>
    <key>ramdisk</key>
    <true/>
    <key>type</key>
    <string>startosinstall</string>
    <key>url</key>
    <string>file:///Volumes/MacDeployStick/Deploy/macOS/mojave.dmg</string>
  </dict>
</array>

The proposed future build of MDS would write Imagr config this way automatically and allow the contents of the Packages folder to be processed dynamically.

As always we welcome your feedback and any thoughts you have on MDS at the MDS Slack topic.