Skip to content

Commit a1f0b2b

Browse files
bugfix
1 parent ff158b7 commit a1f0b2b

File tree

1 file changed

+46
-34
lines changed

1 file changed

+46
-34
lines changed
Lines changed: 46 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/bin/bash
2-
32
############################################################################################
43
##
54
## Post-install Script for Swift Dialog
@@ -11,7 +10,8 @@
1110
# Define any variables we need here:
1211
logDir="/Library/Application Support/Microsoft/IntuneScripts/Swift Dialog"
1312
DIALOG_BIN="/usr/local/bin/dialog"
14-
PKG_PATH="/var/tmp/dialog-2.5.2-4777.pkg"
13+
PKG_PATH="/var/tmp/dialog.pkg"
14+
PKG_URL="https://github.com/swiftDialog/swiftDialog/releases/download/v2.5.2/dialog-2.5.2-4777.pkg"
1515

1616
# Start Logging
1717
mkdir -p "$logDir"
@@ -27,57 +27,69 @@ exec > >(tee -a "$logDir/postinstall.log") 2>&1
2727
if [[ ! -f "$DIALOG_BIN" ]]; then
2828
echo "$(date) | POST | Swift Dialog is not installed [$DIALOG_BIN]. Installing now..."
2929

30-
# Install SwiftDialog from the .pkg file
31-
if [[ -f "$PKG_PATH" ]]; then
30+
# Download the SwiftDialog .pkg
31+
curl -L -o "$PKG_PATH" "$PKG_URL"
32+
33+
# Install SwiftDialog from the downloaded .pkg file
3234
sudo installer -pkg "$PKG_PATH" -target /
33-
34-
if [[ $? -eq 0 ]]; then
35-
echo "$(date) | POST | Swift Dialog has been installed successfully."
36-
else
37-
echo "$(date) | ERROR | Swift Dialog installation failed."
38-
exit 1
39-
fi
40-
else
41-
echo "$(date) | ERROR | Package file not found at $PKG_PATH. Exiting."
42-
exit 1
43-
fi
35+
4436
else
4537
echo "$(date) | POST | Swift Dialog is already installed."
4638
fi
4739

4840
# Wait for Desktop
49-
until ps aux | grep /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock | grep -v grep &>/dev/null; do
50-
echo "$(date) | + Dock not running, waiting [1] seconds"
41+
until pgrep -x Dock >/dev/null 2>&1; do
42+
echo "$(date) | + Dock not running, waiting [1] seconds"
5143
sleep 1
5244
done
53-
echo "$(date) | Dock is here, lets carry on"
45+
echo "$(date) | Dock is here, let's carry on"
46+
ps aux
5447

55-
# Run Swift Dialog
56-
/usr/local/bin/dialog --jsonfile "/Library/Application Support/SwiftDialogResources/swiftdialog.json" --width 1280 --height 670 --blurscreen --ontop &
48+
# Wait for Swift Dialog to launch
49+
MAX_ATTEMPTS=5
50+
attempt=1
5751

58-
# Wait for Swift Dialog to start
59-
START=$(date +%s) # Set the start time so we can calculate how long we've been waiting
60-
echo "$(date) | POST | Waiting for Swift Dialog to Start..."
61-
# Loop for 1 minutes (60 seconds)
62-
until ps aux | grep /usr/local/bin/dialog | grep -v grep &>/dev/null; do
63-
# Check if the 60 seconds have passed
64-
if [[ $(($(date +%s) - $START)) -ge 60 ]]; then
65-
echo "$(date) | POST | Failed: Swift Dialog did not start within 60 seconds"
66-
exit 1
52+
while [ $attempt -le $MAX_ATTEMPTS ]; do
53+
echo "$(date) | INFO | Attempting to launch Swift Dialog (Attempt $attempt of $MAX_ATTEMPTS)"
54+
55+
# Launch Swift Dialog in the background
56+
killall Dialog
57+
/usr/local/bin/dialog --jsonfile "/Library/Application Support/SwiftDialogResources/swiftdialog.json" --width 1280 --height 670 --blurscreen --ontop &
58+
sleep 2
59+
60+
start_time=$(date +%s)
61+
launched=0
62+
63+
# Wait up to 5 seconds for the process to appear
64+
while true; do
65+
if ps aux | grep /usr/local/bin/dialog | grep -v grep > /dev/null; then
66+
launched=1
67+
break
68+
fi
69+
70+
done
71+
72+
if [ $launched -eq 1 ]; then
73+
echo "$(date) | INFO | Swift Dialog launched successfully on attempt $attempt."
74+
break
75+
else
76+
echo "$(date) | WARNING | Swift Dialog did not launch within 60 seconds on attempt $attempt."
77+
attempt=$((attempt+1))
6778
fi
68-
echo -n "."
69-
sleep 1
7079
done
71-
echo "OK"
80+
81+
if [ $attempt -gt $MAX_ATTEMPTS ]; then
82+
echo "$(date) | ERROR | Swift Dialog failed to launch after $MAX_ATTEMPTS attempts. Continuing with the script..."
83+
fi
7284

7385
echo "$(date) | POST | Processing scripts..."
7486
for script in /Library/Application\ Support/SwiftdialogResources/scripts/*.*; do
7587
echo "$(date) | POST | Executing [$script]"
7688
xattr -d com.apple.quarantine "$script" >/dev/null 2>&1
7789
chmod +x "$script" >/dev/null 2>&1
78-
nice -n 20 "$script"
90+
nice -n 20 "$script" &
7991
done
8092

8193
# Once we're done, we should write a flag file out so that we don't run again
8294
sudo touch "$logDir/onboardingComplete"
83-
exit 0
95+
exit 0

0 commit comments

Comments
 (0)