Releases: SecondSonConsulting/Baseline
Baseline v2.3
Baseline v.2.3 Release Notes
Huge thanks to all of the contributors and idea generators from the community, you all make this tool way better than it would be.
Remember that with new releases, you can point iMazing Profile Editor at the ProfileManifest
folder to get the new keys before they're merged into the public profile manifest library.
The #baseline channel on the Mac Admins Slack is the best place to get support or give feedback.
New Features
- New item type:
FinalScripts
.- Similar to
InitialScripts
, these items support all of the same configuration keys asScripts
. FinalScripts
run after all other items have been processed, but prior to the DialogListView window being closed.- A new configuration file key
CloseListBeforeFinalScripts
flips this, and hasFinalScripts
run after the List View closes but before the success/fail windows appear. - The original idea for this feature was to run a script that sends off the Baseline logs/status to a webhook, but with
CloseListBeforeFinalScripts
it can be used for anything you see fit including another custom Dialog script prior to the completion screen. - Thank you to @keepfacesbeard for this contribution!
- Similar to
- Scripts, Initial Scripts, Final Scripts, and PKGs can now be validated with
SHA256
checksum, not justMD5
.- These items now have
SHA256
as a configurable key in your configuration file.
- These items now have
- Scripts, Initial Scripts, and Final Scripts can now be configured to run as the logged in user.
- All Script type items have a boolean for
AsUser
to indicate they should be run as the logged in user. - If there is no logged in user, these items will not be run and they will be listed as Failed.
- Another awesome contribution from @drewdiver, thank you!
- All Script type items have a boolean for
Improvements
- Deprecated and removed the
ReinstallDialog
key entirely.- Previously Baseline would reinstall swiftDialog if a custom Dialog icon was found.
- This is no longer necessary, and an improved method for adding the custom Dialog icon brings the same behavior as before with less overhead.
- Due to a quirk with macOS, if you are running Baseline.sh from a Terminal or as a child process of another app, that app will require PPPC permission to manipulate the app icon.
- Users running from the Baseline PKG (which uses LaunchD) or from their MDM script runner do not need to worry about this.
- Major kudos, as always, to @bartreardon for continually improving swiftDialog. This project could not exist without him.
- Baseline is now published under the MIT open-source license.
Potentially Breaking Changes
WaitFor
items have been changed in a manner which impacts user experience and possibly impacts functionality.- Previously,
WaitFor
items weren't checked until all other items had completed. WaitFor
items will now be checked off in real-time as file paths are discovered. This should improve the end user experience when used along with tools like Munki or a script which installs multiple items.WaitFor
items will no longer get the spinny icon for better UI experience.- Previously, the
WaitForTimeout
timer would not start until all other items were processed. Now,WaitForTimeout
will begin as soon as Baseline begins to process items. - The default value for
WaitForTimeout
has been doubled from300
to600
seconds to help adjust for this change.
- Previously,
Bug Fixes
- Fixed a bug where Baseline would not launch the ListView window if any other Dialog process was running at the same time.
- Big thank you to @k2graham for this fix.
- Fixed an edge case issue with the icons folder permissions.
Baseline_NoDaemon_v2.3beta2.pkg
mistakenly had the LaunchDaemon included in the package. That issue is not present in this latest release.
Baseline v2.3beta2
Improvements in 2.3beta2:
CloseListBeforeFinalScripts
option added to determine whetherFinalScripts
happen while the Dialog List view is still open, or after it closes.- Defaults to
false
- Use this option if you want to encourage a user action or other GUI process to happen between the List View closing and the completion screen showing
- Final Scripts still do not appear on the List View.
- Profile Manifest updated to include this option.
- Defaults to
Baseline v2.3beta1
Baseline v.2.3beta1 Release Notes
Huge thanks to all of the contributors and idea generators from the community, you all make this tool way better than it would be.
Remember that during betas, you can point iMazing Profile Editor at the ProfileManifest
folder to get the new keys before they're released to the public profile manifest library.
Please Help Test Betas
If you rely on Baseline for deployments and updates, we would really appreciate testing your existing configurations against the new beta releases.
If you're looking to utilize these new features, please test them out and let us know if any issues arise.
The #baseline channel on the Mac Admins Slack is the best place to get support or give feedback.
New Features
- New item type:
FinalScripts
.- Similar to
InitialScripts
, these items support all of the same configuration keys asScripts
. FinalScripts
run after the DialogListView window is closed, and prior to theSuccess
orFailure
dialog.- The original idea for this feature was to run a script that sends off the Baseline logs/status to a webhook, but it can be used for anything you see fit including another custom Dialog script prior to the completion screen.
- Thank you to @keepfacesbeard for this contribution!
- Similar to
- Scripts, Initial Scripts, Final Scripts, and PKGs can now be validated with
SHA256
checksum, not justMD5
.- These items now have
SHA256
as a configurable key in your configuration file.
- These items now have
- Scripts, Initial Scripts, and Final Scripts can now be configured to run as the logged in user.
- All Script type items have a boolean for
AsUser
to indicate they should be run as the logged in user. - If there is no logged in user, these items will not be run and they will be listed as Failed.
- Another awesome contribution from @drewdiver, thank you!
- All Script type items have a boolean for
Improvements
- Deprecated and removed the
ReinstallDialog
key entirely.- Previously Baseline would reinstall swiftDialog if a custom Dialog icon was found.
- This is no longer necessary, as swiftDialog now has a built in feature we can call with
--seticon
to make this update directly. - If a file is found at
/Library/Application Support/Dialog/Dialog.png
then Baseline will invoke swiftDialog with the--seticon
option to accomplish the goal. - Due to a quirk with macOS, if you are running Baseline.sh from a Terminal or as a child process of another app, that app will require PPPC permission to manipulate the app icon.
- Users running from the Baseline PKG (which uses LaunchD) or from their MDM script runner do not need to worry about this.
- Major kudos, as always, to @bartreardon for continually improving swiftDialog. This project could not exist without him.
- Baseline is now published under the MIT open-source license.
Breaking Changes
WaitFor
items have been changed in a manner which impacts user experience and possibly impacts functionality.- Previously,
WaitFor
items weren't checked until all other items had completed. WaitFor
items will now be checked off in real-time as file paths are discovered. This should improve the end user experience when used along with tools like Munki or a script which installs multiple items.WaitFor
items will no longer get the spinny icon for better UI experience.- Previously, the
WaitForTimeout
timer would not start until all other items were processed. Now,WaitForTimeout
will begin as soon as Baseline begins to process items. - The default value for
WaitForTimeout
has been doubled from300
to600
seconds to help adjust for this change.
- Previously,
Bug Fixes
- Fixed a bug where Baseline would not launch the ListView window if any other Dialog process was running at the same time.
- Big thank you to @k2graham for this fix.
- Fixed an edge case issue with the icons folder permissions.
Baseline v2.2.1beta1
Housekeeping
This is a very minor release with a specific purpose.
Please Test the PKGs
I have reworked my package creation process, and would appreciate assistance to make sure I didn't miss anything prior to final release.
Change Log
- Fixed permissions issue on
/Baseline/Icons
folder - Baseline is now published under the MIT open-source license.
Baseline v2.2
New Features available in v2.2
Support for apps/scripts delivered by VPP or MDM
WaitFor
A new type of item is available under the category of WaitFor
. This is an array of dictionaries, just like Packages, Installomator Labels, and Scripts.
Define Path
as a file path for a file you want Baseline to wait for and mark complete once that file exists. Designed for use with VPP or MDM delivered apps. Once all other items are processed, Baseline will begin waiting for each of these paths to exist on the device.
Just like Scripts
Installomator
or Packages
, WaitFor
items can be configured with Icons, Subtitles, and Display Names.
Addresses #42 as well as numerous requests on Slack.
WaitForTimout
This is an optional integer value representing how many seconds Baseline should wait before considering remaining WaitFor
items to be failed. This timer does not start until all other Baseline items have been processed. Default is 300
(five minutes).
Jamf Verbose Mode
JamfVerbose
is an optional boolean key, defaults to false
. If it is set to true
, for every ScriptPath
that is /usr/local/bin/jamf
Baseline will read the Jamf log and provide more verbose output on that swiftDialog line item, similar to using the InstallomatorSwiftDialogIntegration
. Thank you to everyone that helped me test and hone this feature.
Bug Fixes
Just some general code cleanup, no major issues addressed.
Baseline v2.2beta1
New Features coming in v2.2 - Need testers!
Support for apps/scripts delivered by VPP or MDM
WaitFor
A new type of item is available under the category of WaitFor
. This is an array of dictionaries, just like Packages, Installomator Labels, and Scripts.
Define Path
as a file path for a file you want Baseline to wait for and mark complete once that file exists. Designed for use with VPP or MDM delivered apps. Once all other items are processed, Baseline will begin waiting for each of these paths to exist on the device.
Just like Scripts
Installomator
or Packages
, WaitFor
items can be configured with Icons, Subtitles, and Display Names.
Addresses #42 as well as numerous requests on Slack.
WaitForTimout
This is an optional integer value representing how many seconds Baseline should wait before considering remaining WaitFor
items to be failed. This timer does not start until all other Baseline items have been processed. Default is 300
(five minutes).
Jamf Verbose Mode
JamfVerbose
is an optional boolean key, defaults to false
. If it is set to true
, for every ScriptPath
that is /usr/local/bin/jamf
Baseline will read the Jamf log and provide more verbose output on that swiftDialog line item, similar to using the InstallomatorSwiftDialogIntegration
.
Baseline v.2.1
What's New?
- New Configuration Key for Each Item Type:
Subtitle
- Added support for the new subtitle feature in SwiftDialog 2.4+ which allows Subtitles for each line item
- New Boolean Configuration Key:
Silent
- Previously only available as a script parameter, now can be used in the configuration profile itself
- Using
--silent
at the command line overrides the settings in the configuration profile
Bugs and Housekeeping
- Moved Report file from
/usr/local/Baseline/Baseline-Report.txt
to/var/log/Baseline-Report.txt
- Improved logging function and used standard language for logging item progress/details
- Changed example configuration files to use Firefox instead of Google Chrome
- Fixed a bug where Baseline would exit when run from Jamf due to Jamf default script
- Added
--no-rcs
to the shebang for Baseline.sh, preinstall, and postinstall scripts
Baseline_v2.1beta1
What's New?
- New Configuration Key for Each Item Type:
Subtitle
- Added support for the new subtitle feature in SwiftDialog 2.4+ which allows Subtitles for each line item
- New Boolean Configuration Key:
Silent
- Previously only available as a script parameter, now can be used in the configuration profile itself
- Using
--silent
at the command line overrides the settings in the configuration profile
Bugs and Housekeeping
- Moved Report file from
/usr/local/Baseline/Baseline-Report.txt
to/var/log/Baseline-Report.txt
- Improved logging function and used standard language for logging item progress/details
- Fixed a bug where Baseline would exit when run from Jamf due to Jamf default script parameters
Baseline v2.0
Baseline v2.0 Release Notes
New Configuration File Keys
A huge thanks to the community members that contributed code and testing to this version of Baseline: tiredsince1985 aka @drewdiver, Mykola Grymalyuk @khronokernel, and @copyleftdev
- New "per item" configuration key:
Icon
- swiftDialog Icons are now supported for each individual line item in your list
- Each of the item types (Installomator, Packages, Scripts) now supports
Icon
as a key type - This is a
<string>
value which points to an icon file you would like to appear on that line item. - Define your
Icon
in Scripts, Packages, or Installomator Labels. Icon
can be a full local file path, a filename (if the file lives in/usr/local/Baseline/Icons
), an SF Symbole, or a URL where the file is hosted.- See this swiftDialog documentation for more details: https://github.com/swiftDialog/swiftDialog/wiki/Item-Lists#advanced
- This feature added by: tiredsince1985 aka @drewdiver
- New configuration key:
ProgressBar
- Boolean, default is
false
- If set to True, the swiftDialog Progress Bar feature will be used and incremented as items are progressed
- This feature added by: Mykola Grymalyuk @khronokernel
- Boolean, default is
- New configuration key:
ProgressBarDisplayNames
- Boolean, default is
false
- If set to
true
, the swiftDialogprogresstext
feature will be used, and will list each item on the bottom of the window as it's being processed. - Currently only works if
ProgressBar
is also set to true, but this may change with a future swiftDialog update - This feature added by: Mykola Grymalyuk @khronokernel
- Boolean, default is
- New configuration key:
LogOut
- Boolean, default is
false
- If set to true, Baseline will force a logout at the end of the run.
- If
LogOut
andRestart
are both set totrue
, thenRestart
takes priority.
- If
- Boolean, default is
- If
Installomator.pkg
is found in/usr/local/Baseline/Packages
, then this will be used to install Installomator.- This allows admins to "pin" the version of Installomator they're using
- New configuration key:
BlurScreen
- Boolean, default is
true
- If this key is set to
false
, the--blurscreen
feature of swiftDialog will not be used.- You may wish to add
--ontop
and/or--moveable
to the swiftDialog Options for each window.
- You may wish to add
- Boolean, default is
- The "Ok" button can now be enabled for the List View window.
- New boolean key
- New configuration key:
Button1Enabled
- Boolean, defaults is
false
- If set to true the
--button1disabled
feature of swiftDialog will not be used.
- Boolean, defaults is
- New configuration key:
ReinstallDialog
. Use this key to configure whether swiftDialog will be reinstalled as the final step of Baseline.- Boolean, default is neutral (omit this key entirely to retain default behavior)
- swiftDialog has a feature to change the icon of the app bundle by placing a png file at
/Library/Application Support/Dialog/Dialog.png
- This key is useful, because you can deliver this icon via a Baseline item and Baseline will reinstall swiftDialog so that the icon is adopted for your app bundle.
- swiftDialog will be reinstalled with the same priority as the initial deployment (a custom pkg in the swiftDialog directory, Installomator, or a direct download from Github which is programmed within Baseline.)
- Configuration behavior:
- If this key is omitted from the Baseline configuration file, then swiftDialog will be reinstalled as the last Baseline item if the custom png file exists.
- If this key is set to
false
then swiftDialog will not be reinstalled, even if a custom icon is found. This is useful if you're running Baseline for circumstances aside from initial workstation deployment. - If this key is set to
true
then swiftDialog will be reinstalled as the last Baseline item, regardless of any other circumstances
- New configuration key:
IgnoreDefaultInstallomatorOptions
- Boolean, defaults to
false
- Set this value to true if you do not want Baseline to use the built-in default Installomator options.
- Built in options are
NOTIFY=silent
andBLOCKING_PROCESS_ACTION=kill
- Built in options are
- Boolean, defaults to
- New configuration key:
BailOutFile
- Type:
string
Value:/path/to/file
- Each time Baseline processes an item (be it a Script, Installomator Label, or PKG) it will check for the existence of this file.
- If this file exists, Baseline will exit immediately instead of continuing to process items.
- A failure message will be shown including the name of the previous item as a failure.
- Use this feature if you want an escape from the entire Baseline process based on the output of a script or pkg run.
- This file will be deleted upon exit.
- Baseline will exit using the exit conditions configured in the profile.
- Type:
- New configuration key:
InstallomatorswiftDialogIntegration
- Boolean, defaults to
false
- If set to
true
, Baseline will use the native Installomator/swiftDialog integration. - This will bring a lot more information per line item on what's happening during installation of Installomator labels, but that functionality will not be present in packages or scripts processed by Baseline.
- Boolean, defaults to
New Command-Line Arguments
We are adding extended support for running Baseline as a script (as opposed to the PKG deployment.) The default PKG will not make use of these command-line arguments, however they could be used in conjunction with a PKG by creating your own LaunchDaemon with the ProgramArguments
key set properly.
-c|--config|--configuration [/path/to/config.plist]
- Runs Baseline using the designated plist as it's configuration file.
- Priority for which configuration to use in case of conflict is as follows:
- Configuration file passed as a command-line argument
- Configuration file located at
/usr/local/Baseline/BaselineConfig.plist
.mobileconfig
Profile installed manually or via MDM
- Valid Plist configuration files can be created using iMazing Profile Editor.
-s|--silent|--silent-mode
- Enables "Silent Mode" for Baseline
- Baseline will no longer use any SwiftDialog features and SwiftDialog will not be automatically installed.
- Baseline will not check whether a user is fully logged in. Baseline will run even at the loginwindow or prior to a user account being created.
Improvements and Fixes
- Consolidated temporary files into a single directory to simplified the cleanup process.
- Better handling if the configuration profile contains both
LogOut
andRestart
keys.- If both values are set to
true
thenRestart
takes precedence.
- If both values are set to
- Improved the handling of the
/usr/local/Baseline/Icons
folder (over 1.3beta1) to solve for permissions issues. - ProfileManifest updated for new keys, as well as correcting the tooltip on the
CleanupAfterUse
key. - Baseline now uses a temporary Json file to generate the List View content.
- Big thanks to tiredsince1985 @drewdiver for contributing this change
- If
Restart
is set toFalse
, then the default List View messaging will no longer inform the user that their device will restart.- Another thanks to Mykola Grymalyuk @khronokernel for this
- Added
-L
curl option to the command locating the latest Installomator pkg. This will help in case the Repo changes names in the future. - Fixed bug with including multiple Installomator options
- Options were not parsing properly from the config file to passing options to the command when multiple options were included
- When using a
.mobileconfig
configuration profile, Baseline will now copy the contents to a temporary directory and use the temp as it's config.- This should prevent an edge case issue we've seen with some MDM's reassigning the profile mid-run, causing errors.
- Success and Failure dialogs now use the same "QuitKey" combination as defined in the config (
Command + ]
is default.) - Fixed an issue where if the Success or Failure dialogs were quit with the quit key they would appear 10 times and then Baseline would exit with an error.
- Improvements to optimize the
preinstall
andpostinstall
scripts, courtesy of @copyleftdev - A new alternative pkg: Baseline_NoAgent_v*.pkg is being provided. This package does not install a LaunchDaemon. Use this if you do not want Baseline to fire off immediately upon installation.
Baseline v2.0beta2
Baseline v2.0 Beta 2 Release Notes
New Configuration File Keys
- New "per item" configuration key:
Icon
- swiftDialog Icons are now supported for each individual line item in your list
- Each of the item types (Installomator, Packages, Scripts) now supports
Icon
as a key type - This is a
<string>
value which points to an icon file you would like to appear on that line item. - Define your
Icon
in Scripts, Packages, or Installomator Labels. Icon
can be a full local file path, a filename (if the file lives in/usr/local/Baseline/Icons
), an SF Symbole, or a URL where the file is hosted.- See this swiftDialog documentation for more details: https://github.com/swiftDialog/swiftDialog/wiki/Item-Lists#advanced
- This feature added by: tiredsince1985 @drewdiver
- New configuration key:
ProgressBar
- Boolean, default is
false
- If set to True, the swiftDialog Progress Bar feature will be used and incremented as items are progressed
- This feature added by: Mykola Grymalyuk @khronokernel
- Boolean, default is
- New configuration key:
ProgressBarDisplayNames
- Boolean, default is
false
- If set to
true
, the swiftDialogprogresstext
feature will be used, and will list each item on the bottom of the window as it's being processed. - Currently only works if
ProgressBar
is also set to true, but this may change with a future swiftDialog update - This feature added by: Mykola Grymalyuk @khronokernel
- Boolean, default is
- New configuration key:
LogOut
- Boolean, default is
false
- If set to true, Baseline will force a logout at the end of the run.
- If
LogOut
andRestart
are both set totrue
, thenRestart
takes priority.
- If
- Boolean, default is
- If
Installomator.pkg
is found in/usr/local/Baseline/Packages
, then this will be used to install Installomator.- This allows admins to "pin" the version of Installomator they're using
- New configuration key:
BlurScreen
- Boolean, default is
true
- If this key is set to
false
, the--blurscreen
feature of swiftDialog will not be used.- You may wish to add
--ontop
and/or--moveable
to the swiftDialog Options for each window.
- You may wish to add
- Boolean, default is
- The "Ok" button can now be enabled for the List View window.
- New boolean key
- New configuration key:
Button1Enabled
- Boolean, defaults is
false
- If set to true the
--button1disabled
feature of swiftDialog will not be used.
- Boolean, defaults is
- New configuration key:
ReinstallDialog
. Use this key to configure whether swiftDialog will be reinstalled as the final step of Baseline.- Boolean, default is neutral (omit this key entirely to retain default behavior)
- swiftDialog has a feature to change the icon of the app bundle by placing a png file at
/Library/Application Support/Dialog/Dialog.png
- This key is useful, because you can deliver this icon via a Baseline item and Baseline will reinstall swiftDialog so that the icon is adopted for your app bundle.
- swiftDialog will be reinstalled with the same priority as the initial deployment (a custom pkg in the swiftDialog directory, Installomator, or a direct download from Github which is programmed within Baseline.)
- Configuration behavior:
- If this key is omitted from the Baseline configuration file, then swiftDialog will be reinstalled as the last Baseline item if the custom png file exists.
- If this key is set to
false
then swiftDialog will not be reinstalled, even if a custom icon is found. This is useful if you're running Baseline for circumstances aside from initial workstation deployment. - If this key is set to
true
then swiftDialog will be reinstalled as the last Baseline item, regardless of any other circumstances
- New configuration key:
IgnoreDefaultInstallomatorOptions
- Boolean, defaults to
false
- Set this value to true if you do not want Baseline to use the built-in default Installomator options.
- Built in options are
NOTIFY=silent
andBLOCKING_PROCESS_ACTION=kill
- Built in options are
- Boolean, defaults to
- New configuration key:
BailOutFile
- Type:
string
Value:/path/to/file
- Each time Baseline processes an item (be it a Script, Installomator Label, or PKG) it will check for the existence of this file.
- If this file exists, Baseline will exit immediately instead of continuing to process items.
- A failure message will be shown including the name of the previous item as a failure.
- Use this feature if you want an escape from the entire Baseline process based on the output of a script or pkg run.
- This file will be deleted upon exit.
- Baseline will exit using the exit conditions configured in the profile.
- Type:
- New configuration key:
InstallomatorswiftDialogIntegration
- Boolean, defaults to
false
- If set to
true
, Baseline will use the native Installomator/swiftDialog integration. - This will bring a lot more information per line item on what's happening during installation of Installomator labels, but that functionality will not be present in packages or scripts processed by Baseline.
- Boolean, defaults to
New Command-Line Arguments
We are adding extended support for running Baseline as a script (as opposed to the PKG deployment.) The default PKG will not make use of these command-line arguments, however they could be used in conjunction with a PKG by creating your own LaunchDaemon with the ProgramArguments
key set properly.
-c|--config|--configuration [/path/to/config.plist]
- Runs Baseline using the designated plist as it's configuration file.
- Priority for which configuration to use in case of conflict is as follows:
- Configuration file passed as a command-line argument
- Configuration file located at
/usr/local/Baseline/BaselineConfig.plist
.mobileconfig
Profile installed manually or via MDM
- Valid Plist configuration files can be created using iMazing Profile Editor.
-s|--silent|--silent-mode
- Enables "Silent Mode" for Baseline
- Baseline will no longer use any SwiftDialog features and SwiftDialog will not be automatically installed.
- Baseline will not check whether a user is fully logged in. Baseline will run even at the loginwindow or prior to a user account being created.
Improvements and Fixes
- Consolidated temporary files into a single directory to simplified the cleanup process.
- Better handling if the configuration profile contains both
LogOut
andRestart
keys.- If both values are set to
true
thenRestart
takes precedence.
- If both values are set to
- Improved the handling of the
/usr/local/Baseline/Icons
folder (over 1.3beta1) to solve for permissions issues. - ProfileManifest updated for new keys, as well as correcting the tooltip on the
CleanupAfterUse
key. - Baseline now uses a temporary Json file to generate the List View content.
- Big thanks to tiredsince1985 @drewdiver for contributing this change
- If
Restart
is set toFalse
, then the default List View messaging will no longer inform the user that their device will restart.- Another thanks to Mykola Grymalyuk @khronokernel for this
- Added
-L
curl option to the command locating the latest Installomator pkg. This will help in case the Repo changes names in the future. - Fixed bug with including multiple Installomator options
- Options were not parsing properly from the config file to passing options to the command when multiple options were included
- When using a
.mobileconfig
configuration profile, Baseline will now copy the contents to a temporary directory and use the temp as it's config.- This should prevent an edge case issue we've seen with some MDM's reassigning the profile mid-run, causing errors.
- Success and Failure dialogs now use the same "QuitKey" combination as defined in the config (
Command + ]
is default.) - Fixed an issue where if the Success or Failure dialogs were quit with the quit key they would appear 10 times and then Baseline would exit with an error.