1a904f992bfcbc671f3a08d2c2acb54bef8ff63d
[metze/wireshark/wip.git] / packaging / nsis / wireshark.nsi
1 ;
2 ; wireshark.nsi
3 ;
4 ; $Id$
5
6
7 ; Set the compression mechanism first.
8 ; As of NSIS 2.07, solid compression which makes installer about 1MB smaller
9 ; is no longer the default, so use the /SOLID switch.
10 ; This unfortunately is unknown to NSIS prior to 2.07 and creates an error.
11 ; So if you get an error here, please update to at least NSIS 2.07!
12 SetCompressor /SOLID lzma
13
14 InstType "un.Default (keep Personal Settings and WinPcap)"
15 InstType "un.All (remove all)"
16
17 ; Used to refresh the display of file association
18 !define SHCNE_ASSOCCHANGED 0x08000000
19 !define SHCNF_IDLIST 0
20
21 ; Used to add associations between file extensions and Wireshark
22 !define WIRESHARK_ASSOC "wireshark-capture-file"
23
24 ; ============================================================================
25 ; Header configuration
26 ; ============================================================================
27 ; The name of the installer
28 !define PROGRAM_NAME "Wireshark"
29 !if ${WIRESHARK_TARGET_PLATFORM} == "win32"
30 !define BITS 32
31 !else
32 !define BITS 64
33 !endif
34
35 Name "${PROGRAM_NAME} ${VERSION} (${BITS}-bit)"
36
37
38 VIAddVersionKey "ProductName" "${PROGRAM_NAME}"
39 VIAddVersionKey "Comments" "It's a great product with a great story to tell. I'm pumped!"
40 VIAddVersionKey "CompanyName" "${PROGRAM_NAME} development team"
41 ; NSIS handles the copyright symbol correctly using CP-1252 but not UTF-8.
42 VIAddVersionKey "LegalCopyright" "© Gerald Combs and many others"
43 VIAddVersionKey "LegalTrademarks" "Wireshark and the 'fin' logo are registered trademarks of the Wireshark Foundation"
44 VIAddVersionKey "FileDescription" "${PROGRAM_NAME} installer for ${BITS}-bit Windows"
45 VIAddVersionKey "Language" "English"
46 VIAddVersionKey "ProductVersion" "${PRODUCT_VERSION}"
47 VIAddVersionKey "FileVersion" "${PRODUCT_VERSION}"
48 VIProductVersion "${PRODUCT_VERSION}"
49
50
51 ; The file to write
52 OutFile "wireshark-${WIRESHARK_TARGET_PLATFORM}-${VERSION}.exe"
53
54 ; Icon of installer and uninstaller
55 Icon "..\..\image\wiresharkinst.ico"
56 UninstallIcon "..\..\image\wiresharkinst.ico"
57
58 ; Uninstall stuff (NSIS 2.08: "\r\n" don't work here)
59 !define MUI_UNCONFIRMPAGE_TEXT_TOP "The following Wireshark installation will be uninstalled. Click 'Next' to continue."
60 ; Uninstall stuff (this text isn't used with the MODERN_UI!)
61 ;UninstallText "This will uninstall Wireshark.\r\nBefore starting the uninstallation, make sure Wireshark is not running.\r\nClick 'Next' to continue."
62
63 XPStyle on
64
65
66
67 ; ============================================================================
68 ; Modern UI
69 ; ============================================================================
70 ; The modern user interface will look much better than the common one.
71 ; However, as the development of the modern UI is still going on, and the script
72 ; syntax changes, you will need exactly that NSIS version, which this script is
73 ; made for. This is the current (December 2003) latest version: V2.0b4
74 ; If you are using a different version, it's not predictable what will happen.
75
76 !include "MUI.nsh"
77 ;!addplugindir ".\Plugins"
78
79 !define MUI_ICON "..\..\image\wiresharkinst.ico"
80 !define MUI_UNICON "..\..\image\wiresharkinst.ico"
81
82 !define MUI_COMPONENTSPAGE_SMALLDESC
83 !define MUI_FINISHPAGE_NOAUTOCLOSE
84 !define MUI_UNFINISHPAGE_NOAUTOCLOSE
85 !define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Wireshark.\r\n\r\nBefore starting the installation, make sure Wireshark is not running.\r\n\r\nClick 'Next' to continue."
86 ;!define MUI_FINISHPAGE_LINK "Install WinPcap to be able to capture packets from a network!"
87 ;!define MUI_FINISHPAGE_LINK_LOCATION "http://www.winpcap.org"
88
89 ; NSIS shows Readme files by opening the Readme file with the default application for
90 ; the file's extension. "README.win32" won't work in most cases, because extension "win32"
91 ; is usually not associated with an appropriate text editor. We should use extension "txt"
92 ; for a text file or "html" for an html README file.
93 !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\NEWS.txt"
94 !define MUI_FINISHPAGE_SHOWREADME_TEXT "Show News"
95 !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
96 !define MUI_FINISHPAGE_RUN "$INSTDIR\wireshark.exe"
97 !define MUI_FINISHPAGE_RUN_NOTCHECKED
98
99
100
101 !define MUI_PAGE_CUSTOMFUNCTION_SHOW myShowCallback
102
103 ; ============================================================================
104 ; MUI Pages
105 ; ============================================================================
106
107 !insertmacro MUI_PAGE_WELCOME
108 !insertmacro MUI_PAGE_LICENSE "..\..\COPYING"
109 !insertmacro MUI_PAGE_COMPONENTS
110 Page custom DisplayAdditionalTasksPage
111 !insertmacro MUI_PAGE_DIRECTORY
112 Page custom DisplayWinPcapPage
113 !insertmacro MUI_PAGE_INSTFILES
114 !insertmacro MUI_PAGE_FINISH
115
116 !insertmacro MUI_UNPAGE_WELCOME
117 !insertmacro MUI_UNPAGE_CONFIRM
118 !insertmacro MUI_UNPAGE_COMPONENTS
119 !insertmacro MUI_UNPAGE_INSTFILES
120 !insertmacro MUI_UNPAGE_FINISH
121
122 ; ============================================================================
123 ; MUI Languages
124 ; ============================================================================
125
126 !insertmacro MUI_LANGUAGE "English"
127
128 ; ============================================================================
129 ; Reserve Files
130 ; ============================================================================
131
132   ;Things that need to be extracted on first (keep these lines before any File command!)
133   ;Only useful for BZIP2 compression
134
135   ReserveFile "AdditionalTasksPage.ini"
136   ReserveFile "WinPcapPage.ini"
137   !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
138
139 ; ============================================================================
140 ; Section macros
141 ; ============================================================================
142 !include "Sections.nsh"
143
144 ; ========= Macro to unselect and disable a section =========
145
146 !macro DisableSection SECTION
147
148   Push $0
149     SectionGetFlags "${SECTION}" $0
150     IntOp $0 $0 & ${SECTION_OFF}
151     IntOp $0 $0 | ${SF_RO}
152     SectionSetFlags "${SECTION}" $0
153   Pop $0
154
155 !macroend
156
157 ; ========= Macro to enable (unreadonly) a section =========
158 !define SECTION_ENABLE   0xFFFFFFEF
159 !macro EnableSection SECTION
160
161   Push $0
162     SectionGetFlags "${SECTION}" $0
163     IntOp $0 $0 & ${SECTION_ENABLE}
164     SectionSetFlags "${SECTION}" $0
165   Pop $0
166
167 !macroend
168
169 ; ============================================================================
170 ; Command Line
171 ; ============================================================================
172 !include "FileFunc.nsh"
173
174 !insertmacro GetParameters
175 !insertmacro GetOptions
176
177 ; ============================================================================
178 ; License page configuration
179 ; ============================================================================
180 LicenseText "Wireshark is distributed under the GNU General Public License."
181 LicenseData "..\..\COPYING"
182
183 ; ============================================================================
184 ; Component page configuration
185 ; ============================================================================
186 ComponentText "The following components are available for installation."
187
188 ; Component check boxes
189 ; Commented out for NSIS v 2.0
190 ; EnabledBitmap "..\..\image\nsis-checked.bmp"
191 ; DisabledBitmap "..\..\image\nsis-unchecked.bmp"
192
193 ; ============================================================================
194 ; Directory selection page configuration
195 ; ============================================================================
196 ; The text to prompt the user to enter a directory
197 DirText "Choose a directory in which to install Wireshark."
198
199 ; The default installation directory
200 !if ${WIRESHARK_TARGET_PLATFORM} == "win64"
201   InstallDir $PROGRAMFILES64\Wireshark
202 !else
203   InstallDir $PROGRAMFILES\Wireshark
204 !endif
205
206 ; See if this is an upgrade; if so, use the old InstallDir as default
207 InstallDirRegKey HKEY_LOCAL_MACHINE SOFTWARE\Wireshark "InstallDir"
208
209
210 ; ============================================================================
211 ; Install page configuration
212 ; ============================================================================
213 ShowInstDetails show
214 ShowUninstDetails show
215
216 ; ============================================================================
217 ; Functions and macros
218 ; ============================================================================
219 !macro UpdateIcons
220         Push $R0
221         Push $R1
222         Push $R2
223
224         !define UPDATEICONS_UNIQUE ${__LINE__}
225
226         IfFileExists "$SYSDIR\shell32.dll" UpdateIcons.ok_shell32_${UPDATEICONS_UNIQUE} UpdateIcons.error_shell32_${UPDATEICONS_UNIQUE}
227 UpdateIcons.ok_shell32_${UPDATEICONS_UNIQUE}:
228         System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)'
229         Goto UpdateIcons.quit_${UPDATEICONS_UNIQUE}
230
231 UpdateIcons.error_shell32_${UPDATEICONS_UNIQUE}:
232         MessageBox MB_OK|MB_ICONSTOP  \
233             "Can't find 'shell32.dll' library. Impossible to update icons" \
234             /SD IDOK
235         Goto UpdateIcons.quit_${UPDATEICONS_UNIQUE}
236
237 UpdateIcons.quit_${UPDATEICONS_UNIQUE}:
238         !undef UPDATEICONS_UNIQUE
239         Pop $R2
240         Pop $R1
241         Pop $R0
242
243 !macroend
244
245 Function Associate
246         ; $R0 should contain the prefix to associate to Wireshark
247         Push $R1
248
249         ReadRegStr $R1 HKCR $R0 ""
250         StrCmp $R1 "" Associate.doRegister
251         Goto Associate.end
252 Associate.doRegister:
253         ;The extension is not associated to any program, we can do the link
254         WriteRegStr HKCR $R0 "" ${WIRESHARK_ASSOC}
255 Associate.end:
256         pop $R1
257 FunctionEnd
258
259 Function un.unlink
260         ; $R0 should contain the prefix to unlink
261         Push $R1
262
263         ReadRegStr $R1 HKCR $R0 ""
264         StrCmp $R1 ${WIRESHARK_ASSOC} un.unlink.doUnlink
265         Goto un.unlink.end
266 un.unlink.doUnlink:
267         ; The extension is associated with Wireshark so, we must destroy this!
268         DeleteRegKey HKCR $R0
269 un.unlink.end:
270         pop $R1
271 FunctionEnd
272
273 Var OLD_UNINSTALLER
274 Var OLD_INSTDIR
275 Var OLD_DISPLAYNAME
276 Var TMP_UNINSTALLER
277
278 ; ============================================================================
279 ; 64-bit support
280 ; ============================================================================
281 !include x64.nsh
282
283 Function .onInit
284   !if ${WIRESHARK_TARGET_PLATFORM} == "win64"
285     ; http://forums.winamp.com/printthread.php?s=16ffcdd04a8c8d52bee90c0cae273ac5&threadid=262873
286     ${IfNot} ${RunningX64}
287       MessageBox MB_OK "This version of Wireshark only runs on x64 machines.\nTry installing the 32-bit version instead."
288       Abort
289     ${EndIf}
290   !endif
291
292   ; Copied from http://nsis.sourceforge.net/Auto-uninstall_old_before_installing_new
293   ReadRegStr $OLD_UNINSTALLER HKLM \
294     "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" \
295     "UninstallString"
296   StrCmp $OLD_UNINSTALLER "" done
297
298   ReadRegStr $OLD_INSTDIR HKLM \
299     "Software\Microsoft\Windows\CurrentVersion\App Paths\wireshark.exe" \
300     "Path"
301   StrCmp $OLD_INSTDIR "" done
302
303   ReadRegStr $OLD_DISPLAYNAME HKLM \
304     "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" \
305     "DisplayName"
306   StrCmp $OLD_DISPLAYNAME "" done
307
308   MessageBox MB_YESNOCANCEL|MB_ICONQUESTION \
309     "$OLD_DISPLAYNAME is already installed.\
310     $\n$\nWould you like to uninstall it first?" \
311       /SD IDYES \
312       IDYES prep_uninstaller \
313       IDNO done
314   Abort
315  
316 ; Copy the uninstaller to $TEMP and run it.
317 ; The uninstaller normally does this by itself, but doesn't wait around
318 ; for the executable to finish, which means ExecWait won't work correctly.
319 prep_uninstaller:
320   ClearErrors
321   StrCpy $TMP_UNINSTALLER "$TEMP\wireshark_uninstaller.exe"
322   ; ...because we surround UninstallString in quotes.
323   StrCpy $0 $OLD_UNINSTALLER -1 1
324   StrCpy $1 "$TEMP\wireshark_uninstaller.exe"
325   StrCpy $2 1
326   System::Call 'kernel32::CopyFile(t r0, t r1, b r2) 1'
327   IfSilent silent_uninstall
328   ExecWait "$TMP_UNINSTALLER _?=$OLD_INSTDIR"
329   Goto cleanup
330
331 silent_uninstall:
332   ExecWait "$TMP_UNINSTALLER /S _?=$OLD_INSTDIR"
333
334 cleanup:
335   Delete "$TMP_UNINSTALLER"
336   
337 done:
338   ;Extract InstallOptions INI files
339   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "AdditionalTasksPage.ini"
340   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "WinpcapPage.ini"
341 FunctionEnd
342
343 Function DisplayAdditionalTasksPage
344   !insertmacro MUI_HEADER_TEXT "Select Additional Tasks" "Which additional tasks should be done?"
345   !insertmacro MUI_INSTALLOPTIONS_DISPLAY "AdditionalTasksPage.ini"
346 FunctionEnd
347
348 Function DisplayWinPcapPage
349   !insertmacro MUI_HEADER_TEXT "Install WinPcap?" "WinPcap is required to capture live network data. Should WinPcap be installed?"
350   !insertmacro MUI_INSTALLOPTIONS_DISPLAY "WinPcapPage.ini"
351 FunctionEnd
352
353 ; ============================================================================
354 ; Installation execution commands
355 ; ============================================================================
356
357 Var WINPCAP_UNINSTALL ;declare variable for holding the value of a registry key
358 ;Var WIRESHARK_UNINSTALL ;declare variable for holding the value of a registry key
359
360 Section "-Required"
361 ;-------------------------------------------
362
363 ;
364 ; Install for every user
365 ;
366 SetShellVarContext all
367
368
369
370 SetOutPath $INSTDIR
371 File "..\..\wiretap\wiretap-${WTAP_VERSION}.dll"
372 !ifdef ENABLE_LIBWIRESHARK
373 File "..\..\epan\libwireshark.dll"
374 !endif
375 File "..\..\wsutil\libwsutil.dll"
376 File "${GTK_DIR}\bin\libgio-2.0-0.dll"
377 File "${GTK_DIR}\bin\libglib-2.0-0.dll"
378 File "${GTK_DIR}\bin\libgobject-2.0-0.dll"
379 File "${GTK_DIR}\bin\libgmodule-2.0-0.dll"
380 File "${GTK_DIR}\bin\libgthread-2.0-0.dll"
381 !ifdef ICONV_DIR
382 File "${GTK_DIR}\bin\iconv.dll"
383 !endif
384 File "${GTK_DIR}\bin\${INTL_DLL}"
385 !ifdef ZLIB_DIR
386 File "${ZLIB_DIR}\zlib1.dll"
387 !endif
388 !ifdef C_ARES_DIR
389 File "${C_ARES_DIR}\bin\libcares-2.dll"
390 !endif
391 !ifdef ADNS_DIR
392 File "${ADNS_DIR}\..\${MSVC_VARIANT}\adns\adns_dll.dll"
393 !endif
394 !ifdef PCRE_DIR
395 File "${PCRE_DIR}\bin\pcre3.dll"
396 File "${PCRE_DIR}\man\cat3\pcrepattern.3.txt"
397 !endif
398 !ifdef KFW_DIR
399 File "${KFW_PATH}\comerr32.dll"
400 File "${KFW_PATH}\krb5_32.dll"
401 File "${KFW_PATH}\k5sprt32.dll"
402 !endif
403 !ifdef GNUTLS_DIR
404 File "${GNUTLS_DIR}\bin\libgcrypt-11.dll"
405 File "${GNUTLS_DIR}\bin\libgnutls-26.dll"
406 File "${GNUTLS_DIR}\bin\libgnutls-extra-26.dll"
407 File "${GNUTLS_DIR}\bin\libgnutls-openssl-26.dll"
408 File "${GNUTLS_DIR}\bin\libgpg-error-0.dll"
409 File "${GNUTLS_DIR}\bin\libtasn1-3.dll"
410 StrCmp "${INTL_DLL}" "libintl-8.dll" SkipLibIntl8
411 File "${GNUTLS_DIR}\bin\libintl-8.dll"
412 SkipLibIntl8:
413 !endif
414 !ifdef LUA_DIR
415 File "${LUA_DIR}\lua5.1.dll"
416 File "..\..\epan\wslua\init.lua"
417 File "..\..\epan\wslua\console.lua"
418 File "..\..\epan\wslua\dtd_gen.lua"
419 !endif
420 !ifdef SMI_DIR
421 File "${SMI_DIR}\lib\smi.dll"
422 !endif
423 File "..\..\wireshark-gtk2\COPYING.txt"
424 File "..\..\wireshark-gtk2\NEWS.txt"
425 File "..\..\wireshark-gtk2\README.txt"
426 File "..\..\wireshark-gtk2\README.windows.txt"
427 File "..\..\doc\AUTHORS-SHORT"
428 File "..\..\manuf"
429 File "..\..\services"
430 File "..\..\pdml2html.xsl"
431 File "..\..\doc\ws.css"
432 File "..\..\doc\wireshark.html"
433 File "..\..\doc\wireshark-filter.html"
434 File "..\..\dumpcap.exe"
435 File "..\..\doc\dumpcap.html"
436 File "..\..\ipmap.html"
437
438 ; C-runtime redistributable
439 !ifdef VCREDIST_EXE
440 ; vcredist_x86.exe (MSVC V8) - copy and execute the redistributable installer
441 File "${VCREDIST_EXE}"
442 !if ${WIRESHARK_TARGET_PLATFORM} == "win32"
443 ; If the user already has the redistributable installed they will see a
444 ; Big Ugly Dialog by default, asking if they want to uninstall or repair.
445 ; Ideally we should add a checkbox for this somewhere. In the meantime,
446 ; just do a silent install.
447 ExecWait '"$INSTDIR\vcredist_x86.exe" /q' $0
448 !else
449 ExecWait '"$INSTDIR\vcredist_x64.exe" /q' $0
450 !endif ; WIRESHARK_TARGET_PLATFORM
451 DetailPrint "vcredist_x86 returned $0"
452 !else
453 !ifdef MSVCR_DLL
454 ; msvcr*.dll (MSVC V7 or V7.1) - simply copy the dll file
455 !echo "IF YOU GET AN ERROR HERE, check the MSVC_VARIANT setting in config.nmake: MSVC2005 vs. MSVC2005EE!"
456 File "${MSVCR_DLL}"
457 !else
458 !if ${MSVC_VARIANT} != "MSVC6"
459 !error "C-Runtime redistributable for this package not available / not redistributable!"
460 !endif
461 !endif  ; MSVCR_DLL
462 !endif  ; VCREDIST_EXE
463
464
465 ; global config files - don't overwrite if already existing
466 ;IfFileExists cfilters dont_overwrite_cfilters
467 File "..\..\cfilters"
468 ;dont_overwrite_cfilters:
469 ;IfFileExists colorfilters dont_overwrite_colorfilters
470 File "..\..\colorfilters"
471 ;dont_overwrite_colorfilters:
472 ;IfFileExists dfilters dont_overwrite_dfilters
473 File "..\..\dfilters"
474 ;dont_overwrite_dfilters:
475 ;IfFileExists smi_modules dont_overwrite_smi_modules
476 File "..\..\smi_modules"
477 ;dont_overwrite_smi_modules:
478
479
480 ;
481 ; Install the Diameter DTD and XML files in the "diameter" subdirectory
482 ; of the installation directory.
483 ;
484 SetOutPath $INSTDIR\diameter
485 File "..\..\diameter\chargecontrol.xml"
486 File "..\..\diameter\dictionary.dtd"
487 File "..\..\diameter\dictionary.xml"
488 File "..\..\diameter\eap.xml"
489 File "..\..\diameter\Ericsson.xml"
490 File "..\..\diameter\etsie2e4.xml"
491 File "..\..\diameter\gqpolicy.xml"
492 File "..\..\diameter\imscxdx.xml"
493 File "..\..\diameter\mobileipv4.xml"
494 File "..\..\diameter\mobileipv6.xml"
495 File "..\..\diameter\nasreq.xml"
496 File "..\..\diameter\sip.xml"
497 File "..\..\diameter\sunping.xml"
498 File "..\..\diameter\TGPPGmb.xml"
499 File "..\..\diameter\TGPPRx.xml"
500 File "..\..\diameter\TGPPSh.xml"
501 SetOutPath $INSTDIR
502
503
504
505 ;
506 ; Install the RADIUS directory files in the "radius" subdirectory
507 ; of the installation directory.
508 ;
509 SetOutPath $INSTDIR\radius
510 File "..\..\radius\README.radius_dictionary"
511 File "..\..\radius\dictionary"
512 File "..\..\radius\dictionary.3com"
513 File "..\..\radius\dictionary.3gpp"
514 File "..\..\radius\dictionary.3gpp2"
515 File "..\..\radius\dictionary.acc"
516 File "..\..\radius\dictionary.acme"
517 File "..\..\radius\dictionary.airespace"
518 File "..\..\radius\dictionary.alcatel"
519 File "..\..\radius\dictionary.alcatel.esam"
520 File "..\..\radius\dictionary.alcatel.sr"
521 File "..\..\radius\dictionary.alteon"
522 File "..\..\radius\dictionary.altiga"
523 File "..\..\radius\dictionary.alvarion"
524 File "..\..\radius\dictionary.apc"
525 File "..\..\radius\dictionary.aptis"
526 File "..\..\radius\dictionary.aruba"
527 File "..\..\radius\dictionary.ascend"
528 File "..\..\radius\dictionary.asn"
529 File "..\..\radius\dictionary.audiocodes"
530 File "..\..\radius\dictionary.avaya"
531 File "..\..\radius\dictionary.azaire"
532 File "..\..\radius\dictionary.bay"
533 File "..\..\radius\dictionary.bintec"
534 File "..\..\radius\dictionary.bristol"
535 File "..\..\radius\dictionary.cablelabs"
536 File "..\..\radius\dictionary.cabletron"
537 File "..\..\radius\dictionary.chillispot"
538 File "..\..\radius\dictionary.cisco"
539 File "..\..\radius\dictionary.cisco.bbsm"
540 File "..\..\radius\dictionary.cisco.vpn3000"
541 File "..\..\radius\dictionary.cisco.vpn5000"
542 File "..\..\radius\dictionary.clavister"
543 File "..\..\radius\dictionary.colubris"
544 File "..\..\radius\dictionary.columbia_university"
545 File "..\..\radius\dictionary.compat"
546 File "..\..\radius\dictionary.cosine"
547 File "..\..\radius\dictionary.dhcp"
548 File "..\..\radius\dictionary.digium"
549 File "..\..\radius\dictionary.eltex"
550 File "..\..\radius\dictionary.epygi"
551 File "..\..\radius\dictionary.ericsson"
552 File "..\..\radius\dictionary.erx"
553 File "..\..\radius\dictionary.extreme"
554 File "..\..\radius\dictionary.fortinet"
555 File "..\..\radius\dictionary.foundry"
556 File "..\..\radius\dictionary.freeradius"
557 File "..\..\radius\dictionary.freeradius.internal"
558 File "..\..\radius\dictionary.freeswitch"
559 File "..\..\radius\dictionary.gandalf"
560 File "..\..\radius\dictionary.garderos"
561 File "..\..\radius\dictionary.gemtek"
562 File "..\..\radius\dictionary.h3c"
563 File "..\..\radius\dictionary.hp"
564 File "..\..\radius\dictionary.huawei"
565 File "..\..\radius\dictionary.iea"
566 File "..\..\radius\dictionary.infonet"
567 File "..\..\radius\dictionary.ipunplugged"
568 File "..\..\radius\dictionary.issanni"
569 File "..\..\radius\dictionary.itk"
570 File "..\..\radius\dictionary.jradius"
571 File "..\..\radius\dictionary.juniper"
572 File "..\..\radius\dictionary.karlnet"
573 File "..\..\radius\dictionary.lancom"
574 File "..\..\radius\dictionary.livingston"
575 File "..\..\radius\dictionary.localweb"
576 File "..\..\radius\dictionary.lucent"
577 File "..\..\radius\dictionary.manzara"
578 File "..\..\radius\dictionary.merit"
579 File "..\..\radius\dictionary.microsoft"
580 File "..\..\radius\dictionary.mikrotik"
581 File "..\..\radius\dictionary.motorola"
582 File "..\..\radius\dictionary.motorola.wimax"
583 File "..\..\radius\dictionary.navini"
584 File "..\..\radius\dictionary.netscreen"
585 File "..\..\radius\dictionary.networkphysics"
586 File "..\..\radius\dictionary.nexans"
587 File "..\..\radius\dictionary.nokia"
588 File "..\..\radius\dictionary.nokia.conflict"
589 File "..\..\radius\dictionary.nomadix"
590 File "..\..\radius\dictionary.nortel"
591 File "..\..\radius\dictionary.ntua"
592 File "..\..\radius\dictionary.openser"
593 File "..\..\radius\dictionary.packeteer"
594 File "..\..\radius\dictionary.patton"
595 File "..\..\radius\dictionary.propel"
596 File "..\..\radius\dictionary.prosoft"
597 File "..\..\radius\dictionary.quiconnect"
598 File "..\..\radius\dictionary.quintum"
599 File "..\..\radius\dictionary.redback"
600 File "..\..\radius\dictionary.redcreek"
601 File "..\..\radius\dictionary.rfc2865"
602 File "..\..\radius\dictionary.rfc2866"
603 File "..\..\radius\dictionary.rfc2867"
604 File "..\..\radius\dictionary.rfc2868"
605 File "..\..\radius\dictionary.rfc2869"
606 File "..\..\radius\dictionary.rfc3162"
607 File "..\..\radius\dictionary.rfc3576"
608 File "..\..\radius\dictionary.rfc3580"
609 File "..\..\radius\dictionary.rfc4072"
610 File "..\..\radius\dictionary.rfc4372"
611 File "..\..\radius\dictionary.rfc4603"
612 File "..\..\radius\dictionary.rfc4675"
613 File "..\..\radius\dictionary.rfc4679"
614 File "..\..\radius\dictionary.rfc4818"
615 File "..\..\radius\dictionary.rfc4849"
616 File "..\..\radius\dictionary.rfc5090"
617 File "..\..\radius\dictionary.rfc5176"
618 File "..\..\radius\dictionary.rfc5580"
619 File "..\..\radius\dictionary.rfc5607"
620 File "..\..\radius\dictionary.rfc5904"
621 File "..\..\radius\dictionary.riverstone"
622 File "..\..\radius\dictionary.roaringpenguin"
623 File "..\..\radius\dictionary.shasta"
624 File "..\..\radius\dictionary.shiva"
625 File "..\..\radius\dictionary.slipstream"
626 File "..\..\radius\dictionary.sofaware"
627 File "..\..\radius\dictionary.sonicwall"
628 File "..\..\radius\dictionary.springtide"
629 File "..\..\radius\dictionary.starent"
630 File "..\..\radius\dictionary.t_systems_nova"
631 File "..\..\radius\dictionary.telebit"
632 File "..\..\radius\dictionary.telkom"
633 File "..\..\radius\dictionary.trapeze"
634 File "..\..\radius\dictionary.tropos"
635 File "..\..\radius\dictionary.ukerna"
636 File "..\..\radius\dictionary.unix"
637 File "..\..\radius\dictionary.usr"
638 File "..\..\radius\dictionary.utstarcom"
639 File "..\..\radius\dictionary.valemount"
640 File "..\..\radius\dictionary.versanet"
641 File "..\..\radius\dictionary.vqp"
642 File "..\..\radius\dictionary.walabi"
643 File "..\..\radius\dictionary.waverider"
644 File "..\..\radius\dictionary.wichorus"
645 File "..\..\radius\dictionary.wimax"
646 File "..\..\radius\dictionary.wimax.wichorus"
647 File "..\..\radius\dictionary.wispr"
648 File "..\..\radius\dictionary.xedia"
649 File "..\..\radius\dictionary.xylan"
650 File "..\..\radius\dictionary.zyxel"
651 SetOutPath $INSTDIR
652
653 ;
654 ; install the dtds in the dtds subdirectory
655 ;
656 SetOutPath $INSTDIR\dtds
657 File "..\..\dtds\dc.dtd"
658 File "..\..\dtds\itunes.dtd"
659 File "..\..\dtds\mscml.dtd"
660 File "..\..\dtds\pocsettings.dtd"
661 File "..\..\dtds\presence.dtd"
662 File "..\..\dtds\reginfo.dtd"
663 File "..\..\dtds\rlmi.dtd"
664 File "..\..\dtds\rss.dtd"
665 File "..\..\dtds\smil.dtd"
666 File "..\..\dtds\xcap-caps.dtd"
667 File "..\..\dtds\xcap-error.dtd"
668 File "..\..\dtds\watcherinfo.dtd"
669 SetOutPath $INSTDIR
670
671 ; Install the TPNCP DAT file in the "tpncp" subdirectory
672 ; of the installation directory.
673 SetOutPath $INSTDIR\tpncp
674 File "..\..\tpncp\tpncp.dat"
675
676 ;
677 ; install the wimaxasncp TLV definitions in the wimaxasncp subdirectory
678 ;
679 SetOutPath $INSTDIR\wimaxasncp
680 File "..\..\wimaxasncp\dictionary.xml"
681 File "..\..\wimaxasncp\dictionary.dtd"
682 SetOutPath $INSTDIR
683
684 SetOutPath $INSTDIR\help
685 File "..\..\wireshark-gtk2\help\toc"
686 File "..\..\wireshark-gtk2\help\overview.txt"
687 File "..\..\wireshark-gtk2\help\getting_started.txt"
688 File "..\..\wireshark-gtk2\help\capturing.txt"
689 File "..\..\wireshark-gtk2\help\capture_filters.txt"
690 File "..\..\wireshark-gtk2\help\display_filters.txt"
691 File "..\..\wireshark-gtk2\help\faq.txt"
692
693 ; Write the uninstall keys for Windows
694 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "DisplayVersion" "${VERSION}"
695 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "DisplayName" "Wireshark ${VERSION}"
696 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "UninstallString" '"$INSTDIR\uninstall.exe"'
697 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "Publisher" "The Wireshark developer community, http://www.wireshark.org"
698 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "HelpLink" "mailto:wireshark-users@wireshark.org"
699 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "URLInfoAbout" "http://www.wireshark.org"
700 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "URLUpdateInfo" "http://www.wireshark.org/download/win32/"
701 WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "NoModify" 1
702 WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "NoRepair" 1
703 WriteUninstaller "uninstall.exe"
704
705 ; Write an entry for ShellExecute
706 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\wireshark.exe" "" '$INSTDIR\wireshark.exe'
707 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\wireshark.exe" "Path" '$INSTDIR'
708
709 ; Create start menu entries (depending on additional tasks page)
710 ReadINIStr $0 "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 2" "State"
711 StrCmp $0 "0" SecRequired_skip_StartMenu
712 SetOutPath $PROFILE
713 ;CreateDirectory "$SMPROGRAMS\Wireshark"
714 ; To qoute "http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwue/html/ch11d.asp":
715 ; "Do not include Readme, Help, or Uninstall entries on the Programs menu."
716 Delete "$SMPROGRAMS\Wireshark\Wireshark Web Site.lnk"
717 ;WriteINIStr "$SMPROGRAMS\Wireshark\Wireshark Web Site.url" "InternetShortcut" "URL" "http://www.wireshark.org/"
718 CreateShortCut "$SMPROGRAMS\Wireshark.lnk" "$INSTDIR\wireshark.exe" "" "$INSTDIR\wireshark.exe" 0 "" "" "The Wireshark Network Protocol Analyzer"
719 ;CreateShortCut "$SMPROGRAMS\Wireshark\Wireshark Manual.lnk" "$INSTDIR\wireshark.html"
720 ;CreateShortCut "$SMPROGRAMS\Wireshark\Display Filters Manual.lnk" "$INSTDIR\wireshark-filter.html"
721 ;CreateShortCut "$SMPROGRAMS\Wireshark\Wireshark Program Directory.lnk" "$INSTDIR"
722 ;CreateShortCut "$SMPROGRAMS\Wireshark\Uninstall Wireshark.lnk" "$INSTDIR\uninstall.exe"
723 SecRequired_skip_StartMenu:
724
725 ; is command line option "/desktopicon" set?
726 ${GetParameters} $R0
727 ${GetOptions} $R0 "/desktopicon=" $R1
728 StrCmp $R1 "no" SecRequired_skip_DesktopIcon
729 StrCmp $R1 "yes" SecRequired_install_DesktopIcon
730
731 ; Create desktop icon (depending on additional tasks page and command line option)
732 ReadINIStr $0 "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 3" "State"
733 StrCmp $0 "0" SecRequired_skip_DesktopIcon
734 SecRequired_install_DesktopIcon:
735 CreateShortCut "$DESKTOP\Wireshark.lnk" "$INSTDIR\wireshark.exe" "" "$INSTDIR\wireshark.exe" 0 "" "" "The Wireshark Network Protocol Analyzer"
736 SecRequired_skip_DesktopIcon:
737
738 ; is command line option "/quicklaunchicon" set?
739 ${GetParameters} $R0
740 ${GetOptions} $R0 "/quicklaunchicon=" $R1
741 StrCmp $R1 "no" SecRequired_skip_QuickLaunchIcon
742 StrCmp $R1 "yes" SecRequired_install_QuickLaunchIcon
743
744 ; Create quick launch icon (depending on additional tasks page and command line option)
745 ReadINIStr $0 "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 4" "State"
746 StrCmp $0 "0" SecRequired_skip_QuickLaunchIcon
747 SecRequired_install_QuickLaunchIcon:
748 CreateShortCut "$QUICKLAUNCH\Wireshark.lnk" "$INSTDIR\wireshark.exe" "" "$INSTDIR\wireshark.exe" 0 "" "" "The Wireshark Network Protocol Analyzer"
749 SecRequired_skip_QuickLaunchIcon:
750
751 ; Create File Extensions (depending on additional tasks page)
752 ReadINIStr $0 "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "State"
753 StrCmp $0 "0" SecRequired_skip_FileExtensions
754 WriteRegStr HKCR ${WIRESHARK_ASSOC} "" "Wireshark capture file"
755 WriteRegStr HKCR "${WIRESHARK_ASSOC}\Shell\open\command" "" '"$INSTDIR\wireshark.exe" "%1"'
756 WriteRegStr HKCR "${WIRESHARK_ASSOC}\DefaultIcon" "" '"$INSTDIR\wireshark.exe",1'
757 push $R0
758         StrCpy $R0 ".5vw"
759         Call Associate
760         StrCpy $R0 ".acp"
761         Call Associate
762         StrCpy $R0 ".apc"
763         Call Associate
764         StrCpy $R0 ".atc"
765         Call Associate
766         StrCpy $R0 ".bfr"
767         Call Associate
768         StrCpy $R0 ".cap"
769         Call Associate
770         StrCpy $R0 ".enc"
771         Call Associate
772         StrCpy $R0 ".erf"
773         Call Associate
774         StrCpy $R0 ".fdc"
775         Call Associate
776         StrCpy $R0 ".pcap"
777         Call Associate
778         StrCpy $R0 ".pcapng"
779         Call Associate
780         StrCpy $R0 ".pkt"
781         Call Associate
782         StrCpy $R0 ".snoop"
783         Call Associate
784         StrCpy $R0 ".syc"
785         Call Associate
786         StrCpy $R0 ".tpc"
787         Call Associate
788         StrCpy $R0 ".tr1"
789         Call Associate
790         StrCpy $R0 ".trace"
791         Call Associate
792         StrCpy $R0 ".trc"
793         Call Associate
794         StrCpy $R0 ".wpc"
795         Call Associate
796         StrCpy $R0 ".wpz"
797         Call Associate
798         StrCpy $R0 ".rf5"
799         Call Associate
800 ; if somethings added here, add it also to the uninstall section and the AdditionalTask page
801 pop $R0
802 !insertmacro UpdateIcons
803 SecRequired_skip_FileExtensions:
804
805 ; if running as a silent installer, don't try to install winpcap
806 IfSilent SecRequired_skip_Winpcap
807
808 ; Install WinPcap (depending on winpcap page setting)
809 ReadINIStr $0 "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "State"
810 StrCmp $0 "0" SecRequired_skip_Winpcap
811 ; Uinstall old WinPcap first
812 ReadRegStr $WINPCAP_UNINSTALL HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "UninstallString"
813 IfErrors lbl_winpcap_notinstalled ;if RegKey is unavailable, WinPcap is not installed
814 ; from released version 3.1, WinPcap will uninstall an old version by itself
815 ;ExecWait '$WINPCAP_UNINSTALL' $0
816 ;DetailPrint "WinPcap uninstaller returned $0"
817 lbl_winpcap_notinstalled:
818 SetOutPath $INSTDIR
819 File "WinPcap_4_1_2.exe"
820 ExecWait '"$INSTDIR\WinPcap_4_1_2.exe"' $0
821 DetailPrint "WinPcap installer returned $0"
822 SecRequired_skip_Winpcap:
823
824 ; If no user profile exists for Wireshark but for Ethereal, copy it over
825 SetShellVarContext current
826 IfFileExists $APPDATA\Wireshark profile_done
827 IfFileExists $APPDATA\Ethereal 0 profile_done
828 ;MessageBox MB_YESNO "This seems to be the first time you use Wireshark. Copy over the personal settings from Ethereal?" /SD IDYES IDNO profile_done
829 CreateDirectory $APPDATA\Wireshark
830 CopyFiles $APPDATA\Ethereal\*.* $APPDATA\Wireshark
831 profile_done:
832 SetShellVarContext all
833
834 SectionEnd ; "Required"
835
836 !ifdef GTK_DIR
837 Section "Wireshark" SecWireshark
838 ;-------------------------------------------
839 SetOutPath $INSTDIR
840 File "..\..\wireshark.exe"
841 File "${GTK_DIR}\bin\libgdk-win32-2.0-0.dll"
842 File "${GTK_DIR}\bin\libgdk_pixbuf-2.0-0.dll"
843 File "${GTK_DIR}\bin\libgtk-win32-2.0-0.dll"
844 File "${GTK_DIR}\bin\libatk-1.0-0.dll"
845 File "${GTK_DIR}\bin\libpango-1.0-0.dll"
846 File "${GTK_DIR}\bin\libpangowin32-1.0-0.dll"
847 !ifdef NEED_CAIRO_DLL
848 File "${GTK_DIR}\bin\libcairo-2.dll"
849 File "${GTK_DIR}\bin\libpangocairo-1.0-0.dll"
850 !endif
851 !ifdef NEED_LIBPNG_DLL
852 File "${GTK_DIR}\bin\${PNG_DLL}"
853 !endif
854 !ifdef NEED_LIBTIFF_DLL
855 File "${GTK_DIR}\bin\${TIFF_DLL}"
856 !endif
857 !ifdef NEED_LIBJPEG_DLL
858 File "${GTK_DIR}\bin\${JPEG_DLL}"
859 !endif
860 !ifdef NEED_FREETYPE_DLL
861 File "${GTK_DIR}\bin\libpangoft2-1.0-0.dll"
862 File "${GTK_DIR}\bin\${FREETYPE_DLL}"
863 !endif
864 !ifdef NEED_FONTCONFIG_DLL
865 File "${GTK_DIR}\bin\${FONTCONFIG_DLL}"
866 !endif
867 !ifdef NEED_EXPAT_DLL
868 File "${GTK_DIR}\bin\${EXPAT_DLL}"
869 !endif
870 SetOutPath $INSTDIR\etc\gtk-2.0
871 File "${GTK_DIR}\etc\gtk-2.0\*.*"
872
873 !if ${WIRESHARK_TARGET_PLATFORM} == "win32"
874 SetOutPath $INSTDIR\etc\pango
875 File "${GTK_DIR}\etc\pango\pango.*"
876 ; Not needed for GTK+ >= 2.18
877 ;SetOutPath $INSTDIR\lib\gtk-2.0\${GTK_LIB_DIR}\loaders
878 ;File "${GTK_DIR}\lib\gtk-2.0\${GTK_LIB_DIR}\loaders\libpixbufloader-*.dll"
879 !endif
880
881 SetOutPath $INSTDIR\lib\gtk-2.0\${GTK_LIB_DIR}\engines
882 File "${GTK_DIR}\lib\gtk-2.0\${GTK_LIB_DIR}\engines\libpixmap.dll"
883 SetOutPath $INSTDIR\lib\gtk-2.0\modules
884 File "${GTK_DIR}\lib\gtk-2.0\modules\libgail.dll"
885
886 ; GTK MS-Windows Engine (GTK-Wimp)
887 SetOutPath $INSTDIR\${GTK_WIMP_DLLDST_DIR}
888 File "${GTK_WIMP_DLLSRC_DIR}\libwimp.dll"
889 SetOutPath $INSTDIR\${GTK_WIMP_RCDST_DIR}
890 File "${GTK_WIMP_RCSRC_DIR}\gtkrc"
891
892 SectionEnd ; "Wireshark"
893 !endif
894
895
896 Section "TShark" SecTShark
897 ;-------------------------------------------
898 SetOutPath $INSTDIR
899 File "..\..\tshark.exe"
900 File "..\..\doc\tshark.html"
901 SectionEnd
902
903 SectionGroup "Plugins / Extensions" SecPluginsGroup
904
905 Section "Dissector Plugins" SecPlugins
906 ;-------------------------------------------
907 SetOutPath '$INSTDIR\plugins\${VERSION}'
908 File "..\..\plugins\asn1\asn1.dll"
909 File "..\..\plugins\docsis\docsis.dll"
910 File "..\..\plugins\ethercat\ethercat.dll"
911 File "..\..\plugins\giop\coseventcomm.dll"
912 File "..\..\plugins\giop\cosnaming.dll"
913 File "..\..\plugins\giop\parlay.dll"
914 File "..\..\plugins\giop\tango.dll"
915 File "..\..\plugins\gryphon\gryphon.dll"
916 File "..\..\plugins\irda\irda.dll"
917 File "..\..\plugins\m2m\m2m.dll"
918 File "..\..\plugins\opcua\opcua.dll"
919 File "..\..\plugins\profinet\profinet.dll"
920 File "..\..\plugins\unistim\unistim.dll"
921 File "..\..\plugins\wimax\wimax.dll"
922 File "..\..\plugins\wimaxasncp\wimaxasncp.dll"
923 !include "custom_plugins.txt"
924 SectionEnd
925
926 Section "Tree Statistics Plugin" SecStatsTree
927 ;-------------------------------------------
928 SetOutPath '$INSTDIR\plugins\${VERSION}'
929 File "..\..\plugins\stats_tree\stats_tree.dll"
930 SectionEnd
931
932 Section "Mate - Meta Analysis and Tracing Engine" SecMate
933 ;-------------------------------------------
934 SetOutPath '$INSTDIR\plugins\${VERSION}'
935 File "..\..\plugins\mate\mate.dll"
936 SectionEnd
937
938
939 !ifdef NET_SNMP_DIR
940 Section "SNMP MIBs" SecMIBs
941 ;-------------------------------------------
942 SetOutPath $INSTDIR\snmp\mibs
943 File "${NET_SNMP_DIR}\mibs\*.txt"
944 SectionEnd
945 !endif
946
947 !ifdef SMI_DIR
948 Section "SNMP MIBs" SecMIBs
949 ;-------------------------------------------
950 SetOutPath $INSTDIR\snmp\mibs
951 File "${SMI_DIR}\mibs\*"
952 SectionEnd
953 !endif
954
955 SectionGroupEnd ; "Plugins / Extensions"
956
957
958 SectionGroup "Tools" SecToolsGroup
959
960 Section "Editcap" SecEditcap
961 ;-------------------------------------------
962 SetOutPath $INSTDIR
963 File "..\..\editcap.exe"
964 File "..\..\doc\editcap.html"
965 SectionEnd
966
967 Section "Text2Pcap" SecText2Pcap
968 ;-------------------------------------------
969 SetOutPath $INSTDIR
970 File "..\..\text2pcap.exe"
971 File "..\..\doc\text2pcap.html"
972 SectionEnd
973
974 Section "Mergecap" SecMergecap
975 ;-------------------------------------------
976 SetOutPath $INSTDIR
977 File "..\..\mergecap.exe"
978 File "..\..\doc\mergecap.html"
979 SectionEnd
980
981 Section "Capinfos" SecCapinfos
982 ;-------------------------------------------
983 SetOutPath $INSTDIR
984 File "..\..\capinfos.exe"
985 File "..\..\doc\capinfos.html"
986 SectionEnd
987
988 Section "Rawshark" SecRawshark
989 ;-------------------------------------------
990 SetOutPath $INSTDIR
991 File "..\..\rawshark.exe"
992 File "..\..\doc\rawshark.html"
993 SectionEnd
994
995 SectionGroupEnd ; "Tools"
996
997 !ifdef HHC_DIR
998 Section "User's Guide" SecUsersGuide
999 ;-------------------------------------------
1000 SetOutPath $INSTDIR
1001 File "user-guide.chm"
1002 SectionEnd
1003 !endif
1004
1005 Section "Uninstall" un.SecUinstall
1006 ;-------------------------------------------
1007
1008 ;
1009 ; UnInstall for every user
1010 ;
1011 SectionIn 1 2
1012 SetShellVarContext all
1013
1014 Delete "$INSTDIR\rawshark.exe"
1015 IfErrors 0 NoRawsharkErrorMsg
1016         MessageBox MB_OK "Please note: rawshark.exe could not be removed, it's probably in use!" IDOK 0 ;skipped if rawshark.exe removed
1017         Abort "Please note: rawshark.exe could not be removed, it's probably in use! Abort uninstall process!"
1018 NoRawsharkErrorMsg:
1019
1020 Delete "$INSTDIR\tshark.exe"
1021 IfErrors 0 NoTSharkErrorMsg
1022         MessageBox MB_OK "Please note: tshark.exe could not be removed, it's probably in use!" IDOK 0 ;skipped if tshark.exe removed
1023         Abort "Please note: tshark.exe could not be removed, it's probably in use! Abort uninstall process!"
1024 NoTSharkErrorMsg:
1025
1026 Delete "$INSTDIR\wireshark.exe"
1027 IfErrors 0 NoWiresharkErrorMsg
1028         MessageBox MB_OK "Please note: wireshark.exe could not be removed, it's probably in use!" IDOK 0 ;skipped if wireshark.exe removed
1029         Abort "Please note: wireshark.exe could not be removed, it's probably in use! Abort uninstall process!"
1030 NoWiresharkErrorMsg:
1031
1032 DeleteRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark"
1033 DeleteRegKey HKEY_LOCAL_MACHINE "Software\Wireshark"
1034 DeleteRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\wireshark.exe"
1035
1036 push $R0
1037         StrCpy $R0 ".5vw"
1038         Call un.unlink
1039         StrCpy $R0 ".acp"
1040         Call un.unlink
1041         StrCpy $R0 ".apc"
1042         Call un.unlink
1043         StrCpy $R0 ".atc"
1044         Call un.unlink
1045         StrCpy $R0 ".bfr"
1046         Call un.unlink
1047         StrCpy $R0 ".cap"
1048         Call un.unlink
1049         StrCpy $R0 ".enc"
1050         Call un.unlink
1051         StrCpy $R0 ".erf"
1052         Call un.unlink
1053         StrCpy $R0 ".fdc"
1054         Call un.unlink
1055         StrCpy $R0 ".pcap"
1056         Call un.unlink
1057         StrCpy $R0 ".pkt"
1058         Call un.unlink
1059         StrCpy $R0 ".snoop"
1060         Call un.unlink
1061         StrCpy $R0 ".syc"
1062         Call un.unlink
1063         StrCpy $R0 ".tpc"
1064         Call un.unlink
1065         StrCpy $R0 ".tr1"
1066         Call un.unlink
1067         StrCpy $R0 ".trace"
1068         Call un.unlink
1069         StrCpy $R0 ".trc"
1070         Call un.unlink
1071         StrCpy $R0 ".wpc"
1072         Call un.unlink
1073         StrCpy $R0 ".wpz"
1074         Call un.unlink
1075         StrCpy $R0 ".rf5"
1076         Call un.unlink
1077 pop $R0
1078
1079 DeleteRegKey HKCR ${WIRESHARK_ASSOC}
1080 DeleteRegKey HKCR "${WIRESHARK_ASSOC}\Shell\open\command"
1081 DeleteRegKey HKCR "${WIRESHARK_ASSOC}\DefaultIcon"
1082 !insertmacro UpdateIcons
1083
1084 Delete "$INSTDIR\etc\gtk-2.0\*.*"
1085 Delete "$INSTDIR\etc\pango\*.*"
1086 Delete "$INSTDIR\lib\gtk-2.0\2.2.0\engines\*.*"
1087 Delete "$INSTDIR\lib\gtk-2.0\2.2.0\loaders\*.*"
1088 Delete "$INSTDIR\lib\gtk-2.0\2.2.0\immodules\*.*"
1089 Delete "$INSTDIR\lib\gtk-2.0\2.4.0\engines\*.*"
1090 Delete "$INSTDIR\lib\gtk-2.0\2.4.0\loaders\*.*"
1091 Delete "$INSTDIR\lib\gtk-2.0\2.4.0\immodules\*.*"
1092 Delete "$INSTDIR\lib\gtk-2.0\2.10.0\engines\*.*"
1093 Delete "$INSTDIR\lib\gtk-2.0\2.10.0\loaders\*.*"
1094 Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\*.*"
1095 Delete "$INSTDIR\lib\gtk-2.0\modules\*.*"
1096 Delete "$INSTDIR\lib\pango\1.2.0\modules\*.*"
1097 Delete "$INSTDIR\lib\pango\1.4.0\modules\*.*"
1098 Delete "$INSTDIR\lib\pango\1.5.0\modules\*.*"
1099 Delete "$INSTDIR\share\themes\Default\gtk-2.0\*.*"
1100 Delete "$INSTDIR\help\*.*"
1101 Delete "$INSTDIR\diameter\*.*"
1102 Delete "$INSTDIR\snmp\mibs\*.*"
1103 Delete "$INSTDIR\snmp\*.*"
1104 Delete "$INSTDIR\tpncp\*.*"
1105 Delete "$INSTDIR\wimaxasncp\*.*"
1106 Delete "$INSTDIR\*.exe"
1107 Delete "$INSTDIR\*.dll"
1108 Delete "$INSTDIR\*.html"
1109 Delete "$INSTDIR\ws.css"
1110 Delete "$INSTDIR\COPYING*"
1111 Delete "$INSTDIR\AUTHORS-SHORT"
1112 ; previous versions installed these files
1113 Delete "$INSTDIR\*.manifest"
1114 ; previous versions installed this file
1115 Delete "$INSTDIR\AUTHORS-SHORT-FORMAT"
1116 Delete "$INSTDIR\README*"
1117 Delete "$INSTDIR\NEWS.txt"
1118 Delete "$INSTDIR\manuf"
1119 Delete "$INSTDIR\services"
1120 Delete "$INSTDIR\pdml2html.xsl"
1121 Delete "$INSTDIR\pcrepattern.3.txt"
1122 Delete "$INSTDIR\user-guide.chm"
1123 Delete "$INSTDIR\example_snmp_users_file"
1124 Delete "$INSTDIR\ipmap.html"
1125 Delete "$INSTDIR\radius\*.*"
1126 Delete "$INSTDIR\dtds\*.*"
1127 Delete "$SMPROGRAMS\Wireshark\*.*"
1128 Delete "$SMPROGRAMS\Wireshark.lnk"
1129 Delete "$DESKTOP\Wireshark.lnk"
1130 Delete "$QUICKLAUNCH\Wireshark.lnk"
1131
1132 RMDir "$INSTDIR\etc\gtk-2.0"
1133 RMDir "$INSTDIR\etc\pango"
1134 RMDir "$INSTDIR\etc"
1135 RMDir "$INSTDIR\lib\gtk-2.0\2.2.0\engines"
1136 RMDir "$INSTDIR\lib\gtk-2.0\2.2.0\loaders"
1137 RMDir "$INSTDIR\lib\gtk-2.0\2.2.0\immodules"
1138 RMDir "$INSTDIR\lib\gtk-2.0\2.2.0"
1139 RMDir "$INSTDIR\lib\gtk-2.0\2.4.0\engines"
1140 RMDir "$INSTDIR\lib\gtk-2.0\2.4.0\loaders"
1141 RMDir "$INSTDIR\lib\gtk-2.0\2.4.0\immodules"
1142 RMDir "$INSTDIR\lib\gtk-2.0\2.4.0"
1143 RMDir "$INSTDIR\lib\gtk-2.0\2.10.0\engines"
1144 RMDir "$INSTDIR\lib\gtk-2.0\2.10.0\loaders"
1145 RMDir "$INSTDIR\lib\gtk-2.0\2.10.0\immodules"
1146 RMDir "$INSTDIR\lib\gtk-2.0\2.10.0"
1147 RMDir "$INSTDIR\lib\gtk-2.0\modules"
1148 RMDir "$INSTDIR\lib\gtk-2.0"
1149 RMDir "$INSTDIR\lib\pango\1.2.0\modules"
1150 RMDir "$INSTDIR\lib\pango\1.2.0"
1151 RMDir "$INSTDIR\lib\pango\1.4.0\modules"
1152 RMDir "$INSTDIR\lib\pango\1.4.0"
1153 RMDir "$INSTDIR\lib\pango\1.5.0\modules"
1154 RMDir "$INSTDIR\lib\pango\1.5.0"
1155 RMDir "$INSTDIR\lib\pango"
1156 RMDir "$INSTDIR\lib"
1157 RMDir "$INSTDIR\share\themes\Default\gtk-2.0"
1158 RMDir "$INSTDIR\share\themes\Default"
1159 RMDir "$INSTDIR\share\themes"
1160 RMDir "$INSTDIR\share"
1161 RMDir "$SMPROGRAMS\Wireshark"
1162 RMDir "$INSTDIR\help"
1163 RMDir "$INSTDIR\diameter"
1164 RMDir "$INSTDIR\snmp\mibs"
1165 RMDir "$INSTDIR\snmp"
1166 RMDir "$INSTDIR\radius"
1167 RMDir "$INSTDIR\dtds"
1168 RMDir "$INSTDIR\tpncp"
1169 RMDir "$INSTDIR\wimaxasncp"
1170 RMDir "$INSTDIR"
1171
1172 SectionEnd ; "Uinstall"
1173
1174 Section "Un.Plugins" un.SecPlugins
1175 ;-------------------------------------------
1176 SectionIn 1 2
1177 ;Delete "$INSTDIR\plugins\${VERSION}\*.*"
1178 ;Delete "$INSTDIR\plugins\*.*"
1179 ;RMDir "$INSTDIR\plugins\${VERSION}"
1180 ;RMDir "$INSTDIR\plugins"
1181 RMDir /r "$INSTDIR\plugins"
1182 SectionEnd
1183
1184 Section "Un.Global Settings" un.SecGlobalSettings
1185 ;-------------------------------------------
1186 SectionIn 1 2
1187 Delete "$INSTDIR\cfilters"
1188 Delete "$INSTDIR\colorfilters"
1189 Delete "$INSTDIR\dfilters"
1190 Delete "$INSTDIR\init.lua"
1191 Delete "$INSTDIR\console.lua"
1192 Delete "$INSTDIR\dtd_gen.lua"
1193 Delete "$INSTDIR\smi_modules"
1194 RMDir "$INSTDIR"
1195 SectionEnd
1196
1197 Section /o "Un.Personal Settings" un.SecPersonalSettings
1198 ;-------------------------------------------
1199 SectionIn 2
1200 SetShellVarContext current
1201 Delete "$APPDATA\Wireshark\*.*"
1202 RMDir "$APPDATA\Wireshark"
1203 SectionEnd
1204
1205 ;VAR un.WINPCAP_UNINSTALL
1206
1207 Section /o "Un.WinPcap" un.SecWinPcap
1208 ;-------------------------------------------
1209 SectionIn 2
1210 ReadRegStr $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "UninstallString"
1211 ;IfErrors un.lbl_winpcap_notinstalled ;if RegKey is unavailable, WinPcap is not installed
1212 ;MessageBox MB_OK "WinPcap $1"
1213 ExecWait '$1' $0
1214 DetailPrint "WinPcap uninstaller returned $0"
1215 ;SetRebootFlag true
1216 ;un.lbl_winpcap_notinstalled:
1217 SectionEnd
1218
1219 Section "-Un.Finally"
1220 ;-------------------------------------------
1221 SectionIn 1 2
1222 ; this test must be done after all other things uninstalled (e.g. Global Settings)
1223 IfFileExists "$INSTDIR" 0 NoFinalErrorMsg
1224     MessageBox MB_OK "Please note: The directory $INSTDIR could not be removed!" IDOK 0 ; skipped if dir doesn't exist
1225 NoFinalErrorMsg:
1226 SectionEnd
1227
1228
1229 ; ============================================================================
1230 ; PLEASE MAKE SURE, THAT THE DESCRIPTIVE TEXT FITS INTO THE DESCRIPTION FIELD!
1231 ; ============================================================================
1232 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
1233 !ifdef GTK_DIR
1234   !insertmacro MUI_DESCRIPTION_TEXT ${SecWireshark} "${PROGRAM_NAME} is a GUI network protocol analyzer."
1235 !endif
1236   !insertmacro MUI_DESCRIPTION_TEXT ${SecTShark} "TShark is a text based network protocol analyzer."
1237   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsGroup} "Some plugins and extensions for both Wireshark and TShark."
1238   !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} "Plugins with some extended dissections."
1239   !insertmacro MUI_DESCRIPTION_TEXT ${SecStatsTree} "Plugin for some extended statistics."
1240   !insertmacro MUI_DESCRIPTION_TEXT ${SecMate} "Plugin - Meta Analysis and Tracing Engine (Experimental)."
1241 !ifdef NET_SNMP_DIR
1242   !insertmacro MUI_DESCRIPTION_TEXT ${SecMIBs} "SNMP MIBs for better SNMP dissection."
1243 !endif
1244 !ifdef SMI_DIR
1245   !insertmacro MUI_DESCRIPTION_TEXT ${SecMIBs} "SNMP MIBs for better SNMP dissection."
1246 !endif
1247   !insertmacro MUI_DESCRIPTION_TEXT ${SecToolsGroup} "Additional command line based tools."
1248   !insertmacro MUI_DESCRIPTION_TEXT ${SecEditCap} "Editcap is a program that reads a capture file and writes some or all of the packets into another capture file."
1249   !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."
1250   !insertmacro MUI_DESCRIPTION_TEXT ${SecMergecap} "Mergecap is a program that combines multiple saved capture files into a single output file"
1251   !insertmacro MUI_DESCRIPTION_TEXT ${SecCapinfos} "Capinfos is a program that provides information on capture files."
1252   !insertmacro MUI_DESCRIPTION_TEXT ${SecRawshark} "Rawshark is a raw packet filter."
1253 !ifdef HHC_DIR
1254   !insertmacro MUI_DESCRIPTION_TEXT ${SecUsersGuide} "Install the user's guide, so an internet connection is not required to read the help pages."
1255 !endif
1256 !insertmacro MUI_FUNCTION_DESCRIPTION_END
1257
1258 !insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
1259   !insertmacro MUI_DESCRIPTION_TEXT ${un.SecUinstall} "Uninstall all Wireshark components."
1260   !insertmacro MUI_DESCRIPTION_TEXT ${un.SecPlugins} "Uninstall all Plugins (even from previous Wireshark versions)."
1261   !insertmacro MUI_DESCRIPTION_TEXT ${un.SecGlobalSettings} "Uninstall global settings like: $INSTDIR\cfilters"
1262   !insertmacro MUI_DESCRIPTION_TEXT ${un.SecPersonalSettings} "Uninstall personal settings like your preferences file from your profile: $PROFILE."
1263   !insertmacro MUI_DESCRIPTION_TEXT ${un.SecWinPcap} "Call WinPcap's uninstall program."
1264 !insertmacro MUI_UNFUNCTION_DESCRIPTION_END
1265
1266 ; ============================================================================
1267 ; Callback functions
1268 ; ============================================================================
1269 !ifdef GTK_DIR
1270 ; Disable File extensions if Wireshark isn't selected
1271 Function .onSelChange
1272         Push $0
1273         SectionGetFlags ${SecWireshark} $0
1274         IntOp  $0 $0 & 1
1275         IntCmp $0 0 onSelChange.unselect
1276         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "State" 1
1277         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "Flags" ""
1278         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 7" "Flags" ""
1279         Goto onSelChange.end
1280
1281 onSelChange.unselect:
1282         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "State" 0
1283         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "Flags" "DISABLED"
1284         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 7" "Flags" "DISABLED"
1285         Goto onSelChange.end
1286
1287 onSelChange.end:
1288         Pop $0
1289 FunctionEnd
1290 !endif
1291
1292
1293 !include "GetWindowsVersion.nsh"
1294 !include WinMessages.nsh
1295 !include "VersionCompare.nsh"
1296
1297 Var WINPCAP_NAME ; DisplayName from WinPcap installation
1298 Var WINPCAP_VERSION ; DisplayVersion from WinPcap installation
1299
1300 Function myShowCallback
1301
1302         ; Get the Windows version
1303         Call GetWindowsVersion
1304         Pop $R0 ; Windows Version
1305
1306         ; Check if we're able to run with this version
1307         StrCmp $R0 '95' lbl_winversion_unsupported
1308         StrCmp $R0 '98' lbl_winversion_unsupported
1309         StrCmp $R0 'ME' lbl_winversion_unsupported
1310         StrCmp $R0 'NT 4.0' lbl_winversion_unsupported_nt4
1311         StrCmp $R0 '2000' lbl_winversion_unsupported_2000
1312         Goto lbl_winversion_supported
1313 lbl_winversion_unsupported:
1314         MessageBox MB_OK \
1315             "Windows $R0 is no longer supported. The last known version working with 98/ME was Ethereal 0.99.0." \
1316             /SD IDOK
1317         Quit
1318
1319 lbl_winversion_unsupported_nt4:
1320         MessageBox MB_OK \
1321             "Windows $R0 is no longer supported. The last known version working with NT 4.0 was Wireshark 0.99.4." \
1322             /SD IDOK
1323         Quit
1324
1325 lbl_winversion_unsupported_2000:
1326         MessageBox MB_OK \
1327             "Windows $R0 is no longer supported. Please install Wireshark 1.2 or 1.0." \
1328             /SD IDOK
1329         Quit
1330
1331 lbl_winversion_supported:
1332         ; detect if WinPcap should be installed
1333         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "Text" "Install WinPcap 4.1.2"
1334         ReadRegStr $WINPCAP_NAME HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "DisplayName"
1335         IfErrors 0 lbl_winpcap_installed ;if RegKey is available, WinPcap is already installed
1336         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 2" "Text" "WinPcap is currently not installed"
1337         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 2" "Flags" "DISABLED"
1338         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Text" "(Use Add/Remove Programs first to uninstall any undetected old WinPcap versions)"
1339         Goto lbl_winpcap_done
1340
1341 lbl_winpcap_installed:
1342         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 2" "Text" "$WINPCAP_NAME"
1343         ; Compare the installed build against the one we have.
1344         ReadRegStr $WINPCAP_VERSION HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "DisplayVersion"
1345         StrCmp $WINPCAP_VERSION "" lbl_winpcap_do_install ; WinPcap is really old(?) or installed improperly.
1346         ${VersionCompare} $WINPCAP_VERSION "4.1.0.2001" $1 ; WinPcap 4.1.2
1347         StrCmp $1 "2" lbl_winpcap_do_install
1348
1349 ;lbl_winpcap_dont_install:
1350         ; The installed version is >= to what we have, so don't install
1351         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "State" "0"
1352         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Text" "If selected, the currently installed $WINPCAP_NAME will be uninstalled first."
1353         Goto lbl_winpcap_done
1354
1355 ;lbl_winpcap_dont_upgrade:
1356         ; force the user to upgrade by hand
1357         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "State" "0"
1358         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "Flags" "DISABLED"
1359         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Text" "If you wish to install WinPcap 4.1.2, please uninstall $WINPCAP_NAME manually first."
1360         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Flags" "DISABLED"
1361         Goto lbl_winpcap_done
1362
1363 lbl_winpcap_do_install:
1364         ; seems to be an old version, install newer one
1365         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "State" "1"
1366         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Text" "The currently installed $WINPCAP_NAME will be uninstalled first."
1367
1368 lbl_winpcap_done:
1369
1370         ; if Wireshark was previously installed, unselect previously not installed icons etc.
1371         ; detect if Wireshark is already installed ->
1372         ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "UninstallString"
1373         IfErrors lbl_wireshark_notinstalled ;if RegKey is unavailable, Wireshark is not installed
1374
1375         ; only select Start Menu Group, if previously installed
1376         ; (we use the "all users" start menu, so select it first)
1377         SetShellVarContext all
1378         IfFileExists "$SMPROGRAMS\Wireshark\Wireshark.lnk" lbl_have_startmenu
1379         IfFileExists "$SMPROGRAMS\Wireshark.lnk" lbl_have_startmenu
1380         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 2" "State" "0"
1381 lbl_have_startmenu:
1382
1383         ; only select Desktop Icon, if previously installed
1384         IfFileExists "$DESKTOP\Wireshark.lnk" lbl_have_desktopicon
1385         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 3" "State" "0"
1386 lbl_have_desktopicon:
1387
1388         ; only select Quick Launch Icon, if previously installed
1389         IfFileExists "$QUICKLAUNCH\Wireshark.lnk" lbl_have_quicklaunchicon
1390         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 4" "State" "0"
1391 lbl_have_quicklaunchicon:
1392
1393 lbl_wireshark_notinstalled:
1394
1395
1396 FunctionEnd