aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjames <james@e7ae566f-a301-0410-adde-c780ea21d3b5>2008-12-01 22:32:06 +0000
committerjames <james@e7ae566f-a301-0410-adde-c780ea21d3b5>2008-12-01 22:32:06 +0000
commit63c5d785523a4885a6226de9bbddb3e11f2abff7 (patch)
tree5426dca1f367c81104a6eb1c5f17efc50f52a26c
parentAdded ExtractAuxFile capability to Windows Installer. (diff)
downloadopenvpn-63c5d785523a4885a6226de9bbddb3e11f2abff7.tar.xz
Added MultiFileExtract capability to Windows Installer.
git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@3620 e7ae566f-a301-0410-adde-c780ea21d3b5
-rw-r--r--install-win32/ExtractAuxFile.nsi117
-rw-r--r--install-win32/maketext5
-rwxr-xr-xinstall-win32/openvpn.nsi17
-rw-r--r--install-win32/settings.in5
4 files changed, 16 insertions, 128 deletions
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