11-24-2014, 05:14 PM
(11-22-2014, 06:39 AM)Jerry link Wrote: Some nice additions there miskoOK, checklist is removedI think we should remove the checklist though, new folk could interrupt this incorrectly.

Some minor improvements to the script.
First open sinaptic and/or gdebi-gtk to test this.
Code:
#!/bin/bash
#-----------------------------------------------------------------------------------------
# Name: Linux Lite Updates
# Description: A GUI tool to easily install Updates in Linux Lite.
# Authors: Misko_2083, Jerry Bezencon
# Date: Nov 20th, 2014
# Website: https://www.linuxliteos.com
#-----------------------------------------------------------------------------------------
# Kill off any package managers that may be running
# Timeout in seconds
if [ "$(pidof synaptic)" ]
then
TIMEOUT=10
(
SEC=$TIMEOUT;
while [[ $SEC -ge 0 ]];
do
echo `expr \( \( $TIMEOUT - $SEC \) \* 100 / $TIMEOUT \)`;
echo "#synaptic will close in $SEC seconds.";
SEC=`expr $SEC - 1`;
sleep 1;
done;
) | /usr/bin/zenity --progress --auto-close
if [ "${PIPESTATUS[1]}" -ne "0" ]; then
zenity --info \
--title="Updates" --text="Close the synaptic package manager and try again."
exit 0
fi
sudo killall -9 synaptic
else
echo ""
fi
if [ -z "$(pgrep gdebi-gtk)" ]
then
echo ""
else
TIMEOUT=10
(
SEC=$TIMEOUT;
while [[ $SEC -ge 0 ]];
do
echo `expr \( \( $TIMEOUT - $SEC \) \* 100 / $TIMEOUT \)`;
echo "#gdebi package installer will be closed in $SEC seconds.";
SEC=`expr $SEC - 1`;
sleep 1;
done;
) | /usr/bin/zenity --progress --auto-close
if [ "${PIPESTATUS[1]}" -ne "0" ]; then
zenity --info \
--title="Updates" --text="Close the gdebi package installer and try again."
exit 0
fi
killall -9 gdebi-gtk
fi
# Linux Lite default dialog icon
ic="/usr/share/icons/zenity-llcc.png"
# Get list of available updated packages then populate them to /tmp/updateslist
zenity --question --title="Linux Lite Updates" --window-icon="/usr/share/icons/zenity-llcc.png" --text="We will now fetch the Updates list.\n\nClick Yes to continue or No to abort."
if [ "$?" -eq "0" ];then
x=$( stdbuf -oL /bin/bash \-c '(sudo apt-get update \-y )' 2>&1 |
stdbuf -oL sed -n -e '/\[*$/ s/^/# /p' -e '/\*$/ s/^/# /p'|
zenity --progress --title="Updating package information..." --pulsate \
--width=600 --auto-close )
# Creates a list in /tmp/updateslist
LISTNAMES=$(apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "Name: $1 INSTALLED: $2 AVAILABLE: $3\n"}' | tee /tmp/updateslist)
# A check here to see if any updates are available, if there are none, script pops up dialog box saying 'No Updates Available', removes /tmp/updateslist
if [ -z "$(cat /tmp/updateslist)" ]; then
zenity --info --window-icon="/usr/share/icons/zenity-llcc.png" --title="Linux Lite Updates" \
--text="No Updates Available"
rm /tmp/updateslist
exit 0
fi
#Insert text into /tmp/updateslist
sed -i -e '1 i\######### List of available Updates ##############' -e '1 i\######### Click OK to continue or Cancel to stop the update process ##############' /tmp/updateslist
# Erase existing available info
sudo dpkg --clear-avail
else
exit 0
fi
# Call the zenity dialog to show update list
zenity --text-info --title="List of available Updates - Click OK to continue or Cancel to stop the update process" --width=700 --height=300 --filename="/tmp/updateslist "
if [ "$?" -eq "0" ];then
# Main window dialogue.
INSTALLER_TITLE="Linux Lite Updates
-----------------------------------------------------------------------------------------------------------
Please make sure all software installation programs like
<b>Synaptic Package Manager</b> and <b>Gdebi</b> are closed before proceeding.
When you click on <b>Yes</b>, this window will close and the updates will begin.
-----------------------------------------------------------------------------------------------------------
Click on <b>Yes</b> to continue or <b>No</b> to cancel the updates process."
# Halt updates script if user selects Cancel
else
rm /tmp/updateslist
exit 0
fi
# Continue script if no halt
INSTALL_ICON="/usr/share/icons/zenity-llcc.png"
APPNAME="Linux Lite"
zenity --question --title="$APPNAME Updates" --window-icon="${INSTALL_ICON}" --text="${INSTALLER_TITLE}"
if [ "$?" -eq "0" ]; then
x=$( stdbuf -oL /bin/bash \-c '(sudo apt-get upgrade \-y )' 2>&1 | tee /var/log/llupdates.log |
stdbuf -oL sed -n -e '/\[*$/ s/^/# /p' -e '/\*$/ s/^/# /p'|
zenity --progress --title="Updating..." --pulsate \
--width=600 --auto-close )
if [ "${PIPESTATUS[0]}" -ne "0" ]; then
zenity --error \
--title="Error" --text="$APPNAME Updates have failed."
exit 0
fi
else
exit 0
fi
PROCEED=$(zenity --question --title="$APPNAME Updates" --window-icon=/usr/share/icons/zenity-llcc.png --text="Updates have finished installing.\n\nWould you like to view the $APPNAME Updates log?"; echo $?)
if [ ${PROCEED} -eq 1 ]; then
zenity --info --title="$APPNAME Updates" --window-icon="${INSTALL_ICON}" --text="$APPNAME Updates Complete."
exit;
else
zenity --text-info --title="Updates Log" --width=700 --height=300 --filename="/var/log/llupdates.log"
fi
exit 0
Here you've used the title to give info on the next step
Code:
zenity --text-info --title="List of available Updates - Click OK to continue or Cancel to stop the update process" --width=700 --height=300 --filename="/tmp/updateslist "
I've used stream editor in the script to insert two lines into /tmp/updateslist
Code:
#Insert text into /tmp/updateslist
sed -i -e '1 i\######### List of available Updates ##############' -e '1 i\######### Click OK to continue or Cancel to stop the update process ##############' /tmp/updateslist