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.
However we also wanted to install a couple of additional products to go with Captivate; the NeoSpeech Voices and eLearning Assets packages.
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.
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.
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
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
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
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
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
Now I like to use Packages so create a new project.
Give it a name and save it somewhere.
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.
Now we just need to create a post-installation script to tie everything together and get things installed!
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
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