Parallels Desktop Installer
In my continued investigation of Jamf NOW's App Installers I have learned some interesting things about the Parallels installer. As you'd expect the DMG contains the actual application as a hidden file.
The interesting question is how do you install the application without the GUI. It turns out that you need to use: inittool from /Volumes/Parallels Desktop $version/Parallels Desktop.app/Contents/MacOS. inittool is just a shell script that calls inittool2. inittool2 does the heavy lifting.
If we look at how Jamf implements their App Installer they mount the DMG and then calls: inittool install -t $path_to_target -s. We can break down the command:
inittool calls inittool2 using exec which handles the actual arguments.
-t gives the target of where you want to put the final installed application.
-s says to start the services post installation.
These flags are not documented, but you can find the information through strings to a certain extent–better option is to use something like Binary Ninja on inittool2 to extract that information.
A quick note on the way Jamf does this: they have their normal LaunchDaemon run script, but this calls a subscript call postinstall which actually mounts the DMG and then calls inittool.
I will of course note that if you are deploying this in an enterprise context you are better off using something like Parallels Mass Deployment tooling. This is how I have deployed Parallels typically. You can see the sort of method I used here.