diff --git a/.gitignore b/.gitignore index 594f1a2..ecd5e1f 100644 --- a/.gitignore +++ b/.gitignore @@ -10,5 +10,4 @@ scratch/ *.tbz # do include Installomator .pkg files -!Installomator-*.pkg - +#!Installomator-*.pkg diff --git a/Installomator-0.5.pkg b/Installomator-0.5.pkg deleted file mode 100644 index 018b06b..0000000 Binary files a/Installomator-0.5.pkg and /dev/null differ diff --git a/Installomator.sh b/Installomator.sh index 7bea9f6..8f2e3f0 100755 --- a/Installomator.sh +++ b/Installomator.sh @@ -72,6 +72,13 @@ INSTALL="" # - force Install even if it’s the same version +# Re-opening of closed app +REOPEN="yes" +# options: +# - yes App wil be reopened if it was closed +# - no App not reopened + + # NOTE: How labels work # Each workflow label needs to be listed in the case statement below. @@ -179,7 +186,7 @@ cleanupAndExit() { # $1 = exit code, $2 message hdiutil detach "$dmgmount" fi # If we closed any processes, reopen the app again - #reopenClosedProcess # We skip this again, not all apps work correctly when opened like this + reopenClosedProcess printlog "################## End Installomator, exit code $1 \n\n" exit "$1" } @@ -191,6 +198,13 @@ runAsUser() { fi } +reloadAsUser() { + if [[ $currentUser != "loginwindow" ]]; then + uid=$(id -u "$currentUser") + su - $currentUser -c "${@}" + fi +} + displaydialog() { # $1: message $2: title message=${1:-"Message"} title=${2:-"Installomator"} @@ -418,6 +432,12 @@ reopenClosedProcess() { # If Installomator closed any processes, let's get the app opened again # credit: Søren Theilgaard (@theilgaard) + # don't reopen if REOPEN is not "yes" + if [[ $REOPEN != yes ]]; then + printlog "REOPEN=no, not reopening anything" + return + fi + # don't reopen in DEBUG mode if [[ $DEBUG -ne 0 ]]; then printlog "DEBUG mode, not reopening anything" @@ -425,11 +445,15 @@ reopenClosedProcess() { fi if [[ $appClosed == 1 ]]; then - printlog "Telling app $name to open" - #runAsUser osascript -e "tell app \"$name\" to open" - runAsUser open -a "${name}" - processuser=$(ps aux | grep -i "${name}") - printlog "Reopened ${name} as $processuser" + printlog "Telling app $appName to open" + #runAsUser osascript -e "tell app \"$appName\" to open" + #runAsUser open -a "${appName}" + reloadAsUser "open -a \"${appName}\"" + #reloadAsUser "open \"${(0)applist}\"" + processuser=$(ps aux | grep -i "${appName}" | grep -vi "grep" | awk '{print $1}') + printlog "Reopened ${appName} as $processuser" + else + printlog "App not closed, so no reopen." fi } @@ -1233,7 +1257,12 @@ docker) # credit: @securitygeneration name="Docker" type="dmg" - downloadURL="https://download.docker.com/mac/stable/Docker.dmg" # downloadURL="https://desktop.docker.com/mac/stable/amd64/Docker.dmg" + #downloadURL="https://download.docker.com/mac/stable/Docker.dmg" + if [[ $(arch) == arm64 ]]; then + downloadURL="https://desktop.docker.com/mac/stable/arm64/Docker.dmg" + elif [[ $(arch) == i386 ]]; then + downloadURL="https://desktop.docker.com/mac/stable/amd64/Docker.dmg" + fi appNewVersion=$(curl -ifs https://docs.docker.com/docker-for-mac/release-notes/ | grep ">Docker Desktop Community" | head -1 | sed -n -e 's/^.*Community //p' | cut -d '<' -f1) expectedTeamID="9BNSXJN65R" ;; diff --git a/README.md b/README.md index 0b73651..e8b7e64 100644 --- a/README.md +++ b/README.md @@ -259,6 +259,12 @@ Since we now make a version checking, and only installs the software if the vers - ``: When not set, software is only installed if it is newer/different in version (default) - `force`: Install even if it’s the same version +### Re-opening of closed app + +The `REOPEN` can be used to prevent the reopening of a closed app + +- `yes`: (default) app will be reopened if it was closed +- `no`: app not reopened ### Adding applications/label blocks @@ -327,6 +333,7 @@ Depending on the application or pkg there are a few more variables you can or ne - `appName`: (optional) File name of the app bundle in the dmg to verify and copy (include the `.app`). When not given, the `appName` is set to `$name.app`. + This is also the name of the app that will get reopned, if we closed any `blockingProcesses` (see further down) - `targetDir`: (optional) dmg or zip: