nanodesk/nanodesk-files/usr/bin/nanodesk-installer-gxm

251 lines
4.6 KiB
Bash
Executable File

#!/bin/bash
TITLE="nanodesk-installer-gxm"
VERSION=$(cat /usr/share/nanodesk/version)
GXMCMD="gxmessage -name $TITLE -center -geometry 669x420 -wrap -font mono,10 -file -"
GXMINFO="gxmessage -name $TITLE -center -buttons Close -default Close -font mono,16 -file -"
DOCROOT="/usr/share/doc/nanodesk-installer"
DILLOCMD="dillo -f -g 640x480 $DOCROOT"
TARGET=""
ERRORFILE="/tmp/nanodesk-installer.error"
SUCCESSFILE="/tmp/nanodesk-installer.success"
# initialize RETURN with a high value
RETURN=255
#####
#
# DIALOGES
#
#####
gxm-abort() {
if gxm-confirm
then
echo "Installation aborted!"| $GXMINFO
exit 1
fi
}
gxm-confirm() {
echo "Are you sure you want abort?" | $GXMINFO -buttons "Yes:0,No:1"
return $?
}
gxm-cleanup() {
echo "!!! An old Errorfile at $ERRORFILE was found !!!
It is necessary to delete it if you want to continue.
When deleting it, you will be asked for your password.
Last message was: $(cat $ERRORFILE)
Delete $ERRORFILE ?" | $GXMINFO -buttons "Yes:0,No:1" -default Yes
return $?
}
gxm-welcome() {
echo " ----==== nanodesk-installer-gxm ====----
nanodesk ${VERSION}
This is a gxmessage based Installation assistant for nanodesk.
To install nanodesk you need a partitioned and formated drive.
You can do the partioning and formating with 'GParted'.
If you need help how to do so, click on 'Help'.
When you are done partitioning and your installation target is formated,
go ahead with 'Install'.
When asked for a password, type in 'debian'" |
$GXMCMD -buttons "Abort:1,Help:2,GParted:10,Install:0"
return $?
}
gxm-select-target() {
echo "Please enter the target and press 'Install'.
For example: /dev/sda1" |
$GXMCMD -entry -buttons "Abort:1,Help:2,Install:0"
return $?
}
gmx-start-cli-installer() {
echo "The commandline nanodesk-installer will now open in a new xterm
window.
Target device: $1
Please follow the instructions there and see you later again..." |
$GXMCMD -buttons "Abort:1,open nanodesk-installer CLI:0" -default "open nanodesk-installer CLI"
return $?
}
gxm-success() {
echo " ----==== nanodesk-installer-gxm ====----
nanodesk ${VERSION}
Installation complete! :)
You can now reboot or continue using nanodesk live." | $GXMCMD -buttons Continue:0,Reboot:2 -default Continue
return $?
}
gxm-error() {
echo " ----==== nanodesk-installer-gxm ====----
nanodesk ${VERSION}
Installation FAILED!! :(
Last message was: $(cat $ERRORFILE)" | $GXMCMD -buttons Close -default Close
return $?
}
#####
#
# HELP
#
#####
help-gparted() {
echo "help-gparted" | $GXMCMD
}
help-select-target() {
echo "help-gparted" | $GXMCMD
}
#####
#
# EXEC
#
#####
exec-gparted() {
pkexec /usr/sbin/gparted
}
exec-nanodesk-installer() {
# run the installer within xterm
xterm -e /bin/bash -c "pkexec /usr/sbin/nanodesk-installer $1 true || echo 'pkexec auth failed' >> $ERRORFILE"
#xterm -e /bin/bash -c "pkexec mc || echo 'pkexec auth failed' >> $ERRORFILE"
#xterm -e /bin/bash -c "pkexec mc || echo 'pkexec auth failed' >> $ERRORFILE"
#xterm -e /bin/bash -c "pkexec 'false ' ; echo $? ; echo 'Please press enter to continue...' ; read"
}
#####
#
# MAIN
#
#####
# cleanup old errorfile
if [ -f "$ERRORFILE" ]
then
RETURN=255
while [ $RETURN -gt 0 ]
do
gxm-cleanup
RETURN=$?
if [ $RETURN -gt 0 ]
then
gxm-abort
else
pkexec rm -f $ERRORFILE || RETURN=255
fi
done
fi
RETURN=255
# welcome screen
while [ $RETURN -gt 0 ]
do
gxm-welcome
RETURN=$?
echo CODE $RETURN
case $RETURN in
1) gxm-abort ;;
2) help-gparted ;;
10) exec-gparted ;;
esac
done
# target select
RETURN=255
while [ $RETURN -gt 0 ]
do
TARGET=$(gxm-select-target)
RETURN=$?
echo CODE $RETURN
echo TARGET $TARGET
# if RC = 1, then user clicked "abort"
case $RETURN in
1) gxm-abort ;;
2) help-select-target ;;
0) echo test if blockdevice
if [ ! -b "$TARGET" ]
then
RETURN=255
echo no
echo -e "Error!\n'${TARGET}' does not exist or is not a blockdevice!" | $GXMINFO
fi
;;
esac
done
# start cli nanodesk-installer
RETURN=255
while [ $RETURN -gt 0 ]
do
gmx-start-cli-installer $TARGET
RETURN=$?
test $RETURN -eq 1 && gxm-abort
echo CODE $RETURN
done
exec-nanodesk-installer $TARGET
if [ -f "$SUCCESSFILE" ]
then
gxm-success
RETURN=$?
case $RETURN in
2) echo reboot ;;
*) exit 0 ;;
esac
elif [ -f "$ERRORFILE" ]
then
gxm-error
exit 1
else
echo "Unexpected Error! Exit here." | $GXMINFO -buttons Close -default Close
exit 1
fi
#if [ $RETURN != 0 ]
#then
# echo "ERROR!" | $GXMINFO
# exit 1
#else
# echo "SUCCESS!" | $GXMINFO
# exit 0
#fi