summaryrefslogtreecommitdiff
path: root/packaging/portableapps/win32/WiresharkPortable.nsi
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/portableapps/win32/WiresharkPortable.nsi')
-rwxr-xr-xpackaging/portableapps/win32/WiresharkPortable.nsi271
1 files changed, 271 insertions, 0 deletions
diff --git a/packaging/portableapps/win32/WiresharkPortable.nsi b/packaging/portableapps/win32/WiresharkPortable.nsi
new file mode 100755
index 0000000000..46b4c18bcf
--- /dev/null
+++ b/packaging/portableapps/win32/WiresharkPortable.nsi
@@ -0,0 +1,271 @@
+
+; WiresharkPortable.nsi - runs Wireshark Portable from a PortableApps enabled device
+
+; $Id$
+
+;Copyright (C) 2004-2007 John T. Haller of PortableApps.com
+
+;Website: http://www.wireshark.org/
+
+;This software is OSI Certified Open Source Software.
+;OSI Certified is a certification mark of the Open Source Initiative.
+
+;This program is free software; you can redistribute it and/or
+;modify it under the terms of the GNU General Public License
+;as published by the Free Software Foundation; either version 2
+;of the License, or (at your option) any later version.
+
+;This program is distributed in the hope that it will be useful,
+;but WITHOUT ANY WARRANTY; without even the implied warranty of
+;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;GNU General Public License for more details.
+
+;You should have received a copy of the GNU General Public License
+;along with this program; if not, write to the Free Software
+;Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+!define NAME "WiresharkPortable"
+!define FULLNAME "Wireshark Portable"
+!define APP "Wireshark"
+!define WEBSITE "www.wireshark.org"
+!define DEFAULTEXE "wireshark.exe"
+!define DEFAULTAPPDIR "Wireshark"
+!define DEFAULTSETTINGSDIR "settings"
+!define DEFAULTWINPCAP "WinPcap_4_0_1.exe"
+
+;=== Program Details
+Name "${FULLNAME}"
+OutFile "Files\${NAME}.exe"
+Caption "${FULLNAME} | PortableApps.com"
+VIProductVersion "${VERSION}"
+VIAddVersionKey ProductName "${FULLNAME}"
+VIAddVersionKey Comments "Allows ${APP} to be run from a removable drive. For additional details, visit ${WEBSITE}"
+VIAddVersionKey CompanyName "Wireshark.org"
+VIAddVersionKey LegalCopyright "Gerald Combs"
+VIAddVersionKey FileDescription "${FULLNAME}"
+VIAddVersionKey FileVersion "${VERSION}"
+VIAddVersionKey ProductVersion "${VERSION}"
+VIAddVersionKey InternalName "${FULLNAME}"
+VIAddVersionKey LegalTrademarks "Wireshark and the fin logo are trademarks of Gerald Combs"
+VIAddVersionKey OriginalFilename "${NAME}.exe"
+;VIAddVersionKey PrivateBuild ""
+;VIAddVersionKey SpecialBuild ""
+
+;=== Runtime Switches
+CRCCheck On
+WindowIcon Off
+SilentInstall Silent
+AutoCloseWindow True
+RequestExecutionLevel user
+
+;=== Include
+!include "FileFunc.nsh"
+!insertmacro GetParameters
+;!insertmacro GetRoot
+;!include "ReplaceInFile.nsh"
+;!include "StrRep.nsh"
+
+;=== Program Icon
+Icon "Files/App/AppInfo/${APP}.ico"
+
+Var PROGRAMDIRECTORY
+Var SETTINGSDIRECTORY
+Var ADDITIONALPARAMETERS
+Var EXECSTRING
+Var PROGRAMEXECUTABLE
+Var INIPATH
+Var SECONDARYLAUNCH
+Var DISABLESPLASHSCREEN
+Var DISABLEWINPCAPINSTALL
+Var WINPCAPINSTALLER
+Var WINPCAP_UNINSTALL ;declare variable for holding the value of a registry key
+Var PDRIVE
+
+Section "Main"
+ ;=== Check if already running
+ System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${NAME}") i .r1 ?e'
+ Pop $0
+ StrCmp $0 0 CheckINI
+ StrCpy $SECONDARYLAUNCH "true"
+
+ CheckINI:
+ ;=== Find the INI file, if there is one
+ IfFileExists "$EXEDIR\${NAME}.ini" "" CheckSubINI
+ StrCpy "$INIPATH" "$EXEDIR"
+ Goto ReadINI
+
+ CheckSubINI:
+ IfFileExists "$EXEDIR\${NAME}\${NAME}.ini" "" NoINI
+ StrCpy "$INIPATH" "$EXEDIR\${NAME}"
+ Goto ReadINI
+
+ ReadINI:
+ ;=== Read the parameters from the INI file
+ ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "${APP}Directory"
+ StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\$0"
+ ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "SettingsDirectory"
+ StrCpy "$SETTINGSDIRECTORY" "$EXEDIR\$0"
+
+ ;=== Check that the above required parameters are present
+ IfErrors NoINI
+
+ ReadINIStr $PROGRAMEXECUTABLE "$INIPATH\${NAME}.ini" "${NAME}" "ProgramExecutable"
+ ReadINIStr $ADDITIONALPARAMETERS "$INIPATH\${NAME}.ini" "${NAME}" "AdditionalParameters"
+ ReadINIStr $DISABLESPLASHSCREEN "$INIPATH\${NAME}.ini" "${NAME}" "DisableSplashScreen"
+ ReadINIStr $DISABLEWINPCAPINSTALL "$INIPATH\${NAME}.ini" "${NAME}" "DisableWinPcapInstall"
+ ReadINIStr $WINPCAPINSTALLER "$INIPATH\${NAME}.ini" "${NAME}" "WinPcapInstaller"
+
+ ;CleanUpAnyErrors:
+ ;=== Any missing unrequired INI entries will be an empty string, ignore associated errors
+ ClearErrors
+
+ ;=== Correct PROGRAMEXECUTABLE if blank
+ StrCmp $PROGRAMEXECUTABLE "" "" EndINI
+ StrCpy "$PROGRAMEXECUTABLE" "${DEFAULTEXE}"
+ Goto EndINI
+
+ ;=== Correct WINPCAPINSTALLER if blank
+ StrCmp $WINPCAPINSTALLER "" "" EndINI
+ StrCpy "$WINPCAPINSTALLER" "${DEFAULTWINPCAP}"
+ Goto EndINI
+
+ NoINI:
+ ;=== No INI file, so we'll use the defaults
+ StrCpy "$ADDITIONALPARAMETERS" ""
+ StrCpy "$PROGRAMEXECUTABLE" "${DEFAULTEXE}"
+ StrCpy "$WINPCAPINSTALLER" "${DEFAULTWINPCAP}"
+
+ IfFileExists "$EXEDIR\App\${DEFAULTAPPDIR}\${DEFAULTEXE}" "" CheckPortableProgramDIR
+ StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\App\${DEFAULTAPPDIR}"
+ StrCpy "$SETTINGSDIRECTORY" "$EXEDIR\Data\${DEFAULTSETTINGSDIR}"
+ GoTo EndINI
+
+ CheckPortableProgramDIR:
+ IfFileExists "$EXEDIR\${NAME}\App\${DEFAULTAPPDIR}\${DEFAULTEXE}" "" NoProgramEXE
+ StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\${NAME}\App\${DEFAULTAPPDIR}"
+ StrCpy "$SETTINGSDIRECTORY" "$EXEDIR\${NAME}\Data\${DEFAULTSETTINGSDIR}"
+ GoTo EndINI
+
+ EndINI:
+ IfFileExists "$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" FoundProgramEXE
+
+ NoProgramEXE:
+ ;=== Program executable not where expected
+ MessageBox MB_OK|MB_ICONEXCLAMATION `$PROGRAMEXECUTABLE was not found. Please check your configuration`
+ Abort
+
+ FoundProgramEXE:
+ ;=== Check if running
+ StrCmp $SECONDARYLAUNCH "true" GetPassedParameters
+ FindProcDLL::FindProc "${DEFAULTEXE}"
+ StrCmp $R0 "1" WarnAnotherInstance DisplaySplash
+
+ WarnAnotherInstance:
+ MessageBox MB_OK|MB_ICONINFORMATION `Another instance of ${APP} is already running. Please close other instances of ${APP} before launching ${FULLNAME}.`
+ Abort
+
+ DisplaySplash:
+; StrCmp $DISABLESPLASHSCREEN "true" GetPassedParameters
+ ;=== Show the splash screen while processing registry entries
+; InitPluginsDir
+; File /oname=$PLUGINSDIR\splash.jpg "${NAME}.jpg"
+; newadvsplash::show /NOUNLOAD 1000 100 0 -1 /L $PLUGINSDIR\splash.jpg
+
+ GetPassedParameters:
+ ;=== Get any passed parameters
+ ${GetParameters} $0
+ StrCmp "'$0'" "''" "" LaunchProgramParameters
+
+ ;=== No parameters
+ StrCpy $EXECSTRING `"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE"`
+ Goto AdditionalParameters
+
+ LaunchProgramParameters:
+ StrCpy $EXECSTRING `"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" $0`
+
+ AdditionalParameters:
+ StrCmp $ADDITIONALPARAMETERS "" CheckWinPcap
+
+ ;=== Additional Parameters
+ StrCpy $EXECSTRING `$EXECSTRING $ADDITIONALPARAMETERS`
+
+ CheckWinPcap:
+ StrCmp $DISABLEWINPCAPINSTALL "true" EnvironmentVariables
+
+ ReadRegStr $WINPCAP_UNINSTALL HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "UninstallString"
+ IfErrors InstallWinPcap
+
+ StrCpy $WINPCAP_UNINSTALL ""
+
+ goto EnvironmentVariables
+
+ InstallWinPcap:
+ MessageBox MB_YESNO "If you want to capture packets from the network you will need to install WinPcap.\nIt will be uninstalled when you exit Wireshark.\n\nDo you want to install WinPcap?" /SD IDYES IDNO EnvironmentVariables
+ ExecWait `"$PROGRAMDIRECTORY\$WINPCAPINSTALLER"`
+ ; remember the uninstall string for when we are done
+ ReadRegStr $WINPCAP_UNINSTALL HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "UninstallString"
+
+ EnvironmentVariables:
+ ; set the U3 environment variables
+ StrCpy $PDRIVE $EXEDIR 2
+ System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_SERIAL", "0000060414068917").r0'
+ System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_PATH", "$PDRIVE").r0'
+ System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DOCUMENT_PATH", "$PDRIVE\Documents").r0'
+ System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_VENDOR", "Wireshark Developers").r0'
+ System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_PRODUCT", "PortableApps").r0'
+ System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_VENDOR_ID", "0000").r0'
+ System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_APP_DATA_PATH", "$EXEDIR\Data").r0'
+ System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_HOST_EXEC_PATH", "$EXEDIR\App\Wireshark").r0'
+ System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_EXEC_PATH", "$EXEDIR\App\Wireshark").r0'
+ System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_ENV_VERSION", "1.0").r0'
+ System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_ENV_LANGUAGE", "1033").r0'
+; SettingsDirectory:
+ ;=== Set the settings directory if we have a path
+; IfFileExists "$SETTINGSDIRECTORY\*.*" CheckForSettings
+; CreateDirectory $SETTINGSDIRECTORY
+
+; CheckForSettings:
+ StrCmp $SECONDARYLAUNCH "true" LaunchAndExit
+; IfFileExists "$PROGRAMDIRECTORY\sumatrapdfprefs.txt" AdjustPaths
+; IfFileExists "$SETTINGSDIRECTORY\sumatrapdfprefs.txt" MoveSettings AdjustPaths
+ ;IfFileExists "$EXEDIR\App\DefaultData\sumatrapdfprefs.txt" "" LaunchNow
+ ; CopyFiles /SILENT "$EXEDIR\App\DefaultData\sumatrapdfprefs.txt" "$PROGRAMDIRECTORY"
+ ; Goto LaunchNow
+
+; MoveSettings:
+; Rename "$SETTINGSDIRECTORY\sumatrapdfprefs.txt" "$PROGRAMDIRECTORY\sumatrapdfprefs.txt"
+
+; AdjustPaths:
+; ReadINIStr $LASTDRIVE "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastDrive"
+; ${GetRoot} $EXEDIR $CURRENTDRIVE
+; StrCmp $LASTDRIVE $CURRENTDRIVE RememberPath
+; IfFileExists "$PROGRAMDIRECTORY\sumatrapdfprefs.txt" "" RememberPath
+; ${ReplaceInFile} "$PROGRAMDIRECTORY\sumatrapdfprefs.txt" 'File: $LASTDRIVE' 'File: $CURRENTDRIVE'
+; Delete "$PROGRAMDIRECTORY\sumatrapdfprefs.txt.old"
+
+; RememberPath:
+; WriteINIStr "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastDrive" "$CURRENTDRIVE"
+
+ ;LaunchNow:
+ ExecWait $EXECSTRING
+
+ CheckRunning:
+ Sleep 1000
+ FindProcDLL::FindProc "${DEFAULTEXE}"
+ StrCmp $R0 "1" CheckRunning
+
+ ;UninstallWinPcap:
+ StrCmp $WINPCAP_UNINSTALL "" TheEnd ;=== if we installed it, uninstall it
+ ExecWait $WINPCAP_UNINSTALL
+
+ ;=== Put the settings file back
+; Sleep 500
+; Rename "$PROGRAMDIRECTORY\sumatrapdfprefs.txt" "$SETTINGSDIRECTORY\sumatrapdfprefs.txt"
+ Goto TheEnd
+
+ LaunchAndExit:
+ Exec $EXECSTRING
+
+ TheEnd:
+; newadvsplash::wait
+SectionEnd