-
Notifications
You must be signed in to change notification settings - Fork 3
Managed Labels
Managed Labels allow you to supply your own Installomator-compatible label files, either to override existing Installomator labels or to add support for applications not in the public Installomator repository.
/Library/Application Support/Patcher/Managed/
├── Labels/
│ ├── myapp.sh
│ ├── googlechrome.sh ← overrides the Installomator googlechrome label
│ └── internalapp.sh
└── Version.txt
-
Labels/— contains your.shlabel files, one per application. -
Version.txt— a version string you control. Changing this value signals Patcher that labels have been updated, triggering a re-scan and recheck of any previously broken labels.
When Patcher needs to process a label named googlechrome, it looks in this order:
-
Managed Labels —
Managed/Labels/googlechrome.sh— if this file exists, it is used. -
Installomator Labels —
Installomator/Labels/googlechrome.sh— used only if no managed file exists. - Not found — the label is skipped.
This means a managed label always wins over the Installomator equivalent for the same name.
If InstallomatorLabelsDisable is true, step 2 is skipped entirely.
A managed label is a standard Installomator label fragment — a case block for a single application. Use any existing Installomator label as a template.
Minimal example (internalapp.sh):
internalapp)
name="Internal App"
type="pkg"
downloadURL="https://deploy.example.com/InternalApp-latest.pkg"
expectedTeamID="ABCDE12345"
appNewVersion=$(curl -sfL "https://deploy.example.com/version.txt")
appName="Internal App.app"
;;The file name (without .sh) is the label name. It must match the case target inside the file.
To override an existing label, create a file in Managed/Labels/ with the exact same filename as the Installomator label. Patcher will use your version and ignore the Installomator one.
Common reasons to override:
- Pin to a specific version instead of latest.
- Change
expectedTeamIDfor a re-signed enterprise build. - Override
downloadURLto point to an internal mirror. - Adjust
blockingProcessesfor your environment. - Add
targetDirfor a non-standard install path.
The Version.txt file is a plain text file containing any string you choose. Its purpose is to let Patcher detect when managed labels have changed.
1.3
or a date:
2026-04-19
When to update Version.txt:
- After adding, removing, or modifying any label file.
- After fixing a broken label that previously failed to resolve.
When Patcher sees a new value in Version.txt, it:
- Re-evaluates any labels that were previously marked as broken.
- Triggers an immediate re-scan if
ScanOnLabelUpdateistrue.
If you never update
Version.txt, broken managed labels will remain broken and will not be retried. Always bump the version after fixing a label.
The recommended approach is to deploy managed labels as a package:
- Place your label files in a staging folder mirroring the target structure.
- Package them to install into
/Library/Application Support/Patcher/Managed/. - Include an updated
Version.txtin the package. - Deploy the package via your MDM. On install, the postinstall script (or launchd) will pick up the new version automatically.
Alternatively, use your MDM's file deployment capability to push individual .sh files and Version.txt directly.
Set InstallomatorLabelsDisable to true in your configuration profile:
<key>InstallomatorLabelsDisable</key>
<true/>Patcher will then:
- Not download or update Installomator labels.
- Not read from the Installomator Labels folder.
- Use only the files in
Managed/Labels/.
This is appropriate for fully air-gapped environments or when you have a complete set of custom labels and do not want the public Installomator repository involved.
Warning: If
InstallomatorLabelsDisableistrueand no Managed Labels are present, Patcher has no labels to work with. The scheduler will log a warning and all patching phases will be no-ops.
Patcher logs label resolution at the start of each scan. Look for lines like:
📦 Labels version: 10.7+managed:1.3
🔀 googlechrome: using managed label (override)
➕ internalapp: using managed label (addition)
- override — a managed label replaced an Installomator label of the same name.
- addition — a managed label has no Installomator equivalent; it's purely custom.
See Logs and Troubleshooting for log file locations.