From Madhusudhan M:
[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\Cisco.xml"
486 File "..\..\diameter\chargecontrol.xml"
487 File "..\..\diameter\dictionary.dtd"
488 File "..\..\diameter\dictionary.xml"
489 File "..\..\diameter\eap.xml"
490 File "..\..\diameter\Ericsson.xml"
491 File "..\..\diameter\etsie2e4.xml"
492 File "..\..\diameter\gqpolicy.xml"
493 File "..\..\diameter\imscxdx.xml"
494 File "..\..\diameter\mobileipv4.xml"
495 File "..\..\diameter\mobileipv6.xml"
496 File "..\..\diameter\nasreq.xml"
497 File "..\..\diameter\sip.xml"
498 File "..\..\diameter\sunping.xml"
499 File "..\..\diameter\TGPPGmb.xml"
500 File "..\..\diameter\TGPPRx.xml"
501 File "..\..\diameter\TGPPSh.xml"
502 File "..\..\diameter\Vodafone.xml"
503 SetOutPath $INSTDIR
504
505
506
507 ;
508 ; Install the RADIUS directory files in the "radius" subdirectory
509 ; of the installation directory.
510 ;
511 SetOutPath $INSTDIR\radius
512 File "..\..\radius\README.radius_dictionary"
513 File "..\..\radius\dictionary"
514 File "..\..\radius\dictionary.3com"
515 File "..\..\radius\dictionary.3gpp"
516 File "..\..\radius\dictionary.3gpp2"
517 File "..\..\radius\dictionary.acc"
518 File "..\..\radius\dictionary.acme"
519 File "..\..\radius\dictionary.airespace"
520 File "..\..\radius\dictionary.alcatel"
521 File "..\..\radius\dictionary.alcatel.esam"
522 File "..\..\radius\dictionary.alcatel.sr"
523 File "..\..\radius\dictionary.alteon"
524 File "..\..\radius\dictionary.altiga"
525 File "..\..\radius\dictionary.alvarion"
526 File "..\..\radius\dictionary.apc"
527 File "..\..\radius\dictionary.aptis"
528 File "..\..\radius\dictionary.aruba"
529 File "..\..\radius\dictionary.ascend"
530 File "..\..\radius\dictionary.asn"
531 File "..\..\radius\dictionary.audiocodes"
532 File "..\..\radius\dictionary.avaya"
533 File "..\..\radius\dictionary.azaire"
534 File "..\..\radius\dictionary.bay"
535 File "..\..\radius\dictionary.bintec"
536 File "..\..\radius\dictionary.bristol"
537 File "..\..\radius\dictionary.cablelabs"
538 File "..\..\radius\dictionary.cabletron"
539 File "..\..\radius\dictionary.chillispot"
540 File "..\..\radius\dictionary.cisco"
541 File "..\..\radius\dictionary.cisco.bbsm"
542 File "..\..\radius\dictionary.cisco.vpn3000"
543 File "..\..\radius\dictionary.cisco.vpn5000"
544 File "..\..\radius\dictionary.clavister"
545 File "..\..\radius\dictionary.colubris"
546 File "..\..\radius\dictionary.columbia_university"
547 File "..\..\radius\dictionary.compat"
548 File "..\..\radius\dictionary.cosine"
549 File "..\..\radius\dictionary.dhcp"
550 File "..\..\radius\dictionary.digium"
551 File "..\..\radius\dictionary.eltex"
552 File "..\..\radius\dictionary.epygi"
553 File "..\..\radius\dictionary.ericsson"
554 File "..\..\radius\dictionary.erx"
555 File "..\..\radius\dictionary.extreme"
556 File "..\..\radius\dictionary.fortinet"
557 File "..\..\radius\dictionary.foundry"
558 File "..\..\radius\dictionary.freeradius"
559 File "..\..\radius\dictionary.freeradius.internal"
560 File "..\..\radius\dictionary.freeswitch"
561 File "..\..\radius\dictionary.gandalf"
562 File "..\..\radius\dictionary.garderos"
563 File "..\..\radius\dictionary.gemtek"
564 File "..\..\radius\dictionary.h3c"
565 File "..\..\radius\dictionary.hp"
566 File "..\..\radius\dictionary.huawei"
567 File "..\..\radius\dictionary.iea"
568 File "..\..\radius\dictionary.infonet"
569 File "..\..\radius\dictionary.ipunplugged"
570 File "..\..\radius\dictionary.issanni"
571 File "..\..\radius\dictionary.itk"
572 File "..\..\radius\dictionary.jradius"
573 File "..\..\radius\dictionary.juniper"
574 File "..\..\radius\dictionary.karlnet"
575 File "..\..\radius\dictionary.lancom"
576 File "..\..\radius\dictionary.livingston"
577 File "..\..\radius\dictionary.localweb"
578 File "..\..\radius\dictionary.lucent"
579 File "..\..\radius\dictionary.manzara"
580 File "..\..\radius\dictionary.merit"
581 File "..\..\radius\dictionary.microsoft"
582 File "..\..\radius\dictionary.mikrotik"
583 File "..\..\radius\dictionary.motorola"
584 File "..\..\radius\dictionary.motorola.wimax"
585 File "..\..\radius\dictionary.navini"
586 File "..\..\radius\dictionary.netscreen"
587 File "..\..\radius\dictionary.networkphysics"
588 File "..\..\radius\dictionary.nexans"
589 File "..\..\radius\dictionary.nokia"
590 File "..\..\radius\dictionary.nokia.conflict"
591 File "..\..\radius\dictionary.nomadix"
592 File "..\..\radius\dictionary.nortel"
593 File "..\..\radius\dictionary.ntua"
594 File "..\..\radius\dictionary.openser"
595 File "..\..\radius\dictionary.packeteer"
596 File "..\..\radius\dictionary.patton"
597 File "..\..\radius\dictionary.propel"
598 File "..\..\radius\dictionary.prosoft"
599 File "..\..\radius\dictionary.quiconnect"
600 File "..\..\radius\dictionary.quintum"
601 File "..\..\radius\dictionary.redback"
602 File "..\..\radius\dictionary.redcreek"
603 File "..\..\radius\dictionary.rfc2865"
604 File "..\..\radius\dictionary.rfc2866"
605 File "..\..\radius\dictionary.rfc2867"
606 File "..\..\radius\dictionary.rfc2868"
607 File "..\..\radius\dictionary.rfc2869"
608 File "..\..\radius\dictionary.rfc3162"
609 File "..\..\radius\dictionary.rfc3576"
610 File "..\..\radius\dictionary.rfc3580"
611 File "..\..\radius\dictionary.rfc4072"
612 File "..\..\radius\dictionary.rfc4372"
613 File "..\..\radius\dictionary.rfc4603"
614 File "..\..\radius\dictionary.rfc4675"
615 File "..\..\radius\dictionary.rfc4679"
616 File "..\..\radius\dictionary.rfc4818"
617 File "..\..\radius\dictionary.rfc4849"
618 File "..\..\radius\dictionary.rfc5090"
619 File "..\..\radius\dictionary.rfc5176"
620 File "..\..\radius\dictionary.rfc5580"
621 File "..\..\radius\dictionary.rfc5607"
622 File "..\..\radius\dictionary.rfc5904"
623 File "..\..\radius\dictionary.riverstone"
624 File "..\..\radius\dictionary.roaringpenguin"
625 File "..\..\radius\dictionary.shasta"
626 File "..\..\radius\dictionary.shiva"
627 File "..\..\radius\dictionary.slipstream"
628 File "..\..\radius\dictionary.sofaware"
629 File "..\..\radius\dictionary.sonicwall"
630 File "..\..\radius\dictionary.springtide"
631 File "..\..\radius\dictionary.starent"
632 File "..\..\radius\dictionary.t_systems_nova"
633 File "..\..\radius\dictionary.telebit"
634 File "..\..\radius\dictionary.telkom"
635 File "..\..\radius\dictionary.trapeze"
636 File "..\..\radius\dictionary.tropos"
637 File "..\..\radius\dictionary.ukerna"
638 File "..\..\radius\dictionary.unix"
639 File "..\..\radius\dictionary.usr"
640 File "..\..\radius\dictionary.utstarcom"
641 File "..\..\radius\dictionary.valemount"
642 File "..\..\radius\dictionary.versanet"
643 File "..\..\radius\dictionary.vqp"
644 File "..\..\radius\dictionary.walabi"
645 File "..\..\radius\dictionary.waverider"
646 File "..\..\radius\dictionary.wichorus"
647 File "..\..\radius\dictionary.wimax"
648 File "..\..\radius\dictionary.wimax.wichorus"
649 File "..\..\radius\dictionary.wispr"
650 File "..\..\radius\dictionary.xedia"
651 File "..\..\radius\dictionary.xylan"
652 File "..\..\radius\dictionary.zyxel"
653 SetOutPath $INSTDIR
654
655 ;
656 ; install the dtds in the dtds subdirectory
657 ;
658 SetOutPath $INSTDIR\dtds
659 File "..\..\dtds\dc.dtd"
660 File "..\..\dtds\itunes.dtd"
661 File "..\..\dtds\mscml.dtd"
662 File "..\..\dtds\pocsettings.dtd"
663 File "..\..\dtds\presence.dtd"
664 File "..\..\dtds\reginfo.dtd"
665 File "..\..\dtds\rlmi.dtd"
666 File "..\..\dtds\rss.dtd"
667 File "..\..\dtds\smil.dtd"
668 File "..\..\dtds\xcap-caps.dtd"
669 File "..\..\dtds\xcap-error.dtd"
670 File "..\..\dtds\watcherinfo.dtd"
671 SetOutPath $INSTDIR
672
673 ; Install the TPNCP DAT file in the "tpncp" subdirectory
674 ; of the installation directory.
675 SetOutPath $INSTDIR\tpncp
676 File "..\..\tpncp\tpncp.dat"
677
678 ;
679 ; install the wimaxasncp TLV definitions in the wimaxasncp subdirectory
680 ;
681 SetOutPath $INSTDIR\wimaxasncp
682 File "..\..\wimaxasncp\dictionary.xml"
683 File "..\..\wimaxasncp\dictionary.dtd"
684 SetOutPath $INSTDIR
685
686 SetOutPath $INSTDIR\help
687 File "..\..\wireshark-gtk2\help\toc"
688 File "..\..\wireshark-gtk2\help\overview.txt"
689 File "..\..\wireshark-gtk2\help\getting_started.txt"
690 File "..\..\wireshark-gtk2\help\capturing.txt"
691 File "..\..\wireshark-gtk2\help\capture_filters.txt"
692 File "..\..\wireshark-gtk2\help\display_filters.txt"
693 File "..\..\wireshark-gtk2\help\faq.txt"
694
695 ; Write the uninstall keys for Windows
696 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "DisplayVersion" "${VERSION}"
697 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "DisplayName" "Wireshark ${VERSION}"
698 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "UninstallString" '"$INSTDIR\uninstall.exe"'
699 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "Publisher" "The Wireshark developer community, http://www.wireshark.org"
700 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "HelpLink" "mailto:wireshark-users@wireshark.org"
701 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "URLInfoAbout" "http://www.wireshark.org"
702 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "URLUpdateInfo" "http://www.wireshark.org/download/win32/"
703 WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "NoModify" 1
704 WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "NoRepair" 1
705 WriteUninstaller "uninstall.exe"
706
707 ; Write an entry for ShellExecute
708 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\wireshark.exe" "" '$INSTDIR\wireshark.exe'
709 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\wireshark.exe" "Path" '$INSTDIR'
710
711 ; Create start menu entries (depending on additional tasks page)
712 ReadINIStr $0 "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 2" "State"
713 StrCmp $0 "0" SecRequired_skip_StartMenu
714 SetOutPath $PROFILE
715 ;CreateDirectory "$SMPROGRAMS\Wireshark"
716 ; To qoute "http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwue/html/ch11d.asp":
717 ; "Do not include Readme, Help, or Uninstall entries on the Programs menu."
718 Delete "$SMPROGRAMS\Wireshark\Wireshark Web Site.lnk"
719 ;WriteINIStr "$SMPROGRAMS\Wireshark\Wireshark Web Site.url" "InternetShortcut" "URL" "http://www.wireshark.org/"
720 CreateShortCut "$SMPROGRAMS\Wireshark.lnk" "$INSTDIR\wireshark.exe" "" "$INSTDIR\wireshark.exe" 0 "" "" "The Wireshark Network Protocol Analyzer"
721 ;CreateShortCut "$SMPROGRAMS\Wireshark\Wireshark Manual.lnk" "$INSTDIR\wireshark.html"
722 ;CreateShortCut "$SMPROGRAMS\Wireshark\Display Filters Manual.lnk" "$INSTDIR\wireshark-filter.html"
723 ;CreateShortCut "$SMPROGRAMS\Wireshark\Wireshark Program Directory.lnk" "$INSTDIR"
724 ;CreateShortCut "$SMPROGRAMS\Wireshark\Uninstall Wireshark.lnk" "$INSTDIR\uninstall.exe"
725 SecRequired_skip_StartMenu:
726
727 ; is command line option "/desktopicon" set?
728 ${GetParameters} $R0
729 ${GetOptions} $R0 "/desktopicon=" $R1
730 StrCmp $R1 "no" SecRequired_skip_DesktopIcon
731 StrCmp $R1 "yes" SecRequired_install_DesktopIcon
732
733 ; Create desktop icon (depending on additional tasks page and command line option)
734 ReadINIStr $0 "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 3" "State"
735 StrCmp $0 "0" SecRequired_skip_DesktopIcon
736 SecRequired_install_DesktopIcon:
737 CreateShortCut "$DESKTOP\Wireshark.lnk" "$INSTDIR\wireshark.exe" "" "$INSTDIR\wireshark.exe" 0 "" "" "The Wireshark Network Protocol Analyzer"
738 SecRequired_skip_DesktopIcon:
739
740 ; is command line option "/quicklaunchicon" set?
741 ${GetParameters} $R0
742 ${GetOptions} $R0 "/quicklaunchicon=" $R1
743 StrCmp $R1 "no" SecRequired_skip_QuickLaunchIcon
744 StrCmp $R1 "yes" SecRequired_install_QuickLaunchIcon
745
746 ; Create quick launch icon (depending on additional tasks page and command line option)
747 ReadINIStr $0 "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 4" "State"
748 StrCmp $0 "0" SecRequired_skip_QuickLaunchIcon
749 SecRequired_install_QuickLaunchIcon:
750 CreateShortCut "$QUICKLAUNCH\Wireshark.lnk" "$INSTDIR\wireshark.exe" "" "$INSTDIR\wireshark.exe" 0 "" "" "The Wireshark Network Protocol Analyzer"
751 SecRequired_skip_QuickLaunchIcon:
752
753 ; Create File Extensions (depending on additional tasks page)
754 ReadINIStr $0 "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "State"
755 StrCmp $0 "0" SecRequired_skip_FileExtensions
756 WriteRegStr HKCR ${WIRESHARK_ASSOC} "" "Wireshark capture file"
757 WriteRegStr HKCR "${WIRESHARK_ASSOC}\Shell\open\command" "" '"$INSTDIR\wireshark.exe" "%1"'
758 WriteRegStr HKCR "${WIRESHARK_ASSOC}\DefaultIcon" "" '"$INSTDIR\wireshark.exe",1'
759 push $R0
760         StrCpy $R0 ".5vw"
761         Call Associate
762         StrCpy $R0 ".acp"
763         Call Associate
764         StrCpy $R0 ".apc"
765         Call Associate
766         StrCpy $R0 ".atc"
767         Call Associate
768         StrCpy $R0 ".bfr"
769         Call Associate
770         StrCpy $R0 ".cap"
771         Call Associate
772         StrCpy $R0 ".enc"
773         Call Associate
774         StrCpy $R0 ".erf"
775         Call Associate
776         StrCpy $R0 ".fdc"
777         Call Associate
778         StrCpy $R0 ".pcap"
779         Call Associate
780         StrCpy $R0 ".pcapng"
781         Call Associate
782         StrCpy $R0 ".pkt"
783         Call Associate
784         StrCpy $R0 ".snoop"
785         Call Associate
786         StrCpy $R0 ".syc"
787         Call Associate
788         StrCpy $R0 ".tpc"
789         Call Associate
790         StrCpy $R0 ".tr1"
791         Call Associate
792         StrCpy $R0 ".trace"
793         Call Associate
794         StrCpy $R0 ".trc"
795         Call Associate
796         StrCpy $R0 ".wpc"
797         Call Associate
798         StrCpy $R0 ".wpz"
799         Call Associate
800         StrCpy $R0 ".rf5"
801         Call Associate
802 ; if somethings added here, add it also to the uninstall section and the AdditionalTask page
803 pop $R0
804 !insertmacro UpdateIcons
805 SecRequired_skip_FileExtensions:
806
807 ; if running as a silent installer, don't try to install winpcap
808 IfSilent SecRequired_skip_Winpcap
809
810 ; Install WinPcap (depending on winpcap page setting)
811 ReadINIStr $0 "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "State"
812 StrCmp $0 "0" SecRequired_skip_Winpcap
813 ; Uinstall old WinPcap first
814 ReadRegStr $WINPCAP_UNINSTALL HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "UninstallString"
815 IfErrors lbl_winpcap_notinstalled ;if RegKey is unavailable, WinPcap is not installed
816 ; from released version 3.1, WinPcap will uninstall an old version by itself
817 ;ExecWait '$WINPCAP_UNINSTALL' $0
818 ;DetailPrint "WinPcap uninstaller returned $0"
819 lbl_winpcap_notinstalled:
820 SetOutPath $INSTDIR
821 File "WinPcap_4_1_2.exe"
822 ExecWait '"$INSTDIR\WinPcap_4_1_2.exe"' $0
823 DetailPrint "WinPcap installer returned $0"
824 SecRequired_skip_Winpcap:
825
826 ; If no user profile exists for Wireshark but for Ethereal, copy it over
827 SetShellVarContext current
828 IfFileExists $APPDATA\Wireshark profile_done
829 IfFileExists $APPDATA\Ethereal 0 profile_done
830 ;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
831 CreateDirectory $APPDATA\Wireshark
832 CopyFiles $APPDATA\Ethereal\*.* $APPDATA\Wireshark
833 profile_done:
834 SetShellVarContext all
835
836 SectionEnd ; "Required"
837
838 !ifdef GTK_DIR
839 Section "Wireshark" SecWireshark
840 ;-------------------------------------------
841 SetOutPath $INSTDIR
842 File "..\..\wireshark.exe"
843 File "${GTK_DIR}\bin\libgdk-win32-2.0-0.dll"
844 File "${GTK_DIR}\bin\libgdk_pixbuf-2.0-0.dll"
845 File "${GTK_DIR}\bin\libgtk-win32-2.0-0.dll"
846 File "${GTK_DIR}\bin\libatk-1.0-0.dll"
847 File "${GTK_DIR}\bin\libpango-1.0-0.dll"
848 File "${GTK_DIR}\bin\libpangowin32-1.0-0.dll"
849 !ifdef NEED_CAIRO_DLL
850 File "${GTK_DIR}\bin\libcairo-2.dll"
851 File "${GTK_DIR}\bin\libpangocairo-1.0-0.dll"
852 !endif
853 !ifdef NEED_LIBPNG_DLL
854 File "${GTK_DIR}\bin\${PNG_DLL}"
855 !endif
856 !ifdef NEED_LIBTIFF_DLL
857 File "${GTK_DIR}\bin\${TIFF_DLL}"
858 !endif
859 !ifdef NEED_LIBJPEG_DLL
860 File "${GTK_DIR}\bin\${JPEG_DLL}"
861 !endif
862 !ifdef NEED_FREETYPE_DLL
863 File "${GTK_DIR}\bin\libpangoft2-1.0-0.dll"
864 File "${GTK_DIR}\bin\${FREETYPE_DLL}"
865 !endif
866 !ifdef NEED_FONTCONFIG_DLL
867 File "${GTK_DIR}\bin\${FONTCONFIG_DLL}"
868 !endif
869 !ifdef NEED_EXPAT_DLL
870 File "${GTK_DIR}\bin\${EXPAT_DLL}"
871 !endif
872 SetOutPath $INSTDIR\etc\gtk-2.0
873 File "${GTK_DIR}\etc\gtk-2.0\*.*"
874
875 !if ${WIRESHARK_TARGET_PLATFORM} == "win32"
876 SetOutPath $INSTDIR\etc\pango
877 File "${GTK_DIR}\etc\pango\pango.*"
878 ; Not needed for GTK+ >= 2.18
879 ;SetOutPath $INSTDIR\lib\gtk-2.0\${GTK_LIB_DIR}\loaders
880 ;File "${GTK_DIR}\lib\gtk-2.0\${GTK_LIB_DIR}\loaders\libpixbufloader-*.dll"
881 !endif
882
883 SetOutPath $INSTDIR\lib\gtk-2.0\${GTK_LIB_DIR}\engines
884 File "${GTK_DIR}\lib\gtk-2.0\${GTK_LIB_DIR}\engines\libpixmap.dll"
885 SetOutPath $INSTDIR\lib\gtk-2.0\modules
886 File "${GTK_DIR}\lib\gtk-2.0\modules\libgail.dll"
887
888 ; GTK MS-Windows Engine (GTK-Wimp)
889 SetOutPath $INSTDIR\${GTK_WIMP_DLLDST_DIR}
890 File "${GTK_WIMP_DLLSRC_DIR}\libwimp.dll"
891 SetOutPath $INSTDIR\${GTK_WIMP_RCDST_DIR}
892 File "${GTK_WIMP_RCSRC_DIR}\gtkrc"
893
894 SectionEnd ; "Wireshark"
895 !endif
896
897
898 Section "TShark" SecTShark
899 ;-------------------------------------------
900 SetOutPath $INSTDIR
901 File "..\..\tshark.exe"
902 File "..\..\doc\tshark.html"
903 SectionEnd
904
905 SectionGroup "Plugins / Extensions" SecPluginsGroup
906
907 Section "Dissector Plugins" SecPlugins
908 ;-------------------------------------------
909 SetOutPath '$INSTDIR\plugins\${VERSION}'
910 File "..\..\plugins\asn1\asn1.dll"
911 File "..\..\plugins\docsis\docsis.dll"
912 File "..\..\plugins\ethercat\ethercat.dll"
913 File "..\..\plugins\giop\coseventcomm.dll"
914 File "..\..\plugins\giop\cosnaming.dll"
915 File "..\..\plugins\giop\parlay.dll"
916 File "..\..\plugins\giop\tango.dll"
917 File "..\..\plugins\gryphon\gryphon.dll"
918 File "..\..\plugins\irda\irda.dll"
919 File "..\..\plugins\m2m\m2m.dll"
920 File "..\..\plugins\opcua\opcua.dll"
921 File "..\..\plugins\profinet\profinet.dll"
922 File "..\..\plugins\unistim\unistim.dll"
923 File "..\..\plugins\wimax\wimax.dll"
924 File "..\..\plugins\wimaxasncp\wimaxasncp.dll"
925 !include "custom_plugins.txt"
926 SectionEnd
927
928 Section "Tree Statistics Plugin" SecStatsTree
929 ;-------------------------------------------
930 SetOutPath '$INSTDIR\plugins\${VERSION}'
931 File "..\..\plugins\stats_tree\stats_tree.dll"
932 SectionEnd
933
934 Section "Mate - Meta Analysis and Tracing Engine" SecMate
935 ;-------------------------------------------
936 SetOutPath '$INSTDIR\plugins\${VERSION}'
937 File "..\..\plugins\mate\mate.dll"
938 SectionEnd
939
940
941 !ifdef NET_SNMP_DIR
942 Section "SNMP MIBs" SecMIBs
943 ;-------------------------------------------
944 SetOutPath $INSTDIR\snmp\mibs
945 File "${NET_SNMP_DIR}\mibs\*.txt"
946 SectionEnd
947 !endif
948
949 !ifdef SMI_DIR
950 Section "SNMP MIBs" SecMIBs
951 ;-------------------------------------------
952 SetOutPath $INSTDIR\snmp\mibs
953 File "${SMI_DIR}\mibs\*"
954 SectionEnd
955 !endif
956
957 SectionGroupEnd ; "Plugins / Extensions"
958
959
960 SectionGroup "Tools" SecToolsGroup
961
962 Section "Editcap" SecEditcap
963 ;-------------------------------------------
964 SetOutPath $INSTDIR
965 File "..\..\editcap.exe"
966 File "..\..\doc\editcap.html"
967 SectionEnd
968
969 Section "Text2Pcap" SecText2Pcap
970 ;-------------------------------------------
971 SetOutPath $INSTDIR
972 File "..\..\text2pcap.exe"
973 File "..\..\doc\text2pcap.html"
974 SectionEnd
975
976 Section "Mergecap" SecMergecap
977 ;-------------------------------------------
978 SetOutPath $INSTDIR
979 File "..\..\mergecap.exe"
980 File "..\..\doc\mergecap.html"
981 SectionEnd
982
983 Section "Capinfos" SecCapinfos
984 ;-------------------------------------------
985 SetOutPath $INSTDIR
986 File "..\..\capinfos.exe"
987 File "..\..\doc\capinfos.html"
988 SectionEnd
989
990 Section "Rawshark" SecRawshark
991 ;-------------------------------------------
992 SetOutPath $INSTDIR
993 File "..\..\rawshark.exe"
994 File "..\..\doc\rawshark.html"
995 SectionEnd
996
997 SectionGroupEnd ; "Tools"
998
999 !ifdef HHC_DIR
1000 Section "User's Guide" SecUsersGuide
1001 ;-------------------------------------------
1002 SetOutPath $INSTDIR
1003 File "user-guide.chm"
1004 SectionEnd
1005 !endif
1006
1007 Section "Uninstall" un.SecUinstall
1008 ;-------------------------------------------
1009
1010 ;
1011 ; UnInstall for every user
1012 ;
1013 SectionIn 1 2
1014 SetShellVarContext all
1015
1016 Delete "$INSTDIR\rawshark.exe"
1017 IfErrors 0 NoRawsharkErrorMsg
1018         MessageBox MB_OK "Please note: rawshark.exe could not be removed, it's probably in use!" IDOK 0 ;skipped if rawshark.exe removed
1019         Abort "Please note: rawshark.exe could not be removed, it's probably in use! Abort uninstall process!"
1020 NoRawsharkErrorMsg:
1021
1022 Delete "$INSTDIR\tshark.exe"
1023 IfErrors 0 NoTSharkErrorMsg
1024         MessageBox MB_OK "Please note: tshark.exe could not be removed, it's probably in use!" IDOK 0 ;skipped if tshark.exe removed
1025         Abort "Please note: tshark.exe could not be removed, it's probably in use! Abort uninstall process!"
1026 NoTSharkErrorMsg:
1027
1028 Delete "$INSTDIR\wireshark.exe"
1029 IfErrors 0 NoWiresharkErrorMsg
1030         MessageBox MB_OK "Please note: wireshark.exe could not be removed, it's probably in use!" IDOK 0 ;skipped if wireshark.exe removed
1031         Abort "Please note: wireshark.exe could not be removed, it's probably in use! Abort uninstall process!"
1032 NoWiresharkErrorMsg:
1033
1034 DeleteRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark"
1035 DeleteRegKey HKEY_LOCAL_MACHINE "Software\Wireshark"
1036 DeleteRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\wireshark.exe"
1037
1038 push $R0
1039         StrCpy $R0 ".5vw"
1040         Call un.unlink
1041         StrCpy $R0 ".acp"
1042         Call un.unlink
1043         StrCpy $R0 ".apc"
1044         Call un.unlink
1045         StrCpy $R0 ".atc"
1046         Call un.unlink
1047         StrCpy $R0 ".bfr"
1048         Call un.unlink
1049         StrCpy $R0 ".cap"
1050         Call un.unlink
1051         StrCpy $R0 ".enc"
1052         Call un.unlink
1053         StrCpy $R0 ".erf"
1054         Call un.unlink
1055         StrCpy $R0 ".fdc"
1056         Call un.unlink
1057         StrCpy $R0 ".pcap"
1058         Call un.unlink
1059         StrCpy $R0 ".pkt"
1060         Call un.unlink
1061         StrCpy $R0 ".snoop"
1062         Call un.unlink
1063         StrCpy $R0 ".syc"
1064         Call un.unlink
1065         StrCpy $R0 ".tpc"
1066         Call un.unlink
1067         StrCpy $R0 ".tr1"
1068         Call un.unlink
1069         StrCpy $R0 ".trace"
1070         Call un.unlink
1071         StrCpy $R0 ".trc"
1072         Call un.unlink
1073         StrCpy $R0 ".wpc"
1074         Call un.unlink
1075         StrCpy $R0 ".wpz"
1076         Call un.unlink
1077         StrCpy $R0 ".rf5"
1078         Call un.unlink
1079 pop $R0
1080
1081 DeleteRegKey HKCR ${WIRESHARK_ASSOC}
1082 DeleteRegKey HKCR "${WIRESHARK_ASSOC}\Shell\open\command"
1083 DeleteRegKey HKCR "${WIRESHARK_ASSOC}\DefaultIcon"
1084 !insertmacro UpdateIcons
1085
1086 Delete "$INSTDIR\etc\gtk-2.0\*.*"
1087 Delete "$INSTDIR\etc\pango\*.*"
1088 Delete "$INSTDIR\lib\gtk-2.0\2.2.0\engines\*.*"
1089 Delete "$INSTDIR\lib\gtk-2.0\2.2.0\loaders\*.*"
1090 Delete "$INSTDIR\lib\gtk-2.0\2.2.0\immodules\*.*"
1091 Delete "$INSTDIR\lib\gtk-2.0\2.4.0\engines\*.*"
1092 Delete "$INSTDIR\lib\gtk-2.0\2.4.0\loaders\*.*"
1093 Delete "$INSTDIR\lib\gtk-2.0\2.4.0\immodules\*.*"
1094 Delete "$INSTDIR\lib\gtk-2.0\2.10.0\engines\*.*"
1095 Delete "$INSTDIR\lib\gtk-2.0\2.10.0\loaders\*.*"
1096 Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\*.*"
1097 Delete "$INSTDIR\lib\gtk-2.0\modules\*.*"
1098 Delete "$INSTDIR\lib\pango\1.2.0\modules\*.*"
1099 Delete "$INSTDIR\lib\pango\1.4.0\modules\*.*"
1100 Delete "$INSTDIR\lib\pango\1.5.0\modules\*.*"
1101 Delete "$INSTDIR\share\themes\Default\gtk-2.0\*.*"
1102 Delete "$INSTDIR\help\*.*"
1103 Delete "$INSTDIR\diameter\*.*"
1104 Delete "$INSTDIR\snmp\mibs\*.*"
1105 Delete "$INSTDIR\snmp\*.*"
1106 Delete "$INSTDIR\tpncp\*.*"
1107 Delete "$INSTDIR\wimaxasncp\*.*"
1108 Delete "$INSTDIR\*.exe"
1109 Delete "$INSTDIR\*.dll"
1110 Delete "$INSTDIR\*.html"
1111 Delete "$INSTDIR\ws.css"
1112 Delete "$INSTDIR\COPYING*"
1113 Delete "$INSTDIR\AUTHORS-SHORT"
1114 ; previous versions installed these files
1115 Delete "$INSTDIR\*.manifest"
1116 ; previous versions installed this file
1117 Delete "$INSTDIR\AUTHORS-SHORT-FORMAT"
1118 Delete "$INSTDIR\README*"
1119 Delete "$INSTDIR\NEWS.txt"
1120 Delete "$INSTDIR\manuf"
1121 Delete "$INSTDIR\services"
1122 Delete "$INSTDIR\pdml2html.xsl"
1123 Delete "$INSTDIR\pcrepattern.3.txt"
1124 Delete "$INSTDIR\user-guide.chm"
1125 Delete "$INSTDIR\example_snmp_users_file"
1126 Delete "$INSTDIR\ipmap.html"
1127 Delete "$INSTDIR\radius\*.*"
1128 Delete "$INSTDIR\dtds\*.*"
1129 Delete "$SMPROGRAMS\Wireshark\*.*"
1130 Delete "$SMPROGRAMS\Wireshark.lnk"
1131 Delete "$DESKTOP\Wireshark.lnk"
1132 Delete "$QUICKLAUNCH\Wireshark.lnk"
1133
1134 RMDir "$INSTDIR\etc\gtk-2.0"
1135 RMDir "$INSTDIR\etc\pango"
1136 RMDir "$INSTDIR\etc"
1137 RMDir "$INSTDIR\lib\gtk-2.0\2.2.0\engines"
1138 RMDir "$INSTDIR\lib\gtk-2.0\2.2.0\loaders"
1139 RMDir "$INSTDIR\lib\gtk-2.0\2.2.0\immodules"
1140 RMDir "$INSTDIR\lib\gtk-2.0\2.2.0"
1141 RMDir "$INSTDIR\lib\gtk-2.0\2.4.0\engines"
1142 RMDir "$INSTDIR\lib\gtk-2.0\2.4.0\loaders"
1143 RMDir "$INSTDIR\lib\gtk-2.0\2.4.0\immodules"
1144 RMDir "$INSTDIR\lib\gtk-2.0\2.4.0"
1145 RMDir "$INSTDIR\lib\gtk-2.0\2.10.0\engines"
1146 RMDir "$INSTDIR\lib\gtk-2.0\2.10.0\loaders"
1147 RMDir "$INSTDIR\lib\gtk-2.0\2.10.0\immodules"
1148 RMDir "$INSTDIR\lib\gtk-2.0\2.10.0"
1149 RMDir "$INSTDIR\lib\gtk-2.0\modules"
1150 RMDir "$INSTDIR\lib\gtk-2.0"
1151 RMDir "$INSTDIR\lib\pango\1.2.0\modules"
1152 RMDir "$INSTDIR\lib\pango\1.2.0"
1153 RMDir "$INSTDIR\lib\pango\1.4.0\modules"
1154 RMDir "$INSTDIR\lib\pango\1.4.0"
1155 RMDir "$INSTDIR\lib\pango\1.5.0\modules"
1156 RMDir "$INSTDIR\lib\pango\1.5.0"
1157 RMDir "$INSTDIR\lib\pango"
1158 RMDir "$INSTDIR\lib"
1159 RMDir "$INSTDIR\share\themes\Default\gtk-2.0"
1160 RMDir "$INSTDIR\share\themes\Default"
1161 RMDir "$INSTDIR\share\themes"
1162 RMDir "$INSTDIR\share"
1163 RMDir "$SMPROGRAMS\Wireshark"
1164 RMDir "$INSTDIR\help"
1165 RMDir "$INSTDIR\diameter"
1166 RMDir "$INSTDIR\snmp\mibs"
1167 RMDir "$INSTDIR\snmp"
1168 RMDir "$INSTDIR\radius"
1169 RMDir "$INSTDIR\dtds"
1170 RMDir "$INSTDIR\tpncp"
1171 RMDir "$INSTDIR\wimaxasncp"
1172 RMDir "$INSTDIR"
1173
1174 SectionEnd ; "Uinstall"
1175
1176 Section "Un.Plugins" un.SecPlugins
1177 ;-------------------------------------------
1178 SectionIn 1 2
1179 ;Delete "$INSTDIR\plugins\${VERSION}\*.*"
1180 ;Delete "$INSTDIR\plugins\*.*"
1181 ;RMDir "$INSTDIR\plugins\${VERSION}"
1182 ;RMDir "$INSTDIR\plugins"
1183 RMDir /r "$INSTDIR\plugins"
1184 SectionEnd
1185
1186 Section "Un.Global Settings" un.SecGlobalSettings
1187 ;-------------------------------------------
1188 SectionIn 1 2
1189 Delete "$INSTDIR\cfilters"
1190 Delete "$INSTDIR\colorfilters"
1191 Delete "$INSTDIR\dfilters"
1192 Delete "$INSTDIR\init.lua"
1193 Delete "$INSTDIR\console.lua"
1194 Delete "$INSTDIR\dtd_gen.lua"
1195 Delete "$INSTDIR\smi_modules"
1196 RMDir "$INSTDIR"
1197 SectionEnd
1198
1199 Section /o "Un.Personal Settings" un.SecPersonalSettings
1200 ;-------------------------------------------
1201 SectionIn 2
1202 SetShellVarContext current
1203 Delete "$APPDATA\Wireshark\*.*"
1204 RMDir "$APPDATA\Wireshark"
1205 SectionEnd
1206
1207 ;VAR un.WINPCAP_UNINSTALL
1208
1209 Section /o "Un.WinPcap" un.SecWinPcap
1210 ;-------------------------------------------
1211 SectionIn 2
1212 ReadRegStr $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "UninstallString"
1213 ;IfErrors un.lbl_winpcap_notinstalled ;if RegKey is unavailable, WinPcap is not installed
1214 ;MessageBox MB_OK "WinPcap $1"
1215 ExecWait '$1' $0
1216 DetailPrint "WinPcap uninstaller returned $0"
1217 ;SetRebootFlag true
1218 ;un.lbl_winpcap_notinstalled:
1219 SectionEnd
1220
1221 Section "-Un.Finally"
1222 ;-------------------------------------------
1223 SectionIn 1 2
1224 ; this test must be done after all other things uninstalled (e.g. Global Settings)
1225 IfFileExists "$INSTDIR" 0 NoFinalErrorMsg
1226     MessageBox MB_OK "Please note: The directory $INSTDIR could not be removed!" IDOK 0 ; skipped if dir doesn't exist
1227 NoFinalErrorMsg:
1228 SectionEnd
1229
1230
1231 ; ============================================================================
1232 ; PLEASE MAKE SURE, THAT THE DESCRIPTIVE TEXT FITS INTO THE DESCRIPTION FIELD!
1233 ; ============================================================================
1234 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
1235 !ifdef GTK_DIR
1236   !insertmacro MUI_DESCRIPTION_TEXT ${SecWireshark} "${PROGRAM_NAME} is a GUI network protocol analyzer."
1237 !endif
1238   !insertmacro MUI_DESCRIPTION_TEXT ${SecTShark} "TShark is a text based network protocol analyzer."
1239   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsGroup} "Some plugins and extensions for both Wireshark and TShark."
1240   !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} "Plugins with some extended dissections."
1241   !insertmacro MUI_DESCRIPTION_TEXT ${SecStatsTree} "Plugin for some extended statistics."
1242   !insertmacro MUI_DESCRIPTION_TEXT ${SecMate} "Plugin - Meta Analysis and Tracing Engine (Experimental)."
1243 !ifdef NET_SNMP_DIR
1244   !insertmacro MUI_DESCRIPTION_TEXT ${SecMIBs} "SNMP MIBs for better SNMP dissection."
1245 !endif
1246 !ifdef SMI_DIR
1247   !insertmacro MUI_DESCRIPTION_TEXT ${SecMIBs} "SNMP MIBs for better SNMP dissection."
1248 !endif
1249   !insertmacro MUI_DESCRIPTION_TEXT ${SecToolsGroup} "Additional command line based tools."
1250   !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."
1251   !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."
1252   !insertmacro MUI_DESCRIPTION_TEXT ${SecMergecap} "Mergecap is a program that combines multiple saved capture files into a single output file"
1253   !insertmacro MUI_DESCRIPTION_TEXT ${SecCapinfos} "Capinfos is a program that provides information on capture files."
1254   !insertmacro MUI_DESCRIPTION_TEXT ${SecRawshark} "Rawshark is a raw packet filter."
1255 !ifdef HHC_DIR
1256   !insertmacro MUI_DESCRIPTION_TEXT ${SecUsersGuide} "Install the user's guide, so an internet connection is not required to read the help pages."
1257 !endif
1258 !insertmacro MUI_FUNCTION_DESCRIPTION_END
1259
1260 !insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
1261   !insertmacro MUI_DESCRIPTION_TEXT ${un.SecUinstall} "Uninstall all Wireshark components."
1262   !insertmacro MUI_DESCRIPTION_TEXT ${un.SecPlugins} "Uninstall all Plugins (even from previous Wireshark versions)."
1263   !insertmacro MUI_DESCRIPTION_TEXT ${un.SecGlobalSettings} "Uninstall global settings like: $INSTDIR\cfilters"
1264   !insertmacro MUI_DESCRIPTION_TEXT ${un.SecPersonalSettings} "Uninstall personal settings like your preferences file from your profile: $PROFILE."
1265   !insertmacro MUI_DESCRIPTION_TEXT ${un.SecWinPcap} "Call WinPcap's uninstall program."
1266 !insertmacro MUI_UNFUNCTION_DESCRIPTION_END
1267
1268 ; ============================================================================
1269 ; Callback functions
1270 ; ============================================================================
1271 !ifdef GTK_DIR
1272 ; Disable File extensions if Wireshark isn't selected
1273 Function .onSelChange
1274         Push $0
1275         SectionGetFlags ${SecWireshark} $0
1276         IntOp  $0 $0 & 1
1277         IntCmp $0 0 onSelChange.unselect
1278         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "State" 1
1279         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "Flags" ""
1280         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 7" "Flags" ""
1281         Goto onSelChange.end
1282
1283 onSelChange.unselect:
1284         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "State" 0
1285         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 6" "Flags" "DISABLED"
1286         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 7" "Flags" "DISABLED"
1287         Goto onSelChange.end
1288
1289 onSelChange.end:
1290         Pop $0
1291 FunctionEnd
1292 !endif
1293
1294
1295 !include "GetWindowsVersion.nsh"
1296 !include WinMessages.nsh
1297 !include "VersionCompare.nsh"
1298
1299 Var WINPCAP_NAME ; DisplayName from WinPcap installation
1300 Var WINPCAP_VERSION ; DisplayVersion from WinPcap installation
1301
1302 Function myShowCallback
1303
1304         ; Get the Windows version
1305         Call GetWindowsVersion
1306         Pop $R0 ; Windows Version
1307
1308         ; Check if we're able to run with this version
1309         StrCmp $R0 '95' lbl_winversion_unsupported
1310         StrCmp $R0 '98' lbl_winversion_unsupported
1311         StrCmp $R0 'ME' lbl_winversion_unsupported
1312         StrCmp $R0 'NT 4.0' lbl_winversion_unsupported_nt4
1313         StrCmp $R0 '2000' lbl_winversion_unsupported_2000
1314         Goto lbl_winversion_supported
1315 lbl_winversion_unsupported:
1316         MessageBox MB_OK \
1317             "Windows $R0 is no longer supported. The last known version working with 98/ME was Ethereal 0.99.0." \
1318             /SD IDOK
1319         Quit
1320
1321 lbl_winversion_unsupported_nt4:
1322         MessageBox MB_OK \
1323             "Windows $R0 is no longer supported. The last known version working with NT 4.0 was Wireshark 0.99.4." \
1324             /SD IDOK
1325         Quit
1326
1327 lbl_winversion_unsupported_2000:
1328         MessageBox MB_OK \
1329             "Windows $R0 is no longer supported. Please install Wireshark 1.2 or 1.0." \
1330             /SD IDOK
1331         Quit
1332
1333 lbl_winversion_supported:
1334         ; detect if WinPcap should be installed
1335         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "Text" "Install WinPcap 4.1.2"
1336         ReadRegStr $WINPCAP_NAME HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "DisplayName"
1337         IfErrors 0 lbl_winpcap_installed ;if RegKey is available, WinPcap is already installed
1338         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 2" "Text" "WinPcap is currently not installed"
1339         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 2" "Flags" "DISABLED"
1340         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Text" "(Use Add/Remove Programs first to uninstall any undetected old WinPcap versions)"
1341         Goto lbl_winpcap_done
1342
1343 lbl_winpcap_installed:
1344         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 2" "Text" "$WINPCAP_NAME"
1345         ; Compare the installed build against the one we have.
1346         ReadRegStr $WINPCAP_VERSION HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "DisplayVersion"
1347         StrCmp $WINPCAP_VERSION "" lbl_winpcap_do_install ; WinPcap is really old(?) or installed improperly.
1348         ${VersionCompare} $WINPCAP_VERSION "4.1.0.2001" $1 ; WinPcap 4.1.2
1349         StrCmp $1 "2" lbl_winpcap_do_install
1350
1351 ;lbl_winpcap_dont_install:
1352         ; The installed version is >= to what we have, so don't install
1353         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "State" "0"
1354         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Text" "If selected, the currently installed $WINPCAP_NAME will be uninstalled first."
1355         Goto lbl_winpcap_done
1356
1357 ;lbl_winpcap_dont_upgrade:
1358         ; force the user to upgrade by hand
1359         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "State" "0"
1360         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "Flags" "DISABLED"
1361         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Text" "If you wish to install WinPcap 4.1.2, please uninstall $WINPCAP_NAME manually first."
1362         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Flags" "DISABLED"
1363         Goto lbl_winpcap_done
1364
1365 lbl_winpcap_do_install:
1366         ; seems to be an old version, install newer one
1367         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 4" "State" "1"
1368         WriteINIStr "$PLUGINSDIR\WinPcapPage.ini" "Field 5" "Text" "The currently installed $WINPCAP_NAME will be uninstalled first."
1369
1370 lbl_winpcap_done:
1371
1372         ; if Wireshark was previously installed, unselect previously not installed icons etc.
1373         ; detect if Wireshark is already installed ->
1374         ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark" "UninstallString"
1375         IfErrors lbl_wireshark_notinstalled ;if RegKey is unavailable, Wireshark is not installed
1376
1377         ; only select Start Menu Group, if previously installed
1378         ; (we use the "all users" start menu, so select it first)
1379         SetShellVarContext all
1380         IfFileExists "$SMPROGRAMS\Wireshark\Wireshark.lnk" lbl_have_startmenu
1381         IfFileExists "$SMPROGRAMS\Wireshark.lnk" lbl_have_startmenu
1382         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 2" "State" "0"
1383 lbl_have_startmenu:
1384
1385         ; only select Desktop Icon, if previously installed
1386         IfFileExists "$DESKTOP\Wireshark.lnk" lbl_have_desktopicon
1387         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 3" "State" "0"
1388 lbl_have_desktopicon:
1389
1390         ; only select Quick Launch Icon, if previously installed
1391         IfFileExists "$QUICKLAUNCH\Wireshark.lnk" lbl_have_quicklaunchicon
1392         WriteINIStr "$PLUGINSDIR\AdditionalTasksPage.ini" "Field 4" "State" "0"
1393 lbl_have_quicklaunchicon:
1394
1395 lbl_wireshark_notinstalled:
1396
1397
1398 FunctionEnd