In my previous posts on iShowU Instant, I've looked at how I went about preparing a workflow for importing the software to my Munki repo and keeping it updated. We can't deploy without a license, so in this post, I'll look at how this can be done with a package, and Joseph Chilcote's outset.

Getting the license information

This should be provided by the vendor, and comes in the form of the following two files:

  • paddata.padl
  • .$Purchase_specific_integer.padl

Note that the second file is a hidden file, as denoted by the prefixing .

paddata.padl needs to be delivered to:

$HOME/Library/Application Support/iShowU Instant/paddata.padl

.$Purchase_specific_integer.padl needs to be delivered to:

$HOME/.$Purchase_specific_integer.padl

As mentioned previously, as iShowU Instant does not read from system locations, these files must be present in the home directories of every user who wishes to use the software.

Building the license package

We're going to use the login-every feature of outset to ensure that the license files are present for each user on each login. To do so, we'll build a package that delivers to the system both the license files and a script to handle the copying.

I ensured I had copies of the license files locally, then created a suitably structured project directory:

mkdir -p /path/to/ishowu-instant-license/Payload/{Library/Management/ishowu-instant-license,usr/local/outset/login-every}

I then changed to that directory:

cd /path/to/ishowu-instant-license

I copied the license files to the required directory:

cp /path/to/paddata.padl /path/to/ishowu-instant-license/Payload/Library/Management/ishowu-instant-license/paddata.padl

cp /path/to/.$Purchase_specific_integer.padl /path/to/ishowu-instant-license/Payload/Library/Management/ishowu-instant-license/.$Purchase_specific_integer.padl

Then created this script:

touch /path/to/ishow-instant-license/Payload/usr/local/outset/login-every

chmod +x /path/to/ishow-instant-license/Payload/usr/local/outset/login-every

with the following contents:

#!/bin/bash

if [[ ! -e $HOME/.$Purchase_specific_integer.padl ]]; then
echo "License missing from $HOME - copying..."
/bin/cp /Library/Management/ishowuinstant-license/$Purchase_specific_integer.padl $HOME/$Purchase_specific_integer.padl
else echo "License present in $HOME - proceeding..."
fi
if [[ ! -e "$HOME/Library/Application Support/iShowU Instant/paddata.padl" ]]; then
echo "License missing from $HOME/Application Support - copying..."
/bin/cp /Library/Management/ishowuinstant-license/paddata.padl "$HOME/Library/Application Support/iShowU Instant/paddata.padl"
else echo "License present in $HOME/Application Support - nothing more to do..."
fi

exit 0

Then we can build a package with a command like this:

/usr/bin/pkgbuild --root Payload \
--version 1.0 \
--ownership recommended \
--identifier my.org.ishowuinstant-license \
iShowUInstant-license.pkg

Optionally sign the package:

productsign --sign "$Your_signing_identity" iShowUInstant-license.pkg iShowUInstant-license-signed.pkg

Now we need to import this package to Munki.

Import to your Munki repository

This is nice and straightforward, and can be done with a command like this:

munkiimport \
--nointeractive \
--catalog testing \
--category "licenses" \
--description "Installs the organisational license for iShowU Instant" \
--developer "Your Org"
--displayname "iShowU Instant License" \
--subdirectory licenses \
--name "iShowUInstant-license" \
--pkgvers "1.0" \
--RestartAction RequireLogout \
--update_for iShowUInstant \
/path/to/iShowUInstant-license-signed.pkg

Add to a manifest, and test!

Preference management

iShowU Instant supports preference management via a suitably configured .mobileconfig profile. An example of a profile that will disable the auto-update feature can be found on my GitHub page. If suitable for your environment, you can deploy this along with the software in order to prevent the application from auto-updating.

Conclusion

In these posts, I've tried to detail a few of the challenges and considerations inherent in a software deployment request for a managed macOS environment. I find it slightly disheartening that workarounds still need to be sought for such requests (such as for UAKEL, and per-user licensed software), but encouraging that there are many effective, community sourced tools making the process more manageable. If you've read this account of my minor voyage of discovery, hopefully you've found something useful!