6 Commits
beta ... main

Author SHA1 Message Date
Armin Briegel
531d170abb v1.4.3 2026-02-04 08:31:47 +01:00
Armin Briegel
7fd45eda23 updated for Setup Manager 1.4.2 2026-01-20 15:10:34 +01:00
Armin Briegel
814cfd657a updated for Setup Manager 1.4.1 2025-12-22 14:15:23 +01:00
Armin Briegel
23484fe7ae v1.4 release 2025-12-04 08:10:37 +01:00
Armin Briegel
dc5f251ac3 Merge branch 'beta' 2025-12-04 08:03:52 +01:00
Armin Briegel
8113c0baf4 Remove 'beta' label from AutoAdvance deployment 2025-10-29 09:17:29 +01:00
10 changed files with 208 additions and 17 deletions

View File

@@ -1,5 +1,137 @@
# Setup Manager - Change Log
## 1.4.3
(2026-02-04)
- fixed a bug where `finalCountdown` could not be disabled (#192)
- added a key to override the "Getting Ready…" message (#191)
- battery popup is nicer and localized
- added `uploadThroughput` and `downloadThroughput` to the webhook event data
- fixed quoting in preinstall script
- Polish localization updates
- minor UI and localization fixes
## 1.4.2
(2026-01-20)
- Turkish localization 🇹🇷 (thanks to @nurox999)
- Portuguese (Brazil) localization 🇧🇷 (thanks to Eric M)
- Export Logs button in log window which copies relevant log files to a new folder in `/Users/Shared/`
- fixed an issue where the finishing webhook was sent twice (#188)
- newlines are no longer stripped out of `message` and `help.message` values in the profile
- minor documentation fixes and updates
## 1.4.1
(2025-12-22)
- `finishedScript` and `finishedTrigger` now respect when `DEBUG` key is set and do nothing (#181)
- improved error detection and reporting in `DEBUG` mode (#150, #180)
- adjusted recon/Update Inventory workflow, to adapt to a change in `jamf` binary (#177)
- fixed custom JSON for Jamf Pro profile for Webhooks (#184)
- localization fixes
## 1.4
(2025-12-03)
While making sure that Setup Manager looks nice with macOS Tahoe and Liquid Glass, we have added a few more features to improve customization.
### New Features
- User Interface
- macOS Tahoe/Liquid Glass adaptions
- new `banner` key allows you to provide a banner image that cover the top part of the Setup Manager window ([details](ConfigurationProfile.md#banner))
- `title` and `icon` keys are now optional, when a `banner` key is set
- action tiles can have a background color set with the top-level or per-action 'tileColor'key
- `banner` and `background` can use hex or system colors
- where colors are defined, you can use system color names. See ['Defining Colors'](ConfigurationProfile.md#defining-colors) for details
- new profile keys:
- `networkQualityCheck` suppresses network bandwidth calculation when set to `false` (#135)
- `finishedMessage` for a customized message when Setup Manager workflow is complete (#128)
- logging:
- new tab for configuration profiles in the log
- detection of configuration profile installation and removal
- image/icon load errors are now logged
- logs a warning when Setup Manager detects it is launched for a second time
- switched launch tracking to a new service (see [Launch Tracking](Docs/LaunchTracking.md) for details)
### Fixes and Improvements
- disabled check for Jamf.app as it could fail in some challenging network configs
- enrollmentUserID added to webhook data (#140)
- localization fixes (#149)
- elapsed time in Mac Info window stops counting when workflow is finished
- link to computer in Slack and Teams messages should work with Jamf School
- setting computer name with user entry or `computerNameTemplate` works with Jamf School
- updated uninstall.sh script (#156)
- (beta2) Localization:
- added UK English (en-GB) localization (thanks to @philipross)
- various localization fixes (#171)
- (beta2) fixed Network Info font color (#166)
- (beta2) `waitForUserEntry` action correctly runs a recon/Update Inventory (#168)
- (beta2) `accentColor` affects all items and controls (#170)
- (beta2) UI adjustments (#169)
### Changes, deprecations and removals
- (1.4) `userID` top-level key name changed to `enrollmentUserID`
- (1.4) `jssID` key has been renamed to `computerID`
- (1.3) the minimum macOS requirement for Setup Manager is now macOS 13.5
- (1.2) `showBothButtons` option removed and non-functional, there will always be just one final action button displayed
- (1.1)the method for providing localized texts in the configuration profile changed in version 1.1. The previous method (by appending the two letter language code to the key) is considered deprecated. It will continue to work for the time being but will be removed in a future release. It is _strongly_ recommended to change to the [new dictionary-based solution](ConfigurationProfile.md#localization)
### Notes
There are quite a few new options in Setup Manager 1.4 beta to configure and customize the new UI. There is a new option for a color or image banner across the top of the Setup Manager window. Action tiles can now be colored automatically or with specific colors. Colors can now be set anywhere that image sources are used and you get a list of named system colors.
While the [description of all the keys in the repo](ConfigurationProfile.md) has been updated, many of the keys, old and new, now work together for a variety of useful combinations.
#### Updating the profile to use 1.4 (beta) features
The good news first: we designed the update so that you can keep using the same profile from earlier versions and the Setup Manager window will look mostly the same on macOS Sequoia and earlier, and have the new “Liquid Glass” look and feel on macOS Tahoe.
To use the new UI options, set the new keys.
#### Banner
Setup Manager 1.4 introduces the option to show a color or image banner in the top of the Setup Manager window. This is controlled by the top-level [`banner` key](ConfigurationProfile.md#banner). The `banner` value is an [image source](ConfigurationProfile.md#icon-sources), so it can be a reference to local image file, an image file hosted on a web server, or (also new in 1.4) a [color designation](ConfigurationProfile.md#defining-colors).
Colors can be set with hex codes, e.g. `#f00` or `#f900a2` or with (new in 1.4) system color names, e.g. `##gray`, `##red`, etc.
The size of the banner area is 800x233 pixels (1600x466 @2x) on Sequoia and earlier and 800x247 (1600x494 @2x) on Tahoe (the liquid glass tool bar is taller). The image will be displayed with bottom-center alignment and _not_ scaled, so you can add a few extra pixels at the top and the same image should work for all macOS versions.
The behavior of the `icon` and `title` keys changes depending on whether the `banner` has a value.
When _no_ `banner` value is set, Setup Manager will show its app icon when an `icon` key is missing or empty. It will also show Welcome or the localized equivalent when the `title` key is missing or empty.
When the `banner` _is_ set, an empty or missing `title` or `icon` will simply not be shown. This lets you use the banner image for a completely customized experience.
Note that the `banner` value can be localized.
#### Action Tile Colors
Setup Manager 1.4 allows you to set a color for the action tiles. Use the [top-level `tileColor` key](ConfigurationProfile.md#tilecolor) to set the color for all action tiles. You can also set the tile color for an individual action with [a `tileColor` key in the action](ConfigurationProfile.md#tilecolor-1).
When no `tileColor` is set, the default behavior is to use the window background color (gray on Sequoia and earlier, white on Tahoe, or the dark mode equivalent).
You can set the `tileColor` value (top-level and action level) to [a hex color or system color name](ConfigurationProfile.md#defining-colors). There are a few special color names:
- `##automatic`: calculates each tile's color from the average color of each actions icon, icons defined with `symbol:…` will use the default color
- `##background`: system window background (gray on Sequoia and earlier, white on Tahoe)
- `##clear`: transparent or no background, works best when `hideActionLabels` is set to false
See [`tileColor`](ConfigurationProfile.md#tilecolor-1) and [Defining Colors](ConfigurationProfile.md#defining-colors) in the documentation for details.
#### Profile Installation and Removal Logging
A new tab has been added to logging window which logs the installation and removal of configuration profiles. These events will also be logged to the main Setup Manager log, which allows you to see them in context of the entire workflow.
This can be especially useful to determine whether a particular profile disrupts the network and possibly the download of an important component. In the unified system log, these entries will have the `profile` category.
## 1.4beta2
(2025-11-24)

View File

@@ -21,7 +21,7 @@ These behaviors change in debug mode:
- `policy`, `recon`, and `shell` actions that require root are replaced with a delay (and will always complete successfully)
- `watchPath` and `wait` actions timeout and fail after 10 seconds
When in debug mode, you can also set the `simulateMDM` preference key to `Jamf Pro` or `Jamf School`. This allows you to do test runs on un-enrolled Macs.
When in debug mode, you can also set the `simulateMDM` preference key to `Jamf Pro` or `Jamf School`. This is _necessary_ for test runs on un-enrolled Macs and to launch Setup Manager as a local user.
#### `title`
@@ -205,6 +205,8 @@ Disable the countdown:
<integer>-1</integer>
```
**Note** the `integer` tag. When you accidentally set the type to `string` its value will not be interpreted correctly.
#### `finalAction`
(String, optional, default: `continue`)
@@ -433,6 +435,19 @@ Example:
<string>**Finished**  _Enjoy your %model%!_</string>
```
#### `startingMessage`
(String, optional, localized, substitutions, markdown, v1.4.3, default: "Getting Started…")
Custom message shown while Setup Manager is "Getting Ready…", i.e. waiting for the Jamf framework to be installed
Example:
```xml
<key>startingMessage</key>
<string>Waiting for management framework installation. Please remain patient!</string>
```
## Actions
All actions should have these keys:
@@ -842,7 +857,7 @@ Example:
## User Entry
You can enable user entry for the following keys:
You can enable user entry for the following fields:
- `userID`
- `email`
@@ -858,6 +873,8 @@ You can enable user entry for the following keys:
Any of the fields will only be shown when its key exists. If you were to create an empty `userEntry` dict, you get an empty user input screen with a 'Save' button - not a good user experience.
For each field, you need to provide at least one of `default`, `placeholder`, or `options`.
`userID` and `email` can be somewhat confusing and depending on which Cloud directory you have configured in Jamf Pro, you may need one or the other or both. Because of this Setup Manager 1.1 and older would only prompt for 'User email' and set both `userID` and `email` from that value. To maintain compatibility with this behavior, Setup Manager will continue to set _both_ `userID` and `email` when only one of the two values is requested and entered. If you request both fields, both will be set individually in the recon.
@@ -865,6 +882,9 @@ Any of the fields will only be shown when its key exists. If you were to create
Data from user entry is written, together with some other data to a file when Setup Manager reaches a `waitForUserEntry` action and again when it finishes. The file is stored at `/private/var/db/SetupManagerUserData.txt`. [More details.](Docs/Extras.md#user-data-file)
### Keys
#### `default`
(String, localized)
@@ -1017,7 +1037,7 @@ In this example, the 'Room' field will be shown in Setup Manager with the label
You can configure Setup Manager to only show the user entry section when specified users have authenticated in enrollment customization. This enables workflows, where certain users (techs and admins) get the option to re-assign the device to another user, but other users don't see the option.
For this, you need to setup the top-level `enrollmnetUserID` to receive the `$EMAIL` variable. This will communicate to SetupManager the user who logged in with customized enrollment. Then you add key `showForUserIDs` with an array of user emails to the `userEntry` dict. When both `enrollmentUserID` and `userEntry.showForUserIDs` are set, the user entry UI will only show for the listed users.
For this, you need to setup the top-level `enrollmentUserID` to receive the `$EMAIL` variable. This will communicate to SetupManager the user who logged in with customized enrollment. Then you add key `showForUserIDs` with an array of user emails to the `userEntry` dict. When both `enrollmentUserID` and `userEntry.showForUserIDs` are set, the user entry UI will only show for the listed users.
#### `showForUserIDs`
@@ -1113,7 +1133,7 @@ can be localized like this:
<key>de</key>
<string>Willkommen!</string>
<key>fr</key>
<string>Bienvenu!</string>
<string>Bienvenue!</string>
<key>nl</key>
<string>Welkom!</string>
</dict>
@@ -1165,8 +1185,10 @@ Use these codes for these languages:
| Italian | it |
| Norwegian | nb |
| Polish | pl |
| Portuguese (Brazil)| pt-BR |
| Spanish | es |
| Swedish | sv |
| Turkish | tr |
The [plist and profile example files](Examples) contain localizations for many of the custom text elements.
@@ -1213,12 +1235,16 @@ In some fields, markdown formatting can be used to generate rich, formatted text
The `Please be patient.` text will be shown bolded. You can find details on markdown formatting in the [Markdown Cheat Sheet](https://www.markdownguide.org/cheat-sheet/).
Note that while you _can_ embed links to websites in the markdown using the `[]()` syntax they will not work while running over Setup Assistant or Login Window.
If you want to insert a line break, you need to insert two line breaks into the markdown text.
Note that while you _can_ embed links to websites in the markdown using the `[]()` syntax they will not work.
These keys can use markdown:
- `message`
- Help: `message`
- `finishedMessage`
- `startingMessage`
## Defining Colors

View File

@@ -33,6 +33,8 @@ When you reach the limits of the custom schema, use the XML it generates as a st
Note that the custom schema can become confused when you switch between enrollment action types and you will need to clean up extra empty fields. It is best to delete the action type you don't need any more and create a new action of the desired type.
While the Jamf Pro interface offers different schemas for different versions of Setup Manager, you _only_ have to upgrade to the latest version when you need to use new features only available in that version.
## iMazing Profile Editor
There is also a manifest for Setup Manager in [iMazing Profile Editor](https://imazing.com/profile-editor).
@@ -45,7 +47,7 @@ The command-Q keyboard shortcut to quit the app is disabled. Use `shift-control-
While Setup Manager is running you can open a log window with command-L.
There are two or three tabs, one for the main Setup Manager log, one showing output from `/var/log/install.log`, one showing configuration profile installation and removal, and (Jamf Pro only) one tab showing output from `/var/log/jamf.log`. Some log tabs will be summarized to events relevant to the enrollment workflow. You can see the full log content by unchecking the 'Summarize' option.
There are several tabs, one for the main Setup Manager log, one showing output from `/var/log/install.log`, one showing configuration profile installation and removal, and (Jamf Pro only) one tab showing output from `/var/log/jamf.log`. Some log tabs will be summarized to events relevant to the enrollment workflow. You can see the full log content by unchecking the 'Summarize' option.
Note that the extra logs (Install, Profiles, and Jamf) show events that were not initiated by Setup Manager. Nevertheless, these events can be relevant to your enrollment workflow.
@@ -68,6 +70,8 @@ For example:
sudo log show --last 30m --predicate 'subsystem="com.jamf.setupmanager"'
```
There is a button at the top of the log window which creates a new folder named `SetupManagerLogs-<timestamp>` in `/Users/Shared` and copies Setup Manager, install, and (when present) jamf log files there. Hold the option key to select a different location. Note the logs are copied in their current state, so wait until Setup Manager is done before exporting.
## Debug mode
When you set the `DEBUG` key to `true` in the profile or locally with the `defaults` command Setup Manager will not perform any tasks that actually perform installations or otherwise change the system. When in DEBUG mode, Setup Manager will also read settings from the local settings (i.e. `~/Library/Preferences/com.jamf.setupmanager.plist`) which simplifies iterating through different settings. If you want to run Setup Manager on an unmanaged Mac, you may need to provide a `simulateMDM` key with a value of either `Jamf Pro` or `Jamf School`.

View File

@@ -52,12 +52,15 @@ The "Getting Ready" phase prepares some steps and waits for all essential Jamf P
Note that you can see the individual steps and the timing for each step in the [Setup Manager log file](Extras.md#logging)].
Once Jamf Pro's enrollment workflow is complete, Setup Manager runs a full update inventory/recon. In general, if the recon takes a long time, you should review the inventory collection settings. Calculating home directory sizes and gathering fonts can take a lot of time and CPU power, and speed up things significantly when turned off, not just during enrollment with Setup Manager. You should also review extension attributes, for how long each one runs.
Once Jamf Pro's enrollment workflow is complete, Setup Manager runs a full update inventory/recon. In general, if the recon takes a long time, you should review the inventory collection settings in Jamf Pro. Calculating home directory sizes and gathering fonts can take a lot of time and CPU power, and speed up things significantly when turned off, not just during enrollment with Setup Manager. You should also review extension attributes, for how long each one runs.
Gathering software update information in inventory collection may lead to long recon times or even stalls. Since recent versions of macOS use DDM status channels for both reporting of the current macOS version and the status of software updates, you do not generally require this information in the inventory collection.
Mac App Store/VPP and Jamf App Installer apps that are scoped to the computer will also begin installing _immediately_ after enrollment. Since macOS will only perform one installation at a time, these might delay the installation of essential Jamf Pro components. You can create smart groups to defer these installations.
With Setup Manager 1.3 and higher, you can check whether apps are getting installed before Setup Manager starts the actions in the Setup Manager log.
Any configuration profiles that affect network settings can lead to a brief drop of the network connection which can slow down or completely interrupt the download and configuration of the Jamf Pro framework. The Setup Manager (1.3 and later) log will show changes to network or outages. When you see those in connection with long delays, you should look for profiles that are installed before that might affect the network. Setup Manager 1.4 and higher log will show profile installations and removals. Profiles that affect Wifi, firewall, VPN settings or the installation of security tools that affect or change network access are ciritical here and should be deferred to [be installed at a later stage with scoping](https://github.com/jamf/Setup-Manager/blob/main/Docs/Extras.md#jamf-pro-useful-smart-groups).
## Can I set the wallpaper/desktop picture or dock with Setup Manager?

19
Docs/JamfPro-UIE.md Normal file
View File

@@ -0,0 +1,19 @@
# Running Setup Manager at User Initiated Enrollment
While we strongly recommend to use Automated Device Enrollment where possible, we understand there are many situations where manual enrollment is still required. Setup Manager works fine after profile based device enrollment (also called User-initiated enrollment or UIE), but there are few things to consider.
## Installation at User Initiated Enrollment
Since Prestage enrollment packages are only installed during Automated Device Enrollment, you need to create a policy which installs the Setup Manager pkg and attach that to the `enrollmentComplete` trigger.
Create the Setup Manager profile and make sure it is scoped in a way that it will reach the device immediataly at enrollment. For example, you can create a smart group on the criterium `Enrolled via Automated Device Enrollment` `is` `No` to gather all Macs _not_ enrolled with ADE.
## Troubleshooting
With UIE, there _will_ be an unvoidable short delay between the enrollment and when Setup Manager launches. If the pause is very long, you will need to analyse jamf.log and install.log to see where the time is spent. Setup Manager logs will show some events that occur even before Setup Manager is installed and launches, but the time information might be lost or not represented. Use the suggestions here for reducing the time to launch.
## Workflow and Profile
Once Setup Manager launches it will work through the actions in the profile same as with Automated Device Enrollment. We recommend setting a `background` to block access to other apps while Setup Manager is running. If you don't have a custom background/wallpaper image, you can set `background` to `/System/Library/CoreServices/DefaultDesktop.heic` to use the default wallpaper.
Even though Setup Manager works basically the same, there are enough differences between the environment after User Initiated Enrollment, where the system is already set up, the user account already exists, and the user may have already done installations and configuration that you should revisit your enrollment workflow actions in Setup Manager and consider them in this context. You will likely use a modified workflow and Setup Manager workflow for manual enrollment.

View File

@@ -72,6 +72,8 @@ The data for the `finished` webhook includes the same as above, with some additi
"duration": 53, // integer
"finished": "2025-01-14T15:12:20Z", // time Setup Manager finished, date as string, iso8601
"computerName": "Mac-123456" // computer name, only when set through Setup Manager
"downloadThroughput": 698497408 // integer, when it could be measured
"uploadThroughput": 67450904 // integer, when it could be measured
"userEntry": { // data entered by the user
"department": "IT",
"computerName": "IT-ABC123",

View File

@@ -113,7 +113,7 @@
<key>es</key>
<string>¡^[^[Bienvenido](inflect: true)](inflectionAlternative: &apos;Te damos la bienvenida&apos;)!</string>
<key>fr</key>
<string>Bienvenu!</string>
<string>Bienvenue!</string>
<key>he</key>
<string>ברוכים הבאים!</string>
<key>it</key>

View File

@@ -101,7 +101,7 @@
<key>en</key>
<string>Welcome!</string>
<key>fr</key>
<string>Bienvenu!</string>
<string>Bienvenue!</string>
<key>nl</key>
<string>Welkom!</string>
</dict>

View File

@@ -131,7 +131,7 @@
<key>es</key>
<string>¡Bienvenido!</string>
<key>fr</key>
<string>Bienvenu!</string>
<string>Bienvenue!</string>
<key>he</key>
<string>ברוכים הבאים!</string>
<key>it</key>

View File

@@ -4,13 +4,18 @@
_"Every Assistant has a Manager"_
![Setup Manager Logo](https://img.shields.io/badge/macOS-13.5%2B-success)
Updates are published in the '[Releases](https://github.com/jamf-concepts/setup-manager/releases)' section of the repo. There you can also [download the latest pkg installer](https://github.com/jamf-concepts/setup-manager/releases/latest). You can subscribe to notifications for the repo using the 'Watch' button above.
![minOS](https://img.shields.io/badge/macOS-13.5%2B-success)
![GitHub Release](https://img.shields.io/github/v/release/jamf/setup-manager?color=green)
![GitHub Pre-Release](https://img.shields.io/github/v/release/jamf/setup-manager?include_prereleases&label=pre-release)
![GitHub Downloads total](https://img.shields.io/github/downloads/jamf/setup-manager/total)
![GitHub Downloads latest](https://img.shields.io/github/downloads/jamf/setup-manager/latest/total)
Please report issues, feature requests [as an issue.](https://github.com/jamf-concepts/setup-manager/issues)
We have opened the [discussions](https://github.com/jamf-concepts/setup-manager/discussions) area for questions and more generic feedback.
Updates are published in the '[Releases](https://github.com/jamf/setup-manager/releases)' section of the repo. There you can also [download the latest pkg installer](https://github.com/jamf/setup-manager/releases/latest). You can subscribe to notifications for the repo using the 'Watch' button above.
Please report issues, feature requests [as an issue.](https://github.com/jamf/setup-manager/issues)
We have opened the [discussions](https://github.com/jamf/setup-manager/discussions) area for questions and more generic feedback.
There is also a [`#jamf-setup-manager`](https://macadmins.slack.com/archives/C078DDLKRDW) channel on the [MacAdmins Slack](https://macadmins.org).
@@ -39,7 +44,7 @@ Setup Manager provides:
- Jamf Pro
- [JamfPro-Quick Start](Docs/JamfPro-QuickStart.md)
- zero-touch and user-initiated deployments (forthcoming)
- [Manual User-initiated deployments](Docs/JamfPro-UIE.md)
- [extra installations based on user data entry](Docs/JamfPro-TwoPhase.md)
- [Single-touch workflow with user re-assignment using Jamf Connect](Docs/JamfProConnect-SingleTouch.md)
- [handsfree deployment with AutoAdvance and Setup Manager at login window](Docs/JamfPro-LoginWindow.md)
@@ -67,4 +72,4 @@ Setup Manager requires macOS 13.5 or higher. It will work only with Jamf Pro or
---
Please report issues, feature requests, and feedback (positive and negative) [as an issue.](https://github.com/Jamf-Concepts/Setup-Manager/issues)
Please report issues, feature requests, and feedback [as an issue.](https://github.com/jamf/Setup-Manager/issues)