From 63c5d785523a4885a6226de9bbddb3e11f2abff7 Mon Sep 17 00:00:00 2001 From: james Date: Mon, 1 Dec 2008 22:32:06 +0000 Subject: Added MultiFileExtract capability to Windows Installer. git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@3620 e7ae566f-a301-0410-adde-c780ea21d3b5 --- install-win32/ExtractAuxFile.nsi | 117 --------------------------------------- install-win32/maketext | 5 +- install-win32/openvpn.nsi | 17 +++--- install-win32/settings.in | 5 +- 4 files changed, 16 insertions(+), 128 deletions(-) delete mode 100644 install-win32/ExtractAuxFile.nsi (limited to 'install-win32') diff --git a/install-win32/ExtractAuxFile.nsi b/install-win32/ExtractAuxFile.nsi deleted file mode 100644 index ffb7b34..0000000 --- a/install-win32/ExtractAuxFile.nsi +++ /dev/null @@ -1,117 +0,0 @@ -; ExtractAuxFile -; Copies a text file appended to the end of the installer EXE -; to a caller-specified output file. -; Inputs: -; output_filename (string) -- the output filename -; Outputs: -; status (int) -- 0 on success, > 0 on failure - -Function ExtractAuxFile - Exch $R1 ; output filename argument - ; locals - Push $R0 - Push $1 - Push $2 - Push $3 - Push $4 - Push $5 - - ClearErrors - - ; $R0 = installer filename - System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1' - - ; $1 = open (installer_exe) for read - FileOpen $1 $R0 r - IfErrors openin_err - - ; seek to EOF - 8 (start of 8-byte trailer) - ; $3 = seekpos - IntOp $2 0 - 8 - FileSeek $1 $2 END $3 - - ; $4 = -(content_length(auxfile) + 8) - ; seek position from end of file to beginning of content - FileReadByte $1 $4 - FileReadByte $1 $5 - IfErrors readlen_err - IntOp $5 $5 << 8 - IntOp $4 $4 + $5 - IntOp $4 $4 + 8 - IntOp $4 0 - $4 - - ; verify magic sequence 0xae, 0xb7, 0x03, 0x69, 0x42, 0x11 - FileReadByte $1 $5 - IntCmp $5 0xae 0 magic_err magic_err - FileReadByte $1 $5 - IntCmp $5 0xb7 0 magic_err magic_err - FileReadByte $1 $5 - IntCmp $5 0x03 0 magic_err magic_err - FileReadByte $1 $5 - IntCmp $5 0x69 0 magic_err magic_err - FileReadByte $1 $5 - IntCmp $5 0x42 0 magic_err magic_err - FileReadByte $1 $5 - IntCmp $5 0x11 0 magic_err magic_err - IfErrors magic_err - - ; seek to start of auxfile data - FileSeek $1 $4 END - - ; $2 = open (output_filename) for write - FileOpen $2 $R1 w - IfErrors openout_err - -loop: - ; check if we are finished - FileSeek $1 0 CUR $5 - IntCmp $5 $3 success 0 overshot_err - - ; copy next line from .exe to output file - FileRead $1 $5 - IfErrors read_err - FileWrite $2 $5 - IfErrors write_err - goto loop - -success: - IntOp $R1 0 + 0 - goto fin - -openin_err: - IntOp $R1 1 + 0 - goto fin - -openout_err: - IntOp $R1 2 + 0 - goto fin - -readlen_err: - IntOp $R1 3 + 0 - goto fin - -overshot_err: - IntOp $R1 4 + 0 - goto fin - -read_err: - IntOp $R1 5 + 0 - goto fin - -write_err: - IntOp $R1 6 + 0 - goto fin - -magic_err: - IntOp $R1 7 + 0 - goto fin - -fin: - Pop $5 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $R0 - Exch $R1 -FunctionEnd diff --git a/install-win32/maketext b/install-win32/maketext index f8354db..cf59b53 100644 --- a/install-win32/maketext +++ b/install-win32/maketext @@ -39,7 +39,10 @@ cp autodefs/xguidefs.nsi $n cp install-win32/openvpn.nsi $n cp install-win32/setpath.nsi $n cp install-win32/GetWindowsVersion.nsi $n -cp install-win32/ExtractAuxFile.nsi $n + +if [ -n "$EXTRACT_FILES" ]; then + cp install-win32/MultiFileExtract.nsi $n +fi # get OpenVPN client config files if [ -n "$SAMPCONF_DIR" ]; then diff --git a/install-win32/openvpn.nsi b/install-win32/openvpn.nsi index ae86475..c1a1710 100755 --- a/install-win32/openvpn.nsi +++ b/install-win32/openvpn.nsi @@ -16,7 +16,10 @@ SetCompressor lzma !include "xguidefs.nsi" !include "setpath.nsi" !include "GetWindowsVersion.nsi" -!include "ExtractAuxFile.nsi" + +!ifdef EXTRACT_FILES +!include "MultiFileExtract.nsi" +!endif !define GEN ".." !define BIN "${GEN}\bin" @@ -529,15 +532,15 @@ Section -post !endif !endif - ; Try to extract AUX_FILE, if present - !ifdef AUX_FILE - Push "$INSTDIR\config\${AUX_FILE}" - Call ExtractAuxFile + ; Try to extract files if present + !ifdef EXTRACT_FILES + Push "$INSTDIR" + Call MultiFileExtract Pop $R0 IntCmp $R0 0 +3 +1 +1 - DetailPrint "ExtractAuxFile Failed status=$R0" + DetailPrint "MultiFileExtract Failed status=$R0" goto +2 - DetailPrint "ExtractAuxFile Succeeded" + DetailPrint "MultiFileExtract Succeeded" !endif ; diff --git a/install-win32/settings.in b/install-win32/settings.in index af801cb..e9159af 100644 --- a/install-win32/settings.in +++ b/install-win32/settings.in @@ -90,6 +90,5 @@ ;!define SAMPCONF_CRT "test.crt" ;!define SAMPCONF_KEY "test.key" -# Include a sample configuration file via ExtractAuxFile -# functionality. -!define AUX_FILE "client.ovpn" +# Extract files embedded in installer +;!define EXTRACT_FILES -- cgit