
Introduction
App Auto-Patch combines local application discovery, an Installomator integration, and user-friendly swiftDialog prompts to automate application patch management across Mac computers.
What’s Changed in App Auto-Patch (2.0.5)
For an up-to-date view of what’s changed, feel free to check out the change log at: App Auto-Patch Changelog
🚨 Breaking Changes for users of App Auto-Patch before 2.0.1 🚨
- The Jamf Pro Script parameters have been changed. If using a version of App Auto-Patch previous to
2.0.1, make sure to update your parameters.
Enhancements
- Improved how regex handles app labels from Installomator
- Updated the AAP Activator Flag to use the plist file and automatically determine if
AAPis being executed by AAP-Activator (thanks @TechTrekkie) - Deferral workflow updates (thanks @TechTrekkie):
- Updated deferral logic to only update if
maxDeferralsis notDisabled. Reset deferrals if remaining is higher than max configured. - Updated deferral workflow to run
removeInstallomatorandquitScripttriggers to mirror non-deferral workflow
- Updated deferral logic to only update if
- Installomator options can now be passed into App Auto-Patch via Jamf Pro Script parameters.
removeInstallomatordefault changed tofalse. This will help keep AAP’s version of Installomator present until Installomator has an update, reducing the amount of API calls to GitHub.- Reduced the amount of output to non-debug logs (thanks @dan-snelson)
- Replaced the logic of checking app version for discovered apps
- An additional check has been added to verify the latest version available for installed applications. This will reduce the number of false positive app labels getting queued.
- Improvements on how DMG/ZIP applications’ latest versions are also checked.
- Added dialog to users if there are not updates found.
App Auto-Patch Wiki!
App Auto-Patch now has an easy to follow wiki located in the GitHub Repo. Take a look here: App Auto-Patch Wiki
Some specific pages in the wiki to check out:
Getting Started
- Download the latest App-Auto-Patch-via-Dialog.zsh script to your computer. The latest version can be found here: https://github.com/robjschroeder/App-Auto-Patch/blob/main/App-Auto-Patch-via-Dialog.zsh
If you’d like to use Terminal to download a copy and save it to your Downloads, open the Terminal application and paste the following command:curl -o ~/Downloads/App-Auto-Patch-via-Dialog.zsh https://raw.githubusercontent.com/robjschroeder/App-Auto-Patch/main/App-Auto-Patch-via-Dialog.zsh
- Make any modifications to this script to fit your organizational needs.
- Consider making changes to:
- — scriptLog
- — debugMode
- — deferralTimer (if using deferrals)
- — unattendedExit
- — Support Team Details
- Consider making changes to:

- Upload the script to Jamf Pro, you can make use of the Jamf Pro Script parameters. The current parameter labels are as follows:
- Parameter 4: Interactive Mode [ 0 (Completely Silent) | 1 (Silent Discovery, Interactive Patching) | 2 (Full Interactive) (default) ]
- Parameter 5: A space-separated list of Installomator labels to ignore (i.e., “microsoft* googlechrome* jamfconnect zoom* 1password* firefox* swiftdialog”)
- Parameter 6: A space-separated list of required Installomator labels (i.e., “firefoxpkg_intl”)
- Parameter 7: A space-separated list of optional Installomator labels (i.e., “renew”) ** Does not support wildcards **
- Parameter 8: A space-separated list of options to override default Installomator options (i.e., BLOCKING_PROCESS_ACTION=prompt_user NOTIFY=silent LOGO=appstore)
- Parameter 9: Number of times a user is allowed to defer before being forced to install updates. A value of “Disabled” will not display the deferral prompt. [
integer| Disabled (default) ]

- Once you have your script stored in Jamf Pro, create a policy.

- The Jamf Pro policy will need to have the App Auto-Patch script added to the Script payload. Fill the script parameters to make sure you get the desired result of the script.

** Optionally, you can make the script available in Self Service for end-users to run on their own time.

- Once you have the policy set up as you’d like, feel free to test it out.
Silent Scans
App Auto-Patch has the ability to silently scan the computer for applications and their updates. To perform a silent scan, use the Interactive Mode option set to 1. This will set the script to run a silent discovery and will still show a dialog to the end-user, notifying them of the update statuses.
Extension Attributes
Version 2.0.0 offers some Extension Attributes that can be used to gather some more information on App Auto-Patch. Currently, there are three EAs available:
- AAP-LastDiscovery
- This will return a date and time that the last discovery was run using App Auto-Patch. There is an option in the script to use the
runDiscoveryvariable to skip the discovery process. This EA will help you to make sure your data isn’t outdated.
- This will return a date and time that the last discovery was run using App Auto-Patch. There is an option in the script to use the
- AAP-LastRun
- This will return the date and time of the last run of App Auto-Patch.
- AAP-Verison
- This will return the version of App Auto-Patch that was last used.
- AAP-DeferralsRemaining
- This will return the number of deferrals remaining for the user.
Extension Attributes are powerful and can expand upon the workflows that a tool can utilize. I will look to expand these in the future and if you have any recommendations, feel free to reach out.
Updates
Interactive

During the update process, a dialog window can be presented to the end-user letting them know the status of each application. By default, we show this to the end user. Once all updates have been processed, the “Done” button is made available to exit out of the dialog.
There are additional options in the script that can be modified to control Installomator’s install options. (i.e., BLOCKING_PROCESS_ACTION, NOTIFY, and LOGO).
Silent
App Auto-Patch can also be run completely silently in the background if that’s what you would like to do. Again, this is achieved by changing the default behavior of interactiveMode. When this variable is set to 0, App Auto-Patch will run silently. This may be helpful for administrators who want to make sure apps are patched but don’t need to send the updates to the end users.
*Depending on your Installomator options, users may still see prompts to close the apps that need updates, if they have them open. If you don’t want any notifications at all, change out the BLOCKING_PROCESS_ACTION variable.
Deferrals

Huge thanks to @TechTrekkie for adding this workflow to App Auto-Patch!
There is a new heading in the App Auto-Patch script labeled ### Deferral Options ###.
maxDeferrals– This variable by default is set toDisabled. If you would like to enable deferrals for end users then this will need to be changed to the maximum number of deferrals you would like to offer. Once the maximum number of deferrals has been reached, App Auto-Patch will continue to its updating dialog. To use this option, you will need to haveinteractiveModeset to either1or2.deferralTimer– This is the number of seconds given to the end user to respond to the deferral prompt before thedeferralTimerActionis triggered.deferralTimerAction– This is the action that takes place once the timer has expired, eitherDeferorContinue.Deferis currently set as default.AAPActivatorFlag– If you are utilizing the new AAP-Activator script workflow within your Jamf Pro setup, this variable should be set totrue. More on AAP-Activator below.aapAutoPatchDeferralFile– This is the location of the App Auto-Patch Deferrals plist.
AAP-Activator
https://github.com/robjschroeder/App-Auto-Patch/tree/main/AAP-Activator
If you are using deferrals with your App Auto-Patch setup, the policy within Jamf Pro will need to be run again to prompt the user for their updates and give them to option to defer once again or continue. This can be achieved by setting your policy to run weekly at recurring check-in. Another option, however, is to use the AAP-Activator script. This script works in tandem with App Auto-Patch and is meant to trigger AAP under the right conditions.
*Note* AAP-Activator requires App Auto-Patch version 2.0.0 or later.
Configuration Variables
AAP Activator writes three essential variables to a configuration property list (.plist) file:
- AAPWeeklyPatching (True|False):
- Determines if the patching process has been completed for the week
Falsetriggers the Activator to execute the App Auto-Patch scriptTrueindicates that the weekly patching is complete and should be skipped
- Determines if the patching process has been completed for the week
- AAPWeeklyPatchingStatusDate (datetime):
- Populated with the date/time when the Activator script first executes
- Used to calculate the days passed since the weekly patching period started
- Resets to
Falseafter 7 days, restarting the weekly patching cadence
- AAPActivatorFlag
- Signal for the App Auto-Patch script to automatically determine if triggered by AAP Activator
Setup
- Modify your existing App Auto-Patch Jamf Pro policy (or create a new one):
- Set Execution Frequency:
Ongoing - Set Trigger to a custom value (i.e.,
AppAutoPatch)
- Set Execution Frequency:
- Upload the script to Jamf Pro, you can make use of the Jamf Pro Script parameters. The current parameter labels are as follows:
- Parameter 4: Script Log Location [ /var/log/com.company.log ] (i.e., Your organization’s default location for client-side logs)
- Parameter 5: The custom trigger used to call the App Auto-Patch Jamf Policy [ex: AppAutoPatch ]
- Parameter 6: The number of days until the activator resets the patching status to False [
integer] - Parameter 11: Debug Mode [ true | false (default) | verbose ] Adds additional logging

- Create a Jamf Pro Policy for AAP Activator. Be sure to set your General Payload as follows:
- Execution Frequency:
Once Every Day - Trigger:
Recurring Check-In
- Execution Frequency:
- The Jamf Pro policy will need to have the AAP Activator script added to the Script payload. Fill the script parameters to make sure you get the desired result of the script.
Thank you to everyone who has helped contribute to App Auto-Patch, including but not limited to:
- Dan Snelson (@dan-snelson)
- Andrew Spokes (@TechTrekkie)
- Andrew Barnett (@andrewmbarnett)
- Trevor Sysock (@bigmacadmin)
- Charles Mangin (@option8)
Support, Feature Requests, & Issue Reports
Support
The #app-auto-patch channel on MacAdmins Slack is a great resource to use when getting started.
Feature Requests
Feature requests are welcome and can be submitted on Github
Issue Reports
If you find something not working quite right, you can reach out on the MacAdmins Slack channel for App Auto-Patch. Additionally, issues can be submitted on Github