mirror of
https://github.com/mtan93/Installomator.git
synced 2026-03-08 21:02:46 +00:00
If an app has `LSMinimumSystemVersion` in the `Info.plist`, then we will check if the installed macOS lives up to this, and exit if not. First a normal run on Monterey: ``` Installomator/utils/assemble.sh omnidisksweeper DEBUG=0 INSTALL=force 2022-01-07 13:37:43 omnidisksweeper setting variable from argument DEBUG=0 2022-01-07 13:37:43 omnidisksweeper setting variable from argument INSTALL=force 2022-01-07 13:37:43 omnidisksweeper ################## Start Installomator v. 9.0dev 2022-01-07 13:37:43 omnidisksweeper ################## omnidisksweeper 2022-01-07 13:37:44 omnidisksweeper BLOCKING_PROCESS_ACTION=tell_user 2022-01-07 13:37:44 omnidisksweeper NOTIFY=success 2022-01-07 13:37:44 omnidisksweeper LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns 2022-01-07 13:37:44 omnidisksweeper no blocking processes defined, using OmniDiskSweeper as default 2022-01-07 13:37:44 omnidisksweeper Changing directory to /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.41qqoUEN 2022-01-07 13:37:44 omnidisksweeper App(s) found: /Applications/OmniDiskSweeper.app 2022-01-07 13:37:44 omnidisksweeper found app at /Applications/OmniDiskSweeper.app, version 1.13 2022-01-07 13:37:44 omnidisksweeper appversion: 1.13 2022-01-07 13:37:44 omnidisksweeper Using force to install, so not using updateTool. 2022-01-07 13:37:44 omnidisksweeper Latest version of OmniDiskSweeper is 1.13 2022-01-07 13:37:44 omnidisksweeper There is no newer version available. 2022-01-07 13:37:44 omnidisksweeper Downloading https://downloads.omnigroup.com/software/MacOSX/10.14/OmniDiskSweeper-1.13.dmg to OmniDiskSweeper.dmg 2022-01-07 13:37:45 omnidisksweeper no more blocking processes, continue with update 2022-01-07 13:37:45 omnidisksweeper Installing OmniDiskSweeper 2022-01-07 13:37:45 omnidisksweeper Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.41qqoUEN/OmniDiskSweeper.dmg 2022-01-07 13:37:46 omnidisksweeper Mounted: /Volumes/OmniDiskSweeper 2022-01-07 13:37:46 omnidisksweeper Verifying: /Volumes/OmniDiskSweeper/OmniDiskSweeper.app 2022-01-07 13:37:49 omnidisksweeper Team ID matching: 34YW5XSRB7 (expected: 34YW5XSRB7 ) 2022-01-07 13:37:49 omnidisksweeper App has LSMinimumSystemVersion: 10.14 2022-01-07 13:37:49 omnidisksweeper Downloaded version of OmniDiskSweeper is 1.13, same as installed. 2022-01-07 13:37:49 omnidisksweeper Using force to install anyway. 2022-01-07 13:37:49 omnidisksweeper Removing existing /Applications/OmniDiskSweeper.app 2022-01-07 13:37:49 omnidisksweeper Copy /Volumes/OmniDiskSweeper/OmniDiskSweeper.app to /Applications 2022-01-07 13:37:49 omnidisksweeper Changing owner to st 2022-01-07 13:37:49 omnidisksweeper Finishing... 2022-01-07 13:37:59 omnidisksweeper App(s) found: /Applications/OmniDiskSweeper.app 2022-01-07 13:37:59 omnidisksweeper found app at /Applications/OmniDiskSweeper.app, version 1.13 2022-01-07 13:37:59 omnidisksweeper Installed OmniDiskSweeper, version 1.13 2022-01-07 13:37:59 omnidisksweeper notifying 2022-01-07 13:37:59 omnidisksweeper Deleting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.41qqoUEN 2022-01-07 13:37:59 omnidisksweeper Unmounting /Volumes/OmniDiskSweeper "disk4" ejected. 2022-01-07 13:38:00 omnidisksweeper App not closed, so no reopen. 2022-01-07 13:38:00 omnidisksweeper ################## End Installomator, exit code 0 ``` Trying where I manually change OS version to 10.13: ``` Installomator/utils/assemble.sh omnidisksweeper DEBUG=0 INSTALL=force 2022-01-07 13:38:39 omnidisksweeper setting variable from argument DEBUG=0 2022-01-07 13:38:39 omnidisksweeper setting variable from argument INSTALL=force 2022-01-07 13:38:39 omnidisksweeper ################## Start Installomator v. 9.0dev 2022-01-07 13:38:39 omnidisksweeper ################## omnidisksweeper 2022-01-07 13:38:39 omnidisksweeper BLOCKING_PROCESS_ACTION=tell_user 2022-01-07 13:38:39 omnidisksweeper NOTIFY=success 2022-01-07 13:38:39 omnidisksweeper LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns 2022-01-07 13:38:39 omnidisksweeper no blocking processes defined, using OmniDiskSweeper as default 2022-01-07 13:38:39 omnidisksweeper Changing directory to /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.PXjTfPiA 2022-01-07 13:38:39 omnidisksweeper App(s) found: /Applications/OmniDiskSweeper.app 2022-01-07 13:38:39 omnidisksweeper found app at /Applications/OmniDiskSweeper.app, version 1.13 2022-01-07 13:38:40 omnidisksweeper appversion: 1.13 2022-01-07 13:38:40 omnidisksweeper Using force to install, so not using updateTool. 2022-01-07 13:38:40 omnidisksweeper Latest version of OmniDiskSweeper is 1.13 2022-01-07 13:38:40 omnidisksweeper There is no newer version available. 2022-01-07 13:38:40 omnidisksweeper Downloading https://downloads.omnigroup.com/software/MacOSX/10.14/OmniDiskSweeper-1.13.dmg to OmniDiskSweeper.dmg 2022-01-07 13:38:40 omnidisksweeper no more blocking processes, continue with update 2022-01-07 13:38:40 omnidisksweeper Installing OmniDiskSweeper 2022-01-07 13:38:40 omnidisksweeper Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.PXjTfPiA/OmniDiskSweeper.dmg 2022-01-07 13:38:41 omnidisksweeper Mounted: /Volumes/OmniDiskSweeper 2022-01-07 13:38:41 omnidisksweeper Verifying: /Volumes/OmniDiskSweeper/OmniDiskSweeper.app 2022-01-07 13:38:43 omnidisksweeper Team ID matching: 34YW5XSRB7 (expected: 34YW5XSRB7 ) 2022-01-07 13:38:43 omnidisksweeper App has LSMinimumSystemVersion: 10.14 2022-01-07 13:38:43 omnidisksweeper App requires higher System Version than installed: 10.13 2022-01-07 13:38:43 omnidisksweeper ERROR: Installed macOS is too old for this app. 2022-01-07 13:38:43 omnidisksweeper Deleting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.PXjTfPiA 2022-01-07 13:38:43 omnidisksweeper Unmounting /Volumes/OmniDiskSweeper "disk4" ejected. 2022-01-07 13:38:43 omnidisksweeper App not closed, so no reopen. 2022-01-07 13:38:43 omnidisksweeper ################## End Installomator, exit code 6 ```
94 lines
2.5 KiB
Bash
94 lines
2.5 KiB
Bash
# MARK: check minimal macOS requirement
|
|
autoload is-at-least
|
|
|
|
installedOSversion=$(sw_vers -productVersion)
|
|
if ! is-at-least 10.14 $installedOSversion; then
|
|
printlog "Installomator requires at least macOS 10.14 Mojave."
|
|
exit 98
|
|
fi
|
|
|
|
# MARK: argument parsing
|
|
if [[ $# -eq 0 ]]; then
|
|
if [[ -z $label ]]; then # check if label is set inside script
|
|
printlog "no label provided, printing labels"
|
|
grep -E '^[a-z0-9\_-]*(\)|\|\\)$' "$0" | tr -d ')|\' | grep -v -E '^(broken.*|longversion|version|valuesfromarguments)$' | sort
|
|
#grep -E '^[a-z0-9\_-]*(\)|\|\\)$' "${labelFile}" | tr -d ')|\' | grep -v -E '^(broken.*|longversion|version|valuesfromarguments)$' | sort
|
|
exit 0
|
|
fi
|
|
elif [[ $1 == "/" ]]; then
|
|
# jamf uses sends '/' as the first argument
|
|
printlog "shifting arguments for Jamf"
|
|
shift 3
|
|
fi
|
|
|
|
while [[ -n $1 ]]; do
|
|
if [[ $1 =~ ".*\=.*" ]]; then
|
|
# if an argument contains an = character, send it to eval
|
|
printlog "setting variable from argument $1"
|
|
eval $1
|
|
else
|
|
# assume it's a label
|
|
label=$1
|
|
fi
|
|
# shift to next argument
|
|
shift 1
|
|
done
|
|
|
|
# lowercase the label
|
|
label=${label:l}
|
|
|
|
# separate check for 'version' in order to print plain version number without any other information
|
|
if [[ $label == "version" ]]; then
|
|
echo "$VERSION"
|
|
exit 0
|
|
fi
|
|
|
|
printlog "################## Start Installomator v. $VERSION"
|
|
printlog "################## $label"
|
|
|
|
# Check for DEBUG mode
|
|
if [[ $DEBUG -gt 0 ]]; then
|
|
printlog "DEBUG mode $DEBUG enabled."
|
|
fi
|
|
|
|
# How we get version number from app
|
|
# (alternative is "CFBundleVersion", that can be used in labels)
|
|
versionKey="CFBundleShortVersionString"
|
|
|
|
# get current user
|
|
currentUser=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ { print $3 }')
|
|
|
|
# MARK: check for root
|
|
if [[ "$(whoami)" != "root" && "$DEBUG" -eq 0 ]]; then
|
|
# not running as root
|
|
cleanupAndExit 6 "not running as root, exiting"
|
|
fi
|
|
|
|
# MARK: labels in case statement
|
|
case $label in
|
|
longversion)
|
|
# print the script version
|
|
printlog "Installomater: version $VERSION ($VERSIONDATE)"
|
|
exit 0
|
|
;;
|
|
valuesfromarguments)
|
|
if [[ -z $name ]]; then
|
|
printlog "need to provide 'name'"
|
|
exit 1
|
|
fi
|
|
if [[ -z $type ]]; then
|
|
printlog "need to provide 'type'"
|
|
exit 1
|
|
fi
|
|
if [[ -z $downloadURL ]]; then
|
|
printlog "need to provide 'downloadURL'"
|
|
exit 1
|
|
fi
|
|
if [[ -z $expectedTeamID ]]; then
|
|
printlog "need to provide 'expectedTeamID'"
|
|
exit 1
|
|
fi
|
|
;;
|
|
|
|
# label descriptions start here
|