Author: nextgens Date: 2007-02-08 18:05:37 +0000 (Thu, 08 Feb 2007) New Revision: 11694
Modified: trunk/apps/installer/installclasspath/windows/update.cmd Log: new upstream version of the windows updating script : needs testing see #1061 Modified: trunk/apps/installer/installclasspath/windows/update.cmd =================================================================== --- trunk/apps/installer/installclasspath/windows/update.cmd 2007-02-08 18:00:40 UTC (rev 11693) +++ trunk/apps/installer/installclasspath/windows/update.cmd 2007-02-08 18:05:37 UTC (rev 11694) @@ -1,201 +1,232 @@ - at echo off -::This script is designed for the Windows command line shell, so please don't put it into anything else! :) -::If you want to debug this script by adding pauses and stuff, please do it from another batch file, because -::if you modify this script in any way it will be detected as outdated and will be overwritten on the next run. -::To force a re-download of the latest Freenet.jar, simply delete freenet-%RELEASE%-latest.jar.url before running this script. -echo ----- -echo - Freenet Windows update script 1.6 by Zero3Cool (zero3cool at zerosplayground.dk) -echo - Freenet Windows update script 1.8 by Juiceman (juiceman69 at gmail.com) -echo - Thanks to search4answers, Michael Schierl and toad for help and feedback. -echo - This script will automatically update your Freenet installation. -echo - In case of an unrecoverable error, this script will pause. -echo ----- -echo ----------------------------------------------------------- -echo - Please try to use the update over freenet feature of your -echo - node to reduce traffic on our servers, thanks!!! -echo - FYI, updating over freenet is more secure and better for -echo - your anonymity -echo ----------------------------------------------------------- -echo ----- - -::Initialize some stuff -set MAGICSTRING=INDO -set RESTART=0 -set PATH=%SYSTEMROOT%\System32\;%PATH% -set RELEASE=stable -if "%1"=="testing" set RELEASE=testing - -::Go to our location -for %%I in (%0) do set LOCATION=%%~dpI -cd /D %LOCATION% - -::Check if its valid, or at least looks like it -if not exist freenet.ini goto error2 -if not exist bin\wget.exe goto error2 -echo - Freenet installation found at %LOCATION% -echo ----- - -if not exist wrapper.conf.bak copy wrapper.conf wrapper.conf.bak - -::Get the filename and skip straight to the Freenet update if this is a new updater -for %%I in (%0) do set FILENAME=%%~nxI -if %FILENAME%==update.new.cmd goto updaterok - -::Download latest updater and verify it -if exist update.new.cmd del update.new.cmd -echo - Checking for updater updates... -bin\wget.exe -o NUL --timeout=10 --waitretry=20 http://downloads.freenetproject.org/alpha/update/update.cmd -O update.new.cmd - -if not exist update.new.cmd goto error1 -find "FREENET W%MAGICSTRING%WS UPDATE SCRIPT" update.new.cmd > NUL -if errorlevel 1 goto error1 - -find "freenet.jar" wrapper.conf > NUL -if errorlevel 1 goto error5 - -find "freenet.jar.new" wrapper.conf > NUL -if not errorlevel 1 goto error5 - -::Check if updater has been updated -fc update.cmd update.new.cmd > NUL -if not errorlevel 1 goto updaterok - -::It has! Run new version and end self -echo - Updater updated, restarting update... -echo ----- -start update.new.cmd -goto veryend - -::Updater is up to date, check Freenet -:updaterok - -:: Register .fref file extention -echo "Registering .fref file extention" -echo Windows Registry Editor Version 5.00 >> fref.reg -echo [HKEY_CLASSES_ROOT\.fref] >> fref.reg -echo @="fref_auto_file" >> fref.reg -echo [HKEY_CLASSES_ROOT\fref_auto_file] >> fref.reg -echo @="Freenet node reference" >> fref.reg -echo "EditFlags"=dword:00000000 >> fref.reg -echo "BrowserFlags"=dword:00000008 >> fref.reg -echo [HKEY_CLASSES_ROOT\fref_auto_file\DefaultIcon] >> fref.reg -echo @="shell32.dll,56" >> fref.reg -echo [HKEY_CLASSES_ROOT\fref_auto_file\shell] >> fref.reg -echo @="Open" >> fref.reg -regedit /s fref.reg > NUL -FTYPE fref_auto_file=start javaw -cp "%LOCATION%\freenet.jar" freenet.tools.AddRef "%%1" > NUL -del /F fref.reg - -::Check for sha1test and download if needed. -if not exist lib mkdir lib -if not exist lib\sha1test.jar bin\wget.exe -o NUL --timeout=10 --waitretry=20 http://downloads.freenetproject.org/alpha/installer/sha1test.jar -O lib\sha1test.jar - -if not errorlevel 0 goto error3 -echo - Updater is up to date. -echo ----- -echo - Checking for Freenet updates... -if exist freenet-%RELEASE%-latest.jar.new.url del freenet-%RELEASE%-latest.jar.new.url -bin\wget.exe -o NUL --timeout=10 --waitretry=20 http://downloads.freenetproject.org/alpha/freenet-%RELEASE%-latest.jar.url -O freenet-%RELEASE%-latest.jar.new.url - -if not exist freenet-%RELEASE%-latest.jar.new.url goto error3 -FOR %%I IN ("%LOCATION%freenet-%RELEASE%-latest.jar.url") DO if %%~zI==0 goto error3 - -::Do we have something old to compare with? If not, update right away -if not exist freenet-%RELEASE%-latest.jar.url goto update1 - -::Compare with current copy -fc freenet-%RELEASE%-latest.jar.url freenet-%RELEASE%-latest.jar.new.url > NUL -if not errorlevel 1 goto noupdate - -::New version found, check if the node is currently running -:update1 -echo - New version found! -:safetycheck -net start | find "Freenet" > NUL -if errorlevel 1 goto update2 > NUL -set RESTART=1 -echo - Shutting down Freenet... -call stop.cmd > NUL -IF ERRORLEVEL 1 call bin\stop.cmd > NUL -echo - If you see an error message about -echo - "The service could not be controlled in its present state." -echo - Please ignore, it is a side effect of a work-around -echo - to make sure the node is stopped before we copy files. -goto safetycheck - -:update2 -echo ----- -echo - Downloading new version and updating local installation... -if exist freenet-%RELEASE%-latest.jar.bak del freenet-%RELEASE%-latest.jar.bak -if exist freenet-%RELEASE%-latest.jar ren freenet-%RELEASE%-latest.jar freenet-%RELEASE%-latest.jar.bak -bin\wget.exe -o NUL --timeout=10 --waitretry=20 -i freenet-%RELEASE%-latest.jar.new.url -O freenet-%RELEASE%-latest.jar -copy freenet-%RELEASE%-latest.jar freenet.jar - -if not exist freenet-%RELEASE%-latest.jar goto error4 -FOR %%I IN ("%LOCATION%freenet-%RELEASE%-latest.jar") DO if %%~zI==0 goto error4 -java -cp lib\sha1test.jar Sha1Test freenet-%RELEASE%-latest.jar -if not errorlevel 0 goto error4 -if exist freenet-%RELEASE%-latest.jar.url del freenet-%RELEASE%-latest.jar.url -ren freenet-%RELEASE%-latest.jar.new.url freenet-%RELEASE%-latest.jar.url -echo - Freenet-*RELEASE%-snapshot.jar verified and updated. -java -cp lib\sha1test.jar Sha1Test freenet-ext.jar -goto end - -:noupdate -echo - Freenet is up to date. -goto end - -:error1 -echo - Error! Downloaded update script is invalid. Try again later. -goto end - -:error2 -echo - Error! Please run this script from a working Freenet installation. -echo ----- -pause -goto veryend - -:error3 -echo - Error! Could not download latest Freenet update information. Try again later. -goto end - -:error4 -echo - Error! Freenet update failed, trying to restore backup... -if exist freenet-%RELEASE%-latest.jar del freenet-%RELEASE%-latest.jar -if exist freenet-%RELEASE%-latest.jar.bak ren freenet-%RELEASE%-latest.jar.bak freenet-%RELEASE%-latest.jar -if exist freenet-%RELEASE%-latest.jar.url del freenet-%RELEASE%-latest.jar.url -goto end - -:error5 -echo - Your wrapper.conf needs to be updated .... updating it ; please restart the script when done. -if exist wrapper.conf.bak del wrapper.conf.bak -if exist wrapper.conf ren wrapper.conf wrapper.conf.bak -bin\wget.exe -o NUL --timeout=10 --waitretry=20 http://downloads.freenetproject.org/alpha/update/wrapper.conf -O wrapper.conf -start update.new.cmd -goto veryend - -:end -echo ----- -echo - Cleaning up... -if exist freenet-%RELEASE%-latest.jar.new.url del freenet-%RELEASE%-latest.jar.new.url -if exist freenet-%RELEASE%-latest.jar.bak del freenet-%RELEASE%-latest.jar.bak - -if %RESTART%==0 goto cleanup2 -echo - Restarting Freenet... -call start.cmd > NUL -IF ERRORLEVEL 1 call bin\start.cmd > NUL - -:cleanup2 -if %FILENAME%==update.new.cmd goto newend -if exist update.new.cmd del update.new.cmd -echo ----- -goto veryend - -::If this session was launched by an old updater, replace it now (and force exit, or we will leave a command prompt open) -:newend -copy /Y update.new.cmd update.cmd > NUL -echo ----- -exit - -:veryend -::FREENET WINDOWS UPDATE SCRIPT + at echo off +::This script is designed for the Windows command line shell, so please don't put it into anything else! :) +::If you want to debug this script by adding pauses and stuff, please do it from another batch file, because +::if you modify this script in any way it will be detected as outdated and will be overwritten on the next run. +::To force a re-download of the latest Freenet.jar, simply delete freenet-%RELEASE%-latest.jar.url before running this script. +echo ----- +echo - Freenet Windows update script 1.6 by Zero3Cool (zero3cool at zerosplayground.dk) +echo - Freenet Windows update script 1.8 by Juiceman (juiceman69 at gmail.com) +echo - Thanks to search4answers, Michael Schierl and toad for help and feedback. +echo - This script will automatically update your Freenet installation. +echo - In case of an unrecoverable error, this script will pause. +echo ----- +echo ----------------------------------------------------------- +echo - Please try to use the update over freenet feature of your +echo - node to reduce traffic on our servers, thanks!!! +echo - FYI, updating over freenet is more secure and better for +echo - your anonymity +echo ----------------------------------------------------------- +echo ----- + +::Initialize some stuff +set MAGICSTRING=INDO +set RESTART=0 +set PATH=%SYSTEMROOT%\System32\;%PATH% +set RELEASE=stable +if "%1"=="testing" set RELEASE=testing + +::Go to our location +for %%I in (%0) do set LOCATION=%%~dpI +cd /D %LOCATION% + +::Check if its valid, or at least looks like it +if not exist freenet.ini goto error2 +if not exist bin\wget.exe goto error2 + +if not exist wrapper.conf.bak copy wrapper.conf wrapper.conf.bak > NUL + +::Get the filename and skip straight to the Freenet update if this is a new updater +for %%I in (%0) do set FILENAME=%%~nxI +if %FILENAME%==update.new.cmd goto updaterok + +::Download latest updater and verify it +if exist update.new.cmd del update.new.cmd +echo - Checking for newer version of update script... +bin\wget.exe -o NUL --timeout=10 --waitretry=20 http://downloads.freenetproject.org/alpha/update/update.cmd -O update.new.cmd + +if not exist update.new.cmd goto error1 +find "FREENET W%MAGICSTRING%WS UPDATE SCRIPT" update.new.cmd > NUL +if errorlevel 1 goto error1 + +find "freenet.jar" wrapper.conf > NUL +if errorlevel 1 goto error5 + +find "freenet.jar.new" wrapper.conf > NUL +if not errorlevel 1 goto error5 + +::Check if updater has been updated +fc update.cmd update.new.cmd > NUL +if not errorlevel 1 goto updaterok + +::It has! Run new version and end self +echo - Update script updated, restarting update script... +echo ----- +start update.new.cmd +goto veryend + + +::Updater is up to date, check Freenet +:updaterok +echo - Update script is current. +echo ----- + +::Handle older installations where start and stop are not in the bin\ directory +if not exist bin\stop.cmd copy stop.cmd bin\stop.cmd > NUL +if not exist bin\start.cmd copy start.cmd bin\start.cmd > NUL +if not exist bin\stop.cmd goto error2 +if not exist bin\start.cmd goto error2 + +echo - Freenet installation found at %LOCATION% +echo ----- + +:: Register .fref file extention +echo - Registering .fref file extention + +echo Windows Registry Editor Version 5.00 >> fref.reg +echo [HKEY_CLASSES_ROOT\.fref] >> fref.reg +echo @="fref_auto_file" >> fref.reg +echo [HKEY_CLASSES_ROOT\fref_auto_file] >> fref.reg +echo @="Freenet node reference" >> fref.reg +echo "EditFlags"=dword:00000000 >> fref.reg +echo "BrowserFlags"=dword:00000008 >> fref.reg +echo [HKEY_CLASSES_ROOT\fref_auto_file\DefaultIcon] >> fref.reg +echo @="shell32.dll,56" >> fref.reg +echo [HKEY_CLASSES_ROOT\fref_auto_file\shell] >> fref.reg +echo @="Open" >> fref.reg +regedit /s fref.reg > NUL +FTYPE fref_auto_file=start javaw -cp "%LOCATION%\freenet.jar" freenet.tools.AddRef "%%1" > NUL +del /F fref.reg + +echo ----- +echo - Checking for Freenet JAR updates... + +::Check for sha1test and download if needed. +if not exist lib mkdir lib +if not exist lib\sha1test.jar bin\wget.exe -o NUL --timeout=10 --waitretry=20 http://downloads.freenetproject.org/alpha/installer/sha1test.jar -O lib\sha1test.jar +if not errorlevel 0 goto error3 + +if exist freenet-%RELEASE%-latest.jar.new.url del freenet-%RELEASE%-latest.jar.new.url +bin\wget.exe -o NUL --timeout=10 --waitretry=20 http://downloads.freenetproject.org/alpha/freenet-%RELEASE%-latest.jar.url -O freenet-%RELEASE%-latest.jar.new.url + +if not exist freenet-%RELEASE%-latest.jar.new.url goto error3 +FOR %%I IN ("%LOCATION%freenet-%RELEASE%-latest.jar.url") DO if %%~zI==0 goto error3 + +::Do we have something old to compare with? If not, update right away +if not exist freenet-%RELEASE%-latest.jar.url goto update1 + +::Compare with current copy +fc freenet-%RELEASE%-latest.jar.url freenet-%RELEASE%-latest.jar.new.url > NUL +if not errorlevel 1 goto noupdate + + +::New version found, check if the node is currently running +:update1 +echo - New version found! +echo ----- + +net start | find "Freenet" > NUL +if errorlevel 1 goto update2 > NUL +set RESTART=1 + +echo - Shutting down Freenet... +echo - +echo - If you see an error message about +echo - "The service could not be controlled in its present state." +echo - Please ignore, it is a side effect of a work-around +echo - to make sure the node is stopped before we copy files. + + +:safetycheck +net start | find "Freenet" > NUL +if errorlevel 1 goto update2 > NUL +call bin\stop.cmd > NUL +goto safetycheck + + +:update2 +echo ----- +echo - Downloading new version and updating local installation... + +if exist freenet-%RELEASE%-latest.jar.bak del freenet-%RELEASE%-latest.jar.bak +if exist freenet-%RELEASE%-latest.jar ren freenet-%RELEASE%-latest.jar freenet-%RELEASE%-latest.jar.bak +bin\wget.exe -o NUL --timeout=10 --waitretry=20 -i freenet-%RELEASE%-latest.jar.new.url -O freenet-%RELEASE%-latest.jar +copy freenet-%RELEASE%-latest.jar freenet.jar > NUL + +if not exist freenet-%RELEASE%-latest.jar goto error4 +FOR %%I IN ("%LOCATION%freenet-%RELEASE%-latest.jar") DO if %%~zI==0 goto error4 +java -cp lib\sha1test.jar Sha1Test freenet-%RELEASE%-latest.jar > NUL +if not errorlevel 0 goto error4 +if exist freenet-%RELEASE%-latest.jar.url del freenet-%RELEASE%-latest.jar.url +ren freenet-%RELEASE%-latest.jar.new.url freenet-%RELEASE%-latest.jar.url + +echo - +echo - Freenet-%RELEASE%-snapshot.jar verified and updated. +goto end + + +:noupdate +echo - Freenet is up to date. +goto end + + +:error1 +echo - Error! Downloaded update script is invalid. Try again later. +goto end + + +:error2 +echo - Error! Please run this script from a working Freenet installation. +echo ----- +pause +goto veryend + + +:error3 +echo - Error! Could not download latest Freenet update information. Try again later. +goto end + + +:error4 +echo - Error! Freenet update failed, trying to restore backup... +if exist freenet-%RELEASE%-latest.jar del freenet-%RELEASE%-latest.jar +if exist freenet-%RELEASE%-latest.jar.bak ren freenet-%RELEASE%-latest.jar.bak freenet-%RELEASE%-latest.jar +if exist freenet-%RELEASE%-latest.jar.url del freenet-%RELEASE%-latest.jar.url +goto end + + +:error5 +echo - Your wrapper.conf needs to be updated .... updating it ; please restart the script when done. +if exist wrapper.conf.bak del wrapper.conf.bak +if exist wrapper.conf ren wrapper.conf wrapper.conf.bak +bin\wget.exe -o NUL --timeout=10 --waitretry=20 http://downloads.freenetproject.org/alpha/update/wrapper.conf -O wrapper.conf +start update.new.cmd +goto veryend + + +:end +echo ----- +echo - Cleaning up... +if exist freenet-%RELEASE%-latest.jar.new.url del freenet-%RELEASE%-latest.jar.new.url +if exist freenet-%RELEASE%-latest.jar.bak del freenet-%RELEASE%-latest.jar.bak + +if %RESTART%==0 goto cleanup2 +echo - Restarting Freenet... +call bin\start.cmd > NUL + + +:cleanup2 +if %FILENAME%==update.new.cmd goto newend +if exist update.new.cmd del update.new.cmd +echo ----- +goto veryend + + +::If this session was launched by an old updater, replace it now (and force exit, or we will leave a command prompt open) +:newend +copy /Y update.new.cmd update.cmd > NUL +echo ----- +exit + + +:veryend +::FREENET WINDOWS UPDATE SCRIPT
