Monitoring
You can ask to Octory to monitor the installation of applications/packages and files.
For now, it can monitor applications and packages installed via Jamf, AirWatch (Workspace ONE), Munki, and via VPP
(or other services that use the App Store). To ask Octory to monitor an application or package installation,
you add an item in the Monitors
array in the configuration file.
You can also ask to monitor a file a a specified path, which will generate a variable you can use in a condition or see in the logs.
To use Munki monitoring, set the Monitor Installer
key as AirWatch
and specify the paths to the corresponding Munki log files in the keys AirWatchInstallLogPath
and AirWatchManagedSoftwareUpdateLogPath
.
To see the monitoring in action, add an AppMonitor
component to a container.
You can find examples in the Webview SB like and
Webview fullscreen presets.
Application monitoring
Keys
Summary
Name | Type | Possible values | Required |
---|---|---|---|
Type | String | Application |
Required |
Name | String | - | Required |
Identifier | String | ||
DisplayName | String | - | |
Installer | String | Jamf , AirWatch , System |
Required |
Detail | String | ||
IconURL | String | - | |
Condition PRO | String | - | |
GenerateVariable | Boolean | - |
Detail
Type Required
- Type: String
- Possible values:
Application
-
Explanation: Monitor type. Has to be
Application
Name Required
- Type: String
- Explanation: The name of the application or package as it will appear in the MDM log or in the /Applications folder for App Store downloads. You have to ensure that the value of this key is contained in the name of the installed package or application
Identifier
- Type: String
- Explanation: The bundle identifier used by the system to download an application from the Mac App Store. Useful only when installing VPP applications which are not downloaded directly in the /Applications folder (like Microsoft applications for example). Example: com.microsoft.Word
DisplayName
- Type: String
-
Explanation: The name which will be displayed to the user in the AppMonitoring component.
Otherwise, it’s the
Name
key which is displayed, or theIdentifier
key if specified.
Installer Required
- Type: String
- Possible values:
Jamf
,AirWatch
,System
-
Explanation: Specify how the application will be installed. If the application is installed with Jamf or AirWatch directly,
you can choose the
Jamf
orAirWatch
value. If it is by App Store (like VPP), choose theSystem
value.
Detail
- Type: String
- Explanation: Detail text displayed under the name or display name in the AppMonitoring component
IconURL
- Type: String
- Explanation: Let you specify a local or online URL for the icon to be shown in the AppMonitoring component. Octory will use a generic icon image if not specified.
Condition PRO
- Type: String
-
Explanation: Specify if the monitor should be installed for the overall installation completion.
When the condition evolves, an animation occurs in the
AppMonitorComponent
to insert or remove the component. More information on conditions.
GenerateVariable
- Type: Boolean
-
Explanation: If set to
true
, the application will generate a variable for this monitor, associated to its current installation state. This variable can then be used as any other in a action or to be watched in the logs. The format is[NAME]_INSTALLATION_STATE
and thus can take 4 values “Installing”, “Installed”, “Not installed”, “Installation failed”. For example with “Microsoft_Teams” for theName
key, this could give:MICROSOFT_TEAMS_INSTALLATION_STATE
:Installing
Example
Monitor for the application Things, installed via VPP. The App Store identified the application as Things3 so it’s the one written here. The name displayed to the user is Things.
<dict>
<key>Type</key>
<string>Application</string>
<key>Name</key>
<string>Things3</string>
<key>DisplayName</key>
<string>Things</string>
<key>Detail</key>
<string>Your soon favorite To-do list</string>
<key>Installer</key>
<string>System</string>
</dict>
Monitor for the application VMware Fusion, installed via Jamf. A placeholder is used to address the icon path.
<dict>
<key>Type</key>
<string>Application</string>
<key>Name</key>
<string>VMWareFusion</string>
<key>DisplayName</key>
<string>VMware Fusion</string>
<key>Installer</key>
<string>Jamf</string>
<key>IconURL</key>
<string>${AppIconsFolderPath}/VMWare.png</string>
</dict>
Monitor for the application Gimp, installed via AirWatch. The app name and the version are strictly identified by
the Identifier
key. The IconURL
key addresses Wikipedia.
<dict>
<key>Type</key>
<string>Application</string>
<key>Identifier</key>
<string>Gimp-v2.10.4.pkg</string>
<key>DisplayName</key>
<string>Gimp</string>
<key>Detail</key>
<string>Less boring meetings</string>
<key>IconURL</key>
<string>https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/The_GIMP_icon_-_gnome.svg/1024px-The_GIMP_icon_-_gnome.svg.png</string>
<key>Installer</key>
<string>AirWatch</string>
</dict>
File monitoring
The application will generate a variable based on the file name: IS_[FILENAME]_[EXTENSION]_FILE_PRESENT
with a true
or false
value. The check of the file presence happens every 5 seconds.
Keys
Summary
Name | Type | Possible values | Required |
---|---|---|---|
Type | String | File |
Required |
Path | String | - | Required |
IsMandatory | Boolean | - |
Detail
Type Required
- Type: String
- Possible values:
File
-
Explanation: Monitor type. Has to be
File
Path Required
- Type: String
- Explanation: The path to the file whose presence you want to monitor.
IsMandatory
- Type: String
-
Explanation: If
true
, the application will prevent the user to quit if the file is not present. Default isfalse
Examples
Monitor the presence of the file termination.sh in the folder /Library/Application Support/Octory/Scripts/.
The generated variable will be IS_TERMINATION.SH_FILE_PRESENT
<dict>
<key>Type</key>
<string>File</string>
<key>Path</key>
<string>/Library/Application Support/Octory/Scripts/termination.sh</string>
</dict>
Monitor the presence of the file filou.txt in the user home folder /Library/Application Support/Octory/Scripts/.
The generated variable will be IS_FILOU.TXT_FILE_PRESENT
. Note the usage of a placeholder to get the current logged in user name.
<dict>
<key>Type</key>
<string>File</string>
<key>Path</key>
<string>/Users/${USER_NAME}/filou.txt</string>
</dict>