!macroend
-; ============================================================================
-; Services
-; ============================================================================
-!include "servicelib.nsh"
-
; ============================================================================
; Command Line
; ============================================================================
DirText "Choose a directory in which to install Wireshark."
; The default installation directory
-InstallDir $PROGRAMFILES\Wireshark\
+!if ${WIRESHARK_TARGET_PLATFORM} == "win64"
+ InstallDir $PROGRAMFILES64\Wireshark
+!else
+ InstallDir $PROGRAMFILES\Wireshark
+!endif
; See if this is an upgrade; if so, use the old InstallDir as default
InstallDirRegKey HKEY_LOCAL_MACHINE SOFTWARE\Wireshark "InstallDir"
Var OLD_DISPLAYNAME
Var TMP_UNINSTALLER
+; ============================================================================
+; 64-bit support
+; ============================================================================
+!include x64.nsh
+
Function .onInit
+ !if ${WIRESHARK_TARGET_PLATFORM} == "win64"
+ ; http://forums.winamp.com/printthread.php?s=16ffcdd04a8c8d52bee90c0cae273ac5&threadid=262873
+ ${IfNot} ${RunningX64}
+ MessageBox MB_OK "This version of Wireshark only runs on x64 machines.\nTry installing the 32-bit version instead."
+ Abort
+ ${EndIf}
+ !endif
+
; Copied from http://nsis.sourceforge.net/Auto-uninstall_old_before_installing_new
ReadRegStr $OLD_UNINSTALLER HKLM \
"Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" \
File "..\..\epan\libwireshark.dll"
!endif
File "..\..\wsutil\libwsutil.dll"
-File "${GLIB_DIR}\bin\libgio-2.0-0.dll"
-File "${GLIB_DIR}\bin\libglib-2.0-0.dll"
-File "${GLIB_DIR}\bin\libgobject-2.0-0.dll"
-File "${GLIB_DIR}\bin\libgmodule-2.0-0.dll"
+File "${GTK_DIR}\bin\libgio-2.0-0.dll"
+File "${GTK_DIR}\bin\libglib-2.0-0.dll"
+File "${GTK_DIR}\bin\libgobject-2.0-0.dll"
+File "${GTK_DIR}\bin\libgmodule-2.0-0.dll"
+File "${GTK_DIR}\bin\libgthread-2.0-0.dll"
!ifdef ICONV_DIR
-File "${ICONV_DIR}\bin\iconv.dll"
+File "${GTK_DIR}\bin\iconv.dll"
!endif
-File "${GETTEXT_DIR}\bin\intl.dll"
+File "${GTK_DIR}\bin\${INTL_DLL}"
!ifdef ZLIB_DIR
File "${ZLIB_DIR}\zlib1.dll"
!endif
!ifdef C_ARES_DIR
-File "${C_ARES_DIR}\cares.dll"
+File "${C_ARES_DIR}\bin\libcares-2.dll"
!endif
!ifdef ADNS_DIR
File "${ADNS_DIR}\..\${MSVC_VARIANT}\adns\adns_dll.dll"
File "${PCRE_DIR}\man\cat3\pcrepattern.3.txt"
!endif
!ifdef KFW_DIR
-File "${KFW_DIR}\bin\comerr32.dll"
-File "${KFW_DIR}\bin\krb5_32.dll"
+File "${KFW_PATH}\comerr32.dll"
+File "${KFW_PATH}\krb5_32.dll"
+File "${KFW_PATH}\k5sprt32.dll"
!endif
!ifdef GNUTLS_DIR
File "${GNUTLS_DIR}\bin\libgcrypt-11.dll"
!ifdef SMI_DIR
File "${SMI_DIR}\lib\smi.dll"
!endif
-File "..\..\README"
-File "..\..\README.win32"
-File "..\..\AUTHORS-SHORT"
-File "..\..\COPYING"
-File "NEWS.txt"
+File "..\..\wireshark-gtk2\COPYING.txt"
+File "..\..\wireshark-gtk2\NEWS.txt"
+File "..\..\wireshark-gtk2\README.txt"
+File "..\..\wireshark-gtk2\README.windows.txt"
+File "..\..\doc\AUTHORS-SHORT"
File "..\..\manuf"
File "..\..\services"
File "..\..\doc\ws.css"
!ifdef VCREDIST_EXE
; vcredist_x86.exe (MSVC V8) - copy and execute the redistributable installer
File "${VCREDIST_EXE}"
+!if ${WIRESHARK_TARGET_PLATFORM} == "win32"
ExecWait '"$INSTDIR\vcredist_x86.exe"' $0
+!else
+; If the user already has the redistributable installed they will see a
+; Big Ugly Dialog by default, asking if they want to uninstall or repair.
+; Ideally we should add a checkbox for this somewhere. In the meantime,
+; just do a silent install.
+ExecWait '"$INSTDIR\vcredist_x64.exe" /q' $0
+!endif ; WIRESHARK_TARGET_PLATFORM
DetailPrint "vcredist_x86 returned $0"
!else
!ifdef MSVCR_DLL
File "..\..\diameter\chargecontrol.xml"
File "..\..\diameter\dictionary.dtd"
File "..\..\diameter\dictionary.xml"
+File "..\..\diameter\eap.xml"
File "..\..\diameter\Ericsson.xml"
File "..\..\diameter\etsie2e4.xml"
File "..\..\diameter\gqpolicy.xml"
File "..\..\diameter\imscxdx.xml"
File "..\..\diameter\mobileipv4.xml"
+File "..\..\diameter\mobileipv6.xml"
File "..\..\diameter\nasreq.xml"
File "..\..\diameter\sip.xml"
File "..\..\diameter\sunping.xml"
; of the installation directory.
;
SetOutPath $INSTDIR\radius
+File "..\..\radius\README.radius_dictionary"
File "..\..\radius\dictionary"
File "..\..\radius\dictionary.3com"
File "..\..\radius\dictionary.3gpp"
File "..\..\radius\dictionary.3gpp2"
File "..\..\radius\dictionary.acc"
+File "..\..\radius\dictionary.airespace"
File "..\..\radius\dictionary.alcatel"
File "..\..\radius\dictionary.alteon"
File "..\..\radius\dictionary.altiga"
+File "..\..\radius\dictionary.alvarion"
+File "..\..\radius\dictionary.apc"
File "..\..\radius\dictionary.aptis"
-File "..\..\radius\dictionary.ascend"
File "..\..\radius\dictionary.aruba"
+File "..\..\radius\dictionary.ascend"
+File "..\..\radius\dictionary.asn"
+File "..\..\radius\dictionary.avaya"
+File "..\..\radius\dictionary.azaire"
File "..\..\radius\dictionary.bay"
File "..\..\radius\dictionary.bintec"
File "..\..\radius\dictionary.bristol"
File "..\..\radius\dictionary.cablelabs"
File "..\..\radius\dictionary.cabletron"
+File "..\..\radius\dictionary.chillispot"
File "..\..\radius\dictionary.cisco"
File "..\..\radius\dictionary.cisco.bbsm"
File "..\..\radius\dictionary.cisco.vpn3000"
File "..\..\radius\dictionary.cisco.vpn5000"
+File "..\..\radius\dictionary.clavister"
File "..\..\radius\dictionary.colubris"
File "..\..\radius\dictionary.columbia_university"
File "..\..\radius\dictionary.compat"
File "..\..\radius\dictionary.cosine"
+File "..\..\radius\dictionary.dhcp"
+File "..\..\radius\dictionary.digium"
+File "..\..\radius\dictionary.epygi"
File "..\..\radius\dictionary.ericsson"
File "..\..\radius\dictionary.erx"
File "..\..\radius\dictionary.extreme"
+File "..\..\radius\dictionary.fortinet"
File "..\..\radius\dictionary.foundry"
File "..\..\radius\dictionary.freeradius"
+File "..\..\radius\dictionary.freeradius.internal"
+File "..\..\radius\dictionary.freeswitch"
File "..\..\radius\dictionary.gandalf"
File "..\..\radius\dictionary.garderos"
File "..\..\radius\dictionary.gemtek"
+File "..\..\radius\dictionary.h3c"
+File "..\..\radius\dictionary.hp"
+File "..\..\radius\dictionary.huawei"
+File "..\..\radius\dictionary.infonet"
+File "..\..\radius\dictionary.ipunplugged"
+File "..\..\radius\dictionary.issanni"
File "..\..\radius\dictionary.itk"
+File "..\..\radius\dictionary.jradius"
File "..\..\radius\dictionary.juniper"
File "..\..\radius\dictionary.karlnet"
+File "..\..\radius\dictionary.lancom"
File "..\..\radius\dictionary.livingston"
File "..\..\radius\dictionary.localweb"
+File "..\..\radius\dictionary.lucent"
+File "..\..\radius\dictionary.manzara"
File "..\..\radius\dictionary.merit"
File "..\..\radius\dictionary.microsoft"
File "..\..\radius\dictionary.mikrotik"
+File "..\..\radius\dictionary.motorola"
File "..\..\radius\dictionary.navini"
File "..\..\radius\dictionary.netscreen"
+File "..\..\radius\dictionary.networkphysics"
+File "..\..\radius\dictionary.nexans"
File "..\..\radius\dictionary.nokia"
+File "..\..\radius\dictionary.nokia.conflict"
File "..\..\radius\dictionary.nomadix"
+File "..\..\radius\dictionary.nortel"
+File "..\..\radius\dictionary.ntua"
+File "..\..\radius\dictionary.openser"
+File "..\..\radius\dictionary.packeteer"
+File "..\..\radius\dictionary.patton"
File "..\..\radius\dictionary.propel"
+File "..\..\radius\dictionary.prosoft"
+File "..\..\radius\dictionary.quiconnect"
File "..\..\radius\dictionary.quintum"
File "..\..\radius\dictionary.redback"
File "..\..\radius\dictionary.redcreek"
+File "..\..\radius\dictionary.rfc2865"
+File "..\..\radius\dictionary.rfc2866"
+File "..\..\radius\dictionary.rfc2867"
+File "..\..\radius\dictionary.rfc2868"
+File "..\..\radius\dictionary.rfc2869"
+File "..\..\radius\dictionary.rfc3162"
+File "..\..\radius\dictionary.rfc3576"
+File "..\..\radius\dictionary.rfc3580"
+File "..\..\radius\dictionary.rfc4072"
+File "..\..\radius\dictionary.rfc4372"
+File "..\..\radius\dictionary.rfc4675"
+File "..\..\radius\dictionary.rfc4679"
+File "..\..\radius\dictionary.rfc4818"
+File "..\..\radius\dictionary.rfc4849"
+File "..\..\radius\dictionary.rfc5090"
+File "..\..\radius\dictionary.rfc5176"
+File "..\..\radius\dictionary.riverstone"
+File "..\..\radius\dictionary.roaringpenguin"
File "..\..\radius\dictionary.shasta"
File "..\..\radius\dictionary.shiva"
+File "..\..\radius\dictionary.slipstream"
+File "..\..\radius\dictionary.sofaware"
File "..\..\radius\dictionary.sonicwall"
File "..\..\radius\dictionary.springtide"
+File "..\..\radius\dictionary.starent"
File "..\..\radius\dictionary.t_systems_nova"
File "..\..\radius\dictionary.telebit"
+File "..\..\radius\dictionary.telkom"
File "..\..\radius\dictionary.trapeze"
+File "..\..\radius\dictionary.tropos"
File "..\..\radius\dictionary.tunnel"
File "..\..\radius\dictionary.unisphere"
File "..\..\radius\dictionary.unix"
File "..\..\radius\dictionary.usr"
+File "..\..\radius\dictionary.utstarcom"
File "..\..\radius\dictionary.valemount"
File "..\..\radius\dictionary.versanet"
+File "..\..\radius\dictionary.vqp"
+File "..\..\radius\dictionary.walabi"
+File "..\..\radius\dictionary.waverider"
+File "..\..\radius\dictionary.wimax"
File "..\..\radius\dictionary.wispr"
File "..\..\radius\dictionary.xedia"
+File "..\..\radius\dictionary.xylan"
+File "..\..\radius\dictionary.zyxel"
SetOutPath $INSTDIR
;
SetOutPath $INSTDIR
SetOutPath $INSTDIR\help
-File "..\..\help\toc"
-File "..\..\help\overview.txt"
-File "..\..\help\getting_started.txt"
-File "..\..\help\capturing.txt"
-File "..\..\help\capture_filters.txt"
-File "..\..\help\display_filters.txt"
-File "..\..\help\faq.txt"
+File "..\..\wireshark-gtk2\help\toc"
+File "..\..\wireshark-gtk2\help\overview.txt"
+File "..\..\wireshark-gtk2\help\getting_started.txt"
+File "..\..\wireshark-gtk2\help\capturing.txt"
+File "..\..\wireshark-gtk2\help\capture_filters.txt"
+File "..\..\wireshark-gtk2\help\display_filters.txt"
+File "..\..\wireshark-gtk2\help\faq.txt"
; Write the uninstall keys for Windows
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "DisplayVersion" "${VERSION}"
Call Associate
StrCpy $R0 ".pcap"
Call Associate
+ StrCpy $R0 ".pcapng"
+ Call Associate
StrCpy $R0 ".pkt"
Call Associate
StrCpy $R0 ".snoop"
;DetailPrint "WinPcap uninstaller returned $0"
lbl_winpcap_notinstalled:
SetOutPath $INSTDIR
-File "WinPcap_4_0_2.exe"
-ExecWait '"$INSTDIR\WinPcap_4_0_2.exe"' $0
+File "WinPcap_4_1_1.exe"
+ExecWait '"$INSTDIR\WinPcap_4_1_1.exe"' $0
DetailPrint "WinPcap installer returned $0"
SecRequired_skip_Winpcap:
-; Load Winpcap NPF service at startup (depending on winpcap page)
-ReadINIStr $0 "$PLUGINSDIR\WinPcapPage.ini" "Field 8" "State"
-StrCmp $0 "0" SecRequired_no_WinpcapService
-WriteRegDWORD HKEY_LOCAL_MACHINE "SYSTEM\CurrentControlSet\Services\NPF" "Start" 2 ;set NPF to (SERVICE_AUTO_START)
-!insertmacro SERVICE "start" "NPF" ""
-Goto SecRequired_done_WinpcapService
-SecRequired_no_WinpcapService:
-WriteRegDWORD HKEY_LOCAL_MACHINE "SYSTEM\CurrentControlSet\Services\NPF" "Start" 3 ;set NPF to (SERVICE_DEMAND_START)
-!insertmacro SERVICE "stop" "NPF" ""
-SecRequired_done_WinpcapService:
-
; If no user profile exists for Wireshark but for Ethereal, copy it over
SetShellVarContext current
IfFileExists $APPDATA\Wireshark profile_done
File "${GTK_DIR}\bin\libpangocairo-1.0-0.dll"
!endif
!ifdef NEED_LIBPNG_DLL
-File "${GTK_DIR}\bin\libpng12-0.dll"
+File "${GTK_DIR}\bin\${PNG_DLL}"
!endif
!ifdef NEED_LIBTIFF_DLL
-File "${GTK_DIR}\bin\libtiff3.dll"
+File "${GTK_DIR}\bin\${TIFF_DLL}"
!endif
!ifdef NEED_LIBJPEG_DLL
-File "${GTK_DIR}\bin\jpeg62.dll"
+File "${GTK_DIR}\bin\${JPEG_DLL}"
+!endif
+!ifdef NEED_FREETYPE_DLL
+File "${GTK_DIR}\bin\libpangoft2-1.0-0.dll"
+File "${GTK_DIR}\bin\${FREETYPE_DLL}"
+!endif
+!ifdef NEED_FONTCONFIG_DLL
+File "${GTK_DIR}\bin\${FONTCONFIG_DLL}"
+!endif
+!ifdef NEED_EXPAT_DLL
+File "${GTK_DIR}\bin\${EXPAT_DLL}"
!endif
SetOutPath $INSTDIR\etc\gtk-2.0
File "${GTK_DIR}\etc\gtk-2.0\*.*"
+
+!if ${WIRESHARK_TARGET_PLATFORM} == "win32"
SetOutPath $INSTDIR\etc\pango
File "${GTK_DIR}\etc\pango\pango.*"
-SetOutPath $INSTDIR\lib\gtk-2.0\${GTK_LIB_DIR}\loaders
-File "${GTK_DIR}\lib\gtk-2.0\${GTK_LIB_DIR}\loaders\libpixbufloader-*.dll"
+; Not needed for GTK+ >= 2.18
+;SetOutPath $INSTDIR\lib\gtk-2.0\${GTK_LIB_DIR}\loaders
+;File "${GTK_DIR}\lib\gtk-2.0\${GTK_LIB_DIR}\loaders\libpixbufloader-*.dll"
+!endif
+
SetOutPath $INSTDIR\lib\gtk-2.0\${GTK_LIB_DIR}\engines
File "${GTK_DIR}\lib\gtk-2.0\${GTK_LIB_DIR}\engines\libpixmap.dll"
SetOutPath $INSTDIR\lib\gtk-2.0\modules
File "${GTK_DIR}\lib\gtk-2.0\modules\libgail.dll"
-# Not needed with pango 1.14.5
-#SetOutPath $INSTDIR\lib\pango\${PANGO_LIB_DIR}\modules
-#File "${GTK_DIR}\lib\pango\${PANGO_LIB_DIR}\modules\pango-*.dll"
; GTK MS-Windows Engine (GTK-Wimp)
SetOutPath $INSTDIR\${GTK_WIMP_DLLDST_DIR}
Section "Dissector Plugins" SecPlugins
;-------------------------------------------
-SetOutPath $INSTDIR\plugins\${VERSION}
+SetOutPath '$INSTDIR\plugins\${VERSION}'
File "..\..\plugins\asn1\asn1.dll"
File "..\..\plugins\docsis\docsis.dll"
File "..\..\plugins\ethercat\ethercat.dll"
File "..\..\plugins\giop\parlay.dll"
File "..\..\plugins\giop\tango.dll"
File "..\..\plugins\gryphon\gryphon.dll"
+File "..\..\plugins\interlink\interlink.dll"
File "..\..\plugins\irda\irda.dll"
+File "..\..\plugins\llrp\llrp.dll"
File "..\..\plugins\m2m\m2m.dll"
+File "..\..\plugins\opcua\opcua.dll"
File "..\..\plugins\profinet\profinet.dll"
File "..\..\plugins\sercosiii\sercosiii.dll"
File "..\..\plugins\unistim\unistim.dll"
File "..\..\plugins\wimax\wimax.dll"
File "..\..\plugins\wimaxasncp\wimaxasncp.dll"
+!include "custom_plugins.txt"
SectionEnd
Section "Tree Statistics Plugin" SecStatsTree
;-------------------------------------------
-SetOutPath $INSTDIR\plugins\${VERSION}
+SetOutPath '$INSTDIR\plugins\${VERSION}'
File "..\..\plugins\stats_tree\stats_tree.dll"
SectionEnd
Section "Mate - Meta Analysis and Tracing Engine" SecMate
;-------------------------------------------
-SetOutPath $INSTDIR\plugins\${VERSION}
+SetOutPath '$INSTDIR\plugins\${VERSION}'
File "..\..\plugins\mate\mate.dll"
SectionEnd
Delete "$INSTDIR\*.dll"
Delete "$INSTDIR\*.html"
Delete "$INSTDIR\ws.css"
-Delete "$INSTDIR\COPYING"
+Delete "$INSTDIR\COPYING*"
Delete "$INSTDIR\AUTHORS-SHORT"
; previous versions installed these files
Delete "$INSTDIR\*.manifest"
!include WinMessages.nsh
!include "VersionCompare.nsh"
-Var NPF_START ; NPF service registry key
Var WINPCAP_NAME ; DisplayName from WinPcap installation
Var WINPCAP_VERSION ; DisplayVersion from WinPcap installation
StrCmp $R0 '98' lbl_winversion_unsupported
StrCmp $R0 'ME' lbl_winversion_unsupported
StrCmp $R0 'NT 4.0' lbl_winversion_unsupported_nt4
+ StrCmp $R0 '2000' lbl_winversion_unsupported_2000
Goto lbl_winversion_supported
lbl_winversion_unsupported:
MessageBox MB_OK \
- "Windows $R0 is no longer supported. The last known version working with 98/ME was Ethereal 0.99.0!" \
+ "Windows $R0 is no longer supported. The last known version working with 98/ME was Ethereal 0.99.0." \
/SD IDOK
-
Quit
lbl_winversion_unsupported_nt4:
MessageBox MB_OK \
- "Windows $R0 is no longer supported. The last known version working with NT 4.0 was Wireshark 0.99.4!" \
+ "Windows $R0 is no longer supported. The last known version working with NT 4.0 was Wireshark 0.99.4." \
/SD IDOK
Quit
-lbl_winversion_supported:
+lbl_winversion_unsupported_2000:
+ MessageBox MB_OK \
+ "Windows $R0 is no longer supported. Please install Wireshark 1.2 or 1.0." \
+ /SD IDOK
+ Quit
+lbl_winversion_supported:
; detect if WinPcap should be installed
- WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "Text" "Install WinPcap 4.0.2"
+ WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "Text" "Install WinPcap 4.1.1"
ReadRegStr $WINPCAP_NAME HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "DisplayName"
IfErrors 0 lbl_winpcap_installed ;if RegKey is available, WinPcap is already installed
WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 2" "Text" "WinPcap is currently not installed"
; Compare the installed build against the one we have.
ReadRegStr $WINPCAP_VERSION HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "DisplayVersion"
StrCmp $WINPCAP_VERSION "" lbl_winpcap_do_install ; WinPcap is really old(?) or installed improperly.
- ${VersionCompare} $WINPCAP_VERSION "4.0.0.1040" $1 ; WinPcap 4.0.2
+ ${VersionCompare} $WINPCAP_VERSION "4.1.0.1753" $1 ; WinPcap 4.1.1
StrCmp $1 "2" lbl_winpcap_do_install
;lbl_winpcap_dont_install:
; force the user to upgrade by hand
WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "State" "0"
WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "Flags" "DISABLED"
- WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Text" "If you wish to install WinPcap 4.0.2, please uninstall $WINPCAP_NAME manually first."
+ WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Text" "If you wish to install WinPcap 4.1.1, please uninstall $WINPCAP_NAME manually first."
WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Flags" "DISABLED"
Goto lbl_winpcap_done
lbl_winpcap_done:
- ; Disable NPF service setting for Win OT
- StrCmp $R0 '95' lbl_npf_disable
- StrCmp $R0 '98' lbl_npf_disable
- StrCmp $R0 'ME' lbl_npf_disable
- ; Enable NPF by default under Vista.
- StrCmp $R0 'Vista' lbl_npf_enable
- ReadRegDWORD $NPF_START HKEY_LOCAL_MACHINE "SYSTEM\CurrentControlSet\Services\NPF" "Start"
- ; (Winpcap may not be installed already, so no regKey is no error here)
- IfErrors lbl_npf_done ;RegKey not available, so do not set it
- IntCmp $NPF_START 2 0 lbl_npf_done lbl_npf_done
-lbl_npf_enable:
- WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 8" "State" "1"
- Goto lbl_npf_done
- ;disable
-lbl_npf_disable:
- WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 8" "State" "0"
- WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 8" "Flags" "DISABLED"
- WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 9" "Flags" "DISABLED"
-lbl_npf_done:
-
-
; if Wireshark was previously installed, unselect previously not installed icons etc.
; detect if Wireshark is already installed ->
ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "UninstallString"