# Installomator - The one installer script to rule them all (macOS PKG)

## Description

This article delves into the application of [Installomator](https://github.com/Installomator/Installomator), a shell script, in combination with FileWave for the maintenance of macOS applications. Installomator supports the downloading and installation of over 450 different applications, operating directly from the vendor's public URLs. This approach is compared with the use of AutoPkg, a tool that provides more stringent control over versioning, testing, and release management.

Installomator can be a valuable tool when deploying the latest publicly available version of an application is the goal. It verifies the authenticity and validity of each download, though it's not a fully automated solution. For certain applications like Chrome, Zoom, and Microsoft Office, their update processes may be better managed via a config profile. Additionally, attention may be needed for built-in auto update prompts of other apps.

A key characteristic of Installomator is its handling of versioning. Instead of installing only when the downloaded version is newer, Installomator initiates installation if the version numbers differ. This is due to the complexities in determining which version number is higher. For instance, if Installomator downloads version 4 after a vendor has released version 5 due to a URL change, it will attempt to install version 4 because the version numbers differ.

## Ingredients

- FW Admin
- swiftDialog - [Deploying swiftDialog via FileWave (macOS PKG)](https://kb.filewave.com/books/software-deployment-recipes-macos/page/swiftdialog-deployment-macos-pkg "Deploying swiftDialog via FileWave (macOS PKG)")
- Installomator - [Releases · Installomator/Installomator (github.com)](https://github.com/Installomator/Installomator/releases)

## Directions

### Deploying Installomator on all your Macs

Installomator operates by taking a 'label' parameter representing the application to be installed. It generally only installs an application if the latest version is newer than the installed version, though exceptions exist, emphasizing the importance of thorough testing. It's deployed via a single FileWave Fileset, with numerous configuration options to improve user experience and system stability. These include user notifications upon completion, the closing of the app prior to installation, prompts before closing the app, and the ability to re-launch the app post-update if it was initially open. Installomator does not interact with App Store applications except to replace them with non-App Store versions if desired. See [Configuration Options](#bkmrk-configuration-option) further down for how to customize the operation of the script.

### Installing Installomator

1. Download the PKG for [SwiftDialog](https://kb.filewave.com/books/software-deployment-recipes-macos/page/swiftdialog-deployment-macos-pkg "Deploying swiftDialog via FileWave (macOS PKG)") and install the PKG as a FileSet.
2. Download the PKG for Installomator from [Releases · Installomator/Installomator (github.com)](https://github.com/Installomator/Installomator/releases) install the PKG as a FileSet. This will place the script file to `/usr/local/Installomator/Installomator.sh`

<p class="callout success">PKG Filesets are easy to make. You can start by dragging and dropping the PKG on the Filesets window in FileWave Central or use our example here: [PKG - Installomator.fileset.zip](https://kb.filewave.com/attachments/216)</p>

### Identifying an App to install

Run Installomator by itself in Terminal and get the full list of apps it can install:

```shell
/usr/local/Installomator/Installomator.sh
```

This is the output of that command:

[![jlevitsk — -zsh — 81×22 2023-07-22 at 12.45.48 PM.jpg](https://kb.filewave.com/uploads/images/gallery/2023-07/scaled-1680-/jZvwh18Lv00K4mlZ-jlevitsk-zsh-8122-2023-07-22-at-12-45-48-pm.jpg)](https://kb.filewave.com/uploads/images/gallery/2023-07/jZvwh18Lv00K4mlZ-jlevitsk-zsh-8122-2023-07-22-at-12-45-48-pm.jpg)

Or run Installomator in Terminal with grep to filter the results:

```shell
/usr/local/Installomator/Installomator.sh | grep -i bbedit
```

This is the output of that command:

[![jlevitsk — -zsh — 88×8 2023-07-22 at 12.48.33 PM.jpg](https://kb.filewave.com/uploads/images/gallery/2023-07/scaled-1680-/1JEiTQHtSCJ3iCD7-jlevitsk-zsh-888-2023-07-22-at-12-48-33-pm.jpg)](https://kb.filewave.com/uploads/images/gallery/2023-07/1JEiTQHtSCJ3iCD7-jlevitsk-zsh-888-2023-07-22-at-12-48-33-pm.jpg)

### Installing an App

At this point you have installed both [swiftDialog](https://kb.filewave.com/books/software-deployment-recipes-macos/page/swiftdialog-deployment-macos-pkg "Deploying swiftDialog via FileWave (macOS PKG)") and Installomator. For the next steps here is an example [BBEdit - Installomator.fileset.zip](https://kb.filewave.com/attachments/200) to look at while you follow along.

The BBEdit example is a very simple Fileset containing 3 scripts, and that's all.

<table border="1" id="bkmrk-the-scripts-are-fair" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 55.3787%;"></col><col style="width: 44.6213%;"></col></colgroup><tbody><tr><td>The scripts are fairly simple and listed below:

##### check\_installomator.sh 

```shell
#!/bin/zsh
# Checks every 2 minutes for Installomator to be present. 
# Add the contents of your script below:

if [ -f "/usr/local/Installomator/Installomator.sh" ]; then
	exit 0
else
	echo "Could not find Installomator"
	exit 1
fi
```

##### install.sh

```shell
#!/bin/zsh
# Remember to change the properties for both install.sh and verify.sh
# to have the right app label since it is passed to the script from properties. 

/usr/local/Installomator/Installomator.sh $1 NOTIFY_DIALOG=1 NOTIFY=success LOGO=/usr/local/sbin/FileWave.app/Contents/Resources/fwGUI.app/Contents/Resources/kiosk.icns

```

##### verify.sh

```shell
#!/bin/zsh
# Remember to change the properties for both install.sh and verify.sh
# to have the right app label since it is passed to the script from properties. 

/usr/local/Installomator/Installomator.sh $1 NOTIFY_DIALOG=1 NOTIFY=success LOGO=/usr/local/sbin/FileWave.app/Contents/Resources/fwGUI.app/Contents/Resources/kiosk.icns

```

In our example both `install.sh` and `verify.sh` are identical but they don't have to be depending on your needs.

</td><td class="align-right" style="vertical-align: top;">![image.png](https://kb.filewave.com/uploads/images/gallery/2023-07/scaled-1680-/5hdwUuMZR6T2jDKT-image.png)

![image.png](https://kb.filewave.com/uploads/images/gallery/2023-07/scaled-1680-/WOrFqGi867uz03Zt-image.png)

</td></tr></tbody></table>

So now you may be wondering about where "`bbedit`" is since that label is the label we want to use? Highlight the BBEdit Fileset in your admin console and click the Scripts button in the toolbar. Now right click on `install.sh` and pick Properties. The dialog will look like the one here. You'll want to change `bbedit` to whatever app you want this to install. Do the same exact thing for `verify.sh`.

### Configuration Options

In our example, we pass the LOGO parameter to the script. This action assigns a FileWave logo to the script, derived from the FileWave Kiosk icon file located on a device with FileWave installed. You can also pass additional parameters to further refine Installomator's behavior. This is covered in greater detail at the following link: [Configuration and Variables · Installomator/Installomator Wiki (github.com)](https://github.com/Installomator/Installomator/wiki/Configuration-and-Variables) One setting you may want to change is NOTIFY=success to be NOTIFY=all if you are using Kiosk to allow someone to install apps.

### What it looks like

To install an app this way you simply [Associate](https://kb.filewave.com/books/filesets-payloads/page/using-associations-with-filesets "Using Associations with Filesets") the [swiftDialog](https://kb.filewave.com/books/software-deployment-recipes-macos/page/swiftdialog-deployment-macos-pkg "Deploying swiftDialog via FileWave (macOS PKG)") Fileset, Installomator Fileset, and [BBEdit - Installomator.fileset.zip](https://kb.filewave.com/attachments/200) Filesets and you should see it install.

<p class="callout warning">Be careful as some apps/labels may install even if the app is already on the latest version</p>

Depending on what dialogs you have enabled you may show status messages like the below. We recommend not editing the Installomator script itself but rather pass the options as parameters in your Filesets.

[![Using_Installomator_to_support_3rd_party_apps_-_Mac (2).pdf 2023-07-22 at 1.25.57 PM.jpg](https://kb.filewave.com/uploads/images/gallery/2023-07/scaled-1680-/0P4NjHfL4nAOB966-using-installomator-to-support-3rd-party-apps-mac-2-pdf-2023-07-22-at-1-25-57-pm.jpg)](https://kb.filewave.com/uploads/images/gallery/2023-07/0P4NjHfL4nAOB966-using-installomator-to-support-3rd-party-apps-mac-2-pdf-2023-07-22-at-1-25-57-pm.jpg)

[![Using_Installomator_to_support_3rd_party_apps_-_Mac (2).pdf 2023-07-22 at 1.27.01 PM.jpg](https://kb.filewave.com/uploads/images/gallery/2023-07/scaled-1680-/Cy5CRZP3QVmKgC6x-using-installomator-to-support-3rd-party-apps-mac-2-pdf-2023-07-22-at-1-27-01-pm.jpg)](https://kb.filewave.com/uploads/images/gallery/2023-07/Cy5CRZP3QVmKgC6x-using-installomator-to-support-3rd-party-apps-mac-2-pdf-2023-07-22-at-1-27-01-pm.jpg)

You should now be able to deploy anything that Installomator supports. Just remember that this tool is designed to always keep things up to date which can be a good or bad thing for you depending on your use case.

## Troubleshooting

You will be able to see what the Fileset is doing by leveraging the [Fileset logs](https://kb.filewave.com/books/filewave-general-info/page/filewave-log-file-locations "FileWave Log File Locations"). All 3 of the scripts will log to `/var/log/fwcld/<fileset_id>`where &lt;fileset\_id&gt; is the same as the ID you see in FileWave for the Fileset.

[![image.png](https://kb.filewave.com/uploads/images/gallery/2023-07/scaled-1680-/1KqJVXcZ1u7MXjlJ-image.png)](https://kb.filewave.com/uploads/images/gallery/2023-07/1KqJVXcZ1u7MXjlJ-image.png)

You may also be able to use FileWave Central to right click on the log and view it, but the log on the machine when testing is most simple and will exist 100% of the time.

[![image.png](https://kb.filewave.com/uploads/images/gallery/2023-07/scaled-1680-/eapUynzlMO3PTUFL-image.png)](https://kb.filewave.com/uploads/images/gallery/2023-07/eapUynzlMO3PTUFL-image.png)

## Related Links

- [Installomator GitHub](https://github.com/Installomator/Installomator) - Installomator official GitHub page
- [Deploying swiftDialog via FileWave (macOS PKG)](https://kb.filewave.com/books/software-deployment-recipes-macos/page/swiftdialog-deployment-macos-pkg "Deploying swiftDialog via FileWave (macOS PKG)")
- [AutoPkgr with FileWave](https://kb.filewave.com/books/integrations/page/using-autopkgr-with-filewave-for-advanced-macos-software-deployment "AutoPkgr with FileWave") - Information on the AutoPkg tool
- Training Day 2022 Presentation - [Using\_Installomator\_to\_support\_3rd\_party\_apps\_-\_Mac.pdf](https://kb.filewave.com/attachments/195)

## Digging Deeper

The choice between Installomator and AutoPkg ultimately hinges on your administrative preferences and needs. Installomator, with its ability to streamline the download and installation of different versions of applications, serves as a viable option when the goal is to deploy the latest publicly available versions. However, it requires careful management, especially considering its approach to version comparison and updates. On the other hand, AutoPkg presents a viable alternative for those seeking a more tightly controlled release process, offering thorough testing, versioning, and release management.