From ced90daa7162245a00da450eda78692ef467c934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Sun, 18 Apr 2021 10:56:59 +0200 Subject: [PATCH] v0.5 --- Installomator.sh | 36 ++++++++++++++++++++++++++++++------ README.md | 7 +++++++ 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/Installomator.sh b/Installomator.sh index cd96834..d685d20 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 } 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: