Packaging Adobe Captivate 9 with

NeoSpeech Voices and eLearning Assets

Recently I was tasked with creating an installer package for Adobe Captivate 9 that includes our VLA serial key so that it can be deployed via our management system or by simply giving a user access to the installer package so they can install themselves.

At first there was no problem, simply using the Creative Cloud Packager tool I was able to download and create an installer package for Adobe Captivate 9 that worked for us.

Screen Shot 2015-08-27 at 11.12.34 am

However we also wanted to install a couple of additional products to go with Captivate; the NeoSpeech Voices and eLearning Assets packages.

Screen Shot 2015-08-27 at 11.11.15 am

I was hoping that I could include these as offline media in the Creative Cloud Packages, but of course Adobe being Adobe, this was not to be.

Screen Shot 2015-08-27 at 11.25.03 am

So now I needed a way to install these extra packages silently and with our management system. But of course these being special Adobe installers and not native Apple Packages it made life hard.

I came across some sites that indicated it should be possible to run the installer from the command line with a silent flag like:

./NeoSpeech\ Voices/Install.app/Contents/MacOS/Install --mode=silent

However this was not working for me, the output from the command would indicate that the install was successful and exit 0 however no files were actually installed.

So after more digging I found an extra flag that might help.

--deploymentFile=

So the deployment file is a XML file that is created by the GUI installer and tells the installer application some important things like where to install the software, what language to use, and where the installer source files are. It also includes an "adobeCode"

It sees that when running the install binary with --mode=silent but without specifying a deployment.xml file that the installer runs in a no-op or no-operation mode which explains why no files were being installed the first time I tried this.

I was able to locate the deployment.xml file that the GUI installer creates and uses when it does its install via fs_usage for those interested it creates it in /private/tmp/<adobeCode>/deploy.xml

The AdobeCode can also be found in the Setup.xml file inside the payloads folder of the NeoSpeech Voices folder as shown here. It is inside the mediaSignature key.

Screen Shot 2015-08-27 at 11.52.30 am

Here is what the deployment XML should look like.
Note: I have redacted the AdobeCode and also changed the installSourcePath

So now we know what the deploy.xml file should look like we can easily create these at will without too much difficulty.

Now if we place a deploy.xml file inside the Install.app/Contents/MacOS folder we can call the installer from the command line with:

sudo ./Install --mode=silent --deploymentFile=deploy.xml

The installation completes successfully:

Starting Installer... In Silent mode.
Begin Adobe Setup
UI mode: Silent
100.00%
End Adobe Setup.
Installation successful.
Exiting Installer with Code: 0

Putting it all together

So now we know how to silently install the extra packages, we can create a single package that installs the Adobe Captivate package, then installs the eLearning Assets and Voices packages.

First we need to make sure we have created our two deploy.xml files one for the NeoSpeech Voices installer and one for eLearning Assets installer.

We will need to know installSourcePath in order for our deploy.xml file to work, but we can be a little bit clever with a postinstall script that will get that for us and do a find and replace on the deploy xml file before running the install.

So create the following deploy.xml files and modify the installSourcePath to REPLACEME if your following along they should look like this:
Note: Don’t forget to change the AdobeCode to the number from your Setup.xml file in the MediaSignature key

NeoSpeech Voices

eLearning Assets

Now I like to use Packages so create a new project.

Screen Shot 2015-08-27 at 12.33.45 pm

Give it a name and save it somewhere.

Screen Shot 2015-08-27 at 1.13.04 pm

Scripts

We can pretty much leave all the other tabs alone, you can set your own package identifier and versioning to your own needs.

Here we want to add our Packages and deploy.xml files as an Additional Resource, so drag the installer packages into the Additional Resources window (Reference Style: Relative to Project)

I chose to put the deploy.xml files inside the folders containing the installers. If you change this path you’ll need to remember this when you create your postflight script later on.

Screen Shot 2015-08-27 at 4.59.27 pm

Now we just need to create a post-installation script to tie everything together and get things installed!

Postinstall script

Our postinstall script should first install our Adobe Captivate 9 package, then it should install our NeoSpeech Voices and eLearning Assets packages.

We are going to be a little bit clever with our postinstall script as we need to dynamically update our deploy.xml files to contain the path to the install source directories for NeoSpeech and eLearning Assets.

We achieve this by using sed to search the deploy.xml file for REPLACEME and replace it with the working directory path to the folder. (This is a random path generated each time the installer package is opened by the Installer app, but we can get this by using the command `dirname $0`)

The postinstall script should look something like this:

Once you’ve created the postinstall script, just drag it onto the postinstall button in Packages and you are ready to save and build your package.

Remember to reach out and tell your Adobe Rep how much of a pain in the ass it is that you have to do all this extra work

Advertisements

One comment

  1. Big thanks for this. Was pulling my hair out trying to work out why the installer was working silently, and even giving exit code 0, but not doing anything…

    Like

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s