From 37d3df69f0f0d1f831b5cf460d68de8f629ed3c7 Mon Sep 17 00:00:00 2001 From: joostverburg Date: Thu, 20 Feb 2003 18:43:31 +0000 Subject: [PATCH] temp file in temp dir git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2194 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/NSIS Update/NSISUpdate.nsi | 76 +++++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 7 deletions(-) diff --git a/Contrib/NSIS Update/NSISUpdate.nsi b/Contrib/NSIS Update/NSISUpdate.nsi index 20b4afae..be0e5ccf 100644 --- a/Contrib/NSIS Update/NSISUpdate.nsi +++ b/Contrib/NSIS Update/NSISUpdate.nsi @@ -99,24 +99,29 @@ ShowInstDetails show # Functions Function .onInit - - StrCpy ${NSISPATH} "$EXEDIR\.." - StrCpy $R0 $CMDLINE "" -15 + Call GetInstallerFile + Pop $R0 - StrCmp $R0 'NSISUpdate.bin"' temp + StrCpy $R0 $R0 "" -14 + StrCmp $R0 "NSISUpdate.bin" temp # Create a temporary file, so NSIS Update can update itself - CopyFiles /SILENT "$EXEDIR\NSISUpdate.exe" "$EXEDIR\NSISUpdate.bin" - Exec '"$EXEDIR\NSISUpdate.bin"' + CopyFiles /SILENT "$EXEDIR\NSISUpdate.exe" "$TEMP\NSISUpdate.bin" + Exec '"$TEMP\NSISUpdate.bin" $EXEDIR\..' Quit temp: # Remove temporary file on next reboot - Delete /REBOOTOK "$EXEDIR\NSISUpdate.bin" + Delete /REBOOTOK "$TEMP\NSISUpdate.bin" + + # Get NSIS directory + + Call GetParameters + Pop ${NSISPATH} # InstallOptions INI File for the "Update Method" dialog @@ -203,6 +208,63 @@ Function UpdateMethod FunctionEnd +Function GetInstallerFile + + Push $R0 + Push $R1 + Push $R2 + + StrCpy $R0 $CMDLINE 1 + StrCpy $R1 '"' + StrCpy $R2 1 + StrCmp $R0 '"' loop + StrCpy $R1 ' ' ; we're scanning for a space instead of a quote + + loop: + StrCpy $R0 $CMDLINE 1 $R2 + StrCmp $R0 $R1 done + StrCmp $R0 "" done + IntOp $R2 $R2 + 1 + Goto loop + + done: + StrCpy $R0 $CMDLINE $R2 + + Pop $R2 + Pop $R1 + Exch $R0 + +FunctionEnd + +Function GetParameters + + Push $R0 + Push $R1 + Push $R2 + + StrCpy $R0 $CMDLINE 1 + StrCpy $R1 '"' + StrCpy $R2 1 + StrCmp $R0 '"' loop + StrCpy $R1 ' ' ; we're scanning for a space instead of a quote + loop: + StrCpy $R0 $CMDLINE 1 $R2 + StrCmp $R0 $R1 loop2 + StrCmp $R0 "" loop2 + IntOp $R2 $R2 + 1 + Goto loop + loop2: + IntOp $R2 $R2 + 1 + StrCpy $R0 $CMDLINE 1 $R2 + StrCmp $R0 " " loop2 + StrCpy $R0 $CMDLINE "" $R2 + + Pop $R2 + Pop $R1 + Exch $R0 + +FunctionEnd + ##################################################################### # Update (Installer Section)