From Madhusudhan M:
[metze/wireshark/wip.git] / packaging / nsis / wireshark.nsi
index beed1b1ba0707431181b4bc3ef1df916628acf68..4ba65ff2e6f59f50ca5abfaa1de41f3d999fec1c 100644 (file)
@@ -19,22 +19,41 @@ InstType "un.All (remove all)"
 !define SHCNF_IDLIST 0
 
 ; Used to add associations between file extensions and Wireshark
-!define WIRESHARK_ASSOC "wireshark-file"
+!define WIRESHARK_ASSOC "wireshark-capture-file"
 
 ; ============================================================================
 ; Header configuration
 ; ============================================================================
 ; The name of the installer
 !define PROGRAM_NAME "Wireshark"
+!if ${WIRESHARK_TARGET_PLATFORM} == "win32"
+!define BITS 32
+!else
+!define BITS 64
+!endif
+
+Name "${PROGRAM_NAME} ${VERSION} (${BITS}-bit)"
+
+; 
+VIAddVersionKey "ProductName" "${PROGRAM_NAME}"
+VIAddVersionKey "Comments" "It's a great product with a great story to tell. I'm pumped!"
+VIAddVersionKey "CompanyName" "${PROGRAM_NAME} development team"
+; NSIS handles the copyright symbol correctly using CP-1252 but not UTF-8.
+VIAddVersionKey "LegalCopyright" "© Gerald Combs and many others"
+VIAddVersionKey "LegalTrademarks" "Wireshark and the 'fin' logo are registered trademarks of the Wireshark Foundation"
+VIAddVersionKey "FileDescription" "${PROGRAM_NAME} installer for ${BITS}-bit Windows"
+VIAddVersionKey "Language" "English"
+VIAddVersionKey "ProductVersion" "${PRODUCT_VERSION}"
+VIAddVersionKey "FileVersion" "${PRODUCT_VERSION}"
+VIProductVersion "${PRODUCT_VERSION}"
 
-Name "${PROGRAM_NAME} ${VERSION}"
 
 ; The file to write
-OutFile "wireshark-setup-${VERSION}.exe"
+OutFile "wireshark-${WIRESHARK_TARGET_PLATFORM}-${VERSION}.exe"
 
 ; Icon of installer and uninstaller
-Icon "..\..\image\wireshark.ico"
-UninstallIcon "..\..\image\wireshark.ico"
+Icon "..\..\image\wiresharkinst.ico"
+UninstallIcon "..\..\image\wiresharkinst.ico"
 
 ; Uninstall stuff (NSIS 2.08: "\r\n" don't work here)
 !define MUI_UNCONFIRMPAGE_TEXT_TOP "The following Wireshark installation will be uninstalled. Click 'Next' to continue."
@@ -57,8 +76,8 @@ XPStyle on
 !include "MUI.nsh"
 ;!addplugindir ".\Plugins"
 
-!define MUI_ICON "..\..\image\wireshark.ico"
-!define MUI_UNICON "..\..\image\wireshark.ico"
+!define MUI_ICON "..\..\image\wiresharkinst.ico"
+!define MUI_UNICON "..\..\image\wiresharkinst.ico"
 
 !define MUI_COMPONENTSPAGE_SMALLDESC
 !define MUI_FINISHPAGE_NOAUTOCLOSE
@@ -147,11 +166,6 @@ Page custom DisplayWinPcapPage
 
 !macroend
 
-; ============================================================================
-; Services
-; ============================================================================
-!include "servicelib.nsh"
-
 ; ============================================================================
 ; Command Line
 ; ============================================================================
@@ -183,7 +197,11 @@ ComponentText "The following components are available for installation."
 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"
@@ -205,21 +223,17 @@ ShowUninstDetails show
 
        !define UPDATEICONS_UNIQUE ${__LINE__}
 
-       IfFileExists "$SYSDIR\shell32.dll" UpdateIcons.next1_${UPDATEICONS_UNIQUE} UpdateIcons.error1_${UPDATEICONS_UNIQUE}
-UpdateIcons.next1_${UPDATEICONS_UNIQUE}:
-       GetDllVersion "$SYSDIR\shell32.dll" $R0 $R1
-       IntOp $R2 $R0 / 0x00010000
-       IntCmp $R2 4 UpdateIcons.next2_${UPDATEICONS_UNIQUE} UpdateIcons.error2_${UPDATEICONS_UNIQUE}
-UpdateIcons.next2_${UPDATEICONS_UNIQUE}:
+       IfFileExists "$SYSDIR\shell32.dll" UpdateIcons.ok_shell32_${UPDATEICONS_UNIQUE} UpdateIcons.error_shell32_${UPDATEICONS_UNIQUE}
+UpdateIcons.ok_shell32_${UPDATEICONS_UNIQUE}:
        System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)'
        Goto UpdateIcons.quit_${UPDATEICONS_UNIQUE}
 
-UpdateIcons.error1_${UPDATEICONS_UNIQUE}:
-       MessageBox MB_OK|MB_ICONSTOP  "Can't find 'shell32.dll' library. Impossible to update icons"
-       Goto UpdateIcons.quit_${UPDATEICONS_UNIQUE}
-UpdateIcons.error2_${UPDATEICONS_UNIQUE}:
-       MessageBox MB_OK|MB_ICONINFORMATION "You should install the free 'Microsoft Layer for Unicode' to update Wireshark capture file icons"
+UpdateIcons.error_shell32_${UPDATEICONS_UNIQUE}:
+       MessageBox MB_OK|MB_ICONSTOP  \
+            "Can't find 'shell32.dll' library. Impossible to update icons" \
+            /SD IDOK
        Goto UpdateIcons.quit_${UPDATEICONS_UNIQUE}
+
 UpdateIcons.quit_${UPDATEICONS_UNIQUE}:
        !undef UPDATEICONS_UNIQUE
        Pop $R2
@@ -256,7 +270,71 @@ un.unlink.end:
        pop $R1
 FunctionEnd
 
+Var OLD_UNINSTALLER
+Var OLD_INSTDIR
+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" \
+    "UninstallString"
+  StrCmp $OLD_UNINSTALLER "" done
+
+  ReadRegStr $OLD_INSTDIR HKLM \
+    "Software\Microsoft\Windows\CurrentVersion\App Paths\wireshark.exe" \
+    "Path"
+  StrCmp $OLD_INSTDIR "" done
+
+  ReadRegStr $OLD_DISPLAYNAME HKLM \
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" \
+    "DisplayName"
+  StrCmp $OLD_DISPLAYNAME "" done
+
+  MessageBox MB_YESNOCANCEL|MB_ICONQUESTION \
+    "$OLD_DISPLAYNAME is already installed.\
+    $\n$\nWould you like to uninstall it first?" \
+      /SD IDYES \
+      IDYES prep_uninstaller \
+      IDNO done
+  Abort
+; Copy the uninstaller to $TEMP and run it.
+; The uninstaller normally does this by itself, but doesn't wait around
+; for the executable to finish, which means ExecWait won't work correctly.
+prep_uninstaller:
+  ClearErrors
+  StrCpy $TMP_UNINSTALLER "$TEMP\wireshark_uninstaller.exe"
+  ; ...because we surround UninstallString in quotes.
+  StrCpy $0 $OLD_UNINSTALLER -1 1
+  StrCpy $1 "$TEMP\wireshark_uninstaller.exe"
+  StrCpy $2 1
+  System::Call 'kernel32::CopyFile(t r0, t r1, b r2) 1'
+  IfSilent silent_uninstall
+  ExecWait "$TMP_UNINSTALLER _?=$OLD_INSTDIR"
+  Goto cleanup
+
+silent_uninstall:
+  ExecWait "$TMP_UNINSTALLER /S _?=$OLD_INSTDIR"
+
+cleanup:
+  Delete "$TMP_UNINSTALLER"
+  
+done:
   ;Extract InstallOptions INI files
   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "AdditionalTasksPage.ini"
   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "WinpcapPage.ini"
@@ -294,37 +372,47 @@ File "..\..\wiretap\wiretap-${WTAP_VERSION}.dll"
 !ifdef ENABLE_LIBWIRESHARK
 File "..\..\epan\libwireshark.dll"
 !endif
-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 "..\..\wsutil\libwsutil.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}\bin\libcares-2.dll"
+!endif
 !ifdef ADNS_DIR
-File "${ADNS_DIR}\adns_win32\LIB\adns_dll.dll"
+File "${ADNS_DIR}\..\${MSVC_VARIANT}\adns\adns_dll.dll"
 !endif
 !ifdef PCRE_DIR
 File "${PCRE_DIR}\bin\pcre3.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"
-File "${GNUTLS_DIR}\bin\libgnutls-13.dll"
-File "${GNUTLS_DIR}\bin\libgnutls-extra-13.dll"
-File "${GNUTLS_DIR}\bin\libgnutls-openssl-13.dll"
+File "${GNUTLS_DIR}\bin\libgnutls-26.dll"
+File "${GNUTLS_DIR}\bin\libgnutls-extra-26.dll"
+File "${GNUTLS_DIR}\bin\libgnutls-openssl-26.dll"
 File "${GNUTLS_DIR}\bin\libgpg-error-0.dll"
 File "${GNUTLS_DIR}\bin\libtasn1-3.dll"
+StrCmp "${INTL_DLL}" "libintl-8.dll" SkipLibIntl8
+File "${GNUTLS_DIR}\bin\libintl-8.dll"
+SkipLibIntl8:
 !endif
 !ifdef LUA_DIR
-File "${LUA_DIR}\lib\dll\lua5.1.dll"
+File "${LUA_DIR}\lua5.1.dll"
 File "..\..\epan\wslua\init.lua"
 File "..\..\epan\wslua\console.lua"
 File "..\..\epan\wslua\dtd_gen.lua"
@@ -332,26 +420,34 @@ File "..\..\epan\wslua\dtd_gen.lua"
 !ifdef SMI_DIR
 File "${SMI_DIR}\lib\smi.dll"
 !endif
-File "..\..\FAQ"
-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 "..\..\pdml2html.xsl"
 File "..\..\doc\ws.css"
 File "..\..\doc\wireshark.html"
 File "..\..\doc\wireshark-filter.html"
 File "..\..\dumpcap.exe"
 File "..\..\doc\dumpcap.html"
-File "..\..\example_snmp_users_file"
+File "..\..\ipmap.html"
 
 ; C-runtime redistributable
 !ifdef VCREDIST_EXE
 ; vcredist_x86.exe (MSVC V8) - copy and execute the redistributable installer
 File "${VCREDIST_EXE}"
-ExecWait '"$INSTDIR\vcredist_x86.exe"' $0
+!if ${WIRESHARK_TARGET_PLATFORM} == "win32"
+; 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_x86.exe" /q' $0
+!else
+ExecWait '"$INSTDIR\vcredist_x64.exe" /q' $0
+!endif ; WIRESHARK_TARGET_PLATFORM
 DetailPrint "vcredist_x86 returned $0"
 !else
 !ifdef MSVCR_DLL
@@ -376,7 +472,7 @@ File "..\..\colorfilters"
 ;IfFileExists dfilters dont_overwrite_dfilters
 File "..\..\dfilters"
 ;dont_overwrite_dfilters:
-;IfFileExists dfilters dont_overwrite_smi_modules
+;IfFileExists smi_modules dont_overwrite_smi_modules
 File "..\..\smi_modules"
 ;dont_overwrite_smi_modules:
 
@@ -386,19 +482,24 @@ File "..\..\smi_modules"
 ; of the installation directory.
 ;
 SetOutPath $INSTDIR\diameter
+File "..\..\diameter\Cisco.xml"
 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"
 File "..\..\diameter\TGPPGmb.xml"
+File "..\..\diameter\TGPPRx.xml"
 File "..\..\diameter\TGPPSh.xml"
+File "..\..\diameter\Vodafone.xml"
 SetOutPath $INSTDIR
 
 
@@ -408,68 +509,147 @@ SetOutPath $INSTDIR
 ; 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.acme"
+File "..\..\radius\dictionary.airespace"
 File "..\..\radius\dictionary.alcatel"
+File "..\..\radius\dictionary.alcatel.esam"
+File "..\..\radius\dictionary.alcatel.sr"
 File "..\..\radius\dictionary.alteon"
 File "..\..\radius\dictionary.altiga"
+File "..\..\radius\dictionary.alvarion"
+File "..\..\radius\dictionary.apc"
 File "..\..\radius\dictionary.aptis"
+File "..\..\radius\dictionary.aruba"
 File "..\..\radius\dictionary.ascend"
+File "..\..\radius\dictionary.asn"
+File "..\..\radius\dictionary.audiocodes"
+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.eltex"
+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.iea"
+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.motorola.wimax"
 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.rfc4603"
+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.rfc5580"
+File "..\..\radius\dictionary.rfc5607"
+File "..\..\radius\dictionary.rfc5904"
+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.tunnel"
-File "..\..\radius\dictionary.unisphere"
+File "..\..\radius\dictionary.tropos"
+File "..\..\radius\dictionary.ukerna"
 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.wichorus"
+File "..\..\radius\dictionary.wimax"
+File "..\..\radius\dictionary.wimax.wichorus"
 File "..\..\radius\dictionary.wispr"
 File "..\..\radius\dictionary.xedia"
+File "..\..\radius\dictionary.xylan"
+File "..\..\radius\dictionary.zyxel"
 SetOutPath $INSTDIR
 
 ;
@@ -504,13 +684,13 @@ File "..\..\wimaxasncp\dictionary.dtd"
 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}"
@@ -532,16 +712,15 @@ WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Pa
 ReadINIStr $0 "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 2" "State"
 StrCmp $0 "0" SecRequired_skip_StartMenu
 SetOutPath $PROFILE
-CreateDirectory "$SMPROGRAMS\Wireshark"
+;CreateDirectory "$SMPROGRAMS\Wireshark"
 ; To qoute "http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwue/html/ch11d.asp":
 ; "Do not include Readme, Help, or Uninstall entries on the Programs menu."
 Delete "$SMPROGRAMS\Wireshark\Wireshark Web Site.lnk"
 ;WriteINIStr "$SMPROGRAMS\Wireshark\Wireshark Web Site.url" "InternetShortcut" "URL" "http://www.wireshark.org/"
-CreateShortCut "$SMPROGRAMS\Wireshark\Wireshark.lnk" "$INSTDIR\wireshark.exe" "" "$INSTDIR\wireshark.exe" 0 "" "" "The Wireshark Network Protocol Analyzer"
+CreateShortCut "$SMPROGRAMS\Wireshark.lnk" "$INSTDIR\wireshark.exe" "" "$INSTDIR\wireshark.exe" 0 "" "" "The Wireshark Network Protocol Analyzer"
 ;CreateShortCut "$SMPROGRAMS\Wireshark\Wireshark Manual.lnk" "$INSTDIR\wireshark.html"
 ;CreateShortCut "$SMPROGRAMS\Wireshark\Display Filters Manual.lnk" "$INSTDIR\wireshark-filter.html"
-CreateShortCut "$SMPROGRAMS\Wireshark\Wireshark Program Directory.lnk" \
-          "$INSTDIR"
+;CreateShortCut "$SMPROGRAMS\Wireshark\Wireshark Program Directory.lnk" "$INSTDIR"
 ;CreateShortCut "$SMPROGRAMS\Wireshark\Uninstall Wireshark.lnk" "$INSTDIR\uninstall.exe"
 SecRequired_skip_StartMenu:
 
@@ -574,7 +753,7 @@ SecRequired_skip_QuickLaunchIcon:
 ; Create File Extensions (depending on additional tasks page)
 ReadINIStr $0 "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "State"
 StrCmp $0 "0" SecRequired_skip_FileExtensions
-WriteRegStr HKCR ${WIRESHARK_ASSOC} "" "Wireshark file"
+WriteRegStr HKCR ${WIRESHARK_ASSOC} "" "Wireshark capture file"
 WriteRegStr HKCR "${WIRESHARK_ASSOC}\Shell\open\command" "" '"$INSTDIR\wireshark.exe" "%1"'
 WriteRegStr HKCR "${WIRESHARK_ASSOC}\DefaultIcon" "" '"$INSTDIR\wireshark.exe",1'
 push $R0
@@ -598,6 +777,8 @@ push $R0
        Call Associate
        StrCpy $R0 ".pcap"
        Call Associate
+       StrCpy $R0 ".pcapng"
+       Call Associate
        StrCpy $R0 ".pkt"
        Call Associate
        StrCpy $R0 ".snoop"
@@ -637,22 +818,11 @@ IfErrors lbl_winpcap_notinstalled ;if RegKey is unavailable, WinPcap is not inst
 ;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_2.exe"
+ExecWait '"$INSTDIR\WinPcap_4_1_2.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
@@ -665,60 +835,64 @@ SetShellVarContext all
 
 SectionEnd ; "Required"
 
-
-SectionGroup "!Wireshark" SecWiresharkGroup
-
-!ifdef GTK2_DIR
-Section "Wireshark GTK2" SecWiresharkGTK2
+!ifdef GTK_DIR
+Section "Wireshark" SecWireshark
 ;-------------------------------------------
 SetOutPath $INSTDIR
 File "..\..\wireshark.exe"
-File "${GTK2_DIR}\bin\libgdk-win32-2.0-0.dll"
-File "${GTK2_DIR}\bin\libgdk_pixbuf-2.0-0.dll"
-File "${GTK2_DIR}\bin\libgtk-win32-2.0-0.dll"
-File "${GTK2_DIR}\bin\libatk-1.0-0.dll"
-File "${GTK2_DIR}\bin\libpango-1.0-0.dll"
-File "${GTK2_DIR}\bin\libpangowin32-1.0-0.dll"
+File "${GTK_DIR}\bin\libgdk-win32-2.0-0.dll"
+File "${GTK_DIR}\bin\libgdk_pixbuf-2.0-0.dll"
+File "${GTK_DIR}\bin\libgtk-win32-2.0-0.dll"
+File "${GTK_DIR}\bin\libatk-1.0-0.dll"
+File "${GTK_DIR}\bin\libpango-1.0-0.dll"
+File "${GTK_DIR}\bin\libpangowin32-1.0-0.dll"
 !ifdef NEED_CAIRO_DLL
-File "${GTK2_DIR}\bin\libcairo-2.dll"
-File "${GTK2_DIR}\bin\libpangocairo-1.0-0.dll"
+File "${GTK_DIR}\bin\libcairo-2.dll"
+File "${GTK_DIR}\bin\libpangocairo-1.0-0.dll"
 !endif
 !ifdef NEED_LIBPNG_DLL
-File "${GTK2_DIR}\bin\libpng13.dll"
+File "${GTK_DIR}\bin\${PNG_DLL}"
 !endif
 !ifdef NEED_LIBTIFF_DLL
-File "${GTK2_DIR}\bin\libtiff3.dll"
+File "${GTK_DIR}\bin\${TIFF_DLL}"
 !endif
 !ifdef NEED_LIBJPEG_DLL
-File "${GTK2_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 "${GTK2_DIR}\etc\gtk-2.0\*.*"
+File "${GTK_DIR}\etc\gtk-2.0\*.*"
+
+!if ${WIRESHARK_TARGET_PLATFORM} == "win32"
 SetOutPath $INSTDIR\etc\pango
-File "${GTK2_DIR}\etc\pango\pango.*"
-SetOutPath $INSTDIR\lib\gtk-2.0\${GTK2_LIB_DIR}\loaders
-File "${GTK2_DIR}\lib\gtk-2.0\${GTK2_LIB_DIR}\loaders\libpixbufloader-*.dll"
-SetOutPath $INSTDIR\lib\gtk-2.0\${GTK2_LIB_DIR}\immodules
-File "${GTK2_DIR}\lib\gtk-2.0\${GTK2_LIB_DIR}\immodules\im-*.dll"
-# Not needed with pango 1.14.5
-#SetOutPath $INSTDIR\lib\pango\${PANGO_LIB_DIR}\modules
-#File "${GTK2_DIR}\lib\pango\${PANGO_LIB_DIR}\modules\pango-*.dll"
+File "${GTK_DIR}\etc\pango\pango.*"
+; 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
 
-SectionEnd
+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"
 
-!ifdef GTK_WIMP_DIR
-Section "GTK MS Windows Engine" SecGTKWimp
-;-------------------------------------------
-SectionIn 1
+; GTK MS-Windows Engine (GTK-Wimp)
 SetOutPath $INSTDIR\${GTK_WIMP_DLLDST_DIR}
 File "${GTK_WIMP_DLLSRC_DIR}\libwimp.dll"
 SetOutPath $INSTDIR\${GTK_WIMP_RCDST_DIR}
 File "${GTK_WIMP_RCSRC_DIR}\gtkrc"
-SectionEnd
-!endif
-!endif
 
-SectionGroupEnd        ; "Wireshark"
+SectionEnd ; "Wireshark"
+!endif
 
 
 Section "TShark" SecTShark
@@ -728,56 +902,38 @@ File "..\..\tshark.exe"
 File "..\..\doc\tshark.html"
 SectionEnd
 
-Section "Rawshark" SecRawshark
-;-------------------------------------------
-SetOutPath $INSTDIR
-File "..\..\rawshark.exe"
-File "..\..\doc\rawshark.html"
-SectionEnd
-
 SectionGroup "Plugins / Extensions" SecPluginsGroup
 
 Section "Dissector Plugins" SecPlugins
 ;-------------------------------------------
-SetOutPath $INSTDIR\plugins\${VERSION}
-File "..\..\plugins\agentx\agentx.dll"
-File "..\..\plugins\artnet\artnet.dll"
+SetOutPath '$INSTDIR\plugins\${VERSION}'
 File "..\..\plugins\asn1\asn1.dll"
-File "..\..\plugins\ciscosm\ciscosm.dll"
 File "..\..\plugins\docsis\docsis.dll"
-File "..\..\plugins\enttec\enttec.dll"
 File "..\..\plugins\ethercat\ethercat.dll"
 File "..\..\plugins\giop\coseventcomm.dll"
 File "..\..\plugins\giop\cosnaming.dll"
 File "..\..\plugins\giop\parlay.dll"
 File "..\..\plugins\giop\tango.dll"
 File "..\..\plugins\gryphon\gryphon.dll"
-File "..\..\plugins\infiniband\infiniband.dll"
 File "..\..\plugins\irda\irda.dll"
-File "..\..\plugins\lwres\lwres.dll"
 File "..\..\plugins\m2m\m2m.dll"
-File "..\..\plugins\opsi\opsi.dll"
-File "..\..\plugins\pcli\pcli.dll"
+File "..\..\plugins\opcua\opcua.dll"
 File "..\..\plugins\profinet\profinet.dll"
-File "..\..\plugins\rlm\rlm.dll"
-File "..\..\plugins\rtnet\rtnet.dll"
-File "..\..\plugins\rudp\rudp.dll"
-File "..\..\plugins\sbus\sbus.dll"
 File "..\..\plugins\unistim\unistim.dll"
-File "..\..\plugins\v5ua\v5ua.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
 
@@ -831,6 +987,13 @@ File "..\..\capinfos.exe"
 File "..\..\doc\capinfos.html"
 SectionEnd
 
+Section "Rawshark" SecRawshark
+;-------------------------------------------
+SetOutPath $INSTDIR
+File "..\..\rawshark.exe"
+File "..\..\doc\rawshark.html"
+SectionEnd
+
 SectionGroupEnd        ; "Tools"
 
 !ifdef HHC_DIR
@@ -931,6 +1094,7 @@ Delete "$INSTDIR\lib\gtk-2.0\2.4.0\immodules\*.*"
 Delete "$INSTDIR\lib\gtk-2.0\2.10.0\engines\*.*"
 Delete "$INSTDIR\lib\gtk-2.0\2.10.0\loaders\*.*"
 Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\*.*"
+Delete "$INSTDIR\lib\gtk-2.0\modules\*.*"
 Delete "$INSTDIR\lib\pango\1.2.0\modules\*.*"
 Delete "$INSTDIR\lib\pango\1.4.0\modules\*.*"
 Delete "$INSTDIR\lib\pango\1.5.0\modules\*.*"
@@ -945,23 +1109,25 @@ Delete "$INSTDIR\*.exe"
 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"
 ; previous versions installed this file
 Delete "$INSTDIR\AUTHORS-SHORT-FORMAT"
 Delete "$INSTDIR\README*"
-Delete "$INSTDIR\FAQ"
 Delete "$INSTDIR\NEWS.txt"
 Delete "$INSTDIR\manuf"
 Delete "$INSTDIR\services"
+Delete "$INSTDIR\pdml2html.xsl"
 Delete "$INSTDIR\pcrepattern.3.txt"
 Delete "$INSTDIR\user-guide.chm"
 Delete "$INSTDIR\example_snmp_users_file"
+Delete "$INSTDIR\ipmap.html"
 Delete "$INSTDIR\radius\*.*"
 Delete "$INSTDIR\dtds\*.*"
 Delete "$SMPROGRAMS\Wireshark\*.*"
+Delete "$SMPROGRAMS\Wireshark.lnk"
 Delete "$DESKTOP\Wireshark.lnk"
 Delete "$QUICKLAUNCH\Wireshark.lnk"
 
@@ -980,6 +1146,7 @@ RMDir "$INSTDIR\lib\gtk-2.0\2.10.0\engines"
 RMDir "$INSTDIR\lib\gtk-2.0\2.10.0\loaders"
 RMDir "$INSTDIR\lib\gtk-2.0\2.10.0\immodules"
 RMDir "$INSTDIR\lib\gtk-2.0\2.10.0"
+RMDir "$INSTDIR\lib\gtk-2.0\modules"
 RMDir "$INSTDIR\lib\gtk-2.0"
 RMDir "$INSTDIR\lib\pango\1.2.0\modules"
 RMDir "$INSTDIR\lib\pango\1.2.0"
@@ -1065,15 +1232,10 @@ SectionEnd
 ; PLEASE MAKE SURE, THAT THE DESCRIPTIVE TEXT FITS INTO THE DESCRIPTION FIELD!
 ; ============================================================================
 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecWiresharkGroup} "${PROGRAM_NAME} is a GUI network protocol analyzer."
-!ifdef GTK2_DIR
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecWiresharkGTK2} "${PROGRAM_NAME} using the modern GTK2 user interface."
-!ifdef GTK_WIMP_DIR
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecGTKWimp} "GTK MS Windows Engine - native Win32 look and feel, for Win2000 and up."
-!endif
+!ifdef GTK_DIR
+  !insertmacro MUI_DESCRIPTION_TEXT ${SecWireshark} "${PROGRAM_NAME} is a GUI network protocol analyzer."
 !endif
   !insertmacro MUI_DESCRIPTION_TEXT ${SecTShark} "TShark is a text based network protocol analyzer."
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecRawshark} "Rawshark is a raw packet filter."
   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsGroup} "Some plugins and extensions for both Wireshark and TShark."
   !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} "Plugins with some extended dissections."
   !insertmacro MUI_DESCRIPTION_TEXT ${SecStatsTree} "Plugin for some extended statistics."
@@ -1089,6 +1251,7 @@ SectionEnd
   !insertmacro MUI_DESCRIPTION_TEXT ${SecText2Pcap} "Text2pcap is a program that reads in an ASCII hex dump and writes the data into a libpcap-style capture file."
   !insertmacro MUI_DESCRIPTION_TEXT ${SecMergecap} "Mergecap is a program that combines multiple saved capture files into a single output file"
   !insertmacro MUI_DESCRIPTION_TEXT ${SecCapinfos} "Capinfos is a program that provides information on capture files."
+  !insertmacro MUI_DESCRIPTION_TEXT ${SecRawshark} "Rawshark is a raw packet filter."
 !ifdef HHC_DIR
   !insertmacro MUI_DESCRIPTION_TEXT ${SecUsersGuide} "Install the user's guide, so an internet connection is not required to read the help pages."
 !endif
@@ -1105,28 +1268,24 @@ SectionEnd
 ; ============================================================================
 ; Callback functions
 ; ============================================================================
-!ifdef GTK2_DIR
-; Disable FileExtension if Wireshark isn't selected
+!ifdef GTK_DIR
+; Disable File extensions if Wireshark isn't selected
 Function .onSelChange
        Push $0
-       SectionGetFlags ${SecWiresharkGTK2} $0
+       SectionGetFlags ${SecWireshark} $0
        IntOp  $0 $0 & 1
        IntCmp $0 0 onSelChange.unselect
-       SectionGetFlags ${SecFileExtensions} $0
-       IntOp  $0 $0 & 16
-       IntCmp $0 16 onSelChange.unreadonly
+       WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "State" 1
+       WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "Flags" ""
+       WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 7" "Flags" ""
        Goto onSelChange.end
+
 onSelChange.unselect:
-       SectionGetFlags ${SecFileExtensions} $0
-       IntOp $0 $0 & 0xFFFFFFFE
-       IntOp $0 $0 | 0x10
-       SectionSetFlags ${SecFileExtensions} $0
-       Goto onSelChange.end
-onSelChange.unreadonly:
-       SectionGetFlags ${SecFileExtensions} $0
-       IntOp $0 $0 & 0xFFFFFFEF
-       SectionSetFlags ${SecFileExtensions} $0
+       WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "State" 0
+       WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "Flags" "DISABLED"
+       WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 7" "Flags" "DISABLED"
        Goto onSelChange.end
+
 onSelChange.end:
        Pop $0
 FunctionEnd
@@ -1137,31 +1296,11 @@ FunctionEnd
 !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
 
 Function myShowCallback
 
-; Uinstall old Wireshark first
-; XXX - doesn't work, but kept here for further experiments
-;ReadRegStr $WIRESHARK_UNINSTALL HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "UninstallString"
-;IfErrors lbl_wireshark_notinstalled ;if RegKey is unavailable, WinPcap is not installed
-;MessageBox MB_YESNO|MB_ICONQUESTION "Uninstall the old Wireshark version first (recommended)?"
-; Hide the installer while uninstalling
-;GetDlgItem $0 $HWNDPARENT 1
-;FindWindow $0 "#32770" "" $HWNDPARENT
-;MessageBox MB_OK "Window $0"
-;ShowWindow $0 ${SW_HIDE}
-;HideWindow
-;ExecWait '$WIRESHARK_UNINSTALL' $0
-;DetailPrint "WinPcap uninstaller returned $0"
-;GetDlgItem $0 $HWNDPARENT 1
-;ShowWindow $0 ${SW_SHOW}
-;MessageBox MB_OK "Uninstalled"
-;lbl_wireshark_notinstalled:
-
-
        ; Get the Windows version
        Call GetWindowsVersion
        Pop $R0 ; Windows Version
@@ -1171,36 +1310,29 @@ Function myShowCallback
        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!"
+       MessageBox MB_OK \
+            "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!"
+       MessageBox MB_OK \
+            "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:
-!ifdef GTK2_DIR
-       ; Enable GTK-Wimp only for Windows 2000/XP/2003
-       ; ...as Win9x/ME/NT known to have problems with it!
-
-       ;DetailPrint 'Windows Version: $R0'
-       StrCmp $R0 '2000' lbl_select_wimp
-       StrCmp $R0 'XP' lbl_select_wimp
-       StrCmp $R0 '2003' lbl_select_wimp
-       DetailPrint "Windows $R0 doesn't support the GTK MS Windows Engine!"
-
-       Goto lbl_ignore_wimp
-lbl_select_wimp:
-       !insertmacro SelectSection ${SecGTKWimp}
-
-lbl_ignore_wimp:
-!endif
-
+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.2"
        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"
@@ -1213,7 +1345,7 @@ lbl_winpcap_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.2001" $1 ; WinPcap 4.1.2
        StrCmp $1 "2" lbl_winpcap_do_install
 
 ;lbl_winpcap_dont_install:
@@ -1226,7 +1358,7 @@ lbl_winpcap_installed:
        ; 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.2, please uninstall $WINPCAP_NAME manually first."
        WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Flags" "DISABLED"
        Goto lbl_winpcap_done
 
@@ -1237,27 +1369,6 @@ lbl_winpcap_do_install:
 
 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"
@@ -1267,6 +1378,7 @@ lbl_npf_done:
        ; (we use the "all users" start menu, so select it first)
        SetShellVarContext all
        IfFileExists "$SMPROGRAMS\Wireshark\Wireshark.lnk" lbl_have_startmenu
+       IfFileExists "$SMPROGRAMS\Wireshark.lnk" lbl_have_startmenu
        WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 2" "State" "0"
 lbl_have_startmenu: