-
Notifications
You must be signed in to change notification settings - Fork 3
Installation
Third Party Patcher is distributed as a signed and notarized .pkg installer.
The package installs three command-line binaries and a LaunchDaemon:
| File | Destination |
|---|---|
patcher |
/usr/local/bin/tpp/patcher |
patcherscheduler |
/usr/local/bin/tpp/patcherscheduler |
patcherreport |
/usr/local/bin/tpp/patcherreport |
| LaunchDaemon plist | /Library/LaunchDaemons/com.gilburns.patcher.scheduler.plist |
The postinstall script loads the LaunchDaemon immediately:
/bin/launchctl bootstrap system /Library/LaunchDaemons/com.gilburns.patcher.scheduler.plist
On upgrade, the preinstall script unloads the existing daemon first so binaries can be replaced safely.
Deploy the Patcher PPPC:
- Upload the provided
[Available Software_PPPC.mobileconfig](https://github.com/gilburns/Third-Party-Patcher/blob/main/PPPC/Available%20Software_PPPC.mobileconfig)to your MDM or if using Intune, upload the[Available_Software_Settings_Catalog_PPPC.json](https://github.com/gilburns/Third-Party-Patcher/blob/main/PPPC/Available_Software_Settings_Catalog_PPPC.json). - Scope it to the machines you intend to install Patcher.
- Deploy your PPPC configuration profile before the package.
Deploy the Patcher configuration:
- Create and Deploy your Patcher configuration profile before the package (see Preference Keys). (Optional. Without this, it should operate with all the built in default settings.)
Deploy the Package:
3. Upload Third_Party_Patcher-<version>.pkg to your MDM as a managed package.
4. Scope it to the machines you want to patch.
5. Deploy your configuration profiles before the package (see Preference Keys).
The daemon starts automatically at install and runs every 10 minutes. Nothing else is required for basic operation.
| Requirement | Notes |
|---|---|
| macOS 14 Sonoma or later | |
| swiftDialog | Required for user-facing prompts. Use patcher ensure in your workflow or deploy it separately. |
| Network access to GitHub | For Installomator label updates and app downloads. Required unless you supply only Managed Labels. |
patcher ensure checks whether swiftDialog is present and installs or updates it via Installomator if needed:
sudo /usr/local/bin/tpp/patcher ensure dialog
This is safe to include in a postinstall script or as a separate MDM policy.
You can also simply include dialog in your RequiredLabels preference key.
After the scheduler runs its first scan, it creates the following layout under /Library/Application Support/Patcher/:
Patcher/
├── Cache/
├── Config/
│ └── config.json
├── Discovered/
│ └── <label>.plist # one file per discovered app
├── Installomator/
│ ├── Labels/ # downloaded .sh label files
│ └── Version.txt
└── Managed/
├── Labels/ # your custom label files (optional)
└── Version.txt

# Stop and remove the daemon
sudo launchctl bootout system/com.gilburns.patcher.scheduler
sudo rm /Library/LaunchDaemons/com.gilburns.patcher.scheduler.plist
# Remove the binaries
sudo rm -rf /usr/local/bin/tpp
sudo rm -rf "/Applications/Available Software.app"
# Remove data (optional — removes history)
sudo rm -rf "/Library/Application Support/Patcher"
sudo rm -rf /Library/Logs/Patcher