mirror of
https://github.com/mtan93/dialog-scripts.git
synced 2026-03-07 21:22:00 +00:00
listitems creation was not taking into account app names with spaces, ie Google Chrome would be cut off into Google.
110 lines
3.1 KiB
Bash
Executable File
110 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#
|
|
# Display a Dialog with a list of applications and indicate when they've been installed
|
|
# Useful when apps are deployed at random, without local logging, etc.
|
|
# Useful for Mosyle App Catalog deployments, VPP app deployments, etc.
|
|
#
|
|
# Requires Dialog v1.9.1 or later https://github.com/bartreardon/Dialog/releases
|
|
#
|
|
|
|
# List of apps to process
|
|
# Provide the display name as you prefer and the path to the app/file. ex: "Google Chrome,/Applications/Google Chrome.app"
|
|
# Tip: Check for something like print drivers using the pkg receipt, ex: "Konica-Minolta drivers,/var/db/receipts/jp.konicaminolta.print.package.C759.plist"
|
|
apps=(
|
|
"Google Chrome,/Applications/Google Chrome.app"
|
|
"Google Drive,/Applications/Google Drive.app"
|
|
"VLC,/Applications/VLC.app"
|
|
"zoom.us,/Applications/zoom.us.app"
|
|
)
|
|
|
|
# Dialog display settings, change as desired
|
|
title="Installing Apps"
|
|
message="Please wait while we download and install apps"
|
|
|
|
# location of dialog and dialog command file
|
|
dialogApp="/usr/local/bin/dialog"
|
|
dialog_command_file="/var/tmp/dialog.log"
|
|
|
|
# check we are running as root
|
|
if [[ $(id -u) -ne 0 ]]; then
|
|
echo "This script should be run as root"
|
|
exit 1
|
|
fi
|
|
|
|
# *** functions
|
|
|
|
# execute a dialog command
|
|
function dialog_command(){
|
|
echo "$1"
|
|
echo "$1" >> $dialog_command_file
|
|
}
|
|
|
|
function finalise(){
|
|
dialog_command "progresstext: Install of applications complete"
|
|
dialog_command "progress: complete"
|
|
dialog_command "button1text: Done"
|
|
dialog_command "button1: enable"
|
|
exit 0
|
|
}
|
|
|
|
function appCheck(){
|
|
dialog_command "listitem: $(echo "$app" | cut -d ',' -f1): wait"
|
|
while [ ! -e "$(echo "$app" | cut -d ',' -f2)" ]
|
|
do
|
|
sleep 2
|
|
done
|
|
dialog_command "progresstext: Install of \"$(echo "$app" | cut -d ',' -f1)\" complete"
|
|
dialog_command "listitem: $(echo "$app" | cut -d ',' -f1): ✅"
|
|
progress_index=$(( progress_index + 1 ))
|
|
echo "at item number $progress_index"
|
|
}
|
|
|
|
# *** end functions
|
|
|
|
# set progress total to the number of apps in the list
|
|
progress_total=${#apps[@]}
|
|
|
|
# set icon based on whether computer is a desktop or laptop
|
|
hwType=$(/usr/sbin/system_profiler SPHardwareDataType | grep "Model Identifier" | grep "Book")
|
|
if [ "$hwType" != "" ]; then
|
|
icon="SF=laptopcomputer.and.arrow.down,weight=thin,colour1=#51a3ef,colour2=#5154ef"
|
|
else
|
|
icon="SF=desktopcomputer.and.arrow.down,weight=thin,colour1=#51a3ef,colour2=#5154ef"
|
|
fi
|
|
|
|
dialogCMD="$dialogApp -p --title \"$title\" \
|
|
--message \"$message\" \
|
|
--icon \"$icon\" \
|
|
--progress $progress_total \
|
|
--button1text \"Please Wait\" \
|
|
--button1disabled"
|
|
|
|
# create the list of apps
|
|
listitems=""
|
|
for app in "${apps[@]}"; do
|
|
listitems="$listitems --listitem '$(echo "$app" | cut -d ',' -f1)'"
|
|
done
|
|
|
|
# final command to execute
|
|
dialogCMD="$dialogCMD $listitems"
|
|
|
|
echo "$dialogCMD"
|
|
|
|
# Launch dialog and run it in the background sleep for a second to let thing initialise
|
|
eval "$dialogCMD" &
|
|
sleep 2
|
|
|
|
progress_index=0
|
|
|
|
(for app in "${apps[@]}"; do
|
|
step_progress=$(( 1 + progress_index ))
|
|
dialog_command "progress: $step_progress"
|
|
appCheck &
|
|
done
|
|
|
|
wait)
|
|
|
|
# all done. close off processing and enable the "Done" button
|
|
finalise
|