This post will describe how to package and deploy Mathematica and an associated license to eligible clients via Munki. An easily modifiable script for building a license pkg can be found on my Github.

##### Prerequisites:

- Mathematica_$VERSION.dmg
- The license info for your organisations Mathematica setup.

##### Preparing Mathematica:

- Mount the .dmg

```
hdiutil attach /path/to/Mathematica_$VERSION.dmg
```

- The disk image for Mathematica 11 includes the .app bundle and an installer pkg for 'Mathematica Extras'. We'll import both separately.
- Import the Mathematica.app, creating a new .dmg:

```
munkiimport /Volumes/Mathematica/Mathematica.app
```

- Configure the
`pkginfo`

metadata to your requirements. In this case, we are using`Mathematica11`

for the`name`

key. The`installs`

array defaults should be sufficient.

##### Importing Mathematica Extras:

- Import the package:

```
munkiimport /Volumes/Mathematica/Extras.pkg
```

- Add the following key to the
`pkginfo`

file:

```
<key>update_for</key>
<array>
<string>Mathematica11</string>
</array>
```

##### Package the license:

- There's a few ways of configuring license settings with Munki (
`postinstall_script`

, built into a repackaged version of the application). However, my preference is, where appropriate, to build a package to deliver the license file or settings to a given client, and then use Munki's`update_for`

functionality to deploy it. Building a package with a logical identifier and version makes it trivial to deploy changes to the license when needed. - In my organisation, I'm fortunate enough to only need to tell the Mathematica install which license server it needs to point at. Users are granted access in a server side config file, so we simply need to deploy a file containing the server name to the client, in a location that Mathematica knows about.
- To start, make a working directory:

```
mkdir -p mathematica-license-pkg/Payload
cd mathematica-license-pkg
```

- Copy or create the license file in the Payload directory:

```
cp /path/to/your/orgs/mathpass mathematica-license-pkg/Payload
```

Or:

```
echo "$YOUR_MATHEMATICA_LICENSE_SERVER" > mathematica-license-pkg/Payload/mathpass
```

- Build the package. In this case, I'm using the year the package was built for the version, as this is relevant to the license setup in my organisation. Use a version appropriate to your needs:

```
pkgbuild --root Payload --install-location /Library/Mathematica/Licensing --version 2016 --identifier your.org.mathematica-license Your-Org-Mathematica-license.pkg
```

- Import the package:

```
munkiimport Your-Org-Mathematica-license.pkg
```

- Configure the pkginfo as follows:

```
<key>update_for</key>
<array>
<string>Mathematica11</string>
</array>
```

- Run
`makecatalogs`

```
makecatalogs
```

- Create a software manifest for Mathematica, in order that access to the application can be scoped to appropriate machines:

```
manifestutil
> new-manifest $YOUR_MATHEMATICA_MANIFEST
> add-pkg Mathematica11 --manifest $YOUR_MATHEMATICA_MANIFEST --section optional_installs
> exit
```

- And you're done. You can now use this as an
`included_manifest`

to distribute the application your clients.