From 6c498dbf31c7f3b42734fa8797a29931ce850419 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Fri, 7 Jan 2022 13:44:04 +0100 Subject: [PATCH] LSMinimumSystemVersion handling 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 ``` --- fragments/arguments.sh | 3 ++- fragments/functions.sh | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/fragments/arguments.sh b/fragments/arguments.sh index d682862..6c01519 100644 --- a/fragments/arguments.sh +++ b/fragments/arguments.sh @@ -1,7 +1,8 @@ # MARK: check minimal macOS requirement autoload is-at-least -if ! is-at-least 10.14 $(sw_vers -productVersion); then +installedOSversion=$(sw_vers -productVersion) +if ! is-at-least 10.14 $installedOSversion; then printlog "Installomator requires at least macOS 10.14 Mojave." exit 98 fi diff --git a/fragments/functions.sh b/fragments/functions.sh index f5d5137..b1ba7a0 100644 --- a/fragments/functions.sh +++ b/fragments/functions.sh @@ -345,8 +345,17 @@ installAppWithPath() { # $1: path to app to install in $targetDir cleanupAndExit 5 "Team IDs do not match" fi - # versioncheck - # credit: Søren Theilgaard (@theilgaard) + # macOS versioncheck + minimumOSversion=$(defaults read $appPath/Contents/Info.plist LSMinimumSystemVersion) + if [[ $minimumOSversion =~ '[0-9.]*' ]]; then + printlog "App has LSMinimumSystemVersion: $minimumOSversion" + if ! is-at-least $minimumOSversion $installedOSversion; then + printlog "App requires higher System Version than installed: $installedOSversion" + cleanupAndExit 6 "Installed macOS is too old for this app." + fi + fi + + # app versioncheck appNewVersion=$(defaults read $appPath/Contents/Info.plist $versionKey) if [[ -n $appNewVersion && $appversion == $appNewVersion ]]; then printlog "Downloaded version of $name is $appNewVersion, same as installed."