The Promethean ActivBoard and ActivPanel are popular choices for schools that require some form of interactive display. For years, Mac users had to put up with buggy ports of Windows software (see: Hitachi, SMART, etc) until Promethean brought out proper Mac software (initially, the job of creating the Mac version was put in the capable hands of MacKiev). In my opinion, this forced other manufacturers such as SMART to play catch up. Shortly after Promethean really committed to the Apple market, SMART upped the quality of their Mac software, ditching the slow and buggy Java-infested port of their Windows ‘Notebook’ software that performed awfully on the Mac. Nowadays, Mac users expect high quality software for their interactive displays and, on the whole, manufacturers tend to meet that expectation.

I was surprised recently to learn that Promethean have stopped providing a proper Mac pkg installer to install the drivers for their boards & panels. I asked their support department via Twitter about the reason for this change and I received the response that

“The industry is moving away from the Windows MSI installer package. We’re changing, too, so we can work with Windows/Mac/Linux.”

I’m not 100% sure what that means. I haven’t noticed Windows software moving away from the MSI model. Unless your app is in the App Store, a standard Mac pkg is still the best way of distributing software that requires the installation of stuff outside of the main application bundle.

Faced with the task of deploying the latest driver to hundreds of Macs, there was no way I was going to run the installer on machines manually. I set about trying to decipher what was inside the app bundle and found some good clues:

$ find activdriver-5.13.12-osx-installer-x64.app/Contents/MacOS
activdriver-5.13.12-osx-installer-x64.app/Contents/MacOS
activdriver-5.13.12-osx-installer-x64.app/Contents/MacOS/ActivDriver
activdriver-5.13.12-osx-installer-x64.app/Contents/MacOS/installbuilder.sh
activdriver-5.13.12-osx-installer-x64.app/Contents/MacOS/osx-intel

Looking at the shell script and at other files within the bundle, I found numerous references to installbuilder. A quick Google later and it turns out that InstallBuilder is a product offered by BitRock. Surprise, surprise, its party trick is to churn out cross-platform installers, saving developers time and money. This is Installer VISE and Zero G InstallerAnywhere all over again. I’d have preferred it if Promethean had told me the real reason that they have switched to this installer type (to save £££).

I sifted through the docs on the BitRock website and noticed reference to a --help flag that could be passed to the installbuilder.sh launcher. Running this gave some reassuring output:

promethean installbuilderI crossed my fingers and went for $ sudo activdriver-5.13.12-osx-installer-x64.app/Contents/MacOS/installbuilder.sh --mode unattended

I was pleasantly surprised to be met with what looked like a successful installation. An installer log was written to /tmp/bitrock_installer.log and detailed what was installed and where.

Because I consider this method of installation to be a right bloody mess, it’s my preference to repackage the installed files using something like the excellent Packages app. I could opt to push out this installer using one of our Crossover custom scripts, but for manageability and uniformity, I think a standard pkg will work better in the long run.

The files you’ll need to capture and repackage:

/Applications/Promethean/ActivDriver
/Applications/Promethean/ActivRelay
/usr/local/share/promethean
/usr/local/lib/libactivboardex.dylib
/Library/LaunchAgents/com.promethean.activmgr.plist
/Library/LaunchAgents/com.promethean.activhardwareservice.plist

If there is any interest, I will write up how to create a package using Packages, but it’s fairly straightforward. The only thing to keep an eye on is permissions!

To finish this post I will mention that there is an equivalent uninstall tool that can be called from the command-line:

$ sudo /Applications/Promethean/ActivDriver/uninstall.app/Contents/MacOS/osx-intel --mode unattended

Again, this will uninstall without any prompts and will write a log file to /tmp/bitrock_installer.log. The uninstaller does generate some error output, namely:

Script stderr:
 /bin/sh: secutity: command not found

It looks like one of the developers was suffering from fat finger syndrome that day. It does appear to uninstall all of the cruft correctly, however. The install and uninstall commands could be written up as munki postinstall_script and preuninstall_script pkginfo keys after the .app is installed somewhere on the Mac. I trust my own repackage much more than this clunky one-size-fits-all installer, so I’ll stick to repackaging for now.

If this has caused you problems, please let Promethean know about it!

Stuart

Stuart is in charge of kitchen duties and makes a mean cup of coffee. He also holds the keys to Crossover’s Emergency Response Vehicle and will turn up on two wheels should your server catch fire.