252 lines
8.8 KiB
Text
Executable file
252 lines
8.8 KiB
Text
Executable file
|
|
; 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"
|
|
|
|
!addplugindir "${EXTRA_PLUGINS}"
|
|
|
|
;=== 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 registered trademarks of Gerald C. Combs"
|
|
VIAddVersionKey OriginalFilename "${NAME}.exe"
|
|
;VIAddVersionKey PrivateBuild ""
|
|
;VIAddVersionKey SpecialBuild ""
|
|
|
|
;=== Runtime Switches
|
|
CRCCheck On
|
|
WindowIcon Off
|
|
SilentInstall Silent
|
|
AutoCloseWindow True
|
|
RequestExecutionLevel user
|
|
XPStyle on
|
|
|
|
;=== Include
|
|
!include "FileFunc.nsh"
|
|
!insertmacro GetParameters
|
|
|
|
;=== Program Icon
|
|
Icon "Files\App\AppInfo\appicon.ico"
|
|
|
|
;=== Variables
|
|
Var PROGRAMDIRECTORY
|
|
Var ADDITIONALPARAMETERS
|
|
Var EXECSTRING
|
|
Var PROGRAMEXECUTABLE
|
|
Var INIPATH
|
|
Var DISABLEWINPCAPINSTALL
|
|
Var WINPCAPINSTALLER
|
|
Var WINPCAP_UNINSTALL ;declare variable for holding the value of a registry key
|
|
Var MSVCREDIST
|
|
Var MSVCREDIST_UNINSTALL ;declare variable for holding the value of a registry key
|
|
Var PDRIVE
|
|
|
|
Section "Main"
|
|
;=== Check if another WiresharkPortable already running
|
|
;System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${NAME}") i .r1 ?e'
|
|
;Pop $0
|
|
;StrCmp $0 0 CheckINI
|
|
; Goto WarnAnotherInstance
|
|
|
|
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"
|
|
|
|
;=== Check that the above required parameters are present
|
|
IfErrors NoINI
|
|
|
|
ReadINIStr $PROGRAMEXECUTABLE "$INIPATH\${NAME}.ini" "${NAME}" "${APP}Executable"
|
|
ReadINIStr $ADDITIONALPARAMETERS "$INIPATH\${NAME}.ini" "${NAME}" "AdditionalParameters"
|
|
|
|
ReadINIStr $DISABLEWINPCAPINSTALL "$INIPATH\${NAME}.ini" "${NAME}" "DisableWinPcapInstall"
|
|
ReadINIStr $WINPCAPINSTALLER "$INIPATH\${NAME}.ini" "${NAME}" "WinPcapInstaller"
|
|
ReadINIStr $MSVCREDIST "$INIPATH\${NAME}.ini" "${NAME}" "MSVCRedist"
|
|
|
|
;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}"
|
|
StrCpy "$MSVCREDIST" "${DEFAULTMSVCREDIST}"
|
|
|
|
IfFileExists "$EXEDIR\App\${DEFAULTAPPDIR}\${DEFAULTEXE}" "" CheckPortableProgramDIR
|
|
StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\App\${DEFAULTAPPDIR}"
|
|
GoTo EndINI
|
|
|
|
CheckPortableProgramDIR:
|
|
IfFileExists "$EXEDIR\${NAME}\App\${DEFAULTAPPDIR}\${DEFAULTEXE}" "" NoProgramEXE
|
|
StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\${NAME}\App\${DEFAULTAPPDIR}"
|
|
GoTo EndINI
|
|
|
|
EndINI:
|
|
IfFileExists "$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" GetPassedParameters
|
|
|
|
NoProgramEXE:
|
|
;=== Program executable not where expected
|
|
MessageBox MB_OK|MB_ICONEXCLAMATION `$PROGRAMEXECUTABLE was not found. Please check your configuration`
|
|
Abort
|
|
|
|
FoundProgramEXE:
|
|
;=== Check if Wireshark running from somwehere else (e.g. U3 device)
|
|
; if the following step fails, you'll need the FindProcDLL plug-in from:
|
|
; http://nsis.sourceforge.net/Find_Process_By_Name
|
|
;FindProcDLL::FindProc "${PROGRAMEXECUTABLE}"
|
|
;StrCmp $R0 "1" WarnAnotherInstance GetPassedParameters
|
|
|
|
;WarnAnotherInstance:
|
|
; MessageBox MB_OK|MB_ICONINFORMATION `Another instance of ${APP} is already running. Please close other instances of ${APP} before launching ${FULLNAME}.`
|
|
; Abort
|
|
|
|
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 CheckRedist
|
|
|
|
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 CheckRedist
|
|
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"
|
|
|
|
CheckRedist:
|
|
|
|
ReadRegStr $MSVCREDIST_UNINSTALL HKLM "SOFTWARE\Microsoft\CurrentVersion\Uninstall\{A49F249F-0C91-497F-86DF-B2585E8E76B7}" "UninstallString"
|
|
IfErrors InstallRedist
|
|
|
|
StrCpy $MSVCREDIST_UNINSTALL ""
|
|
|
|
goto EnvironmentVariables
|
|
|
|
InstallRedist:
|
|
ExecWait `"$PROGRAMDIRECTORY\$MSVCREDIST" /q`
|
|
;=== remember the uninstall string for when we are done
|
|
|
|
ReadRegStr $MSVCREDIST_UNINSTALL HKLM "SOFTWARE\Microsoft\CurrentVersion\Uninstall\{A49F249F-0C91-497F-86DF-B2585E8E76B7}" "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'
|
|
StrCmp $SECONDARYLAUNCH "true" LaunchAndExit
|
|
|
|
ExecWait $EXECSTRING
|
|
|
|
CheckRunning:
|
|
Sleep 1000
|
|
FindProcDLL::FindProc "${DEFAULTEXE}"
|
|
StrCmp $R0 "1" CheckRunning
|
|
|
|
StrCmp $WINPCAP_UNINSTALL "" UninstallRedist ;=== if we installed it, uninstall it
|
|
ExecWait $WINPCAP_UNINSTALL
|
|
|
|
UninstallRedist:
|
|
|
|
StrCmp $MSVCREDIST_UNINSTALL "" TheEnd ;=== if we installed it, uninstall it
|
|
|
|
ExecWait $MSVCREDIST_UNINSTALL
|
|
|
|
Goto TheEnd
|
|
|
|
LaunchAndExit:
|
|
Exec $EXECSTRING
|
|
|
|
TheEnd:
|
|
SectionEnd
|