Project Procyon
From NSIS Wiki
Jump to navigationJump to search
Description
The auto-updater used in Project Procyon.
This work is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.
The Script
; NSIS script for Project Procyon Alpha Launcher ; Written in 2010 by Troy Martin for Project Procyon. ; Project Procyon site: http://procyon.surrealearth.info/ ; Licensed under a Creative Commons Attribution-NonCommercial 3.0 License. ; See http://creativecommons.org/licenses/by-nc/3.0/ for license details. ; String defines !define PRODUCT_NAME "Project Procyon" !define PRODUCT_VERSION "Alpha" !define PRODUCT_PUBLISHER "Surreal Earth Studios" !define PRODUCT_WEB_SITE "http://procyon.surrealearth.info/" RequestExecutionLevel user ; It works better without wanting admin privs. Icon "procyon.ico" BrandingText " " ; Remove the NSIS branding text !include "UAC.nsh" ; I don't know why this is included. Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "procyon.exe" InstallDir "$PROGRAMFILES\Project Procyon" ShowInstDetails show Section "MainSection" SEC01 IfFileExists "$AppData\Procyon\*.*" +2 ; Procyon goes into AppData for ease CreateDirectory "$AppData\Procyon" ; of launching and updating. ; Future revisions may include launcher auto-update. Code is written, but no ; launcher update files are on the Procyon server yet. ; You can always add "Call DetectLauncherUpdate" here, but the code in that ; function and related functions are not tested. Call DetectProcyonUpdate ; All the code for the launcher is function-based. SectionEnd Section -Post SectionEnd Function RunProcyon IfFileExists "$AppData\Procyon\procyon.exe" +4 Delete "$AppData\Procyon\version.txt" Call DetectProcyonUpdate Quit Exec '"$AppData\Procyon\procyon.exe"' Quit FunctionEnd Function GetProcyon FileOpen $0 "$AppData\Procyon\version.txt" r FileRead $0 $3 FileClose $0 StrCpy $3 $3 -2 StrCpy $2 "$AppData\Procyon\procyon.exe" Rename $2 "$AppData\Procyon\procyonold.exe" nsisdl::download /TIMEOUT=30000 "${PRODUCT_WEB_SITE}updater/procyon-$3.zip" "$AppData\Procyon\procyon.zip" Pop $R0 ;Get the return value StrCmp $R0 "success" +4 MessageBox MB_OK "Download failed: $R0 - $3.zip" Rename "$AppData\Procyon\procyonold.exe" $2 Quit nsisunz::UnzipToLog "$AppData\Procyon\procyon.zip" "$AppData\Procyon" Delete "$AppData\Procyon\procyon.zip" Call RunProcyon FunctionEnd Function DetectProcyonUpdate StrCpy $2 "$TEMP\procyonupdate.txt" nsisdl::download /TIMEOUT=30000 "${PRODUCT_WEB_SITE}updater/procyonupdate.txt" $2 Pop $R0 ;Get the return value StrCmp $R0 "success" +3 MessageBox MB_OK "Download failed: $R0" Call RunProcyon FileOpen $0 "$TEMP\procyonupdate.txt" r FileRead $0 $1 FileClose $0 IfFileExists "$AppData\Procyon\*.*" 0 +5 FileOpen $0 "$AppData\Procyon\version.txt" r FileRead $0 $3 FileClose $0 StrCmp $1 $3 +5 FileOpen $0 "$AppData\Procyon\version.txt" w FileWrite $0 $1 FileClose $0 Call GetProcyon Call RunProcyon FunctionEnd Function RunLauncher ; Never actually called Exec $EXEPATH Quit FunctionEnd Function GetLauncher ; Never actually called nsisdl::download /TIMEOUT=30000 "${PRODUCT_WEB_SITE}procyon.exe" $EXEPATH Pop $R0 ;Get the return value StrCmp $R0 "success" +4 MessageBox MB_OK "Download failed: $R0 - $3.exe" Quit Call RunLauncher FunctionEnd Function DetectLauncherUpdate ; Never actually called StrCpy $2 "$TEMP\launcherupdate.txt" nsisdl::download /TIMEOUT=30000 "${PRODUCT_WEB_SITE}updater/launcherupdate.txt" $2 Pop $R0 ;Get the return value StrCmp $R0 "success" +3 MessageBox MB_OK "Download failed: $R0" Return FileOpen $0 "$TEMP\launcherupdate.txt" r FileRead $0 $1 FileClose $0 IfFileExists "$AppData\Procyon\*.*" 0 +5 FileOpen $0 "$AppData\Procyon\launcher.txt" r FileRead $0 $3 FileClose $0 StrCmp $1 $3 +5 FileOpen $0 "$AppData\Procyon\launcher.txt" w FileWrite $0 $1 FileClose $0 Call GetLauncher Call RunLauncher FunctionEnd
Author: Kazinsal (talk, contrib) |