summaryrefslogtreecommitdiffstats
path: root/packaging
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /packaging
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'packaging')
-rw-r--r--packaging/appimage/Logray-AppRun.in41
-rw-r--r--packaging/appimage/Wireshark-AppRun.in41
-rw-r--r--packaging/debian/README.Debian94
-rw-r--r--packaging/debian/README.Debian.security13
-rw-r--r--packaging/debian/changelog5
-rw-r--r--packaging/debian/compat1
-rw-r--r--packaging/debian/control240
-rw-r--r--packaging/debian/copyright258
-rw-r--r--packaging/debian/dirs5
-rw-r--r--packaging/debian/ethereal-common.NEWS13
-rw-r--r--packaging/debian/headers-check.c16
-rw-r--r--packaging/debian/libwireshark-data.install3
-rw-r--r--packaging/debian/libwireshark-dev.install4
-rw-r--r--packaging/debian/libwireshark17.install3
-rw-r--r--packaging/debian/libwireshark17.lintian-overrides12
-rw-r--r--packaging/debian/libwireshark17.symbols2195
-rw-r--r--packaging/debian/libwiretap-dev.install2
-rw-r--r--packaging/debian/libwiretap14.docs1
-rw-r--r--packaging/debian/libwiretap14.install2
-rw-r--r--packaging/debian/libwiretap14.symbols207
-rw-r--r--packaging/debian/libwsutil-dev.install3
-rw-r--r--packaging/debian/libwsutil15.install1
-rw-r--r--packaging/debian/libwsutil15.symbols531
-rw-r--r--packaging/debian/maxmind_db_paths1
-rw-r--r--packaging/debian/patches/09_idl2wrs.patch48
-rw-r--r--packaging/debian/patches/series1
-rw-r--r--packaging/debian/po/POTFILES.in1
-rw-r--r--packaging/debian/po/cs.po138
-rw-r--r--packaging/debian/po/da.po138
-rw-r--r--packaging/debian/po/de.po143
-rw-r--r--packaging/debian/po/es.po138
-rw-r--r--packaging/debian/po/eu.po139
-rw-r--r--packaging/debian/po/fi.po139
-rw-r--r--packaging/debian/po/fr.po140
-rw-r--r--packaging/debian/po/hu.po138
-rw-r--r--packaging/debian/po/id.po137
-rw-r--r--packaging/debian/po/it.po138
-rw-r--r--packaging/debian/po/ja.po137
-rw-r--r--packaging/debian/po/ko.po139
-rw-r--r--packaging/debian/po/nl.po138
-rw-r--r--packaging/debian/po/pt.po137
-rw-r--r--packaging/debian/po/pt_BR.po139
-rw-r--r--packaging/debian/po/ru.po139
-rw-r--r--packaging/debian/po/sk.po139
-rw-r--r--packaging/debian/po/sv.po139
-rw-r--r--packaging/debian/po/templates.pot137
-rw-r--r--packaging/debian/po/vi.po137
-rw-r--r--packaging/debian/postinst6
-rwxr-xr-xpackaging/debian/rules83
-rw-r--r--packaging/debian/source/format1
-rw-r--r--packaging/debian/source/lintian-overrides2
-rw-r--r--packaging/debian/templates61
-rw-r--r--packaging/debian/tests/control5
-rw-r--r--packaging/debian/tests/frame-count.lua17
-rwxr-xr-xpackaging/debian/tests/gui9
-rwxr-xr-xpackaging/debian/tests/tshark8
-rw-r--r--packaging/debian/tshark.docs1
-rw-r--r--packaging/debian/tshark.install1
-rw-r--r--packaging/debian/tshark.lintian-overrides2
-rw-r--r--packaging/debian/tshark.manpages1
-rw-r--r--packaging/debian/wireshark-common.config10
-rw-r--r--packaging/debian/wireshark-common.install13
-rw-r--r--packaging/debian/wireshark-common.lintian-overrides2
-rw-r--r--packaging/debian/wireshark-common.manpages18
-rw-r--r--packaging/debian/wireshark-common.postinst43
-rw-r--r--packaging/debian/wireshark-common.postrm20
-rw-r--r--packaging/debian/wireshark-dev.docs5
-rw-r--r--packaging/debian/wireshark-dev.install7
-rw-r--r--packaging/debian/wireshark-dev.manpages3
-rw-r--r--packaging/debian/wireshark-dev.prerm17
-rw-r--r--packaging/debian/wireshark-doc.docs2
-rw-r--r--packaging/debian/wireshark-qt.docs1
-rw-r--r--packaging/debian/wireshark-qt.install2
-rw-r--r--packaging/debian/wireshark-qt.lintian-overrides2
-rw-r--r--packaging/debian/wireshark-qt.manpages1
-rw-r--r--packaging/macosx/ChmodBPF/install-distribution.xml25
-rwxr-xr-xpackaging/macosx/ChmodBPF/install-scripts/postinstall35
-rwxr-xr-xpackaging/macosx/ChmodBPF/root/Library/Application Support/Wireshark/ChmodBPF/ChmodBPF41
-rw-r--r--packaging/macosx/ChmodBPF/root/Library/LaunchDaemons/org.wireshark.ChmodBPF.plist14
-rw-r--r--packaging/macosx/ChmodBPF/uninstall-distribution.xml25
-rwxr-xr-xpackaging/macosx/ChmodBPF/uninstall-scripts/postinstall26
-rw-r--r--packaging/macosx/Donate_to_the_Wireshark_Foundation.adoc15
-rw-r--r--packaging/macosx/Logray.icnsbin0 -> 161519 bytes
-rw-r--r--packaging/macosx/LograyInfo.plist.in71
-rw-r--r--packaging/macosx/Logray_dsym_installation.adoc17
-rw-r--r--packaging/macosx/Logray_read_me_first.adoc34
-rw-r--r--packaging/macosx/Wireshark.icnsbin0 -> 1031753 bytes
-rw-r--r--packaging/macosx/WiresharkInfo.plist.in276
-rw-r--r--packaging/macosx/Wireshark_dsym_installation.adoc17
-rw-r--r--packaging/macosx/Wireshark_read_me_first.adoc70
-rw-r--r--packaging/macosx/Wiresharkdoc.icnsbin0 -> 81772 bytes
-rw-r--r--packaging/macosx/dmg_background.pngbin0 -> 1410 bytes
-rw-r--r--packaging/macosx/dmg_background.svg1394
-rw-r--r--packaging/macosx/entitlements.plist8
-rw-r--r--packaging/macosx/logray-app.dmgbuild.in146
-rw-r--r--packaging/macosx/logray-dsym.dmgbuild.in139
-rw-r--r--packaging/macosx/lriconvol.icnsbin0 -> 71576 bytes
-rw-r--r--packaging/macosx/lriconvol.svg113
-rwxr-xr-xpackaging/macosx/osx-app.sh.in717
-rwxr-xr-xpackaging/macosx/osx-dmg.sh.in108
-rwxr-xr-xpackaging/macosx/osx-extras.sh86
-rw-r--r--packaging/macosx/path_helper/install-distribution.xml24
-rw-r--r--packaging/macosx/path_helper/root/etc/manpaths.d/Wireshark1
-rw-r--r--packaging/macosx/path_helper/root/etc/paths.d/Wireshark1
-rw-r--r--packaging/macosx/path_helper/uninstall-distribution.xml24
-rwxr-xr-xpackaging/macosx/path_helper/uninstall-scripts/postinstall11
-rw-r--r--packaging/macosx/wireshark-app.dmgbuild.in170
-rw-r--r--packaging/macosx/wireshark-dsym.dmgbuild.in139
-rw-r--r--packaging/macosx/wsiconvol.icnsbin0 -> 21096 bytes
-rw-r--r--packaging/macosx/wsiconvol.svg106
-rw-r--r--packaging/msys2/mingw-w64-wireshark-git/PKGBUILD103
-rw-r--r--packaging/nsis/CMakeLists.txt400
-rw-r--r--packaging/nsis/DonatePage.ini19
-rw-r--r--packaging/nsis/GetWindowsVersion.nsh190
-rw-r--r--packaging/nsis/InstallMSYS2.cmake71
-rw-r--r--packaging/nsis/InstallMinGW.cmake55
-rw-r--r--packaging/nsis/NpcapPage.ini85
-rw-r--r--packaging/nsis/USBPcapPage.ini77
-rw-r--r--packaging/nsis/custom_diameter_xmls.txt3
-rw-r--r--packaging/nsis/custom_mibs.txt4
-rw-r--r--packaging/nsis/custom_plugins.txt3
-rw-r--r--packaging/nsis/custom_radius_dict.txt3
-rw-r--r--packaging/nsis/logray-additional-tasks.nsddef17
-rw-r--r--packaging/nsis/logray-additional-tasks.nsdinc75
-rw-r--r--packaging/nsis/logray-common.nsh126
-rw-r--r--packaging/nsis/logray-config.nsh.in30
-rw-r--r--packaging/nsis/logray.nsi1105
-rw-r--r--packaging/nsis/makeUninstall.ps147
-rw-r--r--packaging/nsis/mingw64-qt-mapping.txt30
-rw-r--r--packaging/nsis/servicelib.nsh344
-rw-r--r--packaging/nsis/uninstall-logray.nsi274
-rw-r--r--packaging/nsis/windeployqt-to-nsis.ps1108
-rw-r--r--packaging/nsis/windeployqt-to-nsis.py91
-rw-r--r--packaging/nsis/wireshark-additional-tasks.nsddef17
-rw-r--r--packaging/nsis/wireshark-additional-tasks.nsdinc70
-rw-r--r--packaging/nsis/wireshark-common.nsh154
-rw-r--r--packaging/nsis/wireshark-config.nsh.in40
-rw-r--r--packaging/nsis/wireshark.nsi1657
-rw-r--r--packaging/portableapps/CMakeLists.txt133
-rw-r--r--packaging/portableapps/WiresharkPortable.tmpl10
-rw-r--r--packaging/portableapps/appinfo.tmpl27
-rw-r--r--packaging/portableapps/help.html8
-rw-r--r--packaging/portableapps/readme.txt45
-rw-r--r--packaging/portableapps/xcopy-deploy-exclude.txt10
-rw-r--r--packaging/rpm/wireshark.spec.in693
-rwxr-xr-xpackaging/source/git-export-release.sh.in100
-rw-r--r--packaging/wix/CMakeLists.txt341
-rw-r--r--packaging/wix/COPYING.rtf524
-rw-r--r--packaging/wix/ComponentGroups.wxi913
-rw-r--r--packaging/wix/DirectoryStructure.wxi53
-rw-r--r--packaging/wix/Features.wxi121
-rw-r--r--packaging/wix/InputPaths.wxi22
-rw-r--r--packaging/wix/Plugins.wxi150
-rw-r--r--packaging/wix/Prerequisites.wxi103
-rw-r--r--packaging/wix/README.adoc47
-rw-r--r--packaging/wix/StringOverrides.wxl4
-rw-r--r--packaging/wix/UserInterface.wxi18
-rw-r--r--packaging/wix/Wireshark.wxs58
-rw-r--r--packaging/wix/WiresharkOptionsDlg.wxs66
-rw-r--r--packaging/wix/WiresharkWixUI.wxs87
-rw-r--r--packaging/wix/banner.bmpbin0 -> 29846 bytes
-rw-r--r--packaging/wix/banner.svg69
-rw-r--r--packaging/wix/dialog.bmpbin0 -> 158078 bytes
-rw-r--r--packaging/wix/dialog.svg83
-rw-r--r--packaging/wix/windeployqt-to-wix.ps1165
165 files changed, 19755 insertions, 0 deletions
diff --git a/packaging/appimage/Logray-AppRun.in b/packaging/appimage/Logray-AppRun.in
new file mode 100644
index 0000000..8769857
--- /dev/null
+++ b/packaging/appimage/Logray-AppRun.in
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+# Custom AppRun entry point that allows symlinking multiple
+# executables, e.g. logray, tshark, dumpcap, editcap, etc.
+
+# Adapted from
+# https://github.com/probonopd/ippsample/blob/feature/appimage/appimage/AppRun
+
+SELF=$(readlink -f "$0")
+HERE=${SELF%/*}
+
+# https://github.com/AppImage/AppImageKit/issues/126
+export LD_LIBRARY_PATH="${APPDIR}/usr/lib:${LD_LIBRARY_PATH}"
+
+# We should probably set these relative to the program path in
+# wsutil/filesystem.c
+if [ -z "$LOGRAY_DATA_DIR" ] ; then
+ export LOGRAY_DATA_DIR="$APPDIR@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_DATADIR@/wireshark"
+fi
+
+if [ -z "$LOGRAY_EXTCAP_DIR" ] ; then
+ export LOGRAY_EXTCAP_DIR="$APPDIR@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/wireshark/extcap"
+fi
+
+if [ -z "$LOGRAY_PLUGIN_DIR" ] ; then
+ export LOGRAY_PLUGIN_DIR="$APPDIR@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/wireshark/plugins"
+fi
+
+# See if we were called by runtime.c, which sets APPIMAGE, ARGV0,
+# and APPDIR.
+if [ -n "$APPIMAGE" ] && [ -n "$ARGV0" ] ; then
+ BINARY_NAME=${ARGV0##*/}
+else
+ BINARY_NAME=${0##*/}
+fi
+
+if [ -e "$HERE/usr/bin/$BINARY_NAME" ] ; then
+ exec "$HERE/usr/bin/$BINARY_NAME" "$@"
+else
+ exec "$HERE/usr/bin/logray" "$@"
+fi
diff --git a/packaging/appimage/Wireshark-AppRun.in b/packaging/appimage/Wireshark-AppRun.in
new file mode 100644
index 0000000..c3bc06f
--- /dev/null
+++ b/packaging/appimage/Wireshark-AppRun.in
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+# Custom AppRun entry point that allows symlinking multiple
+# executables, e.g. wireshark, tshark, dumpcap, editcap, etc.
+
+# Adapted from
+# https://github.com/probonopd/ippsample/blob/feature/appimage/appimage/AppRun
+
+SELF=$(readlink -f "$0")
+HERE=${SELF%/*}
+
+# https://github.com/AppImage/AppImageKit/issues/126
+export LD_LIBRARY_PATH="${APPDIR}/usr/lib:${LD_LIBRARY_PATH}"
+
+# We should probably set these relative to the program path in
+# wsutil/filesystem.c
+if [ -z "$WIRESHARK_DATA_DIR" ] ; then
+ export WIRESHARK_DATA_DIR="$APPDIR@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_DATADIR@/wireshark"
+fi
+
+if [ -z "$WIRESHARK_EXTCAP_DIR" ] ; then
+ export WIRESHARK_EXTCAP_DIR="$APPDIR@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/wireshark/extcap"
+fi
+
+if [ -z "$WIRESHARK_PLUGIN_DIR" ] ; then
+ export WIRESHARK_PLUGIN_DIR="$APPDIR@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/wireshark/plugins"
+fi
+
+# See if we were called by runtime.c, which sets APPIMAGE, ARGV0,
+# and APPDIR.
+if [ -n "$APPIMAGE" ] && [ -n "$ARGV0" ] ; then
+ BINARY_NAME=${ARGV0##*/}
+else
+ BINARY_NAME=${0##*/}
+fi
+
+if [ -e "$HERE/usr/bin/$BINARY_NAME" ] ; then
+ exec "$HERE/usr/bin/$BINARY_NAME" "$@"
+else
+ exec "$HERE/usr/bin/wireshark" "$@"
+fi
diff --git a/packaging/debian/README.Debian b/packaging/debian/README.Debian
new file mode 100644
index 0000000..f52ffe6
--- /dev/null
+++ b/packaging/debian/README.Debian
@@ -0,0 +1,94 @@
+
+I. Capturing packets with Wireshark/Tshark
+
+ There are two ways of installing Wireshark/Tshark on Debian; the
+ installation process may offer a choice between these two ways,
+ asking "Should non-superuser be able to capture packets?"
+
+ I./a. Installing dumpcap without allowing non-root users to capture packets
+
+ Only root user will be able to capture packets. It is advised to capture
+ packets with the bundled dumpcap program as root and then run
+ Wireshark/Tshark as an ordinary user to analyze the captured logs. [2]
+
+ This is the default on Debian systems; it is selected by answering
+ "<No>" to the question mentioned above.
+
+ I./b. Installing dumpcap and allowing non-root users to capture packets
+
+ Members of the wireshark group will be able to capture packets on network
+ interfaces. This is the preferred way of installation if Wireshark/Tshark
+ will be used for capturing and displaying packets at the same time, since
+ that way only the dumpcap process has to be run with elevated privileges
+ thanks to the privilege separation[1].
+
+ This is selected by answering "<Yes>" to the question mentioned
+ above.
+
+ Note that no user will be added to group wireshark automatically;
+ a system administrator has to add them manually, using the usermod
+ command:
+
+ sudo usermod -a -G wireshark {username}
+
+ or, if you're using a desktop environment that includes a tool for
+ managing users, such as the "Users and Groups" tool in GNOME (found
+ in the gnome-system-tools package), using that tool. After a user
+ is added to the wireshark group, she/he may need to log in again to
+ make her/his new group membership take effect and be able to capture
+ packets.
+
+ The additional privileges are provided using the Linux Capabilities
+ system where it is available and resorting to setting the set-user-id
+ bit of the dumpcap binary as a fall-back, where the Linux Capabilities
+ system is not present (Debian GNU/kFreeBSD, Debian GNU/Hurd).
+
+ Linux kernels provided by Debian support Linux Capabilities, but custom
+ built kernels may lack this support. If the support for Linux
+ Capabilities is not present at the time of installing wireshark-common
+ package, the installer will fall back to set the set-user-id bit to
+ allow non-root users to capture packets.
+
+ If installation succeeds with using Linux Capabilities, non-root users
+ will not be able to capture packets while running kernels not supporting
+ Linux Capabilities.
+
+ Note that capturing USB packets is not enabled for non-root users by using
+ Linux Capabilities. You have to capture the packets using the method
+ described in I./a., setting the set-user-id permanently using
+ dpkg-statoverride or running dumpcap as root.
+
+ The installation method can be changed any time by running:
+
+ sudo dpkg-reconfigure wireshark-common
+
+ The question mentioned above will be asked; answer "<Yes>" to it.
+
+
+II. Installing SNMP MIBs
+
+ SNMP [4] OIDs can be decoded using MIBs provided by other packages.
+ wireshark-common suggests snmp-mibs-downloader which package can be used to
+ download a set of common MIBs Wireshark/Tshark tries to load at startup.
+
+ At the time of writing, MIBs are distributed under DFSG incompatible terms
+ [5] thus snmp-mibs-downloader has to be in the non-free archive area.
+ To keep wireshark in the main area [7], wireshark-common does not depend on
+ or recommend snmp-mibs-downloader and as a result snmp-mibs-downloader is
+ not installed automatically with wireshark.
+
+ To make Wireshark/Tshark able to decode OIDs, please install
+ snmp-mibs-downloader manually.
+
+ To help Wireshark/Tshark to decode OIDs without having to install packages
+ manually, please support the initiative of requesting additional rights
+ from RFC authors [5].
+
+
+ [1] https://gitlab.com/wireshark/wireshark/-/wikis/Development/PrivilegeSeparation
+ [2] https://gitlab.com/wireshark/wireshark/-/wikis/CaptureSetup/CapturePrivileges
+ [3] https://blog.wireshark.org/2010/02/running-wireshark-as-you
+ [4] https://gitlab.com/wireshark/wireshark/-/wikis/SNMP
+ [5] https://wiki.debian.org/NonFreeIETFDocuments
+ [6] https://www.debian.org/doc/debian-policy/ch-archive.html#s-non-free
+ [7] https://www.debian.org/doc/debian-policy/ch-archive.html#s-main
diff --git a/packaging/debian/README.Debian.security b/packaging/debian/README.Debian.security
new file mode 100644
index 0000000..64f116f
--- /dev/null
+++ b/packaging/debian/README.Debian.security
@@ -0,0 +1,13 @@
+
+ Handling security fixes in source package wireshark
+
+Wireshark is a network protocol analyzer and it's ability to perform deep
+packet inspection in live traffic may encourage users to use Wireshark/Tshark
+as a part of an intrusion detection or traffic monitoring system.
+In that case, please note that Wireshark/Tshark may contain remotely
+triggerable bugs causing crashes or allowing code injection.
+
+Bugs allowing code injection will be fixed in regular Debian Security
+Advisories, but fixes for pure crash bugs may be delayed.
+
+ -- Balint Reczey <balint@balintreczey.hu> Fri, 10 Jul 2009 15:38:33 +0200
diff --git a/packaging/debian/changelog b/packaging/debian/changelog
new file mode 100644
index 0000000..3240f8b
--- /dev/null
+++ b/packaging/debian/changelog
@@ -0,0 +1,5 @@
+wireshark (4.2.2) unstable; urgency=low
+
+ * Self-made package
+
+ -- Wireshark Self-made package <wireshark@example.com> Mon, 17 Oct 2016 12:05:44 +0200
diff --git a/packaging/debian/compat b/packaging/debian/compat
new file mode 100644
index 0000000..48082f7
--- /dev/null
+++ b/packaging/debian/compat
@@ -0,0 +1 @@
+12
diff --git a/packaging/debian/control b/packaging/debian/control
new file mode 100644
index 0000000..1268132
--- /dev/null
+++ b/packaging/debian/control
@@ -0,0 +1,240 @@
+Source: wireshark
+Section: net
+Priority: optional
+Maintainer: Balint Reczey <rbalint@ubuntu.com>
+Standards-Version: 3.9.8
+Build-Depends:
+ qtbase5-dev, qtbase5-dev-tools, qttools5-dev, qttools5-dev-tools,
+ qtmultimedia5-dev,
+ libpcap0.8-dev, flex, libz-dev, debhelper (>= 12), po-debconf,
+ python3, python3-ply, libc-ares-dev, xsltproc, dh-python,
+ docbook-xsl (>= 1.64.1.0-0), docbook-xml, libxml2-utils, libpcre2-dev,
+ libcap2-dev [linux-any] | libcap-dev (>= 2.17) [linux-any], lsb-release,
+ quilt, libparse-yapp-perl,
+# libgnutls28-dev >= 3.2.14-1 is GPLv2+ compatible.
+ libgnutls28-dev (>= 3.2.14-1~),
+ libgcrypt-dev, libkrb5-dev, liblua5.2-dev, libsmi2-dev,
+ libmaxminddb-dev, dpkg-dev (>= 1.16.1~), libsystemd-dev | libsystemd-journal-dev,
+ libnl-genl-3-dev [linux-any], libnl-route-3-dev [linux-any], asciidoctor,
+ cmake (>= 3.5) | cmake3, libsbc-dev, libnghttp2-dev, libnghttp3-dev,
+ libssh-gcrypt-dev,
+ liblz4-dev, libsnappy-dev, libzstd-dev, libspandsp-dev, libxml2-dev, libbrotli-dev,
+ libspeexdsp-dev
+Build-Conflicts: libsnmp4.2-dev, libsnmp-dev
+Vcs-Git: https://salsa.debian.org/debian/wireshark -b debian/master
+Vcs-Browser: https://salsa.debian.org/debian/wireshark.git
+Homepage: https://www.wireshark.org/
+
+Package: wireshark-common
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, libwireshark17 (>= ${binary:Version}),
+ libwiretap14 (>= ${binary:Version}), debconf, libcap2-bin [linux-any]
+Recommends: wireshark (>= ${binary:Version}) | tshark (>= ${binary:Version})
+Breaks: wireshark (<< 2.0.0~),
+ wireshark-gtk (<< 3.0.0),
+ wireshark-qt (<< 2.0.0~rc3+g841d5e1)
+Replaces: wireshark (<< 2.0.0~),
+ wireshark-qt (<< 2.0.0~rc3+g841d5e1)
+Description: network traffic analyzer - common files
+ Wireshark is a network "sniffer" - a tool that captures and analyzes
+ packets off the wire. Wireshark can decode too many protocols to list
+ here.
+ .
+ This package provides files common to both wireshark and tshark
+ (the console version).
+
+Package: wireshark
+Architecture: any
+Depends: wireshark-qt (= ${binary:Version}), ${misc:Depends}
+Description: network traffic analyzer - meta-package
+ Wireshark is a network "sniffer" - a tool that captures and analyzes
+ packets off the wire. Wireshark can decode too many protocols to list
+ here.
+ .
+ This is a meta-package for Wireshark.
+
+Package: wireshark-qt
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, wireshark-common (= ${binary:Version}),
+ libqt5svg5
+Recommends: libqt5multimedia5-plugins
+Replaces: wireshark (<< 2.0.0~), wireshark-gtk (<< 3.0.0~)
+Breaks: wireshark (<< 2.0.0~), wireshark-gtk (<< 3.0.0~)
+Description: network traffic analyzer - Qt version
+ Wireshark is a network "sniffer" - a tool that captures and analyzes
+ packets off the wire. Wireshark can decode too many protocols to list
+ here.
+ .
+ This package provides the Qt version of Wireshark.
+
+Package: tshark
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, wireshark-common (= ${binary:Version})
+Description: network traffic analyzer - console version
+ Wireshark is a network "sniffer" - a tool that captures and analyzes
+ packets off the wire. Wireshark can decode too many protocols to list
+ here.
+ .
+ This package provides the console version of wireshark, named
+ "tshark".
+
+Package: wireshark-dev
+Architecture: any
+Section: devel
+Depends: ${misc:Depends}, omniidl (>= 4.0.1-2), libpcap0.8-dev,
+ libglib2.0-dev, python3:any, python3-ply, snacc,
+ libwireshark-dev, libwiretap-dev
+Description: network traffic analyzer - development tools
+ Wireshark is a network "sniffer" - a tool that captures and analyzes
+ packets off the wire. Wireshark can decode too many protocols to list
+ here.
+ .
+ This package provides idl2wrs and other files necessary for developing
+ new packet dissectors.
+
+Package: wireshark-dbg
+Architecture: any
+Section: debug
+Depends: ${misc:Depends}, wireshark-common (= ${binary:Version}) | wireshark (= ${binary:Version}) | tshark (= ${binary:Version})
+Description: network traffic analyzer - debug symbols
+ Wireshark is a network "sniffer" - a tool that captures and analyzes
+ packets off the wire. Wireshark can decode too many protocols to list
+ here.
+ .
+ This package contains stripped debugging symbols for all Wireshark
+ programs and libraries.
+
+Package: wireshark-doc
+Architecture: all
+Multi-Arch: foreign
+Section: doc
+Depends: ${misc:Depends}
+Description: network traffic analyzer - documentation
+ Wireshark is a network "sniffer" - a tool that captures and analyzes
+ packets off the wire. Wireshark can decode too many protocols to list
+ here.
+ .
+ This package contains Wireshark User's guide, Wireshark Developer's Guide
+ and the Lua Reference.
+
+Package: libwireshark17
+Section: libs
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, libwireshark-data (>= ${source:Version}),
+ libwsutil15 (>= ${source:Version})
+Suggests: wireshark-doc (>= ${source:Version})
+Description: network packet dissection library -- shared library
+ The libwireshark library provides the network packet dissection services
+ developed by the Wireshark project.
+
+Package: libwsutil15
+Section: libs
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: network packet dissection utilities library -- shared library
+ The libwsutil library provides utility functions for libwireshark17.
+
+Package: libwsutil-dev
+Section: libdevel
+Architecture: any
+Depends: ${misc:Depends} , libwsutil15 (= ${binary:Version})
+Breaks: libwireshark-dev (<< 3.7.0~)
+Replaces: libwireshark-dev (<< 3.7.0~)
+Description: network packet dissection utilities library -- development files
+ The libwsutil library provides utility functions for libwireshark6.
+ .
+ This package contains the static library and the C header files that are
+ needed for applications to use the libwsutil library.
+
+Package: libwireshark-data
+Section: libs
+Architecture: all
+Multi-Arch: foreign
+Depends: ${misc:Depends}
+#Recommends: geoip-database-contrib # Only includes legacy?
+Suggests: snmp-mibs-downloader
+Description: network packet dissection library -- data files
+ The libwireshark library provides the network packet dissection services
+ developed by the Wireshark project.
+ .
+ This package contains the platform independent files.
+
+Package: libwireshark-dev
+Section: libdevel
+Depends: ${misc:Depends}, libwsutil-dev, libwiretap-dev,
+ libwireshark17 (= ${binary:Version})
+Architecture: any
+Description: network packet dissection library -- development files
+ The "libwireshark" library provides the network packet dissection services
+ developed by the Wireshark project.
+ .
+ This package contains the static library and the C header files that are
+ needed for applications to use libwireshark services.
+
+Package: libwiretap14
+Section: libs
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: network packet capture library -- shared library
+ Wiretap, part of the Wireshark project, is a library that allows one to
+ read and write several packet capture file formats.
+ .
+ Supported formats are:
+ * Libpcap
+ * Sniffer
+ * LANalyzer
+ * Network Monitor
+ * "snoop"
+ * "iptrace"
+ * Sniffer Basic (NetXRay)/Windows Sniffer Pro
+ * RADCOM WAN/LAN Analyzers
+ * Lucent/Ascend access products
+ * HP-UX nettl
+ * Toshiba ISDN Router
+ * ISDN4BSD "i4btrace" utility
+ * Cisco Secure Intrusion Detection System iplogging facility
+ * pppd logs (pppdump-format files)
+ * VMS TCPTRACE
+ * DBS Etherwatch (text format)
+ * Catapult DCT2000 (.out files)
+ .
+ Wiretap's shortcomings are: no filter capability and no support for packet
+ capture.
+
+Package: libwiretap-dev
+Section: libdevel
+Depends: ${misc:Depends}, libwsutil-dev, libwiretap14 (= ${binary:Version})
+Architecture: any
+Description: network packet capture library -- development files
+ Wiretap, part of the Wireshark project, is a library that allows one to
+ read and write several packet capture file formats.
+ .
+ Supported formats are:
+ * Libpcap
+ * Sniffer
+ * LANalyzer
+ * Network Monitor
+ * "snoop"
+ * "iptrace"
+ * Sniffer Basic (NetXRay)/Windows Sniffer Pro
+ * RADCOM WAN/LAN Analyzers
+ * Lucent/Ascend access products
+ * HP-UX nettl
+ * Toshiba ISDN Router
+ * ISDN4BSD "i4btrace" utility
+ * Cisco Secure Intrusion Detection System iplogging facility
+ * pppd logs (pppdump-format files)
+ * VMS TCPTRACE
+ * DBS Etherwatch (text format)
+ * Catapult DCT2000 (.out files)
+ .
+ Wiretap's shortcomings are: no filter capability and no support for packet
+ capture.
+ .
+ This package contains the static library and the C header files.
diff --git a/packaging/debian/copyright b/packaging/debian/copyright
new file mode 100644
index 0000000..b036927
--- /dev/null
+++ b/packaging/debian/copyright
@@ -0,0 +1,258 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Wireshark
+Source: https://www.wireshark.org/
+Files-Excluded: debian
+
+Files: *
+Copyright: Gerald Combs <gerald@wireshark.org> and contributors
+Comment: Wireshark and the "fin" logo are trademarks of Gerald Combs.
+License: GPL-2+
+
+Files: debian/*
+ packaging/debian/*
+Copyright: 1998-2008 Frederic Peters <fpeters@debian.org>
+ 2005-2009 Joost Yervante Damad <andete@debian.org>
+ 2009-2017 Balint Reczey <balint@balintreczey.hu>
+ 2017- Balint Reczey <balint.reczey@canonical.com>
+License: GPL-2+
+
+Files: wsutil/g711.c:
+Copyright: Sun Microsystems, Inc.
+License: public-domain
+ This source code is a product of Sun Microsystems, Inc. and is provided
+ for unrestricted use. Users may copy or modify this source code without
+ charge.
+ .
+ SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
+ THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ .
+ Sun source code is provided with no support and without any obligation on
+ the part of Sun Microsystems, Inc. to assist in its use, correction,
+ modification or enhancement.
+ .
+ SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
+ INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
+ OR ANY PART THEREOF.
+ .
+ In no event will Sun Microsystems, Inc. be liable for any lost revenue
+ or profits or other special, indirect and consequential damages, even if
+ Sun has been advised of the possibility of such damages.
+ .
+ Sun Microsystems, Inc.
+ 2550 Garcia Avenue
+ Mountain View, California 94043
+
+Files: wsutil/strptime.c
+Copyright: 1991, 1992, 1996, 1998 Free Software Foundation, Inc.
+Comment: Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996
+License: LGPL-2+
+
+Files: tools/lemon/lempar.c
+Copyright: 1991-1995 by D. Richard Hipp.
+License: LGPL-2+
+
+Files: epan/except.c
+Copyright: 1999 Kaz Kylheku <kaz@ashi.footprints.net>
+License: FSL-Kaz
+ Free Software License:
+ .
+ All rights are reserved by the author, with the following exceptions:
+ Permission is granted to freely reproduce and distribute this software,
+ possibly in exchange for a fee, provided that this copyright notice appears
+ intact. Permission is also granted to adapt this software to produce
+ derivative works, as long as the modified versions carry this copyright
+ notice and additional notices stating that the work has been modified.
+ This source code may be translated into executable form and incorporated
+ into proprietary software; there is no requirement for such software to
+ contain a copyright notice related to this source.
+
+Files: epan/in_cksum.c
+Copyright: 1988, 1992, 1993 The Regents of the University of California.
+License: BSD-3-clause
+ All rights reserved.
+ .
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+Files: epan/dissectors/packet-enc.c
+ epan/dissectors/packet-etherip.c
+ epan/dissectors/packet-ipsec-udp.c
+Copyright: 2003 Markus Friedl
+License: BSD-2-clause
+
+Files: epan/dissectors/packet-pflog.c
+Copyright: 2001 Mike Frantzen
+License: BSD-2-clause-no-conditions
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ .
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ with the distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+Files: wiretap/erf.c
+ wiretap/erf.h
+Copyright: 2003 Endace Technology Ltd, Hamilton, New Zealand.
+License: BSD-3-clause-Endance
+ This software and documentation has been developed by Endace Technology Ltd.
+ along with the DAG PCI network capture cards. For further information please
+ visit https://www.endace.com/.
+ .
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ .
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ .
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ .
+ 3. The name of Endace Technology Ltd may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY ENDACE TECHNOLOGY LTD ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ EVENT SHALL ENDACE TECHNOLOGY LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+Files: wiretap/i4b_trace.h
+Copyright: 1997, 1999 Hellmuth Michaelis
+License: BSD-2-clause
+
+Files: epan/dissectors/pidl/rfr/rfr.idl
+ epan/dissectors/pidl/mapi/mapi.idl
+Copyright: 2008 Julien Kerihuel, OpenChange Project
+Comment: Note that those are interface definitions thus are not copyrightable
+ in FSF's view
+ http://lkml.iu.edu//hypermail/linux/kernel/0301.1/0362.html
+License: GPL-3+
+
+Files: tools/pidl/idl.yp
+Copyright: Andrew Tridgell <tridge@samba.org>
+License: GPL-3+
+
+License: BSD-2-clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+License: GPL-2+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 dated June, 1991, or (at
+ your option) any later version.
+ .
+ On Debian systems, the complete text of version 2 of the GNU General
+ Public License can be found in '/usr/share/common-licenses/GPL-2'.
+
+License: GPL-3+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+ .
+ On Debian systems, the full text of the
+ GNU General Public License version 3 can be found in the file
+ `/usr/share/common-licenses/GPL-3'.
+
+License: ISC
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+ ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+ CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ SOFTWARE.
+
+License: LGPL-2+
+ Copyright (C) 1991, 1992, 1996, 1998 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ .
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+ .
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+ .
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301, USA.
diff --git a/packaging/debian/dirs b/packaging/debian/dirs
new file mode 100644
index 0000000..33ab0f0
--- /dev/null
+++ b/packaging/debian/dirs
@@ -0,0 +1,5 @@
+etc/wireshark
+usr/bin
+usr/share/icons/hicolor/48x48/apps
+usr/share/icons/hicolor/scalable/apps
+usr/share/wireshark
diff --git a/packaging/debian/ethereal-common.NEWS b/packaging/debian/ethereal-common.NEWS
new file mode 100644
index 0000000..7f51a50
--- /dev/null
+++ b/packaging/debian/ethereal-common.NEWS
@@ -0,0 +1,13 @@
+wireshark (0.99.2-1) unstable; urgency=low
+
+ Same developers, same code, different name. The Ethereal network protocol
+ analyzer has changed its name to Wireshark.
+
+ Name changes:
+ - ethereal -> wireshark
+ - tethereal -> tshark
+ - idl2eth -> idl2wrs
+
+ See https://www.wireshark.org/news/20060607.html for more information.
+
+ -- Frederic Peters <fpeters@debian.org> Thu, 12 Oct 2006 15:35:25 +0200
diff --git a/packaging/debian/headers-check.c b/packaging/debian/headers-check.c
new file mode 100644
index 0000000..9ed391a
--- /dev/null
+++ b/packaging/debian/headers-check.c
@@ -0,0 +1,16 @@
+/* headers-check.c
+ *
+ * Test program to ensure all required headers are in the debian package,
+ * by Laszio <ezerotven@gmail.com>.
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include <epan/stats_tree.h>
+#include <epan/packet.h>
+#include <epan/prefs.h>
+
diff --git a/packaging/debian/libwireshark-data.install b/packaging/debian/libwireshark-data.install
new file mode 100644
index 0000000..84ff33b
--- /dev/null
+++ b/packaging/debian/libwireshark-data.install
@@ -0,0 +1,3 @@
+usr/share/wireshark/*
+usr/share/doc/wireshark/*
+packaging/debian/maxmind_db_paths /usr/share/wireshark
diff --git a/packaging/debian/libwireshark-dev.install b/packaging/debian/libwireshark-dev.install
new file mode 100644
index 0000000..2f66087
--- /dev/null
+++ b/packaging/debian/libwireshark-dev.install
@@ -0,0 +1,4 @@
+usr/lib/*/libwireshark.so
+usr/lib/*/pkgconfig/wireshark.pc
+usr/lib/*/cmake/wireshark/*.cmake
+usr/include/wireshark/epan/*
diff --git a/packaging/debian/libwireshark17.install b/packaging/debian/libwireshark17.install
new file mode 100644
index 0000000..b31df7d
--- /dev/null
+++ b/packaging/debian/libwireshark17.install
@@ -0,0 +1,3 @@
+usr/lib/*/libwireshark.so.*
+usr/lib/*/wireshark/plugins/*/codecs/*.so
+usr/lib/*/wireshark/plugins/*/epan/*.so
diff --git a/packaging/debian/libwireshark17.lintian-overrides b/packaging/debian/libwireshark17.lintian-overrides
new file mode 100644
index 0000000..323cd34
--- /dev/null
+++ b/packaging/debian/libwireshark17.lintian-overrides
@@ -0,0 +1,12 @@
+# from file-elf.c
+libwireshark17: spelling-error-in-binary Synopsys Synopsis [usr/lib/x86_64-linux-gnu/libwireshark.so.17.0.0]
+
+# Proper names or typos directly from IANA enterprise-numbers (epan/enterprises.c)
+libwireshark17: spelling-error-in-binary Nam Name [usr/lib/x86_64-linux-gnu/libwireshark.so.17.0.0]
+libwireshark17: spelling-error-in-binary Informations Information [usr/lib/x86_64-linux-gnu/libwireshark.so.17.0.0]
+libwireshark17: spelling-error-in-binary Dont Don't [usr/lib/x86_64-linux-gnu/libwireshark.so.17.0.0]
+libwireshark17: spelling-error-in-binary Transmittion Transmission [usr/lib/x86_64-linux-gnu/libwireshark.so.17.0.0]
+libwireshark17: spelling-error-in-binary VERION VERSION [usr/lib/x86_64-linux-gnu/libwireshark.so.17.0.0]
+
+# Embedding the manuf data from CSV files into static C arrays isn't static linkage
+libwireshark17: embedded-library ieee-data [usr/lib/x86_64-linux-gnu/libwireshark.so.17.0.0]
diff --git a/packaging/debian/libwireshark17.symbols b/packaging/debian/libwireshark17.symbols
new file mode 100644
index 0000000..035399c
--- /dev/null
+++ b/packaging/debian/libwireshark17.symbols
@@ -0,0 +1,2195 @@
+libwireshark.so.17 libwireshark17 #MINVER#
+ AdmissionRejectReason_vals@Base 1.9.1
+ BandRejectReason_vals@Base 1.9.1
+ CommandCode_vals_ext@Base 1.9.1
+ DisengageReason_vals@Base 1.9.1
+ DisengageRejectReason_vals@Base 1.9.1
+ Dot11DecryptDestroyContext@Base 2.5.0
+ Dot11DecryptInitContext@Base 2.5.0
+ FacilityReason_vals@Base 1.9.1
+ GatekeeperRejectReason_vals@Base 1.9.1
+ IA5_7BIT_decode@Base 1.9.1
+ InfoRequestNakReason_vals@Base 1.9.1
+ LocationRejectReason_vals@Base 1.9.1
+ RegistrationRejectReason_vals@Base 1.9.1
+ T_h323_message_body_vals@Base 1.9.1
+ UnregRejectReason_vals@Base 1.9.1
+ UnregRequestReason_vals@Base 1.9.1
+ _try_val64_to_str_ext_init@Base 2.9.0
+ _try_val_to_str_ext_init@Base 1.9.1
+ abs_time_secs_to_str_ex@Base 3.7.0
+ abs_time_to_str_ex@Base 3.7.0
+ add_ber_encoded_label@Base 3.7.0
+ add_conversation_filter_protocol@Base 3.7.0
+ add_conversation_table_data@Base 2.5.0
+ add_conversation_table_data_with_conv_id@Base 2.5.0
+ add_endpoint_table_data@Base 4.0.0-rc2
+ add_hostlist_table_data@Base 2.5.0
+ add_hosts_file@Base 1.9.1
+ add_ip_name_from_string@Base 1.9.1
+ add_ipv4_name@Base 1.9.1
+ add_ipv6_name@Base 1.9.1
+ add_itu_tcap_subdissector@Base 1.9.1
+ add_new_data_source@Base 1.9.1
+ add_per_encoded_label@Base 3.7.0
+ add_srt_table_data@Base 1.99.8
+ additional_bytes_expected_to_complete_reassembly@Base 4.1.0
+ address_to_bytes@Base 2.1.1
+ address_to_display@Base 1.99.2
+ address_to_name@Base 2.1.0
+ address_to_str@Base 1.12.0~rc1
+ address_to_str_buf@Base 1.9.1
+ address_type_dissector_register@Base 2.0.0
+ address_type_get_by_name@Base 2.1.0
+ address_with_resolution_to_str@Base 1.99.3
+ addresses_ports_reassembly_table_functions@Base 1.9.1
+ addresses_reassembly_table_functions@Base 1.9.1
+ analyze_q708_ispc@Base 1.9.1
+ ansi_a_bsmap_strings@Base 1.9.1
+ ansi_a_dtap_strings@Base 1.9.1
+ ansi_a_elem_1_strings@Base 1.9.1
+ ansi_a_ios401_bsmap_strings@Base 1.9.1
+ ansi_a_ios401_dtap_strings@Base 1.9.1
+ ansi_a_ios501_bsmap_strings@Base 1.9.1
+ ansi_a_ios501_dtap_strings@Base 1.9.1
+ ansi_a_ms_info_rec_num_plan_vals@Base 1.12.0~rc1
+ ansi_a_ms_info_rec_num_type_vals@Base 1.12.0~rc1
+ ansi_map_opr_code_strings@Base 1.9.1
+ ansi_tsb58_encoding_vals@Base 1.12.0~rc1
+ ansi_tsb58_language_ind_vals@Base 1.12.0~rc1
+ ansi_tsb58_language_ind_vals_ext@Base 1.12.0~rc1
+ ansi_tsb58_srvc_cat_vals@Base 1.12.0~rc1
+ ansi_tsb58_srvc_cat_vals_ext@Base 1.12.0~rc1
+ asn1_ctx_init@Base 1.9.1
+ attributes_page_vals_ext@Base 1.12.0~rc1
+ ber_decode_as_foreach@Base 1.9.1
+ bluetooth_company_id_vals_ext@Base 1.99.6
+ bluetooth_gatt_has_no_parameter@Base 2.1.0
+ bluetooth_uuid_vals@Base 1.99.2
+ bluetooth_uuid_vals_ext@Base 1.99.2
+ bluetooth_uuids@Base 2.1.0
+ bp_block_canonical_new@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_block_primary_free@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_block_primary_new@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_bundle_free@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_bundle_ident_equal@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_bundle_ident_free@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_bundle_ident_hash@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_bundle_ident_new@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_bundle_new@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_creation_ts_compare@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_eid_equal@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_eid_free@Base 3.5.1rc0-3265-gb0c69d7db316
+ bp_eid_new@Base 3.5.1rc0-3265-gb0c69d7db316
+ bpsec_id_equal@Base 3.5.1rc0-3265-gb0c69d7db316
+ bpsec_id_free@Base 3.5.1rc0-3265-gb0c69d7db316
+ bpsec_id_hash@Base 3.5.1rc0-3265-gb0c69d7db316
+ bpsec_id_new@Base 3.5.1rc0-3265-gb0c69d7db316
+ bssgp_cause_vals_ext@Base 1.9.1
+ bthci_cmd_authentication_enable_values@Base 2.1.2
+ bthci_cmd_encrypt_mode_vals@Base 2.1.2
+ bthci_cmd_inq_modes@Base 2.1.2
+ bthci_cmd_scan_enable_values@Base 2.1.2
+ bthci_evt_hci_version@Base 1.99.6
+ bthci_evt_lmp_version@Base 1.99.6
+ build_column_format_array@Base 1.9.1
+ byte_array_dup@Base 1.9.1
+ byte_array_equal@Base 1.9.1
+ bytesprefix_to_str@Base 2.3.0
+ bytesval_to_str@Base 2.3.0
+ call_ber_oid_callback@Base 1.9.1
+ call_capture_dissector@Base 2.3.0
+ call_data_dissector@Base 2.1.0
+ call_dissector@Base 1.9.1
+ call_dissector_only@Base 1.9.1
+ call_dissector_with_data@Base 1.9.1
+ call_heur_dissector_direct@Base 1.12.0~rc1
+ call_per_oid_callback@Base 1.99.1
+ camelSRTtype_naming@Base 1.9.1
+ camel_opr_code_strings@Base 1.9.1
+ capture_dissector_add_uint@Base 2.3.0
+ capture_dissector_get_count@Base 2.1.0
+ capture_dissector_increment_count@Base 2.1.0
+ char_val_to_str@Base 4.1.0
+ chunk_type_values@Base 2.1.0
+ col_add_fstr@Base 1.9.1
+ col_add_lstr@Base 1.12.0~rc1
+ col_add_str@Base 1.9.1
+ col_append_frame_number@Base 2.5.1
+ col_append_fstr@Base 1.9.1
+ col_append_lstr@Base 1.99.0
+ col_append_ports@Base 2.1.0
+ col_append_sep_fstr@Base 1.9.1
+ col_append_sep_str@Base 1.9.1
+ col_append_str@Base 1.9.1
+ col_append_str_uint@Base 2.0.0
+ col_based_on_frame_data@Base 1.9.1
+ col_cleanup@Base 1.9.1
+ col_clear@Base 1.9.1
+ col_clear_fence@Base 1.12.0~rc1
+ col_custom_get_filter@Base 4.1.0
+ col_custom_prime_edt@Base 1.9.1
+ col_data_changed@Base 2.5.1
+ col_fill_in@Base 1.9.1
+ col_fill_in_error@Base 1.9.1
+ col_fill_in_frame_data@Base 1.9.1
+ col_finalize@Base 2.5.0
+ col_format_abbrev@Base 4.1.0
+ col_format_desc@Base 1.9.1
+ col_format_to_string@Base 1.9.1
+ col_get_text@Base 2.0.0
+ col_get_writable@Base 1.9.1
+ col_has_time_fmt@Base 1.9.1
+ col_prepend_fence_fstr@Base 1.9.1
+ col_prepend_fstr@Base 1.9.1
+ col_set_fence@Base 1.9.1
+ col_set_str@Base 1.9.1
+ col_set_time@Base 1.9.1
+ col_set_writable@Base 1.9.1
+ col_setup@Base 1.9.1
+ color_filter_delete@Base 2.1.0
+ color_filter_list_delete@Base 2.1.0
+ color_filter_new@Base 2.1.0
+ color_filters_apply@Base 2.1.0
+ color_filters_cleanup@Base 2.1.0
+ color_filters_clone@Base 2.1.0
+ color_filters_colorize_packet@Base 2.1.0
+ color_filters_export@Base 2.1.0
+ color_filters_get_tmp@Base 3.3.0
+ color_filters_import@Base 2.1.0
+ color_filters_init@Base 2.1.0
+ color_filters_prime_edt@Base 2.1.0
+ color_filters_read_globals@Base 2.1.0
+ color_filters_reload@Base 2.1.0
+ color_filters_reset_tmp@Base 2.1.0
+ color_filters_set_tmp@Base 2.1.0
+ color_filters_tmp_color@Base 2.1.0
+ color_filters_use_hfid@Base 4.1.0
+ color_filters_use_proto@Base 4.1.0
+ color_filters_used@Base 2.1.0
+ color_filters_write@Base 2.1.0
+ column_dump_column_formats@Base 1.12.0~rc1
+ column_register_fields@Base 4.1.0
+ conversation_add_proto_data@Base 1.9.1
+ conversation_delete_proto_data@Base 1.9.1
+ conversation_filter_from_log@Base 3.7.0
+ conversation_filter_from_packet@Base 2.2.8
+ conversation_get_dissector@Base 2.0.0
+ conversation_get_id_from_elements@Base 4.0.0-rc2
+ conversation_get_proto_data@Base 1.9.1
+ conversation_key_addr1@Base 2.5.0
+ conversation_key_addr2@Base 2.5.0
+ conversation_key_port1@Base 2.5.0
+ conversation_key_port2@Base 2.5.0
+ conversation_new@Base 1.9.1
+ conversation_new_by_id@Base 2.5.0
+ conversation_new_full@Base 3.7.1
+ conversation_pt_to_conversation_type@Base 4.0.0-rc2
+ conversation_pt_to_endpoint_type@Base 2.5.0
+ conversation_set_addr2@Base 2.6.3
+ conversation_set_conv_addr_port_endpoints@Base 4.0.0-rc2
+ conversation_set_dissector@Base 1.9.1
+ conversation_set_dissector_from_frame_number@Base 2.0.0
+ conversation_set_elements_by_id@Base 4.0.0-rc2
+ conversation_set_port2@Base 2.6.3
+ conversation_table_get_num@Base 1.99.0
+ conversation_table_iterate_tables@Base 1.99.0
+ conversation_table_set_gui_info@Base 1.99.0
+ convert_string_case@Base 1.9.1
+ convert_string_to_hex@Base 1.9.1
+ crc16_0x3D65_tvb_offset_seed@Base 1.99.0
+ crc16_0x9949_tvb_offset_seed@Base 1.12.0~rc1
+ crc16_ccitt_tvb@Base 1.9.1
+ crc16_ccitt_tvb_offset@Base 1.9.1
+ crc16_ccitt_tvb_offset_seed@Base 1.9.1
+ crc16_ccitt_tvb_seed@Base 1.9.1
+ crc16_iso14443a_tvb_offset@Base 2.1.0
+ crc16_plain_tvb_offset@Base 1.9.1
+ crc16_plain_tvb_offset_seed@Base 1.9.1
+ crc16_r3_ccitt_tvb@Base 1.99.3
+ crc16_usb_tvb_offset@Base 3.1.0
+ crc16_x25_ccitt_tvb@Base 1.9.1
+ crc32_0x0AA725CF_tvb_offset_seed@Base 1.12.0~rc1
+ crc32_802_tvb@Base 1.9.1
+ crc32_ccitt_tvb@Base 1.9.1
+ crc32_ccitt_tvb_offset@Base 1.9.1
+ crc32_ccitt_tvb_offset_seed@Base 1.9.1
+ crc32_ccitt_tvb_seed@Base 1.9.1
+ crc32_mpeg2_tvb@Base 1.9.1
+ crc32_mpeg2_tvb_offset@Base 1.9.1
+ crc32_mpeg2_tvb_offset_seed@Base 1.9.1
+ crc32_mpeg2_tvb_seed@Base 1.9.1
+ crc32c_tvb_offset_calculate@Base 1.99.0
+ crc6_compute_tvb@Base 1.99.0
+ create_capture_dissector_handle@Base 2.3.0
+ create_dissector_handle@Base 2.1.0
+ create_dissector_handle_with_data@Base 4.1.0
+ create_dissector_handle_with_name@Base 2.1.0
+ create_dissector_handle_with_name_and_description@Base 4.0.0-rc2
+ dcerpc_get_proto_hf_opnum@Base 2.1.0
+ dcerpc_get_proto_name@Base 1.9.1
+ dcerpc_get_proto_sub_dissector@Base 1.9.1
+ dcerpc_get_transport_salt@Base 1.9.1
+ dcerpc_init_uuid@Base 1.9.1
+ dcerpc_set_transport_salt@Base 1.12.0~rc1
+ dcerpc_uuids@Base 1.9.1
+ dcom_hresult_vals@Base 1.9.1
+ dcom_interface_find@Base 1.9.1
+ dcom_interface_new@Base 1.9.1
+ dcom_prefs_display_unmarshalling_details@Base 1.9.1
+ dcom_variant_type_vals@Base 1.9.1
+ de_cell_id@Base 1.9.1
+ de_d_gb_call_ref@Base 1.9.1
+ de_gmm_drx_param@Base 1.9.1
+ de_gmm_ms_net_cap@Base 1.9.1
+ de_gmm_ms_radio_acc_cap@Base 1.9.1
+ de_gmm_rai@Base 1.9.1
+ de_lai@Base 1.9.1
+ de_mid@Base 1.9.1
+ de_ms_cm_1@Base 1.9.1
+ de_ms_cm_2@Base 1.9.1
+ de_ms_cm_3@Base 1.9.1
+ de_rej_cause@Base 1.9.1
+ de_rr_cause@Base 1.9.1
+ de_rr_cell_dsc@Base 1.9.1
+ de_rr_ch_dsc@Base 1.9.1
+ de_rr_ch_mode@Base 1.9.1
+ de_rr_chnl_needed@Base 1.9.1
+ de_rr_cip_mode_set@Base 1.9.1
+ de_rr_cm_enq_mask@Base 1.9.1
+ de_rr_multirate_conf@Base 1.9.1
+ de_rr_sus_cau@Base 1.9.1
+ de_rr_tlli@Base 1.9.1
+ de_sm_apn@Base 1.9.1
+ de_sm_pflow_id@Base 1.9.1
+ de_sm_qos@Base 1.9.1
+ decode_as_default_change@Base 1.12.0~rc1
+ decode_as_default_populate_list@Base 1.12.0~rc1
+ decode_as_default_reset@Base 1.12.0~rc1
+ decode_as_list@Base 1.12.0~rc1
+ decode_bits_in_field@Base 1.9.1
+ decode_build_reset_list@Base 2.3.0
+ decode_cleanup@Base 3.3.0
+ decode_clear_all@Base 2.3.0
+ decode_dcerpc_add_show_list@Base 1.12.0~rc1
+ decode_dcerpc_reset_all@Base 1.12.0~rc1
+ decode_tcp_ports@Base 1.99.0
+ decode_udp_ports@Base 1.99.0
+ decode_zcl_time_in_100ms@Base 2.5.2
+ decode_zcl_time_in_minutes@Base 2.5.2
+ decode_zcl_time_in_seconds@Base 2.5.2
+ delete_itu_tcap_subdissector@Base 1.9.1
+ deregister_depend_dissector@Base 2.1.0
+ destroy_print_stream@Base 1.12.0~rc1
+ df_error_free@Base 4.1.0
+ dfilter_apply_edt@Base 1.9.1
+ dfilter_compile_full@Base 4.1.0
+ dfilter_deprecated_tokens@Base 1.9.1
+ dfilter_dump@Base 1.9.1
+ dfilter_expand@Base 3.7.0
+ dfilter_free@Base 1.9.1
+ dfilter_get_warnings@Base 4.1.0
+ dfilter_load_field_references@Base 3.7.0
+ dfilter_load_field_references_edt@Base 4.1.0
+ dfilter_log_full@Base 3.7.0
+ dfilter_macro_get_uat@Base 1.9.1
+ dfilter_requires_columns@Base 4.1.0
+ dfilter_syntax_tree@Base 3.7.0
+ dfilter_text@Base 3.7.0
+ disable_name_resolution@Base 1.99.9
+ dissect_IDispatch_GetIDsOfNames_resp@Base 1.9.1
+ dissect_IDispatch_GetIDsOfNames_rqst@Base 1.9.1
+ dissect_IDispatch_GetTypeInfoCount_resp@Base 1.9.1
+ dissect_IDispatch_GetTypeInfo_resp@Base 1.9.1
+ dissect_IDispatch_GetTypeInfo_rqst@Base 1.9.1
+ dissect_IDispatch_Invoke_resp@Base 1.9.1
+ dissect_IDispatch_Invoke_rqst@Base 1.9.1
+ dissect_a21_ie_common@Base 1.99.1
+ dissect_ber_EmbeddedPDV_Type@Base 1.9.1
+ dissect_ber_GeneralizedTime@Base 1.9.1
+ dissect_ber_UTCTime@Base 1.9.1
+ dissect_ber_bitstring@Base 1.9.1
+ dissect_ber_boolean@Base 1.9.1
+ dissect_ber_choice@Base 1.9.1
+ dissect_ber_identifier@Base 1.9.1
+ dissect_ber_integer64@Base 1.9.1
+ dissect_ber_integer@Base 1.9.1
+ dissect_ber_length@Base 1.9.1
+ dissect_ber_null@Base 1.9.1
+ dissect_ber_object_identifier@Base 1.9.1
+ dissect_ber_object_identifier_str@Base 1.9.1
+ dissect_ber_octet_string@Base 1.9.1
+ dissect_ber_octet_string_with_encoding@Base 3.0.3
+ dissect_ber_real@Base 1.99.2
+ dissect_ber_relative_oid@Base 1.12.0~rc1
+ dissect_ber_relative_oid_str@Base 1.12.0~rc1
+ dissect_ber_restricted_string@Base 1.9.1
+ dissect_ber_sequence@Base 1.9.1
+ dissect_ber_sequence_of@Base 1.9.1
+ dissect_ber_set@Base 1.9.1
+ dissect_ber_set_of@Base 1.9.1
+ dissect_ber_tagged_type@Base 1.9.1
+ dissect_bluetooth_common@Base 3.7.0
+ dissect_dap_SecurityParameters@Base 1.9.1
+ dissect_dcerpc_char@Base 2.3.0
+ dissect_dcerpc_uint16@Base 1.9.1
+ dissect_dcerpc_uint32@Base 1.9.1
+ dissect_dcerpc_uint64@Base 1.9.1
+ dissect_dcerpc_uint8@Base 1.9.1
+ dissect_dcerpc_uuid_t@Base 1.9.1
+ dissect_dcom_BSTR@Base 1.9.1
+ dissect_dcom_HRESULT@Base 1.9.1
+ dissect_dcom_HRESULT_item@Base 1.9.1
+ dissect_dcom_LPWSTR@Base 1.9.1
+ dissect_dcom_MInterfacePointer@Base 1.9.1
+ dissect_dcom_PMInterfacePointer@Base 1.9.1
+ dissect_dcom_SAFEARRAY@Base 1.9.1
+ dissect_dcom_UUID@Base 1.99.8
+ dissect_dcom_VARIANT@Base 1.9.1
+ dissect_dcom_VARTYPE@Base 1.9.1
+ dissect_dcom_append_UUID@Base 1.99.8
+ dissect_dcom_dcerpc_array_size@Base 1.9.1
+ dissect_dcom_dcerpc_pointer@Base 1.9.1
+ dissect_dcom_indexed_DWORD@Base 1.9.1
+ dissect_dcom_indexed_HRESULT@Base 1.9.1
+ dissect_dcom_indexed_LPWSTR@Base 1.9.1
+ dissect_dcom_simple_resp@Base 1.9.1
+ dissect_dcom_simple_rqst@Base 1.9.1
+ dissect_dcom_that@Base 1.9.1
+ dissect_dcom_this@Base 1.9.1
+ dissect_dsp_AccessPointInformation@Base 1.9.1
+ dissect_e164_cc@Base 1.9.1
+ dissect_e164_isdn@Base 3.7.0
+ dissect_e164_msisdn@Base 1.99.0
+ dissect_e212_imsi@Base 1.99.0
+ dissect_e212_mcc_mnc@Base 1.9.1
+ dissect_e212_mcc_mnc_in_address@Base 1.9.1
+ dissect_e212_mcc_mnc_in_utf8_address@Base 2.3.0
+ dissect_e212_utf8_imsi@Base 1.99.0
+ dissect_gsm_map_GlobalCellId@Base 1.9.1
+ dissect_gsm_map_IMSI@Base 1.9.1
+ dissect_gsm_map_ISDN_AddressString@Base 1.9.1
+ dissect_gsm_map_lcs_Ext_GeographicalInformation@Base 1.9.1
+ dissect_h225_RasMessage@Base 1.9.1
+ dissect_h225_ReleaseCompleteReason@Base 1.9.1
+ dissect_h245_H223Capability@Base 1.9.1
+ dissect_http2_settings_ext@Base 3.5.0
+ dissect_isup_called_party_number_parameter@Base 1.9.1
+ dissect_isup_calling_geodetic_location_parameter@Base 3.1.0
+ dissect_isup_calling_party_number_parameter@Base 1.9.1
+ dissect_isup_original_called_number_parameter@Base 1.9.1
+ dissect_isup_redirecting_number_parameter@Base 1.9.1
+ dissect_isup_redirection_information_parameter@Base 1.9.1
+ dissect_mscldap_string@Base 1.9.1
+ dissect_ndr_double@Base 1.9.1
+ dissect_ndr_duint32@Base 1.9.1
+ dissect_ndr_float@Base 1.99.8
+ dissect_ndr_nt_NTTIME@Base 1.99.8
+ dissect_ndr_time_t@Base 1.99.8
+ dissect_ndr_uint1632@Base 1.9.1
+ dissect_ndr_uint16@Base 1.9.1
+ dissect_ndr_uint3264@Base 1.9.1
+ dissect_ndr_uint32@Base 1.9.1
+ dissect_ndr_uint64@Base 1.99.8
+ dissect_ndr_uint8@Base 1.9.1
+ dissect_ndr_uuid_t@Base 1.9.1
+ dissect_nt_64bit_time@Base 1.9.1
+ dissect_nt_64bit_time_ex@Base 1.99.0
+ dissect_nt_64bit_time_opt@Base 1.99.1
+ dissect_nt_sid@Base 1.9.1
+ dissect_oer_IA5String@Base 3.1.0
+ dissect_oer_bit_string@Base 2.9.0
+ dissect_oer_boolean@Base 3.1.0
+ dissect_oer_choice@Base 2.9.0
+ dissect_oer_constrained_integer@Base 2.9.0
+ dissect_oer_constrained_integer_64b@Base 2.9.0
+ dissect_oer_constrained_integer_64b_no_ub@Base 2.9.0
+ dissect_oer_constrained_sequence_of@Base 2.9.0
+ dissect_oer_enumerated@Base 2.9.0
+ dissect_oer_integer@Base 2.9.0
+ dissect_oer_null@Base 2.9.0
+ dissect_oer_object_identifier@Base 4.2.0
+ dissect_oer_octet_string@Base 2.9.0
+ dissect_oer_open_type@Base 4.2.0
+ dissect_oer_sequence@Base 2.9.0
+ dissect_oer_sequence_of@Base 2.9.0
+ dissect_per_BMPString@Base 1.9.1
+ dissect_per_GeneralString@Base 1.9.1
+ dissect_per_IA5String@Base 1.9.1
+ dissect_per_NumericString@Base 1.9.1
+ dissect_per_PrintableString@Base 1.9.1
+ dissect_per_VisibleString@Base 1.9.1
+ dissect_per_bit_string@Base 1.9.1
+ dissect_per_bit_string_containing_pdu_new@Base 1.9.1
+ dissect_per_boolean@Base 1.9.1
+ dissect_per_choice@Base 1.9.1
+ dissect_per_constrained_integer@Base 1.9.1
+ dissect_per_constrained_integer_64b@Base 1.9.1
+ dissect_per_constrained_sequence_of@Base 1.9.1
+ dissect_per_constrained_set_of@Base 1.9.1
+ dissect_per_enumerated@Base 1.9.1
+ dissect_per_external_type@Base 1.9.1
+ dissect_per_integer@Base 1.9.1
+ dissect_per_not_decoded_yet@Base 1.99.2
+ dissect_per_null@Base 1.9.1
+ dissect_per_object_identifier@Base 1.9.1
+ dissect_per_object_identifier_str@Base 1.9.1
+ dissect_per_octet_string@Base 1.9.1
+ dissect_per_octet_string_containing_pdu_new@Base 1.9.1
+ dissect_per_open_type@Base 1.9.1
+ dissect_per_open_type_pdu_new@Base 1.9.1
+ dissect_per_real@Base 1.9.1
+ dissect_per_relative_oid@Base 1.12.0~rc1
+ dissect_per_relative_oid_str@Base 1.12.0~rc1
+ dissect_per_restricted_character_string@Base 1.9.1
+ dissect_per_sequence@Base 1.9.1
+ dissect_per_sequence_eag@Base 1.9.1
+ dissect_per_sequence_of@Base 1.9.1
+ dissect_per_set_of@Base 1.9.1
+ dissect_q931_bearer_capability_ie@Base 1.9.1
+ dissect_q931_high_layer_compat_ie@Base 1.9.1
+ dissect_q932_Address@Base 2.5.0
+ dissect_q932_PartyNumber@Base 1.9.1
+ dissect_q932_PartySubaddress@Base 1.9.1
+ dissect_q932_PresentationAllowedIndicator@Base 2.5.0
+ dissect_q932_PresentedAddressScreened@Base 2.5.0
+ dissect_q932_PresentedAddressUnscreened@Base 2.5.0
+ dissect_q932_PresentedNumberScreened@Base 1.9.1
+ dissect_q932_PresentedNumberUnscreened@Base 1.9.1
+ dissect_q932_ScreeningIndicator@Base 2.5.0
+ dissect_qsig_Extension@Base 2.5.0
+ dissect_qsig_PSS1InformationElement@Base 2.5.0
+ dissect_qsig_na_Name@Base 1.9.1
+ dissect_rpc_array@Base 1.9.1
+ dissect_rpc_bool@Base 1.9.1
+ dissect_rpc_bytes@Base 1.9.1
+ dissect_rpc_data@Base 1.9.1
+ dissect_rpc_indir_call@Base 1.9.1
+ dissect_rpc_indir_reply@Base 1.9.1
+ dissect_rpc_list@Base 1.9.1
+ dissect_rpc_opaque_auth@Base 1.99.8
+ dissect_rpc_opaque_data@Base 1.9.1
+ dissect_rpc_string@Base 1.9.1
+ dissect_rpc_uint32@Base 1.9.1
+ dissect_rpc_uint64@Base 1.9.1
+ dissect_rpc_unknown@Base 1.99.8
+ dissect_rpc_void@Base 1.99.8
+ dissect_rtp_shim_header@Base 2.9.1
+ dissect_tcp_payload@Base 1.99.0
+ dissect_thrift_t_binary@Base 3.5.0
+ dissect_thrift_t_bool@Base 3.5.0
+ dissect_thrift_t_double@Base 3.5.0
+ dissect_thrift_t_i16@Base 3.5.0
+ dissect_thrift_t_i32@Base 2.5.0
+ dissect_thrift_t_i64@Base 2.5.1
+ dissect_thrift_t_i8@Base 3.5.0
+ dissect_thrift_t_list@Base 3.5.0
+ dissect_thrift_t_map@Base 3.5.0
+ dissect_thrift_t_set@Base 3.5.0
+ dissect_thrift_t_stop@Base 2.5.0
+ dissect_thrift_t_string@Base 3.5.0
+ dissect_thrift_t_string_enc@Base 3.5.0
+ dissect_thrift_t_struct@Base 2.5.0
+ dissect_thrift_t_uuid@Base 3.7.1
+ dissect_tpkt_encap@Base 1.9.1
+ dissect_unknown_ber@Base 1.9.1
+ dissect_xdlc_control@Base 1.9.1
+ dissect_zcl_attr_data@Base 2.5.2
+ dissector_add_custom_table_handle@Base 1.99.8
+ dissector_add_for_decode_as@Base 1.9.1
+ dissector_add_for_decode_as_with_preference@Base 2.3.0
+ dissector_add_guid@Base 2.1.0
+ dissector_add_string@Base 1.9.1
+ dissector_add_uint@Base 1.9.1
+ dissector_add_uint_range@Base 1.12.0~rc1
+ dissector_add_uint_range_with_preference@Base 2.3.0
+ dissector_add_uint_with_preference@Base 2.3.0
+ dissector_all_heur_tables_foreach_table@Base 1.9.1
+ dissector_all_tables_foreach_changed@Base 1.9.1
+ dissector_all_tables_foreach_table@Base 1.9.1
+ dissector_change_payload@Base 2.5.0
+ dissector_change_string@Base 1.9.1
+ dissector_change_uint@Base 1.9.1
+ dissector_conversation_init@Base 1.99.0
+ dissector_delete_all@Base 1.12.0~rc1
+ dissector_delete_string@Base 1.9.1
+ dissector_delete_uint@Base 1.9.1
+ dissector_delete_uint_range@Base 1.12.0~rc1
+ dissector_dump_decodes@Base 1.9.1
+ dissector_dump_dissector_tables@Base 1.99.1
+ dissector_dump_dissectors@Base 4.1.0
+ dissector_dump_heur_decodes@Base 1.9.1
+ dissector_endpoint_init@Base 4.0.0-rc2
+ dissector_get_custom_table_handle@Base 1.99.8
+ dissector_get_default_string_handle@Base 1.12.0~rc1
+ dissector_get_default_uint_handle@Base 1.12.0~rc1
+ dissector_get_guid_handle@Base 2.1.0
+ dissector_get_payload_handle@Base 3.1.0
+ dissector_get_string_handle@Base 1.9.1
+ dissector_get_uint_handle@Base 1.9.1
+ dissector_handle_get_description@Base 4.0.0-rc2
+ dissector_handle_get_dissector_name@Base 1.12.0~rc1
+ dissector_handle_get_protocol_index@Base 1.9.1
+ dissector_handle_get_protocol_long_name@Base 4.0.0-rc2
+ dissector_handle_get_protocol_short_name@Base 4.0.0-rc2
+ dissector_handle_get_short_name@Base 1.9.1
+ dissector_hostlist_init@Base 1.99.0
+ dissector_is_string_changed@Base 3.5.1
+ dissector_is_uint_changed@Base 3.5.1
+ dissector_reset_payload@Base 2.5.0
+ dissector_reset_string@Base 1.9.1
+ dissector_reset_uint@Base 1.9.1
+ dissector_table_allow_decode_as@Base 2.3.0
+ dissector_table_foreach@Base 1.9.1
+ dissector_table_foreach_handle@Base 1.9.1
+ dissector_table_get_dissector_handle@Base 2.3.0
+ dissector_table_get_dissector_handles@Base 1.12.0~rc1
+ dissector_table_get_type@Base 1.12.0~rc1
+ dissector_table_supports_decode_as@Base 3.7.2
+ dissector_try_guid@Base 2.1.0
+ dissector_try_guid_new@Base 2.1.0
+ dissector_try_heuristic@Base 1.9.1
+ dissector_try_payload@Base 2.5.0
+ dissector_try_payload_new@Base 2.5.0
+ dissector_try_string@Base 1.9.1
+ dissector_try_string_new@Base 2.5.0
+ dissector_try_uint@Base 1.9.1
+ dissector_try_uint_new@Base 1.12.0~rc1
+ dot11decrypt_ctx@Base 2.5.0
+ draw_tap_listeners@Base 1.9.1
+ dscp_short_vals_ext@Base 2.0.0
+ dscp_vals_ext@Base 1.9.1
+ dtbl_entry_get_handle@Base 1.9.1
+ dtbl_entry_get_initial_handle@Base 1.9.1
+ dtls_dissector_add@Base 2.1.0
+ dtls_dissector_delete@Base 2.1.0
+ dvb_add_chartbl@Base 1.12.0~rc1
+ dvb_analyze_string_charset@Base 1.12.0~rc1
+ dvb_enc_to_item_enc@Base 1.12.0~rc1
+ dvbci_event@Base 2.1.0
+ eap_aka_subtype_vals@Base 1.9.1
+ eap_code_vals@Base 1.9.1
+ eap_ms_chap_v2_opcode_vals@Base 1.9.1
+ eap_sim_subtype_vals@Base 1.9.1
+ eap_type_vals_ext@Base 1.9.1
+ ecn_short_vals_ext@Base 2.0.0
+ ecn_vals_ext@Base 2.0.0
+ ei_btatt_invalid_usage@Base 2.1.0
+ elem_lv@Base 1.9.1
+ elem_t@Base 1.9.1
+ elem_tlv@Base 1.9.1
+ elem_tv@Base 1.9.1
+ elem_tv_short@Base 1.9.1
+ elem_v@Base 1.9.1
+ elem_v_short@Base 1.9.1
+ enabled_protos_unsaved_changes@Base 3.7.0
+ endpoint_table_set_gui_info@Base 4.0.0-rc2
+ enterprises_base_custom@Base 2.5.0
+ enterprises_lookup@Base 2.5.0
+ eo_ct2ext@Base 2.3.0
+ eo_free_entry@Base 2.3.0
+ eo_iterate_tables@Base 2.3.0
+ eo_massage_str@Base 2.3.0
+ epan_cleanup@Base 1.9.1
+ epan_dissect_cleanup@Base 1.9.1
+ epan_dissect_fake_protocols@Base 1.9.1
+ epan_dissect_file_run@Base 1.12.0~rc1
+ epan_dissect_file_run_with_taps@Base 1.12.0~rc1
+ epan_dissect_fill_in_columns@Base 1.9.1
+ epan_dissect_free@Base 1.9.1
+ epan_dissect_init@Base 1.9.1
+ epan_dissect_new@Base 1.9.1
+ epan_dissect_packet_contains_field@Base 1.12.0~rc1
+ epan_dissect_prime_with_dfilter@Base 2.3.0
+ epan_dissect_prime_with_hfid@Base 2.3.0
+ epan_dissect_prime_with_hfid_array@Base 2.3.0
+ epan_dissect_reset@Base 1.12.0~rc1
+ epan_dissect_run@Base 1.9.1
+ epan_dissect_run_with_taps@Base 1.9.1
+ epan_free@Base 1.12.0~rc1
+ epan_gather_compile_info@Base 3.7.0
+ epan_gather_runtime_info@Base 3.7.0
+ epan_get_interface_description@Base 2.3.0
+ epan_get_interface_name@Base 1.99.2
+ epan_get_modified_block@Base 3.5.0
+ epan_get_version@Base 1.9.1
+ epan_get_version_number@Base 2.5.0
+ epan_init@Base 2.9.0
+ epan_inspect_enums@Base 3.7.0
+ epan_inspect_enums_bsearch@Base 3.7.0
+ epan_inspect_enums_count@Base 3.7.0
+ epan_load_settings@Base 2.3.0
+ epan_new@Base 1.12.0~rc1
+ epan_plugins_supported@Base 3.5.0
+ epan_register_plugin@Base 2.5.0
+ epan_set_always_visible@Base 3.5.1
+ esp_sa_record_add_from_dissector@Base 1.12.0~rc1
+ etype_vals@Base 1.9.1
+ ex_opt_add@Base 1.9.1
+ ex_opt_count@Base 1.9.1
+ ex_opt_get_next@Base 1.9.1
+ ex_opt_get_nth@Base 1.9.1
+ except_alloc@Base 1.9.1
+ except_deinit@Base 1.9.1
+ except_free@Base 1.9.1
+ except_init@Base 1.9.1
+ except_pop@Base 1.9.1
+ except_rethrow@Base 1.9.1
+ except_set_allocator@Base 1.9.1
+ except_setup_try@Base 1.9.1
+ except_take_data@Base 1.9.1
+ except_throw@Base 1.9.1
+ except_throwd@Base 1.9.1
+ except_throwf@Base 1.9.1
+ except_unhandled_catcher@Base 1.9.1
+ except_vthrowf@Base 2.5.2
+ exp_pdu_data_dissector_table_num_value_populate_data@Base 2.1.1
+ exp_pdu_data_dissector_table_num_value_size@Base 2.1.1
+ exp_pdu_data_dst_ip@Base 2.1.2
+ exp_pdu_data_dst_port@Base 2.1.2
+ exp_pdu_data_orig_frame_num@Base 2.1.2
+ exp_pdu_data_port_type@Base 2.1.2
+ exp_pdu_data_src_ip@Base 2.1.2
+ exp_pdu_data_src_port@Base 2.1.2
+ expert_add_info@Base 1.12.0~rc1
+ expert_add_info_format@Base 1.9.1
+ expert_checksum_vals@Base 1.12.0~rc1
+ expert_get_highest_severity@Base 1.9.1
+ expert_get_summary@Base 1.99.10
+ expert_group_vals@Base 1.12.0~rc1
+ expert_register_field_array@Base 1.12.0~rc1
+ expert_register_protocol@Base 1.12.0~rc1
+ expert_severity_vals@Base 1.12.0~rc1
+ expert_update_comment_count@Base 1.12.0~rc1
+ export_pdu_create_common_tags@Base 2.1.1
+ export_pdu_create_tags@Base 2.1.1
+ export_pdu_tap_get_encap@Base 3.7.0
+ ext_menubar_add_entry@Base 1.99.8
+ ext_menubar_add_separator@Base 1.99.8
+ ext_menubar_add_submenu@Base 1.99.8
+ ext_menubar_add_website@Base 1.99.8
+ ext_menubar_get_entries@Base 1.99.8
+ ext_menubar_register_menu@Base 1.99.8
+ ext_menubar_set_parentmenu@Base 2.0.0
+ ext_toolbar_add_entry@Base 2.3.0
+ ext_toolbar_add_val@Base 2.3.0
+ ext_toolbar_entry_by_label@Base 2.3.0
+ ext_toolbar_get_entries@Base 2.3.0
+ ext_toolbar_register_toolbar@Base 2.3.0
+ ext_toolbar_register_update_cb@Base 2.3.0
+ ext_toolbar_unregister_toolbar@Base 2.3.0
+ ext_toolbar_unregister_toolbar_by_name@Base 2.3.0
+ ext_toolbar_update_data@Base 2.3.0
+ ext_toolbar_update_data_add_entry@Base 2.3.0
+ ext_toolbar_update_data_by_index@Base 2.3.0
+ ext_toolbar_update_data_remove_entry@Base 2.3.0
+ ext_toolbar_update_data_set_active@Base 2.3.0
+ ext_toolbar_update_value@Base 2.3.0
+ fc_fc4_val@Base 1.9.1
+ fetch_tapped_data@Base 1.9.1
+ fifo_string_cache_contains@Base 4.1.0
+ fifo_string_cache_free@Base 4.1.0
+ fifo_string_cache_init@Base 4.1.0
+ fifo_string_cache_insert@Base 4.1.0
+ filter_expression_iterate_expressions@Base 2.5.0
+ filter_expression_new@Base 1.9.1
+ find_and_mark_frame_depended_upon@Base 4.1.0
+ find_capture_dissector@Base 2.3.0
+ find_conversation@Base 1.9.1
+ find_conversation_by_id@Base 2.5.0
+ find_conversation_full@Base 3.7.1
+ find_conversation_pinfo@Base 2.5.0
+ find_depend_dissector_list@Base 2.1.0
+ find_dissector@Base 1.9.1
+ find_dissector_add_dependency@Base 2.1.0
+ find_dissector_table@Base 1.9.1
+ find_heur_dissector_by_unique_short_name@Base 1.99.8
+ find_heur_dissector_list@Base 1.99.2
+ find_or_create_conversation@Base 1.9.1
+ find_or_create_conversation_by_id@Base 2.6.3
+ find_protocol_by_id@Base 1.9.1
+ find_sid_name@Base 1.9.1
+ find_stream@Base 3.5.0
+ find_tap_id@Base 1.9.1
+ follow_get_stat_tap_string@Base 2.1.0
+ follow_info_free@Base 2.3.0
+ follow_iterate_followers@Base 2.1.0
+ follow_reset_stream@Base 2.1.0
+ follow_tvb_tap_listener@Base 2.1.0
+ fragment_add@Base 1.9.1
+ fragment_add_check@Base 1.9.1
+ fragment_add_check_with_fallback@Base 4.1.0
+ fragment_add_multiple_ok@Base 1.9.1
+ fragment_add_out_of_order@Base 3.7.0
+ fragment_add_seq@Base 1.9.1
+ fragment_add_seq_802_11@Base 1.9.1
+ fragment_add_seq_check@Base 1.9.1
+ fragment_add_seq_next@Base 1.9.1
+ fragment_add_seq_offset@Base 1.9.1
+ fragment_add_seq_single@Base 2.3.0
+ fragment_add_seq_single_aging@Base 2.3.0
+ fragment_delete@Base 1.9.1
+ fragment_end_seq_next@Base 1.9.1
+ fragment_get@Base 1.9.1
+ fragment_get_reassembled_id@Base 1.9.1
+ fragment_get_tot_len@Base 1.9.1
+ fragment_set_partial_reassembly@Base 1.9.1
+ fragment_set_tot_len@Base 1.9.1
+ fragment_start_seq_check@Base 1.9.1
+ frame_data_compare@Base 1.9.1
+ frame_data_destroy@Base 1.9.1
+ frame_data_init@Base 1.9.1
+ frame_data_reset@Base 1.9.1
+ frame_data_sequence_add@Base 1.12.0~rc1
+ frame_data_sequence_find@Base 1.12.0~rc1
+ frame_data_set_after_dissect@Base 1.9.1
+ frame_data_set_before_dissect@Base 1.9.1
+ free_frame_data_sequence@Base 1.12.0~rc1
+ free_key_string@Base 2.0.0~rc1
+ free_rtd_table@Base 1.99.8
+ free_srt_table@Base 1.99.8
+ free_srt_table_data@Base 1.99.8
+ free_stat_tables@Base 1.99.9
+ ftype_can_cmp@Base 3.7.0
+ ftype_can_contains@Base 1.9.1
+ ftype_can_eq@Base 1.9.1
+ ftype_can_is_negative@Base 3.7.0
+ ftype_can_is_zero@Base 3.7.0
+ ftype_can_matches@Base 1.9.1
+ ftype_can_slice@Base 1.9.1
+ ftype_can_val_to_sinteger64@Base 3.7.2
+ ftype_can_val_to_sinteger@Base 3.7.2
+ ftype_can_val_to_uinteger64@Base 3.7.2
+ ftype_can_val_to_uinteger@Base 3.7.2
+ ftype_name@Base 1.9.1
+ ftype_pretty_name@Base 1.9.1
+ funnel_cleanup@Base 2.9.1
+ funnel_get_funnel_ops@Base 1.9.1
+ funnel_packet_menus_modified@Base 4.1.0
+ funnel_register_all_console_menus@Base 4.1.1rc0
+ funnel_register_all_menus@Base 1.9.1
+ funnel_register_all_packet_menus@Base 4.1.0
+ funnel_register_console_menu@Base 4.1.1rc0
+ funnel_register_menu@Base 1.9.1
+ funnel_register_packet_menu@Base 4.1.0
+ funnel_reload_menus@Base 1.99.9
+ funnel_set_funnel_ops@Base 1.9.1
+ fvalue_from_literal@Base 3.7.0
+ fvalue_get_bytes@Base 3.7.1rc0-265-ge42a4de47c6d
+ fvalue_get_bytes_data@Base 4.1.0
+ fvalue_get_bytes_size@Base 4.1.0
+ fvalue_get_floating@Base 1.9.1
+ fvalue_get_guid@Base 3.7.1rc0-265-ge42a4de47c6d
+ fvalue_get_ipv6@Base 4.1.0
+ fvalue_get_protocol@Base 3.7.1rc0-265-ge42a4de47c6d
+ fvalue_get_sinteger64@Base 1.99.3
+ fvalue_get_sinteger@Base 1.9.1
+ fvalue_get_strbuf@Base 3.7.1rc0-272-gfe25d701baa2
+ fvalue_get_string@Base 3.7.1rc0-265-ge42a4de47c6d
+ fvalue_get_time@Base 3.7.1rc0-265-ge42a4de47c6d
+ fvalue_get_uinteger64@Base 1.99.3
+ fvalue_get_uinteger@Base 1.9.1
+ fvalue_to_sinteger64@Base 3.7.2
+ fvalue_to_sinteger@Base 3.7.2
+ fvalue_to_string_repr@Base 1.9.1
+ fvalue_to_uinteger64@Base 3.7.2
+ fvalue_to_uinteger@Base 3.7.2
+ fvalue_type_ftenum@Base 1.12.0~rc1
+ gbl_resolv_flags@Base 1.9.1
+ gcamel_StatSRT@Base 1.9.1
+ gcp_cmd_type@Base 1.9.1
+ gcp_term_types@Base 1.9.1
+ get_8859_1_string@Base 1.12.0~rc1
+ get_CDR_any@Base 1.9.1
+ get_CDR_boolean@Base 1.9.1
+ get_CDR_char@Base 1.9.1
+ get_CDR_double@Base 1.9.1
+ get_CDR_encap_info@Base 1.9.1
+ get_CDR_enum@Base 1.9.1
+ get_CDR_fixed@Base 1.9.1
+ get_CDR_float@Base 1.9.1
+ get_CDR_interface@Base 1.9.1
+ get_CDR_long@Base 1.9.1
+ get_CDR_long_long@Base 1.9.1
+ get_CDR_object@Base 1.9.1
+ get_CDR_octet@Base 1.9.1
+ get_CDR_octet_seq@Base 1.9.1
+ get_CDR_short@Base 1.9.1
+ get_CDR_string@Base 1.9.1
+ get_CDR_typeCode@Base 1.9.1
+ get_CDR_ulong@Base 1.9.1
+ get_CDR_ulong_long@Base 1.9.1
+ get_CDR_ushort@Base 1.9.1
+ get_CDR_wchar@Base 1.9.1
+ get_CDR_wstring@Base 1.9.1
+ get_addrinfo_list@Base 1.9.1
+ get_ascii_7bits_string@Base 1.12.0~rc1
+ get_ascii_string@Base 1.12.0~rc1
+ get_asn1_ctx@Base 1.9.1
+ get_average@Base 1.12.0~rc1
+ get_ber_identifier@Base 1.9.1
+ get_ber_length@Base 1.9.1
+ get_column_char_width@Base 1.9.1
+ get_column_custom_fields@Base 2.1.0
+ get_column_custom_occurrence@Base 1.9.1
+ get_column_format@Base 1.9.1
+ get_column_format_from_str@Base 1.9.1
+ get_column_format_matches@Base 1.9.1
+ get_column_resolved@Base 1.9.1
+ get_column_text@Base 3.7.2
+ get_column_title@Base 1.9.1
+ get_column_tooltip@Base 2.0.1
+ get_column_visible@Base 1.9.1
+ get_column_width_string@Base 1.9.1
+ get_conversation_address@Base 1.99.0
+ get_conversation_by_proto_id@Base 1.99.0
+ get_conversation_filter@Base 1.99.0
+ get_conversation_hashtables@Base 3.7.1
+ get_conversation_hide_ports@Base 1.99.0
+ get_conversation_packet_func@Base 1.99.0
+ get_conversation_port@Base 1.99.0
+ get_conversation_proto_id@Base 1.99.0
+ get_data_source_name@Base 1.9.1
+ get_data_source_tvb@Base 1.9.1
+ get_data_source_tvb_by_name@Base 2.3.0
+ get_dccp_stream_count@Base 3.5.0
+ get_dect_standard_8bits_string@Base 4.1.0
+ get_dissector_names@Base 1.12.0~rc1
+ get_dissector_table_param@Base 1.99.2
+ get_dissector_table_selector_type@Base 1.9.1
+ get_dissector_table_ui_name@Base 1.9.1
+ get_edited_resolved_name@Base 3.3.0
+ get_endpoint_filter@Base 4.0.0-rc2
+ get_endpoint_packet_func@Base 4.0.0-rc2
+ get_endpoint_port@Base 4.0.0-rc2
+ get_eo_by_name@Base 2.3.0
+ get_eo_packet_func@Base 2.3.0
+ get_eo_proto_id@Base 2.3.0
+ get_eo_reset_func@Base 2.3.0
+ get_eo_tap_listener_name@Base 2.3.0
+ get_eth_hashtable@Base 1.12.0~rc1
+ get_ether_name@Base 1.9.1
+ get_etsi_ts_102_221_annex_a_string@Base 3.3.1
+ get_euc_kr_string@Base 3.3.2
+ get_export_pdu_tap_list@Base 1.99.0
+ get_follow_address_func@Base 2.1.0
+ get_follow_by_name@Base 2.1.0
+ get_follow_by_proto_id@Base 4.1.0
+ get_follow_conv_func@Base 2.1.0
+ get_follow_index_func@Base 2.1.0
+ get_follow_port_to_display@Base 2.1.0
+ get_follow_proto_id@Base 2.1.0
+ get_follow_stream_count_func@Base 4.1.0
+ get_follow_sub_stream_id_func@Base 4.1.0
+ get_follow_tap_handler@Base 2.1.0
+ get_follow_tap_string@Base 2.1.0
+ get_gb18030_string@Base 3.3.2
+ get_hash_ether_hexaddr@Base 1.99.3
+ get_hash_ether_resolved_name@Base 1.99.3
+ get_hash_ether_status@Base 1.99.3
+ get_hash_manuf_resolved_name@Base 1.99.3
+ get_host_ipaddr6@Base 1.9.1
+ get_host_ipaddr@Base 1.9.1
+ get_hostlist_filter@Base 1.99.0
+ get_hostlist_packet_func@Base 1.99.0
+ get_hostname6@Base 1.9.1
+ get_hostname@Base 1.9.1
+ get_ipv4_hash_table@Base 1.12.0~rc1
+ get_ipv6_hash_table@Base 1.12.0~rc1
+ get_ipxnet_hash_table@Base 1.12.0~rc1
+ get_iso_646_string@Base 3.1.0
+ get_mac_lte_proto_data@Base 1.9.1
+ get_mac_nr_proto_data@Base 2.5.2
+ get_manuf_hashtable@Base 1.12.0~rc1
+ get_manuf_name_if_known@Base 1.9.1
+ get_mptcp_stream_count@Base 2.0.0
+ get_node_field_value@Base 1.12.0~rc1
+ get_nonascii_unichar2_string@Base 2.3.0
+ get_pdcp_nr_proto_data@Base 2.9.0
+ get_quic_connections_count@Base 3.1.1
+ get_rose_ctx@Base 1.9.1
+ get_rtd_num_tables@Base 1.99.8
+ get_rtd_packet_func@Base 1.99.8
+ get_rtd_proto_id@Base 1.99.8
+ get_rtd_table_by_name@Base 1.99.8
+ get_rtd_tap_listener_name@Base 1.99.8
+ get_rtd_value_string@Base 1.99.8
+ get_serv_port_hashtable@Base 1.12.0~rc1
+ get_srt_max_tables@Base 1.99.8
+ get_srt_packet_func@Base 1.99.8
+ get_srt_proto_id@Base 1.99.8
+ get_srt_table_by_name@Base 1.99.8
+ get_srt_table_param_data@Base 1.99.8
+ get_srt_tap_listener_name@Base 1.99.8
+ get_t61_string@Base 2.3.0
+ get_tap_names@Base 1.12.0~rc1
+ get_tcp_conversation_data@Base 1.99.0
+ get_tcp_stream_count@Base 1.12.0~rc1
+ get_token_len@Base 1.9.1
+ get_ts_23_038_7bits_string_packed@Base 3.3.1
+ get_ts_23_038_7bits_string_unpacked@Base 3.3.1
+ get_ucs_2_string@Base 1.12.0~rc1
+ get_ucs_4_string@Base 1.12.0~rc1
+ get_udp_conversation_data@Base 1.99.2
+ get_udp_stream_count@Base 1.12.0~rc1
+ get_unichar2_string@Base 1.12.0~rc1
+ get_utf_16_string@Base 1.12.0~rc1
+ get_utf_8_string@Base 3.3.1
+ get_vlan_hash_table@Base 2.1.0
+ get_wka_hashtable@Base 1.12.0~rc1
+ giop_add_CDR_string@Base 3.0.1
+ global_enterprises_dump@Base 4.1.0
+ global_services_dump@Base 4.1.0
+ golay_decode@Base 1.9.1
+ golay_encode@Base 1.9.1
+ golay_errors@Base 1.9.1
+ gsm_a_bssmap_msg_strings@Base 1.9.1
+ gsm_a_dtap_msg_cc_strings@Base 1.9.1
+ gsm_a_dtap_msg_gmm_strings@Base 1.9.1
+ gsm_a_dtap_msg_mm_strings@Base 1.9.1
+ gsm_a_dtap_msg_rr_strings@Base 1.9.1
+ gsm_a_dtap_msg_sm_strings@Base 1.9.1
+ gsm_a_dtap_msg_sms_strings@Base 1.9.1
+ gsm_a_dtap_msg_ss_strings@Base 1.9.1
+ gsm_a_dtap_msg_tp_strings@Base 1.9.1
+ gsm_a_pd_str@Base 1.9.1
+ gsm_a_rr_short_pd_msg_strings@Base 1.9.1
+ gsm_map_opr_code_strings@Base 1.9.1
+ gtcap_StatSRT@Base 1.9.1
+ guid_cmp@Base 2.0.0
+ guid_hash@Base 4.1.0
+ guid_to_str@Base 1.99.2
+ guid_to_str_buf@Base 3.5.1
+ guids_add_guid@Base 1.9.1
+ guids_get_guid_name@Base 1.9.1
+ guids_init@Base 1.9.1
+ guids_resolve_guid_to_str@Base 1.9.1
+ h225_RasMessage_vals@Base 1.9.1
+ h225_ReleaseCompleteReason_vals@Base 1.9.1
+ h245_set_h223_add_lc_handle@Base 1.9.1
+ h245_set_h223_set_mc_handle@Base 1.9.1
+ h248_param_ber_integer@Base 1.9.1
+ h248_register_package@Base 1.9.1
+ has_heur_dissector_list@Base 1.12.0~rc1
+ have_custom_cols@Base 1.9.1
+ have_field_extractors@Base 2.0.2
+ have_filtering_tap_listeners@Base 1.9.1
+ have_tap_listener@Base 1.12.0~rc1
+ heur_dissector_add@Base 1.9.1
+ heur_dissector_delete@Base 1.9.1
+ heur_dissector_table_foreach@Base 1.99.2
+ hex_str_to_bytes@Base 1.9.1
+ hex_str_to_bytes_encoding@Base 1.12.0~rc1
+ hf_text_only@Base 1.9.1
+ hfinfo_bitshift@Base 1.12.0~rc1
+ host_name_lookup_process@Base 1.9.1
+ hostlist_table_set_gui_info@Base 1.99.0
+ http2_get_stream_id_ge@Base 3.1.1
+ http2_get_stream_id_le@Base 3.1.1
+ http_add_path_components_to_tree@Base 3.7.1
+ http_tcp_dissector_add@Base 2.1.0
+ http_tcp_dissector_delete@Base 2.3.0
+ http_tcp_port_add@Base 2.1.0
+ ieee1609dot2_Psid_vals@Base 2.9.1
+ ieee1609dot2_set_next_default_psid@Base 2.9.1
+ ieee80211_ht_Dbps@Base 2.1.0
+ ieee80211_supported_rates_vals_ext@Base 1.99.1
+ ieee802a_add_oui@Base 1.9.1
+ in_cksum@Base 1.9.1
+ in_cksum_ret_partial@Base 4.2.0
+ init_srt_table@Base 1.99.8
+ init_srt_table_row@Base 1.99.8
+ ip_checksum@Base 1.99.0
+ ip_checksum_tvb@Base 1.99.0
+ ipopt_type_class_vals@Base 1.9.1
+ ipopt_type_number_vals@Base 1.9.1
+ ipproto_val_ext@Base 2.1.0
+ ipprotostr@Base 1.9.1
+ ipv6extprotostr@Base 2.1.0
+ is_big_endian@Base 1.9.1
+ is_broadcast_bssid@Base 2.0.0
+ is_tpkt@Base 1.9.1
+ isup_calling_partys_category_value_ext@Base 1.9.1
+ isup_message_type_value_acro_ext@Base 1.9.1
+ join_string_list@Base 1.99.0
+ ldap_procedure_names@Base 1.99.8
+ link_type_vals@Base 2.1.0
+ list_stat_cmd_args@Base 1.9.1
+ llc_add_oui@Base 1.9.1
+ log_conv_filter_list@Base 3.7.0
+ make_printable_string@Base 1.9.1
+ mark_frame_as_depended_upon@Base 1.9.1
+ maxmind_db_get_paths@Base 2.5.1
+ maxmind_db_lookup_ipv4@Base 2.5.1
+ maxmind_db_lookup_ipv6@Base 2.5.1
+ maxmind_db_set_synchrony@Base 3.5.0
+ mbim_register_uuid_ext@Base 1.12.0~rc1
+ memory_usage_component_register@Base 1.12.0~rc1
+ memory_usage_gc@Base 1.12.0~rc1
+ memory_usage_get@Base 1.12.0~rc1
+ mibenum_charset_to_encoding@Base 2.1.0
+ mibenum_vals_character_sets_ext@Base 2.1.0
+ mtp3_network_indicator_vals@Base 1.9.1
+ mtp3_service_indicator_code_short_vals@Base 1.9.1
+ mtp3_standard_vals@Base 1.9.1
+ ncp_nds_verb_vals@Base 2.1.0
+ new_frame_data_sequence@Base 1.12.0~rc1
+ new_page@Base 1.12.0~rc1
+ next_tvb_add_handle@Base 1.9.1
+ next_tvb_add_string@Base 1.9.1
+ next_tvb_add_uint@Base 1.9.1
+ next_tvb_call@Base 1.9.1
+ next_tvb_list_new@Base 3.5.0
+ nmas_subverb_enum@Base 2.1.0
+ nt_cmd_vals_ext@Base 1.9.1
+ num_tree_types@Base 1.9.1
+ oid_add@Base 1.9.1
+ oid_add_from_encoded@Base 1.9.1
+ oid_add_from_string@Base 1.9.1
+ oid_both@Base 1.9.1
+ oid_both_from_encoded@Base 1.9.1
+ oid_both_from_string@Base 1.9.1
+ oid_encoded2string@Base 1.9.1
+ oid_encoded2subid@Base 1.9.1
+ oid_encoded2subid_sub@Base 1.12.0~rc1
+ oid_get@Base 1.9.1
+ oid_get_default_mib_path@Base 1.9.1
+ oid_get_from_encoded@Base 1.9.1
+ oid_get_from_string@Base 1.9.1
+ oid_has_dissector@Base 1.9.1
+ oid_resolved@Base 1.9.1
+ oid_resolved_from_encoded@Base 1.9.1
+ oid_resolved_from_string@Base 1.9.1
+ oid_str_to_bytes@Base 1.9.1
+ oid_string2encoded@Base 1.9.1
+ oid_string2subid@Base 1.9.1
+ oid_subid2encoded@Base 1.9.1
+ oid_subid2string@Base 1.9.1
+ oids_cleanup@Base 1.9.1
+ oids_init@Base 1.9.1
+ output_fields_add@Base 1.12.0~rc1
+ output_fields_add_protocolfilter@Base 4.1.0
+ output_fields_free@Base 1.12.0~rc1
+ output_fields_has_cols@Base 1.12.0~rc1
+ output_fields_list_options@Base 1.12.0~rc1
+ output_fields_new@Base 1.12.0~rc1
+ output_fields_num_fields@Base 1.12.0~rc1
+ output_fields_set_option@Base 1.12.0~rc1
+ output_fields_valid@Base 1.99.0
+ p_add_proto_data@Base 1.9.1
+ p_get_proto_data@Base 1.9.1
+ p_get_proto_depth@Base 3.3.0
+ p_remove_proto_data@Base 1.12.0~rc1
+ p_set_proto_data@Base 3.7.0
+ p_set_proto_depth@Base 3.3.0
+ packet_conv_filter_list@Base 3.7.0
+ parse_column_format@Base 4.1.0
+ parse_key_string@Base 1.9.1
+ plugin_if_apply_filter@Base 1.99.8
+ plugin_if_get_capture_file@Base 3.3.0
+ plugin_if_get_frame_data@Base 3.3.0
+ plugin_if_get_ws_info@Base 2.1.0
+ plugin_if_goto_frame@Base 2.0.0
+ plugin_if_register_gui_cb@Base 1.99.8
+ plugin_if_save_preference@Base 1.99.8
+ port_type_to_str@Base 1.12.0~rc1
+ port_with_resolution_to_str@Base 2.1.0
+ port_with_resolution_to_str_buf@Base 2.0.0
+ postdissectors_want_hfids@Base 2.3.0
+ postseq_cleanup_all_protocols@Base 1.9.1
+ pref_clean_stash@Base 2.3.0
+ pref_stash@Base 2.3.0
+ pref_unstash@Base 2.3.0
+ prefs@Base 1.9.1
+ prefs_add_decode_as_value@Base 2.3.0
+ prefs_apply@Base 1.9.1
+ prefs_apply_all@Base 1.9.1
+ prefs_capture_device_monitor_mode@Base 1.9.1
+ prefs_capture_options_dialog_column_is_visible@Base 1.9.1
+ prefs_clear_string_list@Base 1.9.1
+ prefs_find_module@Base 1.9.1
+ prefs_find_preference@Base 1.9.1
+ prefs_get_bool_value@Base 2.3.0
+ prefs_get_color_value@Base 2.3.0
+ prefs_get_description@Base 2.3.0
+ prefs_get_effect_flags@Base 2.5.0
+ prefs_get_enum_radiobuttons@Base 2.3.0
+ prefs_get_enum_value@Base 2.3.0
+ prefs_get_enumvals@Base 2.3.0
+ prefs_get_max_value@Base 2.3.0
+ prefs_get_module_effect_flags@Base 2.5.0
+ prefs_get_name@Base 2.3.0
+ prefs_get_password_value@Base 3.7.0
+ prefs_get_range_value@Base 2.3.0
+ prefs_get_range_value_real@Base 2.3.0
+ prefs_get_string_list@Base 1.9.1
+ prefs_get_string_value@Base 2.3.0
+ prefs_get_title@Base 2.3.0
+ prefs_get_title_by_name@Base 1.9.1
+ prefs_get_type@Base 2.3.0
+ prefs_get_uat_value@Base 2.3.0
+ prefs_get_uint_base@Base 2.3.0
+ prefs_get_uint_value@Base 2.3.0
+ prefs_get_uint_value_real@Base 2.3.0
+ prefs_has_layout_pane_content@Base 2.2.5
+ prefs_invert_bool_value@Base 2.3.0
+ prefs_is_capture_device_hidden@Base 1.9.1
+ prefs_is_registered_protocol@Base 1.9.1
+ prefs_module_has_submodules@Base 1.9.1
+ prefs_modules_foreach@Base 1.9.1
+ prefs_modules_foreach_submodules@Base 1.9.1
+ prefs_pref_foreach@Base 1.9.1
+ prefs_pref_is_default@Base 2.3.0
+ prefs_pref_to_str@Base 1.9.1
+ prefs_pref_type_description@Base 1.9.1
+ prefs_pref_type_name@Base 1.9.1
+ prefs_range_add_value@Base 2.3.0
+ prefs_range_remove_value@Base 2.3.0
+ prefs_register_bool_preference@Base 1.9.1
+ prefs_register_codec@Base 2.5.0
+ prefs_register_custom_preference_TCP_Analysis@Base 4.1.0
+ prefs_register_directory_preference@Base 1.9.1
+ prefs_register_enum_preference@Base 1.9.1
+ prefs_register_filename_preference@Base 1.9.1
+ prefs_register_module_alias@Base 2.9.0
+ prefs_register_obsolete_preference@Base 1.9.1
+ prefs_register_password_preference@Base 3.7.0
+ prefs_register_protocol@Base 1.9.1
+ prefs_register_protocol_obsolete@Base 3.5.0
+ prefs_register_protocol_subtree@Base 1.9.1
+ prefs_register_range_preference@Base 1.9.1
+ prefs_register_stat@Base 1.9.1
+ prefs_register_static_text_preference@Base 1.9.1
+ prefs_register_string_preference@Base 1.9.1
+ prefs_register_uat_preference@Base 1.9.1
+ prefs_register_uat_preference_qt@Base 1.12.0~rc1
+ prefs_register_uint_preference@Base 1.9.1
+ prefs_remove_decode_as_value@Base 2.3.0
+ prefs_reset@Base 1.9.1
+ prefs_set_bool_value@Base 2.3.0
+ prefs_set_color_value@Base 2.3.0
+ prefs_set_custom_value@Base 3.1.0
+ prefs_set_effect_flags@Base 2.5.0
+ prefs_set_effect_flags_by_name@Base 2.5.0
+ prefs_set_enum_string_value@Base 3.5.0
+ prefs_set_enum_value@Base 2.3.0
+ prefs_set_gui_theme_is_dark@Base 2.5.0
+ prefs_set_module_effect_flags@Base 2.5.0
+ prefs_set_password_value@Base 3.7.0
+ prefs_set_pref@Base 1.9.1
+ prefs_set_preference_effect_fields@Base 3.3.0
+ prefs_set_range_value@Base 2.1.0
+ prefs_set_range_value_work@Base 2.3.0
+ prefs_set_stashed_range_value@Base 2.3.0
+ prefs_set_string_value@Base 2.3.0
+ prefs_set_uint_value@Base 2.3.0
+ prime_epan_dissect_with_postdissector_wanted_hfids@Base 2.3.0
+ print_bluetooth_uuid@Base 3.7.0
+ print_bookmark@Base 1.12.0~rc1
+ print_finale@Base 1.12.0~rc1
+ print_hex_data@Base 1.12.0~rc1
+ print_line@Base 1.12.0~rc1
+ print_line_color@Base 2.5.0
+ print_numeric_bluetooth_uuid@Base 3.7.0
+ print_preamble@Base 1.12.0~rc1
+ print_stream_ps_new@Base 1.12.0~rc1
+ print_stream_ps_stdio_new@Base 1.12.0~rc1
+ print_stream_text_new@Base 1.12.0~rc1
+ print_stream_text_stdio_new@Base 1.12.0~rc1
+ process_reassembled_data@Base 1.9.1
+ process_stat_cmd_arg@Base 1.9.1
+ proto_add_deregistered_data@Base 1.12.2
+ proto_all_finfos@Base 1.9.1
+ proto_can_match_selected@Base 1.9.1
+ proto_can_toggle_protocol@Base 1.9.1
+ proto_check_field_name@Base 1.9.1
+ proto_check_field_name_lower@Base 3.7.0
+ proto_checksum_vals@Base 2.2.0
+ proto_construct_match_selected_string@Base 1.9.1
+ proto_deregister_field@Base 1.99.9
+ proto_disable_all@Base 3.7.0
+ proto_disable_by_default@Base 2.1.2
+ proto_disable_heuristic_by_name@Base 3.7.0
+ proto_disable_proto_by_name@Base 1.99.8
+ proto_enable_heuristic_by_name@Base 1.99.8
+ proto_enable_proto_by_name@Base 2.3.0
+ proto_expert@Base 1.9.1
+ proto_field_display_to_string@Base 2.1.0
+ proto_field_is_referenced@Base 1.9.1
+ proto_find_field_from_offset@Base 1.9.1
+ proto_find_finfo@Base 1.9.1
+ proto_find_first_finfo@Base 2.3.0
+ proto_find_undecoded_data@Base 1.99.3
+ proto_free_deregistered_fields@Base 1.12.2
+ proto_free_field_strings@Base 3.1.1
+ proto_get_data_protocol@Base 1.9.1
+ proto_get_finfo_ptr_array@Base 1.9.1
+ proto_get_first_protocol@Base 1.9.1
+ proto_get_first_protocol_field@Base 1.9.1
+ proto_get_frame_protocols@Base 1.12.0~rc1
+ proto_get_id@Base 1.9.1
+ proto_get_id_by_filter_name@Base 1.9.1
+ proto_get_id_by_short_name@Base 1.99.0
+ proto_get_next_protocol@Base 1.9.1
+ proto_get_next_protocol_field@Base 1.9.1
+ proto_get_protocol_filter_name@Base 1.9.1
+ proto_get_protocol_long_name@Base 1.9.1
+ proto_get_protocol_name@Base 1.9.1
+ proto_get_protocol_short_name@Base 1.9.1
+ proto_heuristic_dissector_foreach@Base 2.0.0
+ proto_initialize_all_prefixes@Base 1.9.1
+ proto_is_frame_protocol@Base 1.99.1
+ proto_is_pino@Base 2.3.0
+ proto_is_protocol_enabled@Base 1.9.1
+ proto_is_protocol_enabled_by_default@Base 2.3.0
+ proto_item_add_subtree@Base 1.9.1
+ proto_item_append_text@Base 1.9.1
+ proto_item_fill_display_label@Base 3.5.0
+ proto_item_fill_label@Base 1.9.1
+ proto_item_get_display_repr@Base 3.3.0
+ proto_item_get_len@Base 1.9.1
+ proto_item_get_parent@Base 1.9.1
+ proto_item_get_parent_nth@Base 1.9.1
+ proto_item_get_subtree@Base 1.9.1
+ proto_item_prepend_text@Base 1.9.1
+ proto_item_set_bits_offset_len@Base 3.3.0
+ proto_item_set_end@Base 1.9.1
+ proto_item_set_len@Base 1.9.1
+ proto_item_set_text@Base 1.9.1
+ proto_list_layers@Base 3.7.0
+ proto_name_already_registered@Base 2.0.1
+ proto_node_group_children_by_json_key@Base 2.5.0
+ proto_node_group_children_by_unique@Base 2.5.0
+ proto_reenable_all@Base 2.3.0
+ proto_register_alias@Base 2.9.0
+ proto_register_field_array@Base 1.9.1
+ proto_register_plugin@Base 2.5.0
+ proto_register_prefix@Base 1.9.1
+ proto_register_protocol@Base 1.9.1
+ proto_register_protocol_in_name_only@Base 2.3.0
+ proto_register_subtree_array@Base 1.9.1
+ proto_registrar_dump_elastic@Base 2.9.0
+ proto_registrar_dump_field_completions@Base 3.5.0
+ proto_registrar_dump_fieldcount@Base 2.0.0
+ proto_registrar_dump_fields@Base 1.9.1
+ proto_registrar_dump_ftypes@Base 1.9.1
+ proto_registrar_dump_protocols@Base 1.9.1
+ proto_registrar_dump_values@Base 1.9.1
+ proto_registrar_get_abbrev@Base 1.9.1
+ proto_registrar_get_byalias@Base 2.9.0
+ proto_registrar_get_byname@Base 1.9.1
+ proto_registrar_get_ftype@Base 1.9.1
+ proto_registrar_get_id_byname@Base 2.1.0
+ proto_registrar_get_name@Base 1.99.8
+ proto_registrar_get_nth@Base 1.9.1
+ proto_registrar_get_parent@Base 1.9.1
+ proto_registrar_is_protocol@Base 1.9.1
+ proto_report_dissector_bug@Base 1.12.0~rc1
+ proto_set_cant_toggle@Base 1.9.1
+ proto_set_decoding@Base 1.9.1
+ proto_tracking_interesting_fields@Base 1.9.1
+ proto_tree_add_ascii_7bits_item@Base 1.12.0~rc1
+ proto_tree_add_bitmask@Base 1.9.1
+ proto_tree_add_bitmask_len@Base 1.9.1
+ proto_tree_add_bitmask_list@Base 1.99.4
+ proto_tree_add_bitmask_list_ret_uint64@Base 3.7.1
+ proto_tree_add_bitmask_list_value@Base 2.1.0
+ proto_tree_add_bitmask_ret_uint64@Base 2.1.0
+ proto_tree_add_bitmask_text@Base 1.9.1
+ proto_tree_add_bitmask_value@Base 1.99.4
+ proto_tree_add_bitmask_value_with_flags@Base 1.99.4
+ proto_tree_add_bitmask_with_flags@Base 1.99.2
+ proto_tree_add_bitmask_with_flags_ret_uint64@Base 2.1.0
+ proto_tree_add_bits_item@Base 1.9.1
+ proto_tree_add_bits_ret_val@Base 1.9.1
+ proto_tree_add_boolean@Base 1.9.1
+ proto_tree_add_boolean_format@Base 1.9.1
+ proto_tree_add_boolean_format_value@Base 1.9.1
+ proto_tree_add_bytes@Base 1.9.1
+ proto_tree_add_bytes_format@Base 1.9.1
+ proto_tree_add_bytes_format_value@Base 1.9.1
+ proto_tree_add_bytes_item@Base 1.12.0~rc1
+ proto_tree_add_bytes_with_length@Base 1.99.3
+ proto_tree_add_cbor_bitmask@Base 3.5.1
+ proto_tree_add_cbor_boolean@Base 3.5.1
+ proto_tree_add_cbor_bstr@Base 3.5.1
+ proto_tree_add_cbor_container@Base 3.5.1
+ proto_tree_add_cbor_ctrl@Base 3.5.1
+ proto_tree_add_cbor_eid@Base 3.5.1rc0-3265-gb0c69d7db316
+ proto_tree_add_cbor_int64@Base 3.5.1
+ proto_tree_add_cbor_strlen@Base 3.7.0
+ proto_tree_add_cbor_tstr@Base 3.5.1
+ proto_tree_add_cbor_uint64@Base 3.5.1
+ proto_tree_add_checksum@Base 2.1.1
+ proto_tree_add_checksum_bytes@Base 4.1.0
+ proto_tree_add_debug_text@Base 1.9.1
+ proto_tree_add_double@Base 1.9.1
+ proto_tree_add_double_format@Base 1.9.1
+ proto_tree_add_double_format_value@Base 1.9.1
+ proto_tree_add_ether@Base 1.9.1
+ proto_tree_add_ether_format@Base 1.9.1
+ proto_tree_add_ether_format_value@Base 1.9.1
+ proto_tree_add_eui64@Base 1.9.1
+ proto_tree_add_eui64_format@Base 1.9.1
+ proto_tree_add_eui64_format_value@Base 1.9.1
+ proto_tree_add_expert@Base 1.12.0~rc1
+ proto_tree_add_expert_format@Base 1.12.0~rc1
+ proto_tree_add_float@Base 1.9.1
+ proto_tree_add_float_format@Base 1.9.1
+ proto_tree_add_float_format_value@Base 1.9.1
+ proto_tree_add_guid@Base 1.9.1
+ proto_tree_add_guid_format@Base 1.9.1
+ proto_tree_add_guid_format_value@Base 1.9.1
+ proto_tree_add_int64@Base 1.9.1
+ proto_tree_add_int64_format@Base 1.9.1
+ proto_tree_add_int64_format_value@Base 1.9.1
+ proto_tree_add_int@Base 1.9.1
+ proto_tree_add_int_format@Base 1.9.1
+ proto_tree_add_int_format_value@Base 1.9.1
+ proto_tree_add_ipv4@Base 1.9.1
+ proto_tree_add_ipv4_format@Base 1.9.1
+ proto_tree_add_ipv4_format_value@Base 1.9.1
+ proto_tree_add_ipv6@Base 1.9.1
+ proto_tree_add_ipv6_format@Base 1.9.1
+ proto_tree_add_ipv6_format_value@Base 1.9.1
+ proto_tree_add_ipxnet@Base 1.9.1
+ proto_tree_add_ipxnet_format@Base 1.9.1
+ proto_tree_add_ipxnet_format_value@Base 1.9.1
+ proto_tree_add_item@Base 1.9.1
+ proto_tree_add_item_new@Base 1.12.0~rc1
+ proto_tree_add_item_new_ret_length@Base 2.1.0
+ proto_tree_add_item_ret_boolean@Base 2.3.0
+ proto_tree_add_item_ret_display_string@Base 3.1.0
+ proto_tree_add_item_ret_display_string_and_length@Base 3.1.0
+ proto_tree_add_item_ret_double@Base 4.1.0
+ proto_tree_add_item_ret_ether@Base 4.1.0
+ proto_tree_add_item_ret_float@Base 4.1.0
+ proto_tree_add_item_ret_int64@Base 3.1.1
+ proto_tree_add_item_ret_int@Base 1.99.6
+ proto_tree_add_item_ret_ipv4@Base 3.3.2
+ proto_tree_add_item_ret_ipv6@Base 4.1.0
+ proto_tree_add_item_ret_length@Base 2.1.0
+ proto_tree_add_item_ret_string@Base 2.1.0
+ proto_tree_add_item_ret_string_and_length@Base 2.1.0
+ proto_tree_add_item_ret_time_string@Base 3.1.1
+ proto_tree_add_item_ret_uint64@Base 2.3.0
+ proto_tree_add_item_ret_uint@Base 1.99.6
+ proto_tree_add_item_ret_varint@Base 2.5.0
+ proto_tree_add_none_format@Base 1.9.1
+ proto_tree_add_oid@Base 3.1.1
+ proto_tree_add_oid_format@Base 3.1.1
+ proto_tree_add_oid_format_value@Base 3.1.1
+ proto_tree_add_protocol_format@Base 1.9.1
+ proto_tree_add_split_bits_item_ret_val@Base 2.3.0
+ proto_tree_add_string@Base 1.9.1
+ proto_tree_add_string_format@Base 1.9.1
+ proto_tree_add_string_format_value@Base 1.9.1
+ proto_tree_add_subtree@Base 1.99.0
+ proto_tree_add_subtree_format@Base 1.99.0
+ proto_tree_add_time@Base 1.9.1
+ proto_tree_add_time_format@Base 1.9.1
+ proto_tree_add_time_format_value@Base 1.9.1
+ proto_tree_add_time_item@Base 1.12.0~rc1
+ proto_tree_add_ts_23_038_7bits_packed_item@Base 3.3.1
+ proto_tree_add_uint64@Base 1.9.1
+ proto_tree_add_uint64_bits_format_value@Base 1.99.6
+ proto_tree_add_uint64_format@Base 1.9.1
+ proto_tree_add_uint64_format_value@Base 1.9.1
+ proto_tree_add_uint@Base 1.9.1
+ proto_tree_add_uint_bits_format_value@Base 1.9.1
+ proto_tree_add_uint_format@Base 1.9.1
+ proto_tree_add_uint_format_value@Base 1.9.1
+ proto_tree_children_foreach@Base 1.9.1
+ proto_tree_free@Base 1.9.1
+ proto_tree_get_parent@Base 1.9.1
+ proto_tree_get_parent_tree@Base 1.99.1
+ proto_tree_get_root@Base 1.9.1
+ proto_tree_move_item@Base 1.9.1
+ proto_tree_print@Base 1.12.0~rc1
+ proto_tree_set_appendix@Base 1.9.1
+ proto_tree_set_visible@Base 1.9.1
+ protocols_module@Base 1.9.1
+ ptvcursor_add@Base 1.9.1
+ ptvcursor_add_no_advance@Base 1.9.1
+ ptvcursor_add_ret_boolean@Base 2.5.0
+ ptvcursor_add_ret_int@Base 2.5.0
+ ptvcursor_add_ret_string@Base 2.5.0
+ ptvcursor_add_ret_uint@Base 2.5.0
+ ptvcursor_add_text_with_subtree@Base 1.9.1
+ ptvcursor_add_with_subtree@Base 1.9.1
+ ptvcursor_advance@Base 1.9.1
+ ptvcursor_current_offset@Base 1.9.1
+ ptvcursor_free@Base 1.9.1
+ ptvcursor_new@Base 1.9.1
+ ptvcursor_pop_subtree@Base 1.9.1
+ ptvcursor_push_subtree@Base 1.9.1
+ ptvcursor_set_subtree@Base 1.9.1
+ ptvcursor_set_tree@Base 1.9.1
+ ptvcursor_tree@Base 1.9.1
+ ptvcursor_tvbuff@Base 1.9.1
+ q850_cause_code_vals_ext@Base 1.9.1
+ q931_cause_code_vals_ext@Base 1.9.1
+ q931_message_type_vals@Base 1.9.1
+ q932_PartyNumber_vals@Base 2.1.0
+ q932_PartySubaddress_vals@Base 2.1.0
+ q932_PresentedAddressScreened_vals@Base 2.5.0
+ q932_PresentedAddressUnscreened_vals@Base 2.5.0
+ q932_PresentedNumberScreened_vals@Base 2.1.0
+ q932_PresentedNumberUnscreened_vals@Base 2.1.0
+ q932_ScreeningIndicator_vals@Base 2.5.0
+ qs_func_vals@Base 1.9.1
+ qs_rate_vals_ext@Base 1.9.1
+ quic_conn_data_get_conn_client_dcid_initial@Base 4.1.1
+ quic_get_stream_id_ge@Base 3.5.0
+ quic_get_stream_id_le@Base 3.5.0
+ raknet_add_udp_dissector@Base 2.3.0
+ raknet_conversation_set_dissector@Base 2.3.0
+ raknet_delete_udp_dissector@Base 2.3.0
+ range_add_value@Base 2.3.0
+ range_convert_range@Base 1.9.1
+ range_convert_str@Base 1.9.1
+ range_convert_str_work@Base 2.3.0
+ range_copy@Base 1.9.1
+ range_empty@Base 1.9.1
+ range_foreach@Base 1.9.1
+ range_remove_value@Base 2.3.0
+ ranges_are_equal@Base 1.9.1
+ read_enabled_and_disabled_lists@Base 3.7.0
+ read_keytab_file@Base 1.9.1
+ read_keytab_file_from_preferences@Base 1.9.1
+ read_prefs_file@Base 1.9.1
+ reassemble_streaming_data_and_call_subdissector@Base 4.1.0
+ reassembly_table_destroy@Base 1.9.1
+ reassembly_table_init@Base 1.9.1
+ reassembly_table_register@Base 2.3.0
+ register_all_tap_listeners@Base 3.5.0
+ register_ber_oid_dissector@Base 2.1.0
+ register_ber_oid_dissector_handle@Base 1.9.1
+ register_ber_oid_syntax@Base 1.9.1
+ register_ber_syntax_dissector@Base 2.1.0
+ register_capture_dissector@Base 2.1.0
+ register_capture_dissector_table@Base 2.1.0
+ register_cleanup_routine@Base 1.99.8
+ register_conversation_filter@Base 2.0.0
+ register_conversation_table@Base 2.5.0
+ register_custom_dissector_table@Base 1.99.8
+ register_decode_as@Base 1.12.0~rc1
+ register_decode_as_next_proto@Base 2.5.0
+ register_depend_dissector@Base 2.1.0
+ register_dissector@Base 2.1.0
+ register_dissector_table@Base 1.9.1
+ register_dissector_table_alias@Base 2.9.0
+ register_dissector_with_data@Base 2.5.0
+ register_dissector_with_description@Base 4.0.0-rc2
+ register_export_object@Base 2.3.0
+ register_export_pdu_tap@Base 1.99.0
+ register_export_pdu_tap_with_encap@Base 3.7.0
+ register_final_registration_routine@Base 1.9.1
+ register_follow_stream@Base 2.1.0
+ register_giop_user@Base 1.9.1
+ register_giop_user_module@Base 1.9.1
+ register_heur_dissector_list@Base 1.9.1
+ register_init_routine@Base 1.9.1
+ register_log_conversation_filter@Base 3.7.0
+ register_per_oid_dissector@Base 2.1.0
+ register_postdissector@Base 1.9.1
+ register_postseq_cleanup_routine@Base 1.9.1
+ register_rtd_table@Base 1.99.8
+ register_seq_analysis@Base 2.5.0
+ register_shutdown_routine@Base 2.3.0
+ register_srt_table@Base 1.99.8
+ register_stat_tap_table_ui@Base 2.1.0
+ register_stat_tap_ui@Base 1.99.1
+ register_tap@Base 1.9.1
+ register_tap_listener@Base 1.9.1
+ rel_oid_encoded2string@Base 1.12.0~rc1
+ rel_oid_resolved_from_encoded@Base 1.12.0~rc1
+ rel_oid_str_to_bytes@Base 1.12.0~rc1
+ rel_oid_subid2string@Base 1.12.0~rc1
+ rel_time_to_secs_str@Base 1.99.0
+ rel_time_to_str@Base 1.99.0
+ remove_last_data_source@Base 1.12.0~rc1
+ remove_tap_listener@Base 1.9.1
+ req_resp_hdrs_do_reassembly@Base 1.9.1
+ reset_conversation_table_data@Base 1.99.0
+ reset_endpoint_table_data@Base 4.0.0-rc2
+ reset_hostlist_table_data@Base 1.99.0
+ reset_pref@Base 2.3.0
+ reset_rtd_table@Base 1.99.8
+ reset_srt_table@Base 1.99.8
+ reset_stashed_pref@Base 2.3.0
+ reset_stat_table@Base 1.99.8
+ reset_tap_listeners@Base 1.9.1
+ rose_ctx_clean_data@Base 1.9.1
+ rose_ctx_init@Base 1.9.1
+ rpc_init_prog@Base 1.9.1
+ rpc_proc_name@Base 1.9.1
+ rpc_prog_hf@Base 1.9.1
+ rpc_prog_name@Base 1.9.1
+ rpc_progs@Base 1.9.1
+ rpc_roundup@Base 1.9.1
+ rtcp_add_address@Base 1.9.1
+ rtd_table_dissector_init@Base 1.99.8
+ rtd_table_get_filter@Base 1.99.8
+ rtd_table_get_tap_string@Base 1.99.8
+ rtd_table_iterate_tables@Base 1.99.8
+ rtp_add_address@Base 1.9.1
+ rtp_dyn_payload_add_fmtp@Base 4.1.0
+ rtp_dyn_payload_free@Base 1.12.0~rc1
+ rtp_dyn_payload_get_full@Base 1.12.0~rc1
+ rtp_dyn_payload_get_name@Base 1.12.0~rc1
+ rtp_dyn_payload_insert@Base 1.12.0~rc1
+ rtp_dyn_payload_insert_full@Base 4.1.0
+ rtp_dyn_payload_new@Base 1.12.0~rc1
+ rtp_event_type_values_ext@Base 1.12.0~rc1
+ rtp_payload_type_short_vals_ext@Base 1.9.1
+ rtp_payload_type_vals_ext@Base 1.9.1
+ rtsp_status_code_vals@Base 1.9.1
+ rval_to_str@Base 1.9.1
+ rval_to_str_const@Base 1.12.0~rc1
+ s1ap_CauseMisc_vals@Base 1.9.1
+ s1ap_CauseNas_vals@Base 1.9.1
+ s1ap_CauseProtocol_vals@Base 1.9.1
+ s1ap_CauseRadioNetwork_vals@Base 1.9.1
+ s1ap_CauseTransport_vals@Base 1.9.1
+ s1ap_Cause_vals@Base 2.3.0
+ save_decode_as_entries@Base 2.3.0
+ save_enabled_and_disabled_lists@Base 2.3.0
+ sccp_address_signal_values@Base 1.9.1
+ sccp_error_cause_values@Base 1.9.1
+ sccp_message_type_acro_values@Base 1.9.1
+ sccp_refusal_cause_values@Base 1.9.1
+ sccp_release_cause_values@Base 1.9.1
+ sccp_reset_cause_values@Base 1.9.1
+ sccp_return_cause_values@Base 1.9.1
+ scsi_mmc_vals_ext@Base 1.12.0~rc1
+ scsi_osd_vals_ext@Base 1.12.0~rc1
+ scsi_sbc_vals_ext@Base 1.12.0~rc1
+ scsi_smc_vals_ext@Base 1.12.0~rc1
+ scsi_ssc_vals_ext@Base 1.12.0~rc1
+ scsistat_param@Base 2.5.0
+ sctp_port_to_display@Base 1.99.2
+ sctpppid_val_ext@Base 3.5.0
+ secrets_get_available_keys@Base 2.9.1
+ secrets_rsa_decrypt@Base 2.9.0
+ secrets_verify_key@Base 2.9.1
+ secrets_wtap_callback@Base 2.9.0
+ sequence_analysis_create_sai_with_addresses@Base 2.5.0
+ sequence_analysis_dump_to_file@Base 2.5.0
+ sequence_analysis_find_by_name@Base 2.5.0
+ sequence_analysis_free_nodes@Base 2.5.0
+ sequence_analysis_get_name@Base 2.5.0
+ sequence_analysis_get_nodes@Base 2.5.0
+ sequence_analysis_get_packet_func@Base 2.5.0
+ sequence_analysis_get_tap_flags@Base 2.5.0
+ sequence_analysis_get_tap_listener_name@Base 2.5.0
+ sequence_analysis_get_ui_name@Base 2.5.0
+ sequence_analysis_info_free@Base 2.5.0
+ sequence_analysis_info_new@Base 2.5.0
+ sequence_analysis_list_free@Base 2.5.0
+ sequence_analysis_list_sort@Base 2.5.0
+ sequence_analysis_table_iterate_tables@Base 2.5.0
+ sequence_analysis_use_col_info_as_label_comment@Base 2.5.0
+ sequence_analysis_use_color_filter@Base 2.5.0
+ serv_name_lookup@Base 2.1.0
+ set_actual_length@Base 1.9.1
+ set_column_custom_fields@Base 2.1.0
+ set_column_custom_occurrence@Base 1.9.1
+ set_column_format@Base 1.9.1
+ set_column_resolved@Base 1.9.1
+ set_column_title@Base 1.9.1
+ set_column_visible@Base 1.9.1
+ set_fd_time@Base 1.9.1
+ set_mac_lte_proto_data@Base 1.9.1
+ set_mac_nr_proto_data@Base 2.5.2
+ set_pdcp_nr_proto_data@Base 2.9.0
+ set_postdissector_wanted_hfids@Base 2.3.0
+ set_resolution_synchrony@Base 2.9.0
+ set_srt_table_param_data@Base 1.99.8
+ set_tap_dfilter@Base 1.9.1
+ show_exception@Base 1.9.1
+ show_fragment_seq_tree@Base 1.9.1
+ show_fragment_tree@Base 1.9.1
+ sid_name_snooping@Base 1.9.1
+ sid_name_table@Base 1.9.1
+ signed_time_msecs_to_str@Base 2.1.0
+ signed_time_secs_to_str@Base 2.1.0
+ sip_response_code_vals@Base 3.3.0
+ smb2_cmd_vals_ext@Base 1.9.1
+ smb_cmd_vals_ext@Base 1.9.1
+ srt_table_dissector_init@Base 1.99.8
+ srt_table_get_filter@Base 1.99.8
+ srt_table_get_tap_string@Base 1.99.8
+ srt_table_iterate_tables@Base 1.99.8
+ srtcp_add_address@Base 1.9.1
+ srtp_add_address@Base 1.9.1
+ ssl_dissector_add@Base 2.1.0
+ ssl_dissector_delete@Base 2.1.0
+ ssl_set_master_secret@Base 1.9.1
+ ssl_starttls_ack@Base 2.1.0
+ ssl_starttls_post_ack@Base 2.1.0
+ sss_verb_enum@Base 2.1.0
+ start_requested_stats@Base 1.9.1
+ stat_node_array_sortcmp@Base 1.12.0~rc1
+ stat_tap_add_table@Base 2.5.1
+ stat_tap_by_name@Base 2.5.1
+ stat_tap_find_table@Base 3.5.0
+ stat_tap_get_field_data@Base 2.5.1
+ stat_tap_get_filter@Base 2.5.1
+ stat_tap_init_table@Base 2.5.1
+ stat_tap_init_table_row@Base 2.5.1
+ stat_tap_iterate_tables@Base 2.5.1
+ stat_tap_set_field_data@Base 2.5.1
+ stats_tree_branch_max_namelen@Base 1.9.1
+ stats_tree_create_node@Base 1.9.1
+ stats_tree_create_node_by_pname@Base 1.9.1
+ stats_tree_create_pivot@Base 1.9.1
+ stats_tree_create_pivot_by_pname@Base 1.9.1
+ stats_tree_create_range_node@Base 1.9.1
+ stats_tree_create_range_node_string@Base 1.9.1
+ stats_tree_format_as_str@Base 1.12.0~rc1
+ stats_tree_format_node_as_str@Base 1.12.0~rc1
+ stats_tree_free@Base 1.9.1
+ stats_tree_get_abbr@Base 1.9.1
+ stats_tree_get_cfg_by_abbr@Base 1.9.1
+ stats_tree_get_cfg_list@Base 1.9.1
+ stats_tree_get_column_name@Base 1.12.0~rc1
+ stats_tree_get_column_size@Base 1.12.0~rc1
+ stats_tree_get_default_sort_col@Base 1.12.0~rc1
+ stats_tree_get_displayname@Base 1.12.0~rc1
+ stats_tree_get_values_from_node@Base 1.12.0~rc1
+ stats_tree_is_default_sort_DESC@Base 1.12.0~rc1
+ stats_tree_manip_node_float@Base 2.9.0
+ stats_tree_manip_node_int@Base 2.9.0
+ stats_tree_new@Base 1.9.1
+ stats_tree_node_to_str@Base 1.9.1
+ stats_tree_packet@Base 1.9.1
+ stats_tree_parent_id_by_name@Base 1.9.1
+ stats_tree_presentation@Base 1.9.1
+ stats_tree_range_node_with_pname@Base 1.9.1
+ stats_tree_register@Base 1.9.1
+ stats_tree_register_plugin@Base 1.9.1
+ stats_tree_register_with_group@Base 1.9.1
+ stats_tree_reinit@Base 1.9.1
+ stats_tree_reset@Base 1.9.1
+ stats_tree_sort_compare@Base 1.12.0~rc1
+ stats_tree_tick_pivot@Base 1.9.1
+ stats_tree_tick_range@Base 1.9.1
+ str_to_ip6@Base 2.1.0
+ str_to_ip@Base 2.1.0
+ str_to_str@Base 1.9.1
+ str_to_val@Base 1.9.1
+ str_to_val_idx@Base 1.9.1
+ stream_add_frag@Base 1.9.1
+ stream_find_frag@Base 1.9.1
+ stream_new@Base 3.5.0
+ stream_process_reassembled@Base 1.9.1
+ streaming_reassembly_info_new@Base 4.1.0
+ string_to_name_resolve@Base 1.9.1
+ sua_co_class_type_acro_values@Base 1.9.1
+ t30_facsimile_control_field_vals_ext@Base 1.12.0~rc1
+ t30_facsimile_control_field_vals_short_ext@Base 1.12.0~rc1
+ t38_T30_data_vals@Base 1.9.1
+ t38_T30_indicator_vals@Base 1.9.1
+ t38_add_address@Base 1.9.1
+ tap_build_interesting@Base 1.9.1
+ tap_listeners_dfilter_recompile@Base 2.0.0
+ tap_listeners_load_field_references@Base 4.1.0
+ tap_listeners_require_columns@Base 4.1.0
+ tap_listeners_require_dissection@Base 1.9.1
+ tap_queue_packet@Base 1.9.1
+ tap_register_plugin@Base 2.5.0
+ tcp_dissect_pdus@Base 1.9.1
+ tcp_port_to_display@Base 1.99.2
+ tcpcl_dissect_ctx_get@Base 3.7.0
+ tfs_accept_reject@Base 1.9.1
+ tfs_accepted_not_accepted@Base 1.9.1
+ tfs_ack_nack@Base 1.9.1
+ tfs_acknowledged_not_acknowledged@Base 1.99.2
+ tfs_activated_deactivated@Base 2.5.1
+ tfs_active_inactive@Base 1.9.1
+ tfs_add_drop@Base 3.3.0
+ tfs_allocated_by_receiver_sender@Base 1.99.1
+ tfs_allow_block@Base 1.9.1
+ tfs_allowed_not_allowed@Base 1.9.1
+ tfs_applicable_not_applicable@Base 3.5.0
+ tfs_asynchronous_synchronous@Base 1.99.1
+ tfs_available_not_available@Base 1.9.1
+ tfs_c2s_s2c@Base 2.5.0
+ tfs_capable_not_capable@Base 1.9.1
+ tfs_changed_not_changed@Base 2.9.1
+ tfs_client_server@Base 2.1.0
+ tfs_command_response@Base 1.9.1
+ tfs_complete_incomplete@Base 1.12.0~rc1
+ tfs_confirmed_unconfirmed@Base 1.12.0~rc1
+ tfs_constructed_primitive@Base 1.99.8
+ tfs_critical_not_critical@Base 1.12.0~rc1
+ tfs_current_not_yet@Base 4.1.0
+ tfs_defined_not_defined@Base 1.99.8
+ tfs_detected_not_detected@Base 1.9.1
+ tfs_disabled_enabled@Base 1.9.1
+ tfs_do_not_clear_clear@Base 1.12.0~rc1
+ tfs_down_up@Base 2.5.0
+ tfs_downlink_uplink@Base 2.5.0
+ tfs_enabled_disabled@Base 1.9.1
+ tfs_encrypt_do_not_encrypt@Base 2.1.0
+ tfs_enforced_not_enforced@Base 1.12.0~rc1
+ tfs_error_ok@Base 1.9.1
+ tfs_external_internal@Base 2.9.1
+ tfs_fail_success@Base 1.9.1
+ tfs_found_not_found@Base 1.9.1
+ tfs_full_half@Base 1.99.1
+ tfs_get_string@Base 3.3.0
+ tfs_group_unique_name@Base 1.9.1
+ tfs_high_low@Base 1.9.1
+ tfs_high_normal@Base 2.5.1
+ tfs_implemented_not_implemented@Base 1.9.1
+ tfs_included_not_included@Base 1.99.1
+ tfs_inuse_not_inuse@Base 1.9.1
+ tfs_invalid_valid@Base 1.99.0
+ tfs_low_normal@Base 2.5.1
+ tfs_more_nomore@Base 1.9.1
+ tfs_needed_not_needed@Base 2.9.1
+ tfs_no_extension_extension@Base 3.3.0
+ tfs_no_yes@Base 1.9.1
+ tfs_not_allowed_allowed@Base 1.9.1
+ tfs_not_restricted_restricted@Base 4.1.0
+ tfs_not_supported_supported@Base 2.9.1
+ tfs_odd_even@Base 1.9.1
+ tfs_ok_error@Base 1.9.1
+ tfs_on_off@Base 1.9.1
+ tfs_open_closed@Base 2.5.0
+ tfs_possible_not_possible@Base 1.99.0
+ tfs_preferred_no_preference@Base 2.1.0
+ tfs_present_absent@Base 1.9.1
+ tfs_present_not_present@Base 1.9.1
+ tfs_pressed_not_pressed@Base 1.9.1
+ tfs_protocol_sensative_bit_transparent@Base 1.99.1
+ tfs_provisioned_not_provisioned@Base 1.99.0
+ tfs_registered_not_registered@Base 1.99.0
+ tfs_reliable_not_reliable@Base 1.9.1
+ tfs_requested_not_requested@Base 1.9.1
+ tfs_required_not_required@Base 1.99.0
+ tfs_response_command@Base 2.1.0
+ tfs_response_request@Base 1.99.8
+ tfs_restricted_allowed@Base 1.9.1
+ tfs_restricted_not_restricted@Base 2.5.0
+ tfs_s2c_c2s@Base 2.5.0
+ tfs_segmentation_no_segmentation@Base 2.1.0
+ tfs_selected_not_selected@Base 2.9.1
+ tfs_server_client@Base 2.1.0
+ tfs_set_notset@Base 1.9.1
+ tfs_shared_independent@Base 1.9.1
+ tfs_success_fail@Base 1.9.1
+ tfs_supported_not_supported@Base 1.9.1
+ tfs_up_down@Base 2.5.0
+ tfs_uplink_downlink@Base 2.5.0
+ tfs_used_notused@Base 1.9.1
+ tfs_user_provider@Base 3.3.0
+ tfs_valid_invalid@Base 1.9.1
+ tfs_valid_not_valid@Base 1.12.0~rc1
+ tfs_yes_no@Base 1.9.1
+ time_stat_init@Base 1.12.0~rc1
+ time_stat_update@Base 1.12.0~rc1
+ timestamp_get_precision@Base 1.9.1
+ timestamp_get_seconds_type@Base 1.9.1
+ timestamp_get_type@Base 1.9.1
+ timestamp_set_precision@Base 1.9.1
+ timestamp_set_seconds_type@Base 1.9.1
+ timestamp_set_type@Base 1.9.1
+ tls_get_master_key_map@Base 4.1.0
+ tls_set_appdata_dissector@Base 3.1.1
+ tmp_color_filters_used@Base 2.1.0
+ trans2_cmd_vals_ext@Base 1.9.1
+ tree_expanded@Base 1.12.0~rc1
+ tree_expanded_set@Base 1.12.0~rc1
+ try_bytesprefix_to_str@Base 2.3.0
+ try_bytesval_to_str@Base 2.3.0
+ try_capture_dissector@Base 2.1.0
+ try_conversation_dissector@Base 2.6.3
+ try_conversation_dissector_by_id@Base 2.6.3
+ try_convert_to_custom_column@Base 4.1.0
+ try_convert_to_column_field@Base 4.1.0
+ try_enterprises_lookup@Base 2.5.0
+ try_rval64_to_str@Base 2.3.0
+ try_rval64_to_str_idx@Base 2.3.0
+ try_rval_to_str@Base 1.9.1
+ try_rval_to_str_idx@Base 1.9.1
+ try_serv_name_lookup@Base 2.1.0
+ try_str_to_str@Base 1.9.1
+ try_str_to_str_idx@Base 1.9.1
+ try_val64_to_str@Base 1.12.0~rc1
+ try_val64_to_str_ext@Base 2.9.0
+ try_val64_to_str_idx@Base 1.12.0~rc1
+ try_val64_to_str_idx_ext@Base 2.9.0
+ try_val_to_str@Base 1.9.1
+ try_val_to_str_ext@Base 1.9.1
+ try_val_to_str_idx@Base 1.9.1
+ try_val_to_str_idx_ext@Base 1.9.1
+ tvb_address_to_str@Base 1.99.2
+ tvb_address_var_to_str@Base 1.99.2
+ tvb_address_with_resolution_to_str@Base 1.99.3
+ tvb_ascii_isdigit@Base 4.1.0
+ tvb_ascii_isprint@Base 2.9.0
+ tvb_bcd_dig_to_str@Base 3.5.0
+ tvb_bcd_dig_to_str_be@Base 3.5.0
+ tvb_bytes_exist@Base 1.9.1
+ tvb_bytes_to_str@Base 1.99.2
+ tvb_bytes_to_str_punct@Base 1.99.2
+ tvb_captured_length@Base 1.12.0~rc1
+ tvb_captured_length_remaining@Base 1.12.0~rc1
+ tvb_child_uncompress@Base 1.12.0~rc1
+ tvb_child_uncompress_brotli@Base 3.1.0
+ tvb_child_uncompress_lz77@Base 3.1.0
+ tvb_child_uncompress_lz77huff@Base 3.1.0
+ tvb_child_uncompress_lznt1@Base 3.1.0
+ tvb_child_uncompress_zstd@Base 4.1.0
+ tvb_clone@Base 1.12.0~rc1
+ tvb_clone_offset_len@Base 1.12.0~rc1
+ tvb_composite_append@Base 1.9.1
+ tvb_composite_finalize@Base 1.9.1
+ tvb_ensure_bytes_exist64@Base 1.99.0
+ tvb_ensure_bytes_exist@Base 1.9.1
+ tvb_ensure_captured_length_remaining@Base 1.12.0~rc1
+ tvb_ensure_reported_length_remaining@Base 3.5.0
+ tvb_find_guint16@Base 2.3.0
+ tvb_find_guint8@Base 1.9.1
+ tvb_find_line_end@Base 1.9.1
+ tvb_find_line_end_unquoted@Base 1.9.1
+ tvb_find_tvb@Base 1.9.1
+ tvb_fix_reported_length@Base 4.0.0-rc2
+ tvb_format_text@Base 1.9.1
+ tvb_format_text_wsp@Base 1.9.1
+ tvb_free@Base 1.9.1
+ tvb_free_chain@Base 1.12.0~rc1
+ tvb_get_ascii_7bits_string@Base 1.12.0~rc1
+ tvb_get_bcd_string@Base 3.3.0
+ tvb_get_bits16@Base 1.9.1
+ tvb_get_bits32@Base 1.9.1
+ tvb_get_bits64@Base 1.9.1
+ tvb_get_bits8@Base 1.9.1
+ tvb_get_bits@Base 1.9.1
+ tvb_get_bits_array@Base 3.3.0
+ tvb_get_const_stringz@Base 1.9.1
+ tvb_get_ds_tvb@Base 1.9.1
+ tvb_get_ether_name@Base 1.99.3
+ tvb_get_etsi_ts_102_221_annex_a_string@Base 3.3.1
+ tvb_get_gint16@Base 2.9.0
+ tvb_get_gint24@Base 2.9.0
+ tvb_get_gint32@Base 2.9.0
+ tvb_get_gint40@Base 1.99.2
+ tvb_get_gint48@Base 1.99.2
+ tvb_get_gint56@Base 1.99.2
+ tvb_get_gint64@Base 2.9.0
+ tvb_get_gint8@Base 2.9.0
+ tvb_get_guid@Base 1.9.1
+ tvb_get_guint16@Base 1.99.2
+ tvb_get_guint24@Base 1.99.2
+ tvb_get_guint32@Base 1.99.2
+ tvb_get_guint40@Base 1.99.2
+ tvb_get_guint48@Base 1.99.2
+ tvb_get_guint56@Base 1.99.2
+ tvb_get_guint64@Base 1.99.2
+ tvb_get_guint8@Base 1.9.1
+ tvb_get_ieee_double@Base 1.99.2
+ tvb_get_ieee_float@Base 1.99.2
+ tvb_get_ipv4@Base 1.9.1
+ tvb_get_ipv6@Base 1.9.1
+ tvb_get_letoh24@Base 1.9.1
+ tvb_get_letoh40@Base 1.9.1
+ tvb_get_letoh48@Base 1.9.1
+ tvb_get_letoh56@Base 1.9.1
+ tvb_get_letoh64@Base 1.9.1
+ tvb_get_letohguid@Base 1.9.1
+ tvb_get_letohi24@Base 2.9.0
+ tvb_get_letohi40@Base 1.12.0~rc1
+ tvb_get_letohi48@Base 1.12.0~rc1
+ tvb_get_letohi56@Base 1.12.0~rc1
+ tvb_get_letohi64@Base 2.9.0
+ tvb_get_letohieee_double@Base 1.9.1
+ tvb_get_letohieee_float@Base 1.9.1
+ tvb_get_letohil@Base 2.9.0
+ tvb_get_letohis@Base 2.9.0
+ tvb_get_letohl@Base 1.9.1
+ tvb_get_letohs@Base 1.9.1
+ tvb_get_manuf_name@Base 1.9.1
+ tvb_get_manuf_name_if_known@Base 1.9.1
+ tvb_get_ntoh24@Base 1.9.1
+ tvb_get_ntoh40@Base 1.9.1
+ tvb_get_ntoh48@Base 1.9.1
+ tvb_get_ntoh56@Base 1.9.1
+ tvb_get_ntoh64@Base 1.9.1
+ tvb_get_ntohguid@Base 1.9.1
+ tvb_get_ntohi24@Base 2.9.0
+ tvb_get_ntohi40@Base 1.12.0~rc1
+ tvb_get_ntohi48@Base 1.12.0~rc1
+ tvb_get_ntohi56@Base 1.12.0~rc1
+ tvb_get_ntohi64@Base 2.9.0
+ tvb_get_ntohieee_double@Base 1.9.1
+ tvb_get_ntohieee_float@Base 1.9.1
+ tvb_get_ntohil@Base 2.9.0
+ tvb_get_ntohis@Base 2.9.0
+ tvb_get_ntohl@Base 1.9.1
+ tvb_get_ntohs@Base 1.9.1
+ tvb_get_ptr@Base 1.9.1
+ tvb_get_raw_bytes_as_string@Base 3.1.0
+ tvb_get_raw_bytes_as_stringz@Base 4.1.0
+ tvb_get_string_bytes@Base 1.12.0~rc1
+ tvb_get_string_enc@Base 1.12.0~rc1
+ tvb_get_string_time@Base 1.12.0~rc1
+ tvb_get_stringz_enc@Base 1.9.1
+ tvb_get_stringzpad@Base 1.12.0~rc1
+ tvb_get_token_len@Base 2.9.0
+ tvb_get_ts_23_038_7bits_string_packed@Base 3.3.1
+ tvb_get_ts_23_038_7bits_string_unpacked@Base 3.3.1
+ tvb_get_varint@Base 2.5.0
+ tvb_memcpy@Base 1.9.1
+ tvb_memdup@Base 1.9.1
+ tvb_memeql@Base 1.9.1
+ tvb_new@Base 1.12.0~rc1
+ tvb_new_chain@Base 1.12.0~rc1
+ tvb_new_child_real_data@Base 1.9.1
+ tvb_new_composite@Base 1.9.1
+ tvb_new_octet_aligned@Base 1.9.1
+ tvb_new_octet_right_aligned@Base 3.5.1
+ tvb_new_real_data@Base 1.9.1
+ tvb_new_subset_length@Base 1.9.1
+ tvb_new_subset_length_caplen@Base 2.3.0
+ tvb_new_subset_remaining@Base 1.9.1
+ tvb_offset_exists@Base 1.9.1
+ tvb_offset_from_real_beginning@Base 1.9.1
+ tvb_raw_offset@Base 1.9.1
+ tvb_reported_length@Base 1.9.1
+ tvb_reported_length_remaining@Base 1.9.1
+ tvb_set_child_real_data_tvbuff@Base 1.9.1
+ tvb_set_fragment@Base 1.9.1
+ tvb_set_free_cb@Base 1.9.1
+ tvb_set_reported_length@Base 1.9.1
+ tvb_skip_wsp@Base 1.9.1
+ tvb_skip_wsp_return@Base 1.9.1
+ tvb_strncaseeql@Base 1.9.1
+ tvb_strneql@Base 1.9.1
+ tvb_strnlen@Base 1.9.1
+ tvb_strsize@Base 1.9.1
+ tvb_uncompress@Base 1.9.1
+ tvb_uncompress_brotli@Base 3.1.0
+ tvb_uncompress_lz77@Base 3.1.0
+ tvb_uncompress_lz77huff@Base 3.1.0
+ tvb_uncompress_lznt1@Base 3.1.0
+ tvb_uncompress_zstd@Base 4.1.0
+ tvb_unicode_strsize@Base 1.9.1
+ tvb_utf_8_isprint@Base 3.7.0
+ tvb_ws_mempbrk_pattern_guint8@Base 1.99.3
+ tvbparse_casestring@Base 1.9.1
+ tvbparse_char@Base 1.9.1
+ tvbparse_chars@Base 1.9.1
+ tvbparse_curr_offset@Base 1.9.1
+ tvbparse_find@Base 1.9.1
+ tvbparse_get@Base 1.9.1
+ tvbparse_hashed@Base 1.9.1
+ tvbparse_hashed_add@Base 1.9.1
+ tvbparse_init@Base 1.9.1
+ tvbparse_not_char@Base 1.9.1
+ tvbparse_not_chars@Base 1.9.1
+ tvbparse_peek@Base 1.9.1
+ tvbparse_quoted@Base 1.9.1
+ tvbparse_reset@Base 1.9.1
+ tvbparse_set_oneof@Base 1.9.1
+ tvbparse_set_seq@Base 1.9.1
+ tvbparse_shrink_token_cb@Base 1.9.1
+ tvbparse_some@Base 1.9.1
+ tvbparse_string@Base 1.9.1
+ tvbparse_tree_add_elem@Base 1.9.1
+ tvbparse_until@Base 1.9.1
+ uat_add_record@Base 1.9.1
+ uat_clear@Base 1.9.1
+ uat_fld_chk_bool@Base 2.5.0
+ uat_fld_chk_color@Base 2.5.0
+ uat_fld_chk_enum@Base 1.9.1
+ uat_fld_chk_num_dec64@Base 3.5.0
+ uat_fld_chk_num_dec@Base 1.9.1
+ uat_fld_chk_num_hex64@Base 3.5.0
+ uat_fld_chk_num_hex@Base 1.9.1
+ uat_fld_chk_num_signed_dec64@Base 3.5.0
+ uat_fld_chk_num_signed_dec@Base 2.9.0
+ uat_fld_chk_proto@Base 1.9.1
+ uat_fld_chk_range@Base 1.9.1
+ uat_fld_chk_str@Base 1.9.1
+ uat_fld_chk_str_isalnum@Base 1.9.1
+ uat_fld_chk_str_isalpha@Base 1.9.1
+ uat_fld_chk_str_isdigit@Base 1.9.1
+ uat_fld_chk_str_isprint@Base 1.9.1
+ uat_fld_chk_str_isxdigit@Base 1.9.1
+ uat_fld_tostr@Base 2.3.0
+ uat_foreach_table@Base 1.9.1
+ uat_get_actual_filename@Base 1.12.0~rc1
+ uat_get_table_by_name@Base 1.9.1
+ uat_insert_record_idx@Base 2.3.0
+ uat_load@Base 1.9.1
+ uat_move_index@Base 2.5.0
+ uat_new@Base 1.9.1
+ uat_remove_record_idx@Base 1.9.1
+ uat_save@Base 1.9.1
+ uat_set_default_values@Base 3.6.0
+ uat_swap@Base 1.9.1
+ uat_update_record@Base 1.99.3
+ udp_dissect_pdus@Base 1.99.3
+ udp_port_to_display@Base 1.99.2
+ union_of_tap_listener_flags@Base 1.9.1
+ unit_name_string_get_double@Base 2.3.0
+ unit_name_string_get_value64@Base 2.3.0
+ unit_name_string_get_value@Base 2.3.0
+ units_amp@Base 2.5.0
+ units_bit_bits@Base 2.3.0
+ units_bit_sec@Base 2.3.0
+ units_bpm@Base 2.9.0
+ units_byte_bytes@Base 2.3.0
+ units_byte_bytespsecond@Base 2.5.0
+ units_calorie@Base 2.9.0
+ units_centibels@Base 3.3.0
+ units_centimeter_centimeters@Base 4.1.0
+ units_centimeters@Base 4.1.0
+ units_cm_s@Base 4.1.0
+ units_day_days@Base 2.3.0
+ units_dbhz@Base 4.1.0
+ units_dbi@Base 2.3.0
+ units_dbm@Base 2.3.0
+ units_decibels@Base 2.3.0
+ units_degree_bearing@Base 2.5.0
+ units_degree_celsius@Base 2.3.0
+ units_degree_degrees@Base 2.3.0
+ units_foot_feet@Base 2.3.0
+ units_frame_frames@Base 2.3.0
+ units_ghz@Base 2.3.0
+ units_grams_per_second@Base 2.3.0
+ units_hour_hours@Base 2.3.0
+ units_hours@Base 2.3.0
+ units_hz@Base 2.3.0
+ units_hz_s@Base 2.3.0
+ units_kbit@Base 2.3.0
+ units_kbps@Base 2.3.0
+ units_khz@Base 2.3.0
+ units_kibps@Base 2.3.0
+ units_kilopascal@Base 2.3.0
+ units_km@Base 2.3.0
+ units_kmh@Base 2.3.0
+ units_liter_per_hour@Base 2.3.0
+ units_m_s@Base 4.1.0
+ units_mbm@Base 2.3.0
+ units_meter_meters@Base 2.3.0
+ units_meter_sec@Base 2.3.0
+ units_meter_sec_squared@Base 2.3.0
+ units_meters@Base 2.3.0
+ units_mhz@Base 2.3.0
+ units_microsecond_microseconds@Base 2.3.0
+ units_microseconds@Base 2.3.0
+ units_microwatts@Base 2.3.0
+ units_milliamps@Base 2.3.0
+ units_millimeter_millimeters@Base 4.1.0
+ units_millimeters@Base 4.1.0
+ units_millisecond_milliseconds@Base 2.3.0
+ units_milliseconds@Base 2.3.0
+ units_minute_minutes@Base 2.3.0
+ units_minutes@Base 2.3.0
+ units_mm_s@Base 4.1.0
+ units_nanometers@Base 2.3.0
+ units_nanosecond_nanoseconds@Base 2.3.0
+ units_nanoseconds@Base 2.3.0
+ units_newton_metre@Base 2.3.0
+ units_octet_octets@Base 2.3.0
+ units_percent@Base 2.3.0
+ units_pkts@Base 3.1.0
+ units_pkts_per_sec@Base 3.1.0
+ units_revolutions_per_minute@Base 2.3.0
+ units_second_seconds@Base 2.3.0
+ units_seconds@Base 2.3.0
+ units_segment_remaining@Base 2.3.0
+ units_tick_ticks@Base 2.3.0
+ units_volt@Base 2.3.0
+ units_watt@Base 2.5.0
+ units_watthour@Base 2.5.0
+ units_week_weeks@Base 2.3.0
+ units_word_words@Base 2.3.0
+ unsigned_time_secs_to_str@Base 2.1.0
+ update_crc10_by_bytes_tvb@Base 1.99.0
+ uri_str_to_bytes@Base 1.9.1
+ uri_to_bytes@Base 4.1.0
+ val64_string_ext_free@Base 2.9.0
+ val64_string_ext_new@Base 2.9.0
+ val64_to_str@Base 1.12.0~rc1
+ val64_to_str_const@Base 1.12.0~rc1
+ val64_to_str_ext@Base 2.9.0
+ val64_to_str_ext_const@Base 2.9.0
+ val64_to_str_ext_wmem@Base 2.9.0
+ val_to_str@Base 1.9.1
+ val_to_str_const@Base 1.9.1
+ val_to_str_ext@Base 1.9.1
+ val_to_str_ext_const@Base 1.9.1
+ val_to_str_ext_wmem@Base 1.99.2
+ val_to_str_wmem@Base 1.99.2
+ vals_http_status_code@Base 3.3.0
+ value_is_in_range@Base 1.9.1
+ value_string_ext_free@Base 1.12.0~rc1
+ value_string_ext_new@Base 1.9.1
+ wmem_cleanup_scopes@Base 3.5.0
+ wmem_epan_scope@Base 3.5.0
+ wmem_file_scope@Base 3.5.0
+ wmem_init_scopes@Base 3.5.0
+ wmem_packet_scope@Base 3.5.0
+ write_carrays_hex_data@Base 1.99.1
+ write_csv_column_titles@Base 1.99.1
+ write_csv_columns@Base 1.99.1
+ write_ek_proto_tree@Base 2.1.2
+ write_fields_finale@Base 1.12.0~rc1
+ write_fields_preamble@Base 1.12.0~rc1
+ write_fields_proto_tree@Base 1.99.1
+ write_json_finale@Base 2.1.2
+ write_json_preamble@Base 2.1.2
+ write_json_proto_tree@Base 2.1.2
+ write_pdml_finale@Base 1.12.0~rc1
+ write_pdml_preamble@Base 1.12.0~rc1
+ write_pdml_proto_tree@Base 1.99.1
+ write_prefs@Base 1.9.1
+ write_psml_columns@Base 1.99.1
+ write_psml_finale@Base 1.12.0~rc1
+ write_psml_preamble@Base 1.12.0~rc1
+ ws_find_media_type_parameter@Base 2.2.0
+ ws_label_strcat@Base 4.1.0
+ ws_label_strcpy@Base 4.1.0
+ ws_manuf_block_str@Base 4.1.0
+ ws_manuf_count@Base 4.1.0
+ ws_manuf_dump@Base 4.1.0
+ ws_manuf_iter_init@Base 4.1.0
+ ws_manuf_iter_next@Base 4.1.0
+ ws_manuf_lookup_str@Base 4.1.0
+ wscbor_chunk_free@Base 3.5.1
+ wscbor_chunk_mark_errors@Base 3.5.1
+ wscbor_chunk_read@Base 3.5.1
+ wscbor_error_new@Base 3.5.1
+ wscbor_expert_items@Base 3.5.1
+ wscbor_has_errors@Base 3.5.1
+ wscbor_init@Base 3.5.1
+ wscbor_is_indefinite_break@Base 3.5.1
+ wscbor_require_array@Base 3.5.1
+ wscbor_require_array_size@Base 3.5.1
+ wscbor_require_boolean@Base 3.5.1
+ wscbor_require_bstr@Base 3.5.1
+ wscbor_require_int64@Base 3.5.1
+ wscbor_require_major_type@Base 3.5.1
+ wscbor_require_map@Base 3.5.1
+ wscbor_require_tstr@Base 3.5.1
+ wscbor_require_uint64@Base 3.5.1
+ wscbor_skip_if_errors@Base 3.5.1
+ wscbor_skip_next_item@Base 3.5.1
+ wslua_count_plugins@Base 1.12.0~rc1
+ wslua_plugin_type_name@Base 2.5.0
+ wslua_plugins_dump_all@Base 1.12.0~rc1
+ wslua_plugins_get_descriptions@Base 1.12.0~rc1
+ wslua_reload_plugins@Base 1.99.9
+ wsp_vals_pdu_type_ext@Base 1.9.1
+ wsp_vals_status_ext@Base 1.9.1
+ xml_escape@Base 1.9.1
+ xml_get_attrib@Base 1.9.1
+ xml_get_cdata@Base 1.9.1
+ xml_get_tag@Base 1.9.1
+ zbee_zcl_init_cluster@Base 2.5.2
diff --git a/packaging/debian/libwiretap-dev.install b/packaging/debian/libwiretap-dev.install
new file mode 100644
index 0000000..a4c2db4
--- /dev/null
+++ b/packaging/debian/libwiretap-dev.install
@@ -0,0 +1,2 @@
+usr/lib/*/libwiretap.so
+usr/include/wireshark/wiretap/*
diff --git a/packaging/debian/libwiretap14.docs b/packaging/debian/libwiretap14.docs
new file mode 100644
index 0000000..0c48271
--- /dev/null
+++ b/packaging/debian/libwiretap14.docs
@@ -0,0 +1 @@
+wiretap/README
diff --git a/packaging/debian/libwiretap14.install b/packaging/debian/libwiretap14.install
new file mode 100644
index 0000000..f9d702a
--- /dev/null
+++ b/packaging/debian/libwiretap14.install
@@ -0,0 +1,2 @@
+usr/lib/*/libwiretap.so.*
+usr/lib/*/wireshark/plugins/*/wiretap/*.so
diff --git a/packaging/debian/libwiretap14.symbols b/packaging/debian/libwiretap14.symbols
new file mode 100644
index 0000000..a7a9cd1
--- /dev/null
+++ b/packaging/debian/libwiretap14.symbols
@@ -0,0 +1,207 @@
+libwiretap.so.14 libwiretap14 #MINVER#
+ file_eof@Base 1.9.1
+ file_error@Base 1.9.1
+ file_getc@Base 1.9.1
+ file_gets@Base 1.9.1
+ file_getsp@Base 2.9.0
+ file_iscompressed@Base 1.12.0~rc1
+ file_peekc@Base 1.12.0~rc1
+ file_read@Base 1.9.1
+ file_seek@Base 1.9.1
+ file_tell@Base 1.9.1
+ get_backwards_compatibility_lua_table@Base 3.5.0
+ init_open_routines@Base 1.12.0~rc1
+ merge_files@Base 1.99.9
+ merge_files_to_stdout@Base 2.3.0
+ merge_files_to_tempfile@Base 2.3.0
+ merge_idb_merge_mode_to_string@Base 1.99.9
+ merge_string_to_idb_merge_mode@Base 1.99.9
+ open_info_name_to_type@Base 1.12.0~rc1
+ open_routines@Base 1.12.0~rc1
+ pcapng_process_bytes_option@Base 3.5.0
+ pcapng_process_int64_option@Base 4.2.1
+ pcapng_process_options@Base 3.5.0
+ pcapng_process_string_option@Base 3.5.0
+ pcapng_process_timestamp_option@Base 3.5.0
+ pcapng_process_uint32_option@Base 3.5.0
+ pcapng_process_uint64_option@Base 3.5.0
+ pcapng_process_uint8_option@Base 3.5.0
+ register_pcapng_block_type_handler@Base 1.99.0
+ register_pcapng_option_handler@Base 1.99.2
+ wtap_add_generated_idb@Base 3.3.0
+ wtap_addrinfo_list_empty@Base 2.5.0
+ wtap_block_add_bytes_option@Base 3.5.0
+ wtap_block_add_bytes_option_borrow@Base 3.5.0
+ wtap_block_add_custom_option@Base 3.5.0
+ wtap_block_add_if_filter_option@Base 3.5.0
+ wtap_block_add_int32_option@Base 4.2.1
+ wtap_block_add_int64_option@Base 4.2.1
+ wtap_block_add_int8_option@Base 4.2.1
+ wtap_block_add_ipv4_option@Base 2.1.2
+ wtap_block_add_ipv6_option@Base 2.1.2
+ wtap_block_add_nflx_custom_option@Base 3.5.0
+ wtap_block_add_packet_hash_option@Base 4.1.0
+ wtap_block_add_packet_verdict_option@Base 3.5.1
+ wtap_block_add_string_option@Base 2.1.2
+ wtap_block_add_string_option_format@Base 2.1.2
+ wtap_block_add_string_option_owned@Base 4.1.0
+ wtap_block_add_uint32_option@Base 3.5.0
+ wtap_block_add_uint64_option@Base 2.1.2
+ wtap_block_add_uint8_option@Base 2.1.2
+ wtap_block_array_free@Base 2.1.2
+ wtap_block_copy@Base 2.1.2
+ wtap_block_count_option@Base 3.5.0
+ wtap_block_create@Base 2.1.2
+ wtap_block_foreach_option@Base 2.1.2
+ wtap_block_get_bytes_option_value@Base 3.5.0
+ wtap_block_get_if_filter_option_value@Base 3.5.0
+ wtap_block_get_int32_option_value@Base 4.2.1
+ wtap_block_get_int64_option_value@Base 4.2.1
+ wtap_block_get_int8_option_value@Base 4.2.1
+ wtap_block_get_ipv4_option_value@Base 2.1.2
+ wtap_block_get_ipv6_option_value@Base 2.1.2
+ wtap_block_get_mandatory_data@Base 2.1.2
+ wtap_block_get_nflx_custom_option@Base 3.5.0
+ wtap_block_get_nth_bytes_option_value@Base 3.5.0
+ wtap_block_get_nth_packet_verdict_option_value@Base 3.5.1
+ wtap_block_get_nth_string_option_value@Base 2.1.2
+ wtap_block_get_string_option_value@Base 2.1.2
+ wtap_block_get_type@Base 3.5.0
+ wtap_block_get_uint32_option_value@Base 3.5.0
+ wtap_block_get_uint64_option_value@Base 2.1.2
+ wtap_block_get_uint8_option_value@Base 2.1.2
+ wtap_block_make_copy@Base 3.3.2
+ wtap_block_ref@Base 3.5.0
+ wtap_block_remove_nth_option_instance@Base 2.2.0
+ wtap_block_remove_option@Base 2.2.0
+ wtap_block_set_bytes_option_value@Base 3.5.0
+ wtap_block_set_if_filter_option_value@Base 3.5.0
+ wtap_block_set_int32_option_value@Base 4.2.1
+ wtap_block_set_int64_option_value@Base 4.2.1
+ wtap_block_set_int8_option_value@Base 4.2.1
+ wtap_block_set_ipv4_option_value@Base 2.1.2
+ wtap_block_set_ipv6_option_value@Base 2.1.2
+ wtap_block_set_nth_bytes_option_value@Base 3.5.0
+ wtap_block_set_nth_packet_verdict_option_value@Base 3.5.1
+ wtap_block_set_nth_string_option_value@Base 2.1.2
+ wtap_block_set_nth_string_option_value_format@Base 3.5.0
+ wtap_block_set_string_option_value@Base 2.1.2
+ wtap_block_set_string_option_value_format@Base 2.1.2
+ wtap_block_set_uint32_option_value@Base 3.5.0
+ wtap_block_set_uint64_option_value@Base 2.1.2
+ wtap_block_set_uint8_option_value@Base 2.1.2
+ wtap_block_unref@Base 3.5.0
+ wtap_buffer_append_epdu_end@Base 4.1.0
+ wtap_buffer_append_epdu_string@Base 4.1.1rc0
+ wtap_buffer_append_epdu_tag@Base 4.1.0
+ wtap_buffer_append_epdu_uint@Base 4.1.0
+ wtap_cleanup@Base 2.3.0
+ wtap_cleareof@Base 1.9.1
+ wtap_close@Base 1.9.1
+ wtap_compression_type_description@Base 2.9.0
+ wtap_compression_type_extension@Base 2.9.0
+ wtap_default_file_extension@Base 1.9.1
+ wtap_deregister_file_type_subtype@Base 1.12.0~rc1
+ wtap_deregister_open_info@Base 1.12.0~rc1
+ wtap_dump@Base 1.9.1
+ wtap_dump_add_idb@Base 3.3.2
+ wtap_dump_can_compress@Base 1.9.1
+ wtap_dump_can_open@Base 1.9.1
+ wtap_dump_can_write@Base 1.9.1
+ wtap_dump_can_write_encap@Base 3.5.0
+ wtap_dump_close@Base 1.9.1
+ wtap_dump_discard_decryption_secrets@Base 3.0.0
+ wtap_dump_discard_name_resolution@Base 4.1.0
+ wtap_dump_fdopen@Base 1.9.1
+ wtap_dump_file_seek@Base 1.12.0~rc1
+ wtap_dump_file_tell@Base 1.12.0~rc1
+ wtap_dump_file_type_subtype@Base 3.3.2
+ wtap_dump_file_write@Base 1.12.0~rc1
+ wtap_dump_flush@Base 1.9.1
+ wtap_dump_open@Base 1.9.1
+ wtap_dump_open_stdout@Base 2.0.0
+ wtap_dump_open_tempfile@Base 2.0.0
+ wtap_dump_params_cleanup@Base 2.9.0
+ wtap_dump_params_discard_decryption_secrets@Base 3.0.0
+ wtap_dump_params_discard_name_resolution@Base 4.1.0
+ wtap_dump_params_init@Base 2.9.0
+ wtap_dump_params_init_no_idbs@Base 3.3.2
+ wtap_dump_required_file_encap_type@Base 4.1.0
+ wtap_dump_set_addrinfo_list@Base 1.9.1
+ wtap_encap_description@Base 2.9.1
+ wtap_encap_name@Base 2.9.1
+ wtap_encap_requires_phdr@Base 1.9.1
+ wtap_fdclose@Base 1.9.1
+ wtap_fdreopen@Base 1.9.1
+ wtap_file_add_decryption_secrets@Base 4.1.0
+ wtap_file_discard_decryption_secrets@Base 4.1.0
+ wtap_file_encap@Base 1.9.1
+ wtap_file_get_idb_info@Base 1.9.1
+ wtap_file_get_nrb@Base 2.1.2
+ wtap_file_get_num_shbs@Base 3.3.0
+ wtap_file_get_shb@Base 1.99.9
+ wtap_file_size@Base 1.9.1
+ wtap_file_tsprec@Base 1.99.0
+ wtap_file_type_subtype@Base 1.12.0~rc1
+ wtap_file_type_subtype_description@Base 3.5.0
+ wtap_file_type_subtype_name@Base 3.5.0
+ wtap_file_type_subtype_supports_block@Base 3.5.0
+ wtap_file_type_subtype_supports_option@Base 3.5.0
+ wtap_free_extensions_list@Base 1.9.1
+ wtap_free_idb_info@Base 1.99.9
+ wtap_fstat@Base 1.9.1
+ wtap_get_all_capture_file_extensions_list@Base 2.3.0
+ wtap_get_all_compression_type_extensions_list@Base 2.9.0
+ wtap_get_all_file_extensions_list@Base 2.6.2
+ wtap_get_bytes_dumped@Base 1.9.1
+ wtap_get_compression_type@Base 2.9.0
+ wtap_get_debug_if_descr@Base 1.99.9
+ wtap_get_file_extension_type_extensions@Base 1.12.0~rc1
+ wtap_get_file_extension_type_name@Base 1.12.0~rc1
+ wtap_get_file_extensions_list@Base 1.9.1
+ wtap_get_next_interface_description@Base 3.3.2
+ wtap_get_num_encap_types@Base 1.9.1
+ wtap_get_num_file_type_extensions@Base 1.12.0~rc1
+ wtap_get_savable_file_types_subtypes_for_file@Base 3.5.0
+ wtap_get_writable_file_types_subtypes@Base 3.5.0
+ wtap_has_open_info@Base 1.12.0~rc1
+ wtap_init@Base 2.3.0
+ wtap_inspect_enums@Base 4.1.0
+ wtap_inspect_enums_bsearch@Base 4.1.0
+ wtap_inspect_enums_count@Base 4.1.0
+ wtap_name_to_encap@Base 4.1.0
+ wtap_name_to_file_type_subtype@Base 3.5.0
+ wtap_open_offline@Base 1.9.1
+ wtap_opttypes_cleanup@Base 2.3.0
+ wtap_opttypes_initialize@Base 2.1.2
+ wtap_packet_hash_free@Base 4.1.0
+ wtap_packet_verdict_free@Base 3.5.1
+ wtap_pcap_encap_to_wtap_encap@Base 1.9.1
+ wtap_pcap_file_type_subtype@Base 3.5.0
+ wtap_pcap_nsec_file_type_subtype@Base 3.5.0
+ wtap_pcapng_file_type_subtype@Base 3.5.0
+ wtap_plugins_supported@Base 3.5.0
+ wtap_read@Base 1.9.1
+ wtap_read_bytes@Base 1.99.1
+ wtap_read_bytes_or_eof@Base 1.99.1
+ wtap_read_packet_bytes@Base 1.12.0~rc1
+ wtap_read_so_far@Base 1.9.1
+ wtap_rec_cleanup@Base 2.5.1
+ wtap_rec_init@Base 2.5.1
+ wtap_rec_reset@Base 3.5.0
+ wtap_register_encap_type@Base 1.9.1
+ wtap_register_file_type_extension@Base 1.12.0~rc1
+ wtap_register_file_type_subtype@Base 3.5.0
+ wtap_register_open_info@Base 1.12.0~rc1
+ wtap_register_plugin@Base 2.5.0
+ wtap_seek_read@Base 1.9.1
+ wtap_sequential_close@Base 1.9.1
+ wtap_set_bytes_dumped@Base 1.9.1
+ wtap_set_cb_new_ipv4@Base 1.9.1
+ wtap_set_cb_new_ipv6@Base 1.9.1
+ wtap_set_cb_new_secrets@Base 2.9.0
+ wtap_snapshot_length@Base 1.9.1
+ wtap_strerror@Base 1.9.1
+ wtap_tsprec_string@Base 1.99.9
+ wtap_uses_lua_filehandler@Base 3.5.1
+ wtap_write_shb_comment@Base 1.9.1
diff --git a/packaging/debian/libwsutil-dev.install b/packaging/debian/libwsutil-dev.install
new file mode 100644
index 0000000..f1c523a
--- /dev/null
+++ b/packaging/debian/libwsutil-dev.install
@@ -0,0 +1,3 @@
+usr/lib/*/libwsutil.so
+usr/include/wireshark/*.h
+usr/include/wireshark/wsutil/*
diff --git a/packaging/debian/libwsutil15.install b/packaging/debian/libwsutil15.install
new file mode 100644
index 0000000..e9f0761
--- /dev/null
+++ b/packaging/debian/libwsutil15.install
@@ -0,0 +1 @@
+usr/lib/*/libwsutil.so.*
diff --git a/packaging/debian/libwsutil15.symbols b/packaging/debian/libwsutil15.symbols
new file mode 100644
index 0000000..f9f61b3
--- /dev/null
+++ b/packaging/debian/libwsutil15.symbols
@@ -0,0 +1,531 @@
+libwsutil.so.15 libwsutil15 #MINVER#
+ Dot11DecryptWepDecrypt@Base 2.5.0
+ EBCDIC_to_ASCII1@Base 4.1.0
+ EBCDIC_to_ASCII@Base 4.1.0
+ Eax_Decrypt@Base 1.12.0~rc1
+ add_to_filter_list@Base 4.1.0
+ adler32_bytes@Base 1.12.0~rc1
+ adler32_str@Base 1.12.0~rc1
+ alaw2linear@Base 1.12.0~rc1
+ allowed_profile_filenames@Base 3.1.1
+ ascii_strdown_inplace@Base 1.10.0
+ ascii_strup_inplace@Base 1.10.0
+ bitswap_buf_inplace@Base 1.12.0~rc1
+ bytes_to_hexstr@Base 3.5.0
+ bytes_to_hexstr_punct@Base 3.5.0
+ bytes_to_str_maxlen@Base 3.7.0
+ bytes_to_str_punct_maxlen@Base 3.7.0
+ cmdarg_err@Base 4.1.0
+ cmdarg_err_cont@Base 4.1.0
+ cmdarg_err_init@Base 4.1.0
+ codec_decode@Base 3.1.0
+ codec_get_channels@Base 3.1.0
+ codec_get_frequency@Base 3.1.0
+ codec_init@Base 3.1.0
+ codec_release@Base 3.1.0
+ codecs_cleanup@Base 3.1.0
+ codecs_init@Base 3.1.0
+ codecs_register_plugin@Base 3.1.0
+ config_file_exists_with_entries@Base 2.9.0
+ configuration_init@Base 3.7.0
+ copy_file_binary_mode@Base 1.12.0~rc1
+ copy_persconffile_profile@Base 1.12.0~rc1
+ crc11_307_noreflect_noxor@Base 1.10.0
+ crc16_0x080F_seed@Base 2.3.0
+ crc16_0x3D65_seed@Base 1.99.0
+ crc16_0x5935@Base 1.10.0
+ crc16_0x755B@Base 1.12.0~rc1
+ crc16_0x9949_seed@Base 1.12.0~rc1
+ crc16_8005_noreflect_noxor@Base 1.10.0
+ crc16_ccitt@Base 1.10.0
+ crc16_ccitt_seed@Base 1.10.0
+ crc16_iso14443a@Base 2.1.0
+ crc16_plain_update@Base 1.10.0
+ crc16_usb@Base 3.1.0
+ crc16_x25_ccitt_seed@Base 1.99.3
+ crc32_0x0AA725CF_seed@Base 1.12.0~rc1
+ crc32_0x5D6DCB_seed@Base 2.3.0
+ crc32_ccitt@Base 1.10.0
+ crc32_ccitt_seed@Base 1.10.0
+ crc32_ccitt_table_lookup@Base 1.10.0
+ crc32_mpeg2_seed@Base 1.10.0
+ crc32c_calculate@Base 1.10.0
+ crc32c_calculate_no_swap@Base 1.10.0
+ crc32c_table_lookup@Base 1.10.0
+ crc5_usb_11bit_input@Base 3.1.1
+ crc5_usb_19bit_input@Base 3.1.1
+ crc6_0X6F@Base 1.12.0~rc1
+ crc7update@Base 1.10.0
+ crc8_0x2F@Base 1.10.0
+ crc8_0x37@Base 2.3.0
+ crc8_0x3B@Base 2.3.0
+ create_persconffile_dir@Base 1.12.0~rc1
+ create_persconffile_profile@Base 1.12.0~rc1
+ create_profiles_dir@Base 2.5.0
+ create_tempdir@Base 4.1.0
+ create_tempfile@Base 1.12.0~rc1
+ create_timestamp@Base 2.5.0
+ crypt_des_ecb@Base 2.3.0
+ crypto_scalarmult_curve25519@Base 2.9.0
+ crypto_scalarmult_curve25519_base@Base 2.9.0
+ data_file_url@Base 2.3.0
+ decode_synchsafe_int@Base 3.7.0
+ decrypt_xtea_ecb@Base 2.5.0
+ decrypt_xtea_le_ecb@Base 2.5.0
+ delete_persconffile_profile@Base 1.12.0~rc1
+ deregister_codec@Base 3.1.0
+ display_epoch_time@Base 4.1.0
+ display_signed_time@Base 4.1.0
+ doc_file_url@Base 4.1.0
+ dword_to_hex@Base 3.5.1
+ dword_to_hex_punct@Base 3.5.1
+ eui64_to_str@Base 3.5.1
+ file_exists@Base 1.12.0~rc1
+ file_needs_reopen@Base 3.0.6
+ file_open_error_message@Base 1.12.0~rc1
+ file_write_error_message@Base 1.12.0~rc1
+ files_identical@Base 1.12.0~rc1
+ filetime_to_nstime@Base 2.0.0
+ find_codec@Base 3.1.0
+ find_last_pathname_separator@Base 1.12.0~rc1
+ format_char@Base 4.1.0
+ format_fractional_part_nsecs@Base 4.1.1
+ format_nstime_as_iso8601@Base 4.1.1
+ format_size_wmem@Base 3.5.0
+ format_text@Base 4.1.0
+ format_text_chr@Base 4.1.0
+ format_text_string@Base 4.1.0
+ format_text_wsp@Base 4.1.0
+ free_features@Base 3.7.0
+ free_filter_lists@Base 4.1.0
+ free_progdirs@Base 2.3.0
+ gather_pcre2_compile_info@Base 4.1.0
+ gather_pcre2_runtime_info@Base 4.1.0
+ gather_zlib_compile_info@Base 4.1.0
+ gather_zlib_runtime_info@Base 4.1.0
+ get_appname_and_version@Base 4.1.0
+ get_basename@Base 1.12.0~rc1
+ get_compiled_version_info@Base 4.1.0
+ get_configuration_namespace@Base 3.7.0
+ get_copyright_info@Base 4.1.0
+ get_cpu_info@Base 2.3.0
+ get_cur_groupname@Base 1.10.0
+ get_cur_username@Base 1.10.0
+ get_datafile_dir@Base 1.12.0~rc1
+ get_datafile_path@Base 1.12.0~rc1
+ get_dirname@Base 1.12.0~rc1
+ get_doc_dir@Base 4.1.0
+ get_docfile_path@Base 4.1.0
+ get_executable_path@Base 4.1.0
+ get_extcap_dir@Base 1.99.0
+ get_extcap_pers_dir@Base 4.1.0
+ get_filter_list_first@Base 4.1.0
+ get_friendly_program_name@Base 3.5.0
+ get_global_profiles_dir@Base 1.12.0~rc1
+ get_guint32@Base 4.1.0
+ get_license_info@Base 4.1.0
+ get_license_info_short@Base 4.1.0
+ get_natural_int@Base 4.1.0
+ get_nonzero_guint32@Base 4.1.0
+ get_os_version_info@Base 1.99.0
+ get_persconffile_path@Base 1.12.0~rc1
+ get_persdatafile_dir@Base 1.12.0~rc1
+ get_plugins_dir@Base 2.5.0
+ get_plugins_dir_with_version@Base 2.5.0
+ get_plugins_pers_dir@Base 1.12.0~rc1
+ get_plugins_pers_dir_with_version@Base 2.5.0
+ get_positive_double@Base 4.1.0
+ get_positive_int@Base 4.1.0
+ get_profile_dir@Base 2.9.0
+ get_profile_name@Base 1.12.0~rc1
+ get_profiles_dir@Base 1.12.0~rc1
+ get_progfile_dir@Base 1.12.0~rc1
+ get_resource_usage@Base 2.3.0
+ get_runtime_version_info@Base 4.1.0
+ get_systemfile_dir@Base 1.12.0~rc1
+ get_ws_vcs_version_info@Base 4.1.0
+ get_ws_vcs_version_info_short@Base 4.1.0
+ get_ws_version_number@Base 4.1.0
+ guint32_to_str_buf@Base 3.5.1
+ guint64_to_str_buf@Base 3.5.1
+ guint8_to_hex@Base 3.5.1
+ has_global_profiles@Base 1.12.0~rc1
+ hex64_to_str_back_len@Base 3.5.1
+ hex_dump_buffer@Base 4.1.0
+ hex_to_str_back_len@Base 3.5.1
+ hkdf_expand@Base 2.5.1
+ ieee80211_chan_to_mhz@Base 1.99.7
+ ieee80211_mhz_to_chan@Base 1.99.7
+ ieee80211_mhz_to_str@Base 1.99.7
+ init_process_policies@Base 1.10.0
+ init_report_message@Base 2.3.0
+ int64_to_str_back@Base 3.5.1
+ int_to_str_back@Base 3.5.1
+ ip6_to_str@Base 3.5.1
+ ip6_to_str_buf@Base 3.5.1
+ ip_to_str@Base 3.5.1
+ ip_to_str_buf@Base 3.5.1
+ ipxnet_to_str_punct@Base 3.5.1
+ is_default_profile@Base 1.12.0~rc1
+ is_packet_configuration_namespace@Base 3.7.2
+ isdigit_string@Base 1.10.0
+ iso8601_to_nstime@Base 3.5.0
+ isprint_string@Base 1.10.0
+ isprint_utf8_string@Base 2.6.1
+ json_decode_string_inplace@Base 2.9.0
+ json_dumper_begin_array@Base 2.9.0
+ json_dumper_begin_base64@Base 2.9.1
+ json_dumper_begin_object@Base 2.9.0
+ json_dumper_end_array@Base 2.9.0
+ json_dumper_end_base64@Base 2.9.1
+ json_dumper_end_object@Base 2.9.0
+ json_dumper_finish@Base 2.9.0
+ json_dumper_set_member_name@Base 2.9.0
+ json_dumper_value_anyf@Base 2.9.0
+ json_dumper_value_double@Base 3.0.0
+ json_dumper_value_string@Base 2.9.0
+ json_dumper_value_va_list@Base 2.9.1
+ json_dumper_write_base64@Base 2.9.1
+ json_get_array@Base 3.5.0
+ json_get_array_index@Base 3.5.0
+ json_get_array_len@Base 3.5.0
+ json_get_double@Base 3.1.0
+ json_get_object@Base 3.1.0
+ json_get_string@Base 3.1.0
+ json_parse@Base 2.9.0
+ json_validate@Base 2.9.0
+ linear2alaw@Base 1.12.0~rc1
+ linear2ulaw@Base 1.12.0~rc1
+ local_interfaces_to_list@Base 2.1.2
+ log_resource_usage@Base 2.1.2
+ mktime_utc@Base 1.12.0~rc1
+ mpa_bitrate@Base 1.10.0
+ mpa_frequency@Base 1.10.0
+ mpa_layer@Base 1.10.0
+ mpa_padding@Base 1.10.0
+ mpa_samples@Base 1.10.0
+ mpa_version@Base 1.10.0
+ nsfiletime_to_nstime@Base 2.0.0
+ nstime_cmp@Base 1.12.0~rc1
+ nstime_copy@Base 1.12.0~rc1
+ nstime_delta@Base 1.12.0~rc1
+ nstime_hash@Base 4.1.0
+ nstime_is_unset@Base 1.12.0~rc1
+ nstime_is_zero@Base 1.12.0~rc1
+ nstime_set_unset@Base 1.12.0~rc1
+ nstime_set_zero@Base 1.12.0~rc1
+ nstime_sum@Base 1.12.0~rc1
+ nstime_to_iso8601@Base 4.1.0
+ nstime_to_msec@Base 1.12.0~rc1
+ nstime_to_sec@Base 1.12.0~rc1
+ nstime_to_unix@Base 4.1.0
+ oct64_to_str_back@Base 3.5.1
+ oct_to_str_back@Base 3.5.1
+ please_report_bug@Base 3.1.0
+ please_report_bug_short@Base 3.1.0
+ plugins_cleanup@Base 2.3.0
+ plugins_dump_all@Base 1.12.0~rc1
+ plugins_get_count@Base 2.5.0
+ plugins_get_descriptions@Base 1.12.0~rc1
+ plugins_init@Base 2.5.0
+ plugins_supported@Base 4.1.0
+ printable_char_or_period@Base 1.99.0
+ profile_exists@Base 1.12.0~rc1
+ profile_register_persconffile@Base 3.5.1
+ profile_store_persconffiles@Base 1.12.0~rc1
+ qword_to_hex@Base 3.5.1
+ qword_to_hex_punct@Base 3.5.1
+ read_filter_list@Base 4.1.0
+ register_codec@Base 3.1.0
+ relinquish_special_privs_perm@Base 1.10.0
+ remove_from_filter_list@Base 4.1.0
+ rename_persconffile_profile@Base 1.12.0~rc1
+ report_cfile_close_failure@Base 3.5.0
+ report_cfile_dump_open_failure@Base 3.5.0
+ report_cfile_open_failure@Base 3.5.0
+ report_cfile_read_failure@Base 3.5.0
+ report_cfile_write_failure@Base 3.5.0
+ report_failure@Base 1.12.0~rc1
+ report_open_failure@Base 1.12.0~rc1
+ report_read_failure@Base 1.12.0~rc1
+ report_warning@Base 2.3.0
+ report_write_failure@Base 1.12.0~rc1
+ rsa_decrypt_inplace@Base 2.5.0
+ rsa_load_pem_key@Base 2.5.0
+ rsa_load_pkcs12@Base 2.5.0
+ rsa_private_key_free@Base 2.5.0
+ rsa_privkey_to_sexp@Base 2.5.0
+ running_in_build_directory@Base 1.12.0~rc1
+ running_with_special_privs@Base 1.10.0
+ save_filter_list@Base 4.1.0
+ set_persconffile_dir@Base 1.12.0~rc1
+ set_persdatafile_dir@Base 1.12.0~rc1
+ set_profile_name@Base 1.12.0~rc1
+ show_help_header@Base 4.1.0
+ show_version@Base 4.1.0
+ sober128_add_entropy@Base 1.99.0
+ sober128_read@Base 1.99.0
+ sober128_start@Base 1.99.0
+ sort_features@Base 3.7.0
+ started_with_special_privs@Base 1.10.0
+ test_for_directory@Base 1.12.0~rc1
+ test_for_fifo@Base 1.12.0~rc1
+ tm_is_valid@Base 3.5.0
+ type_util_gdouble_to_guint64@Base 1.10.0
+ type_util_guint64_to_gdouble@Base 1.10.0
+ uint64_to_str_back@Base 3.5.1
+ uint64_to_str_back_len@Base 3.5.1
+ uint_to_str_back@Base 3.5.1
+ uint_to_str_back_len@Base 3.5.1
+ ulaw2linear@Base 1.12.0~rc1
+ unix_epoch_to_nstime@Base 3.5.0
+ update_adler32@Base 1.12.0~rc1
+ update_crc10_by_bytes@Base 1.10.0
+ vcmdarg_err@Base 4.1.0
+ with_feature@Base 3.7.0
+ without_feature@Base 3.7.0
+ wmem_alloc0@Base 3.5.0
+ wmem_alloc@Base 3.5.0
+ wmem_allocator_new@Base 3.5.0
+ wmem_array_append@Base 3.5.0
+ wmem_array_bzero@Base 3.5.0
+ wmem_array_finalize@Base 4.1.0
+ wmem_array_get_count@Base 3.5.0
+ wmem_array_get_raw@Base 3.5.0
+ wmem_array_grow@Base 3.5.0
+ wmem_array_index@Base 3.5.0
+ wmem_array_new@Base 3.5.0
+ wmem_array_set_null_terminator@Base 3.5.0
+ wmem_array_sized_new@Base 3.5.0
+ wmem_array_sort@Base 3.5.0
+ wmem_array_try_index@Base 3.5.0
+ wmem_ascii_strdown@Base 3.5.0
+ wmem_cleanup@Base 3.5.0
+ wmem_compare_int@Base 3.7.0
+ wmem_compare_uint@Base 3.7.0
+ wmem_destroy_allocator@Base 3.5.0
+ wmem_destroy_array@Base 3.5.0
+ wmem_destroy_list@Base 3.5.0
+ wmem_double_hash@Base 3.5.0
+ wmem_enter_scope@Base 3.5.0
+ wmem_free@Base 3.5.0
+ wmem_free_all@Base 3.5.0
+ wmem_gc@Base 3.5.0
+ wmem_in_scope@Base 3.5.0
+ wmem_init@Base 3.5.0
+ wmem_int64_hash@Base 3.5.0
+ wmem_itree_find_intervals@Base 3.5.0
+ wmem_itree_insert@Base 3.5.0
+ wmem_itree_is_empty@Base 3.5.0
+ wmem_itree_new@Base 3.5.0
+ wmem_leave_scope@Base 3.5.0
+ wmem_list_append@Base 3.5.0
+ wmem_list_count@Base 3.5.0
+ wmem_list_find@Base 3.5.0
+ wmem_list_find_custom@Base 3.5.0
+ wmem_list_foreach@Base 3.5.0
+ wmem_list_frame_data@Base 3.5.0
+ wmem_list_frame_next@Base 3.5.0
+ wmem_list_frame_prev@Base 3.5.0
+ wmem_list_head@Base 3.5.0
+ wmem_list_insert_sorted@Base 3.5.0
+ wmem_list_new@Base 3.5.0
+ wmem_list_prepend@Base 3.5.0
+ wmem_list_remove@Base 3.5.0
+ wmem_list_remove_frame@Base 3.5.0
+ wmem_list_tail@Base 3.5.0
+ wmem_map_contains@Base 3.5.0
+ wmem_map_foreach@Base 3.5.0
+ wmem_map_foreach_remove@Base 4.1.0
+ wmem_map_get_keys@Base 3.5.0
+ wmem_map_insert@Base 3.5.0
+ wmem_map_lookup@Base 3.5.0
+ wmem_map_lookup_extended@Base 3.5.0
+ wmem_map_new@Base 3.5.0
+ wmem_map_new_autoreset@Base 3.5.0
+ wmem_map_remove@Base 3.5.0
+ wmem_map_size@Base 3.5.0
+ wmem_map_steal@Base 3.5.0
+ wmem_memdup@Base 3.5.0
+ wmem_multimap_count@Base 3.7.0
+ wmem_multimap_get_keys@Base 3.7.0
+ wmem_multimap_insert32@Base 3.7.0
+ wmem_multimap_lookup32@Base 3.7.0
+ wmem_multimap_lookup32_le@Base 3.7.0
+ wmem_multimap_new@Base 3.7.0
+ wmem_multimap_new_autoreset@Base 3.7.0
+ wmem_multimap_remove32@Base 3.7.0
+ wmem_multimap_size@Base 3.7.0
+ wmem_print_tree@Base 3.7.0
+ wmem_realloc@Base 3.5.0
+ wmem_register_callback@Base 3.5.0
+ wmem_stack_peek@Base 3.5.0
+ wmem_stack_pop@Base 3.5.0
+ wmem_str_hash@Base 3.5.0
+ wmem_strbuf_append@Base 3.5.0
+ wmem_strbuf_append_c@Base 3.5.0
+ wmem_strbuf_append_c_count@Base 4.1.0
+ wmem_strbuf_append_hex@Base 4.1.0
+ wmem_strbuf_append_hex_unichar@Base 4.1.0
+ wmem_strbuf_append_len@Base 3.5.0
+ wmem_strbuf_append_printf@Base 3.5.0
+ wmem_strbuf_append_unichar@Base 3.5.0
+ wmem_strbuf_append_unichar_validated@Base 4.1.0
+ wmem_strbuf_append_vprintf@Base 3.5.0
+ wmem_strbuf_destroy@Base 3.5.0
+ wmem_strbuf_dup@Base 3.7.1rc0-272-gfe25d701baa2
+ wmem_strbuf_finalize@Base 3.5.0
+ wmem_strbuf_get_len@Base 3.5.0
+ wmem_strbuf_get_str@Base 3.5.0
+ wmem_strbuf_new@Base 3.5.0
+ wmem_strbuf_new_len@Base 3.7.1rc0-272-gfe25d701baa2
+ wmem_strbuf_new_sized@Base 4.1.0
+ wmem_strbuf_strcmp@Base 3.7.1rc0-272-gfe25d701baa2
+ wmem_strbuf_strstr@Base 3.7.1rc0-272-gfe25d701baa2
+ wmem_strbuf_truncate@Base 3.5.0
+ wmem_strbuf_utf8_make_valid@Base 4.1.0
+ wmem_strbuf_utf8_validate@Base 4.1.0
+ wmem_strconcat@Base 3.5.0
+ wmem_strdup@Base 3.5.0
+ wmem_strdup_printf@Base 3.5.0
+ wmem_strdup_vprintf@Base 3.5.0
+ wmem_strjoin@Base 3.5.0
+ wmem_strjoinv@Base 3.5.0
+ wmem_strndup@Base 3.5.0
+ wmem_strong_hash@Base 3.5.0
+ wmem_strsplit@Base 3.5.0
+ wmem_tree_contains32@Base 4.1.0
+ wmem_tree_count@Base 3.5.0
+ wmem_tree_destroy@Base 3.5.0
+ wmem_tree_foreach@Base 3.5.0
+ wmem_tree_insert32@Base 3.5.0
+ wmem_tree_insert32_array@Base 3.5.0
+ wmem_tree_insert_string@Base 3.5.0
+ wmem_tree_is_empty@Base 3.5.0
+ wmem_tree_lookup32@Base 3.5.0
+ wmem_tree_lookup32_array@Base 3.5.0
+ wmem_tree_lookup32_array_le@Base 3.5.0
+ wmem_tree_lookup32_le@Base 3.5.0
+ wmem_tree_lookup_string@Base 3.5.0
+ wmem_tree_new@Base 3.5.0
+ wmem_tree_new_autoreset@Base 3.5.0
+ wmem_tree_remove32@Base 3.5.0
+ wmem_tree_remove_string@Base 3.5.0
+ wmem_unregister_callback@Base 3.5.0
+ word_to_hex@Base 3.5.1
+ word_to_hex_npad@Base 3.5.1
+ word_to_hex_punct@Base 3.5.1
+ write_file_binary_mode@Base 3.5.0
+ ws_add_crash_info@Base 1.10.0
+ ws_ascii_strcasestr@Base 4.2.0rc1
+ ws_ascii_strnatcasecmp@Base 1.99.1
+ ws_ascii_strnatcmp@Base 1.99.1
+ ws_base32_decode@Base 2.3.0
+ ws_basestrtou16@Base 2.9.0
+ ws_basestrtou32@Base 2.9.0
+ ws_basestrtou64@Base 2.9.0
+ ws_basestrtou8@Base 2.9.0
+ ws_basestrtou@Base 3.3.0
+ ws_buffer_append@Base 1.99.0
+ ws_buffer_assure_space@Base 1.99.0
+ ws_buffer_cleanup@Base 2.3.0
+ ws_buffer_free@Base 1.99.0
+ ws_buffer_init@Base 1.99.0
+ ws_buffer_remove_start@Base 1.99.0
+ ws_cleanup_sockets@Base 3.1.0
+ ws_clock_get_realtime@Base 3.7.0
+ ws_cmac_buffer@Base 3.1.0
+ ws_enums_bsearch@Base 4.1.0
+ ws_escape_null@Base 3.7.1rc0-272-gfe25d701baa2
+ ws_escape_string@Base 3.7.0
+ ws_escape_string_len@Base 3.7.1rc0-272-gfe25d701baa2
+ ws_getopt@Base 3.5.1
+ ws_getopt_long@Base 3.5.1
+ ws_getopt_long_only@Base 3.5.1
+ ws_gmtime_r@Base 4.1.1
+ ws_hexstrtou16@Base 2.3.0
+ ws_hexstrtou32@Base 2.3.0
+ ws_hexstrtou64@Base 2.3.0
+ ws_hexstrtou8@Base 2.3.0
+ ws_hexstrtou@Base 3.3.0
+ ws_hmac_buffer@Base 2.3.0
+ ws_inet_ntop4@Base 2.1.2
+ ws_inet_ntop6@Base 2.1.2
+ ws_inet_pton4@Base 2.1.2
+ ws_inet_pton6@Base 2.1.2
+ ws_init_sockets@Base 3.1.0
+ ws_init_version_info@Base 4.1.0
+ ws_localtime_r@Base 4.1.1
+ ws_log@Base 3.5.0
+ ws_log_add_custom_file@Base 3.5.0
+ ws_log_buffer_full@Base 3.5.1
+ ws_log_console_open@Base 4.1.0
+ ws_log_console_writer@Base 3.7.0
+ ws_log_console_writer_set_use_stdout@Base 3.7.0
+ ws_log_fatal_full@Base 3.7.0
+ ws_log_file_writer@Base 3.7.0
+ ws_log_full@Base 3.5.0
+ ws_log_get_level@Base 3.5.0
+ ws_log_init@Base 3.5.0
+ ws_log_init_with_writer@Base 3.5.0
+ ws_log_init_with_writer_and_data@Base 3.5.0
+ ws_log_level_to_string@Base 3.5.0
+ ws_log_msg_is_active@Base 3.5.0
+ ws_log_parse_args@Base 3.5.0
+ ws_log_print_usage@Base 3.5.0
+ ws_log_set_debug_filter@Base 3.5.0
+ ws_log_set_domain_filter@Base 3.5.0
+ ws_log_set_fatal_domain_filter@Base 4.1.0
+ ws_log_set_fatal_level@Base 4.1.0
+ ws_log_set_fatal_level_str@Base 4.1.0
+ ws_log_set_level@Base 3.5.0
+ ws_log_set_level_str@Base 3.5.0
+ ws_log_set_noisy_filter@Base 3.5.0
+ ws_log_set_writer@Base 3.7.0
+ ws_log_set_writer_with_data@Base 3.7.0
+ ws_log_utf8_full@Base 4.1.0
+ ws_log_write_always_full@Base 3.5.0
+ ws_logv@Base 3.5.0
+ ws_logv_full@Base 3.5.0
+ ws_memmem@Base 3.7.0
+ ws_mempbrk_compile@Base 1.99.4
+ ws_mempbrk_exec@Base 1.99.4
+ ws_optarg@Base 3.5.1
+ ws_opterr@Base 3.5.1
+ ws_optind@Base 3.5.1
+ ws_optopt@Base 3.5.1
+ ws_optpos@Base 3.5.1
+ ws_optreset@Base 3.5.1
+ ws_pipe_data_available@Base 2.5.0
+ ws_pipe_init@Base 2.5.1
+ ws_pipe_spawn_async@Base 2.5.1
+ ws_pipe_spawn_sync@Base 2.5.1
+ ws_regex_compile@Base 3.7.0
+ ws_regex_compile_ex@Base 3.7.0
+ ws_regex_free@Base 3.7.0
+ ws_regex_matches@Base 3.7.0
+ ws_regex_matches_length@Base 3.7.0
+ ws_regex_matches_pos@Base 3.7.2
+ ws_regex_pattern@Base 3.7.0
+ ws_socket_ptoa@Base 3.1.1
+ ws_strdup_underline@Base 3.7.0
+ ws_strerrorname_r@Base 3.7.0
+ ws_strptime@Base 3.7.0
+ ws_strptime_p@Base 4.1.1
+ ws_strtoi16@Base 2.3.0
+ ws_strtoi32@Base 2.3.0
+ ws_strtoi64@Base 2.3.0
+ ws_strtoi8@Base 2.3.0
+ ws_strtoi@Base 3.3.0
+ ws_strtou16@Base 2.3.0
+ ws_strtou32@Base 2.3.0
+ ws_strtou64@Base 2.3.0
+ ws_strtou8@Base 2.3.0
+ ws_strtou@Base 3.3.0
+ ws_tzset@Base 4.1.1rc0
+ ws_utf8_make_valid@Base 4.1.0
+ ws_utf8_make_valid_strbuf@Base 4.1.0
+ ws_utf8_seqlen@Base 4.1.0
+ ws_utf8_truncate@Base 4.1.0
+ ws_vadd_crash_info@Base 2.5.2
+ ws_xton@Base 1.12.0~rc1
diff --git a/packaging/debian/maxmind_db_paths b/packaging/debian/maxmind_db_paths
new file mode 100644
index 0000000..0ca498c
--- /dev/null
+++ b/packaging/debian/maxmind_db_paths
@@ -0,0 +1 @@
+"/usr/share/GeoIP"
diff --git a/packaging/debian/patches/09_idl2wrs.patch b/packaging/debian/patches/09_idl2wrs.patch
new file mode 100644
index 0000000..87cb8c3
--- /dev/null
+++ b/packaging/debian/patches/09_idl2wrs.patch
@@ -0,0 +1,48 @@
+Description: Do not try to locate wireshark_be.py and wireshark_gen.py in
+ non-standard places.
+Author: Frederic Peters <fpeters@debian.org>
+
+--- a/tools/idl2wrs
++++ b/tools/idl2wrs
+@@ -65,41 +65,8 @@
+ exit 1;
+ fi
+
+-#
+-# Run wireshark backend, looking for wireshark_be.py and wireshark_gen.py
+-# in pythons's "site-packages" directory. If cannot find that, then
+-# try looking in current directory. If still cannot, then exit with
+-# error.
+-
+-if [ -f $PYTHONPATH/site-packages/wireshark_be.py ] && [ -f $PYTHONPATH/site-packages/wireshark_gen.py ]; then
+- exec omniidl -p $PYTHONPATH/site-packages -b wireshark_be $@
+- /* not reached */
+-fi
+-
+-# Try current directory.
+-
+-if [ -f ./wireshark_be.py ] && [ -f ./wireshark_gen.py ]; then
+- exec omniidl -p ./ -b wireshark_be $@
+- /* not reached */
+-fi
+-
+-# Could not find both wireshark_be.py AND wireshark_gen.py
+-# So let's just try to run it without -p, hoping that the installation
+-# set up a valid path.
+-
+ exec omniidl -b wireshark_be $@
+
+-old code: not reached
+-
+-echo "idl2wrs Error: Could not find both wireshark_be.py AND wireshark_gen.py."
+-echo "Please ensure you have the PYTHONPATH variable set, or that wireshark_be.py "
+-echo "and wireshark_gen.py exist in the current directory. "
+-echo
+-echo "On this system, PYTHONPATH is : $PYTHONPATH"
+-echo
+-
+-exit 2
+-
+
+ #
+ # Editor modelines - https://www.wireshark.org/tools/modelines.html
diff --git a/packaging/debian/patches/series b/packaging/debian/patches/series
new file mode 100644
index 0000000..339a866
--- /dev/null
+++ b/packaging/debian/patches/series
@@ -0,0 +1 @@
+09_idl2wrs.patch
diff --git a/packaging/debian/po/POTFILES.in b/packaging/debian/po/POTFILES.in
new file mode 100644
index 0000000..cef83a3
--- /dev/null
+++ b/packaging/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] templates
diff --git a/packaging/debian/po/cs.po b/packaging/debian/po/cs.po
new file mode 100644
index 0000000..186c9f8
--- /dev/null
+++ b/packaging/debian/po/cs.po
@@ -0,0 +1,138 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Martin Sin <martin.sin@zshk.cz>, 2009
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Czech (http://www.transifex.com/wireshark/wireshark/language/cs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cs\n"
+"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Mohou obyčejní uživatelé zachytávat pakety?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap můžete nainstalovat tak, že budou moci zachytávat pakety pouze členové skupiny „wireshark“. Tento způsob zachytávání paketů pomocí Wireshark/Tshark se obecně doporučuje. Druhou možností je spuštění programu přímo pod superuživatelem, to ovšem nelze doporučit, protože je pak pod tímto uživatelem spuštěna větší část potencionálně nebezpečného kódu."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Pro více informací se prosím podívejte na /usr/share/doc/wireshark-common/README.Debian."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Povolení této možnosti může být bezpečnostním rizikem a tak je ve výchozím nastavení vypnuté. Jste-li na pochybách, doporučuje se nechat volbu vypnutou."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/da.po b/packaging/debian/po/da.po
new file mode 100644
index 0000000..f4b981f
--- /dev/null
+++ b/packaging/debian/po/da.po
@@ -0,0 +1,138 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Joe Hansen <joedalton2@yahoo.dk>, 2010
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Danish (http://www.transifex.com/wireshark/wireshark/language/da/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: da\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Skal brugere, der ikke er superbrugere, kunne fange pakker?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap kan installeres på en måde som tillader medlemmer af systemgruppen »wireshark« at fange pakker. Dette anbefales frem for alternativet med at køre Wireshark/Tshark direkte som rod (root), da mindre af koden vil køre med ophøjede privilegier."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "For mere detaljerede information se venligst /usr/share/doc/wireshark-common/README.Debian."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Aktivering af denne funktion kan udgøre en sikkerhedsrisiko, så som standard er den deaktiveret. Hvis du er i tvivl, anbefales det at lade den være deaktiveret."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/de.po b/packaging/debian/po/de.po
new file mode 100644
index 0000000..d01d44c
--- /dev/null
+++ b/packaging/debian/po/de.po
@@ -0,0 +1,143 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Dominik Eismann <dominik.eismann@posteo.de>, 2016
+# Dominik Eismann <dominik.eismann@posteo.de>, 2016
+# uhei, 2017
+# uhei, 2015,2017
+# Uli Heilmeier, 2015
+# uhei, 2015
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: uhei\n"
+"Language-Team: German (http://www.transifex.com/wireshark/wireshark/language/de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Soll es normalen Benutzern erlaubt sein, Pakete aufzuzeichnen?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap kann so installiert werden, dass es Mitgliedern der Systemgruppe \"wireshark\" erlaubt ist Pakete aufzuzeichnen. Da hier weniger Programmcode mit erhöhten Rechten ausgeführt wird ist diese Option eher zu empfehlen anstatt Wireshark/Tshark direkt als root-Benutzer zu starten."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Weitere detaillierte Informationen sind unter /usr/share/doc/wireshark-common/README.Debian zu finden."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Da das Aktivieren dieser Funktion ein Sicherheitsrisiko darstellen kann, ist es standardmäßig deaktiviert. Es wird Empfohlen dies im Zweifelsfall deaktiviert zu lassen."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr "Erstellen der wireshark Systemgruppe fehlgeschlagen"
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr "Die wireshark Gruppe existiert nicht und konnte nicht erstellt werden. Wireshark kann daher nicht so konfiguriert werden, dass ein Mitschnitt von Datenverkehr auch einem unpreviligiertem Benutzer möglich ist."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr "Bitte erstellen Sie die wireshark Systemgruppe und rekonfigurieren Sie wireshark-common nochmals."
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr "Die wireshark Gruppe ist eine Systemgruppe"
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr "Die wireshark Gruppe existiert als eine Benutzergruppe. Die bevorzugte Konfiguration sieht vor, dass die Gruppe als Systemgruppe erstellt wird."
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr "Als Ergebnis wird ein Löschen von wireshark-common nicht die Gruppe wireshark entfernen. Alles andere sollte normal funktionieren."
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr "Setzen der Einstellungen für dumpcap fehlgeschlagen"
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr "Der Versuch die Linux Fähigkeiten zum Berechtigen von Paket-Mitschnitten für dumpcamp zu vergeben ist gescheitert. Es wurde daher das Set-User-ID Bit gesetzt."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr "Entfernen der wireshark Gruppe fehlgeschlagen"
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr "Wenn das wireshark-common Paket so konfiguriert wird, damit einem Nicht-Superuser das Mitschneiden von Paketen erlaubt ist, dann wird das postinst Skript von wireshark-common die wireshark Gruppe als eine Systemgruppe erstellen."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr "Auf diesem System ist die wireshark Gruppe eine Benutzergruppe anstatt einer Systemgruppe. Das Löschen von wireshark-common wird die Gruppe daher nicht entfernen."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr "Wenn die Gruppe nicht mehr länger benötigt wird entfernen Sie diese bitte manuell."
diff --git a/packaging/debian/po/es.po b/packaging/debian/po/es.po
new file mode 100644
index 0000000..785bb5a
--- /dev/null
+++ b/packaging/debian/po/es.po
@@ -0,0 +1,138 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Francisco Javier Cuadrado <fcocuadrado@gmail.com>, 2009-2010
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Spanish (http://www.transifex.com/wireshark/wireshark/language/es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "¿Los usuarios sin privilegios de administración deberían poder capturar paquetes?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap se puede instalar de un modo que permite a los miembros del grupo «wireshark» capturar paquetes. Se recomienda usar esto en lugar de ejecutar Wireshark/Tshark directamente como administrador («root»), porque se ejecutará menos código con privilegios de administración."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Para más información, vea el archivo «/usr/share/doc/wireshark-common/README.Debian»."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Activar esta funcionalidad puede ser un riesgo de seguridad, por lo que de forma predeterminada está desactivada. En caso de duda, se recomienda dejarla desactivada."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/eu.po b/packaging/debian/po/eu.po
new file mode 100644
index 0000000..c18b3a8
--- /dev/null
+++ b/packaging/debian/po/eu.po
@@ -0,0 +1,139 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>, 2010
+# Piarres Beobide <pi@beobide.net>, 2009
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Basque (http://www.transifex.com/wireshark/wireshark/language/eu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: eu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Supererabiltzailea ez direnak paketeak kapturatzeko gai izan daitezke?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Sistemako \"wireshark\" taldeko partaideek paketeak kapturatzea baimentzeko modu batean instala daiteke Dumpcap. Wireshark/Tshark erabiliz paketeak supererabiltzaile gisa kapturatzeko modu hau gomendatuta dago, pribilegio handiekin kode gutxiago exekutatzen da eta."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Informazio gehiagorako, irakurri usr/share/doc/wireshark-common/README.Debian."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Eginbide hau gaitzean segurtasuneko arrisku bat sor daiteke, hau dela eta desgaituta dago lehenespenez. Zalantzako kasuan, desgaituta uztea gomendantzen da."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/fi.po b/packaging/debian/po/fi.po
new file mode 100644
index 0000000..564315a
--- /dev/null
+++ b/packaging/debian/po/fi.po
@@ -0,0 +1,139 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# edu28b5088de91f4c05 <edu@iki.fi>, 2009
+# edu28b5088de91f4c05 <edu@iki.fi>, 2009
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Finnish (http://www.transifex.com/wireshark/wireshark/language/fi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Tämän ominaisuuden käyttöönotto saattaa olla tietoturvariski ja tästä syystä se on oletuksena poissa käytöstä. Jos olet epävarma, on suositeltavaa jättää se pois käytöstä."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/fr.po b/packaging/debian/po/fr.po
new file mode 100644
index 0000000..2b5de99
--- /dev/null
+++ b/packaging/debian/po/fr.po
@@ -0,0 +1,140 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Simon Paillard <spaillard@debian.org>, 2009
+# Yann Domingo, 2019
+# Yann Domingo, 2019
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2019-06-30 23:24+0000\n"
+"Last-Translator: Yann Domingo\n"
+"Language-Team: French (http://www.transifex.com/wireshark/wireshark/language/fr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Autoriser les utilisateurs non privilégiés à capturer des paquets ?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap peut être installé afin d'autoriser les membres du groupe « wireshark » à capturer des paquets. Cette méthode de capture est préférable à l'exécution de Wireshark ou Tshark avec les droits du superutilisateur, car elle permet d'exécuter moins de code avec des droits importants."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Pour plus d'information, veuillez consulter /usr/share/doc/wireshark-common/README.Debian."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Cette fonctionnalité constitue un risque pour la sécurité, c'est pourquoi elle est désactivée par défaut. En cas de doute, il est suggéré de la laisser désactivée."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/hu.po b/packaging/debian/po/hu.po
new file mode 100644
index 0000000..e278060
--- /dev/null
+++ b/packaging/debian/po/hu.po
@@ -0,0 +1,138 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Balint Reczey <balint@balintreczey.hu>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Hungarian (http://www.transifex.com/wireshark/wireshark/language/hu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: hu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "A rendszergazdán kívül más felhasználók is képesek legyenek lehallgatni ahálózati forgalmat?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "A dumpcap segédprogramot úgy is be lehet állítani telepítéskor, hogy lehetővétegye a \"wireshark\" rendszer-csoport tagjainak, hogy lehallgassák ahálózati forgalmat. Ez biztonságosabb, mint rendszergazdaként futtatni aWireshark/Tshark programokat, mivel kevesebb kód fut így rendszergazdaijogokkal ellátva."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Részletesebb információk a usr/share/doc/wireshark-common/README.Debianfájlban találhatók."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Ennek a beállításnak az engedélyezése biztonsági kockázatot hordoz.Ha bizonytalan vagy, inkább ne engedélyezd."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/id.po b/packaging/debian/po/id.po
new file mode 100644
index 0000000..fdfb7b6
--- /dev/null
+++ b/packaging/debian/po/id.po
@@ -0,0 +1,137 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Indonesian (http://www.transifex.com/wireshark/wireshark/language/id/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: id\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Bolehkan pengguna non-superuser untuk menangkap paket?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap dapat dipasang dengan cara memperbolehkan anggota dari grup system \"wireshark\" untuk menangkap paket. Hal ini dianjurkan sebagai alternatif untuk menjalankan Wireshark/Tshark sebagai root, karena sedikit kode yang berjalan dengan hak tertinggi"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Untuk informasi lebih lanjut silakan lihat /usr/share/doc/wireshark-common/README.Debian."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Mengaktifkan fitur ini akan menyebabkan resiko keamanan, jadi secara bawaan akan di non-aktifkan. Jika ragu, disarankan untuk dibiarkan dinonaktifkan"
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/it.po b/packaging/debian/po/it.po
new file mode 100644
index 0000000..18ebce8
--- /dev/null
+++ b/packaging/debian/po/it.po
@@ -0,0 +1,138 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Vincenzo Reale <vinx.reale@gmail.com>, 2015,2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Vincenzo Reale <vinx.reale@gmail.com>\n"
+"Language-Team: Italian (http://www.transifex.com/wireshark/wireshark/language/it/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: it\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Vuoi consentire la cattura dei pacchetti agli utenti non privilegiati?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap può essere installato in modo da consentire ai membri del gruppo di sistema \"wireshark\" di catturare i pacchetti. Ciò è consigliato all'alternativa di eseguire Wireshark/Tshark come root, poiché una parte minore del codice sarà eseguita con privilegi elevati."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Per ulteriori informazioni, vedi /usr/share/doc/wireshark-common/README.Debian."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "L'abilitazione di questa funzionalità potrebbe essere un rischio per la sicurezza, perciò è disabilitata in modo predefinito. Se hai dubbi, ti consigliamo di lasciarla disabilitata."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr "Creazione del gruppo di sistema wireshark non riuscita"
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr "Il gruppo wireshark non esiste, e la sua creazione non è riuscita, per cui Wireshark non può essere configurato per catturare il traffico con un utente non privilegiato."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr "Crea il gruppo di sistema wireshark e prova a configurare nuovamente wireshark-common."
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr "Il gruppo wireshark è un gruppo di sistema"
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr "Il gruppo wireshark esiste come gruppo utente, ma la configurazione preferita consiste nel crearlo come gruppo di sistema."
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr "Come risultato, la rimozione di wireshark-common non rimuoverà il gruppo wireshark, ma tutto il resto dovrebbe funzionare correttamente."
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr "Impostazione delle capacità di dumpcap non riuscita"
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr "Il tentativo di utilizzare le capacità di Linux per accordare i privilegi di cattura dei pacchetti al binario dumpcap non è riuscito. Invece, è stato impostato il bit set-user-id."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr "Rimozione del gruppo di sistema wireshark non riuscita"
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr "Quando il pacchetto wireshark-common è configurato per consentire a utenti non privilegiati di catturare pacchetti, lo script di post-installazione di wireshark-common crea un gruppo wireshark come un gruppo di sistema."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr "Tuttavia, su questo sistema il gruppo wireshark è un gruppo utente invece di essere un gruppo di sistema, per cui la rimozione di wireshark-common non lo ha rimosso."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr "Se il gruppo non è più necessario, rimuovilo manualmente."
diff --git a/packaging/debian/po/ja.po b/packaging/debian/po/ja.po
new file mode 100644
index 0000000..f5e0c89
--- /dev/null
+++ b/packaging/debian/po/ja.po
@@ -0,0 +1,137 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 08:02+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Japanese (http://www.transifex.com/wireshark/wireshark/language/ja/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ja\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "非特権ユーザ (root 以外のユーザ) がパケットをキャプチャできるようにしますか?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "「wireshark」システムグループのメンバーがパケットをキャプチャできる設定で dumpcap をインストールすることができます。直接 root ユーザとして動かす別の方法と比較すると、この方が高くなった権限上で動作するコードが少なくなるのでお勧めです。"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "より詳細な情報については /usr/share/doc/wireshark-common/README.Debian を参照してください。"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "この機能を有効にするのはセキュリティ上のリスクになる可能性があるので、デフォルトでは無効にされています。分からない場合は無効のままにしておくことをお勧めします。"
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/ko.po b/packaging/debian/po/ko.po
new file mode 100644
index 0000000..dea00e1
--- /dev/null
+++ b/packaging/debian/po/ko.po
@@ -0,0 +1,139 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# ks k, 2019
+# ks k, 2019
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2019-11-24 12:41+0000\n"
+"Last-Translator: ks k\n"
+"Language-Team: Korean (http://www.transifex.com/wireshark/wireshark/language/ko/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ko\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "일반사용자가 패킷을 갈무리 할 수 있도록 하시겠습니까?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "root로 직접 Wireshark/Tshark를 실행시키는 것의 대안으로 좀 더 적은 권한으로 패킷 갈무리를 하기위해 \"와이어샤크\" 체제 묶음의 일원인 Dumpcap이 설치될 수 있습니다."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "세부정보는 /usr/share/doc/wireshark-common/README.Debian 파일을 참조하십시오."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "활성화 하는 것은 보안상 위험할 수 있기 때문에 기본적으로 비활성화 되어 있습니다. 비활성화로 두는 것을 추천합니다."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr "와이어샤크 체제 묶음 작성에 실패했습니다"
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr "와이어샤크 묶음은 존재하지 않아 만들기에 실패하므로 와이어샤크는 권한이 없는 사용자로 트래픽을 갈무리하도록 구성할 수 없습니다."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr "와이어샤크 체제 묶음을 작성하고 wireshark-common 구성을 다시 시도하십시오."
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr "와이어샤크 묶음은 체제 묶음입니다"
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr "와이어샤크 묶음은 사용자 묶음으로 존재하지만 기본 구성은 체제 묶음으로 작성하는 것입니다."
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr "결과적으로 wireshark-common을 제거해도 와이어샤크 묶음이 제거되지는 않지만 다른 모든 기능은 제대로 작동해야합니다."
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr "덤프캡에 대한 기능 설정 실패"
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr "리눅스 기능을 사용하여 덤프 갈무리 바이너리에 패킷 갈무리 권한을 부여하려는 시도가 실패했습니다. 대신 set-user-id 비트가 설정되었습니다."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr "와이어샤크 묶음을 제거하지 못했습니다."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr "슈퍼 유저가 아닌 사용자가 패킷을 갈무리 할 수 있도록 wireshark-common 패키지를 구성하면 wireshark-common의 postinst 스크립트가 와이어샤크 묶음을 체제 묶음으로 만듭니다."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr "그러나, 이 체제에서 와이어샤크 묶음은 체제 묶음이 아닌 사용자 묶음이므로 wireshark-common을 제거해도 제거되지 않았습니다."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr "묶음이 더 이상 필요하지 않으면 수동으로 제거하십시오."
diff --git a/packaging/debian/po/nl.po b/packaging/debian/po/nl.po
new file mode 100644
index 0000000..30ccb01
--- /dev/null
+++ b/packaging/debian/po/nl.po
@@ -0,0 +1,138 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Jeroen Schot <schot@a-eskwadraat.nl>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Dutch (http://www.transifex.com/wireshark/wireshark/language/nl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: nl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Moet het voor niet-beheerders mogelijk zijn om pakketjes te onderscheppen?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap kan zodanig worden geïnstalleerd dat leden van de systeemgroep \"wireshark\" netwerkpakketjes mogen onderscheppen. Dit wordt aanbevolen boven het uitvoeren van Wireshark/Tshark als beheerder, omdat op deze manier minder code met verhoogde privileges wordt uitgevoerd."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Uitgebreide informatie hierover is te vinden in /usr/share/doc/wireshark-common/README.Debian."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Het activeren van deze functionaliteit is mogelijk een beveiligingsrisico, daarom staat dit niet standaard aan. Bij twijfel wordt u aangeraden om dit niet te activeren."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/pt.po b/packaging/debian/po/pt.po
new file mode 100644
index 0000000..8e4e08c
--- /dev/null
+++ b/packaging/debian/po/pt.po
@@ -0,0 +1,137 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Portuguese (http://www.transifex.com/wireshark/wireshark/language/pt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pt\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Devem os utilizadores regulares conseguir capturar pacotes?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "O dumpcap pode ser instalado de maneira que os membros do grupo de sistema \"wireshark\" possam capturar pacotes. Este é o modo recomendado em vez da alternativa de correr o Wireshark/Tshark directamente como root, porque menos código será executado com privilégios elevados."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Para informação mais detalhada, leia por favor /usr/share/doc/wireshark-common/README.Debian."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Activar esta característica pode ser um risco de segurança, por isso vem desactivada por predefinição. Em caso de dúvida, sugere-se deixá-la desactivada."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/pt_BR.po b/packaging/debian/po/pt_BR.po
new file mode 100644
index 0000000..cd424ff
--- /dev/null
+++ b/packaging/debian/po/pt_BR.po
@@ -0,0 +1,139 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Adriano Rafael Gomes <adrianorg@gmail.com>, 2010
+# Rafael Henrique da Silva Correia <rafaelhenriqu@gmail.com>, 2009
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/wireshark/wireshark/language/pt_BR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pt_BR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Não-superusuários deverão ser capazes de capturar pacotes?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "O dumpcap pode ser instalado em um modo que permite a membros do grupo de sistema \"wireshark\" capturar pacotes. Isto é recomendado em vez da alternativa de executar o Wireshark/Tshark diretamente como root, porque menos código será executado com privilégios elevados."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Para informações mais detalhadas, por favor veja /usr/share/doc/wireshark-common/README.Debian."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Habilitar este recurso pode ser um risco de segurança, portanto ele é desabilitado por padrão. Se estiver em dúvida, é sugerido deixá-lo desabilitado."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/ru.po b/packaging/debian/po/ru.po
new file mode 100644
index 0000000..d37256e
--- /dev/null
+++ b/packaging/debian/po/ru.po
@@ -0,0 +1,139 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Vladlen Shapo <vladlen.shapo@gmail.com>, 2017
+# Yuri Kozlov <yuray@komyakino.ru>, 2009-2010
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-11-23 18:24+0000\n"
+"Last-Translator: Vladlen Shapo <vladlen.shapo@gmail.com>\n"
+"Language-Team: Russian (http://www.transifex.com/wireshark/wireshark/language/ru/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ru\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Позволить не суперпользователям захватывать пакеты?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap можно установить таким образом, что члены группы wireshark смогут захватывать пакеты. Это более рекомендуемый способ захвата пакетов с помощью Wireshark/Tshark, чем запуск самого Wireshark/Tshark с правами root, так как это позволяет выполнять почти весь код с меньшими правами."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Дополнительную информацию можно найти в файле /usr/share/doc/wireshark-common/README.Debian."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Использование данной возможности влияет на безопасность, поэтому по умолчанию не используется. Если сомневаетесь, то оставьте выключенной."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr "Создание системной группы wireshark не выполнено"
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr "Группа wireshark не существует, её создание не выполнено, поэтому Wireshark не может быть сконфигурирован для захвата трафика в качестве непривилегированного пользователя."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr "Пожалуйста, создайте системную группу wireshark и попробуйте вновь выполнить конфигурирование wireshark-common. "
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr "Группа wireshark является системной группой."
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr "Группа wireshark существует как пользовательская группа, но предпочтительная конфигурация для неё - быть созданной в качестве системной группы."
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr "Как результат, очистка wireshark-common не удалит группу wireshark, но всё остальное должно работать правильно."
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr "Установка возможностей для dumpcap закончилась ошибкой."
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr "Попытка использовать возможности Linux для присвоения привилегий для захвата пакетов двоичному dumpcap закончилась ошибкой. Однако был установлен бит идентификации пользователя set-user-id ."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr "Удаление группы wireshark не выполнено."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr "Когда пакет wireshark-common сконфигурирован так, чтобы позволить не суперпользователям захватывать пакеты, скрипт postinst в wireshark-common создаёт группу wireshark как системную группу."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr "Однако в этой системе группа wireshark - пользовательская группа, вместо того, чтобы быть системной группой, поэтому очистка wireshark-common не удалит её."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr "Если группа более не нужна, пожалуйста, удалите её вручную."
diff --git a/packaging/debian/po/sk.po b/packaging/debian/po/sk.po
new file mode 100644
index 0000000..93f26f0
--- /dev/null
+++ b/packaging/debian/po/sk.po
@@ -0,0 +1,139 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Automatically generated, 2011
+# Slavko <linux@slavino.sk>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Slovak (http://www.transifex.com/wireshark/wireshark/language/sk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sk\n"
+"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Môžu bežní používatelia zachytávať pakety?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap možno nainštalovať spôsobom, ktorý dovolí zachytávať pakety členom systémovej skupiny „wireshark”. Toto je odporúčané oproti alternatívnemu spúšťaniu Wireshark/Tshark priamo s právami root, pretože bude menej kódu bežať s neobmedzenými právami."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Ďalšie, podrobnejšie informácie nájdete v /usr/share/doc/wireshark-common/README.Debian."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Zapnutie tejto vlastnosti môže byť bezpečnostným rizikom, aj preto je predvolene vypnutá. Ak si nie ste istý, odporúčame ponechať ju vypnutú."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/sv.po b/packaging/debian/po/sv.po
new file mode 100644
index 0000000..03e521e
--- /dev/null
+++ b/packaging/debian/po/sv.po
@@ -0,0 +1,139 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+# Göran Uddeborg <goeran@uddeborg.se>, 2017
+# Martin Ågren <martin.agren@gmail.com>, 2009-2010
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-11-27 22:17+0000\n"
+"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
+"Language-Team: Swedish (http://www.transifex.com/wireshark/wireshark/language/sv/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sv\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Ska icke-superanvändare kunna fånga paket?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap kan installeras på ett sätt som tillåter medlemmar i systemgruppen \"wireshark\" att fånga paket. Detta rekommenderas framför alternativet, att köra Wireshark/Tshark direkt som root, eftersom en mindre del av koden kommer köras med utökade rättigheter."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Se /usr/share/doc/wireshark-common/README.Debian för mer detaljerad information."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Att aktivera denna funktion kan vara en säkerhetsrisk, så den är avaktiverad som standard. Vid tvivel rekommenderas att den lämnas avaktiverad."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr "Att skapa systemgruppen wireshark misslyckades"
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr "Gruppen wireshark finns inte, och att skapa den misslyckades, så Wireshark kan inte konfigureras att fånga trafik som en opriviligierad användare."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr "Skapa systemgruppen wireshark och försök konfigurera wireshark-common igen."
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr "Gruppen wireshark är en systemgrupp"
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr "Gruppen wireshark finns som en användargrupp, men den rekommenderade konfigurationen är att den skapas som sen systemgrupp."
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr "Som ett resultat kommer rensning av wireshark-common inte ta bort gruppen wireshark, men allt annat skall fungera normalt."
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr "Att sätta förmågor för dumpcap misslyckades"
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr "Försöket att använda Linux förmågor (capabilities) för att ge rättigheter att fånga paket till programmet dumpcap misslyckades. Istället har det fått set-user-id-biten satt."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr "Att ta bort gruppen wireshark misslyckades"
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr "När paketet wireshark-common är konfigurerat för att tillåta andra än superanvändaren att fånga paket skapara postinst-skriptet i wireshark-common gruppen wireshark som en systemgrupp."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr "Dock är gruppen wireshark en användargrupp på detta system istället för en systemgrupp, så att rensa bort wireshark-common tog inte bort den."
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr "Om gruppen inte behövs längre, ta då bort den manuellt."
diff --git a/packaging/debian/po/templates.pot b/packaging/debian/po/templates.pot
new file mode 100644
index 0000000..e5fa0f8
--- /dev/null
+++ b/packaging/debian/po/templates.pot
@@ -0,0 +1,137 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of "
+"running Wireshark/Tshark directly as root, because less of the code will run "
+"with elevated privileges."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-common/"
+"README.Debian."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being "
+"a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/po/vi.po b/packaging/debian/po/vi.po
new file mode 100644
index 0000000..a08bbe8
--- /dev/null
+++ b/packaging/debian/po/vi.po
@@ -0,0 +1,137 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the wireshark package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Wireshark\n"
+"Report-Msgid-Bugs-To: wireshark@packages.debian.org\n"
+"POT-Creation-Date: 2017-08-06 18:31-0400\n"
+"PO-Revision-Date: 2017-09-22 06:50+0000\n"
+"Last-Translator: Gerald Combs <gerald@wireshark.org>\n"
+"Language-Team: Vietnamese (http://www.transifex.com/wireshark/wireshark/language/vi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: vi\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid "Should non-superusers be able to capture packets?"
+msgstr "Người dùng không phải siêu người dùng nên có quyền bắt gói tin không?"
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Dumpcap can be installed in a way that allows members of the \"wireshark\" "
+"system group to capture packets. This is recommended over the alternative of"
+" running Wireshark/Tshark directly as root, because less of the code will "
+"run with elevated privileges."
+msgstr "Dumpcap có thể được cài đặt bằng một cách cấp cho các thành viên của nhóm « wireshark » có quyền bắt gói tin. Thiết lập này khuyến khích, so với chạy Wireshark/Tshark trực tiếp dưới người chủ, vì ít mã nguồn hơn sẽ chạy với quyền truy cập cao."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"For more detailed information please see /usr/share/doc/wireshark-"
+"common/README.Debian."
+msgstr "Để tìm chi tiết, xem tài liệu Đọc Đi « /usr/share/doc/wireshark-common/README.Debian »."
+
+#. Type: boolean
+#. Description
+#: ../templates:2001
+msgid ""
+"Enabling this feature may be a security risk, so it is disabled by default. "
+"If in doubt, it is suggested to leave it disabled."
+msgstr "Bật tính năng này có thể rủi ro bảo mật thì nó bị tắt theo mặc định. Chưa chắc nên để lại bị tắt."
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Creating the wireshark system group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"The wireshark group does not exist, and creating it failed, so Wireshark "
+"cannot be configured to capture traffic as an unprivileged user."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid ""
+"Please create the wireshark system group and try configuring wireshark-"
+"common again."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid "The wireshark group is a system group"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"The wireshark group exists as a user group, but the preferred configuration "
+"is for it to be created as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:4001
+msgid ""
+"As a result, purging wireshark-common will not remove the wireshark group, "
+"but everything else should work properly."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid "Setting capabilities for dumpcap failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:5001
+msgid ""
+"The attempt to use Linux capabilities to grant packet-capturing privileges "
+"to the dumpcap binary failed. Instead, it has had the set-user-id bit set."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "Removal of the wireshark group failed"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"When the wireshark-common package is configured to allow non-superusers to "
+"capture packets the postinst script of wireshark-common creates the "
+"wireshark group as a system group."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid ""
+"However, on this system the wireshark group is a user group instead of being"
+" a system group, so purging wireshark-common did not remove it."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:6001
+msgid "If the group is no longer needed, please remove it manually."
+msgstr ""
diff --git a/packaging/debian/postinst b/packaging/debian/postinst
new file mode 100644
index 0000000..5640fc3
--- /dev/null
+++ b/packaging/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/sh -e
+
+if test -e /usr/etc/manuf ; then rm /usr/etc/manuf ; fi
+
+#DEBHELPER#
+
diff --git a/packaging/debian/rules b/packaging/debian/rules
new file mode 100755
index 0000000..16e39ab
--- /dev/null
+++ b/packaging/debian/rules
@@ -0,0 +1,83 @@
+#!/usr/bin/make -f
+# Originally made with the aid of dh_make, by Craig Small
+# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
+# Some lines taken from debmake, by Cristoph Lameter.
+# Rewritten to use dh, by Balint Reczey
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+distrelease := $(shell lsb_release -cs)
+ifeq ($(distrelease),n/a)
+ distrelease := sid
+endif
+
+# This has to be exported to make some magic below work.
+export DH_OPTIONS
+
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+ MAKEFLAGS += -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+endif
+
+ifeq ($(MAKE),ninja)
+ DH_BUILDSYSTEM = cmake+ninja
+else
+ DH_BUILDSYSTEM = cmake
+endif
+
+%:
+ dh $@ --with python3 --buildsystem $(DH_BUILDSYSTEM) --with quilt
+
+override_dh_auto_configure:
+ dh_auto_configure -- -DBUILD_xxx2deb=ON -DBUILD_corbaidl2wrs=ON -DUSE_qt6=OFF
+
+override_dh_auto_build:
+ # Ignore warnings from asn2wrs.py about duplicate field names.
+ PYTHONWARNINGS='ignore:The same:UserWarning::0' \
+ $(MAKE) -C $(CURDIR)/obj-* asn1
+ dh_auto_build
+ $(MAKE) -C $(CURDIR)/obj-* user_guide_html developer_guide_html
+ # fix links in documentation
+ sed -i "s|$(CURDIR)/docbook|..|" obj-*/docbook/ws*g_html_chunked/*.html
+ifeq (,$(filter $(DEB_BUILD_OPTIONS),nocheck))
+ # Required for the "unittests" suite.
+ $(MAKE) -C $(CURDIR)/obj-* test-programs
+endif
+
+override_dh_dwz:
+ # run dh_dwz only with debhelper (>= 12.6) to work around https://bugs.debian.org/939164
+ dpkg -l debhelper | awk '/debhelper/ {print $$3}' | xargs dpkg --compare-versions 12.6 gt || dh_dwz
+
+override_dh_strip:
+ dh_strip --dbg-package=wireshark-dbg
+
+override_dh_auto_install:
+ dh_auto_install
+ifeq ($(MAKE),ninja)
+ DESTDIR=$(CURDIR)/debian/tmp $(MAKE) -C $(CURDIR)/obj-* install-headers
+else
+ $(MAKE) DESTDIR=$(CURDIR)/debian/tmp -C $(CURDIR)/obj-* install-headers
+endif
+ rm -f debian/*.shlibs
+ rm -rf $(CURDIR)/debian/tmp/usr/share/wireshark/COPYING
+
+override_dh_install:
+ dh_install
+ # check all necessary headers are included
+ $(CC) -c debian/headers-check.c $(shell pkg-config --cflags glib-2.0) $(shell dpkg-buildflags --get CPPFLAGS) $(shell dpkg-buildflags --get CFLAGS) -Idebian/libwireshark-dev/usr/include -Idebian/libwireshark-dev/usr/include/wireshark -Idebian/libwiretap-dev/usr/include/wireshark -Idebian/libwsutil-dev/usr/include/wireshark -o /dev/null
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 644 debian/wireshark-dev/usr/share/pyshared/make-plugin-reg.py \
+ debian/wireshark-dev/usr/share/pyshared/wireshark_be.py \
+ debian/wireshark-dev/usr/share/pyshared/wireshark_gen.py
+
+override_dh_auto_test:
+ifeq (,$(filter $(DEB_BUILD_OPTIONS),nocheck))
+ # XXX Add -- --verbose?
+ dh_auto_test
+else
+ @echo '"DEB_BUILD_OPTIONS" has "nocheck". Skipping tests'
+endif
diff --git a/packaging/debian/source/format b/packaging/debian/source/format
new file mode 100644
index 0000000..89ae9db
--- /dev/null
+++ b/packaging/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/packaging/debian/source/lintian-overrides b/packaging/debian/source/lintian-overrides
new file mode 100644
index 0000000..49747df
--- /dev/null
+++ b/packaging/debian/source/lintian-overrides
@@ -0,0 +1,2 @@
+# the package uses quilt, see: /usr/share/doc/quilt/README.source
+wireshark source: patch-system-but-no-source-readme
diff --git a/packaging/debian/templates b/packaging/debian/templates
new file mode 100644
index 0000000..dc47130
--- /dev/null
+++ b/packaging/debian/templates
@@ -0,0 +1,61 @@
+# These templates have been reviewed by the debian-l10n-english
+# team
+#
+# If modifications/additions/rewording are needed, please ask
+# debian-l10n-english@lists.debian.org for advice.
+#
+# Even minor modifications require translation updates and such
+# changes should be coordinated with translators and reviewers.
+
+Template: wireshark-common/install-setuid
+Type: boolean
+Default: false
+_Description: Should non-superusers be able to capture packets?
+ Dumpcap can be installed in a way that allows members of the "wireshark"
+ system group to capture packets. This is recommended over the
+ alternative of running Wireshark/Tshark directly as root, because
+ less of the code will run with elevated privileges.
+ .
+ For more detailed information please see
+ /usr/share/doc/wireshark-common/README.Debian.
+ .
+ Enabling this feature may be a security risk, so it is disabled by
+ default. If in doubt, it is suggested to leave it disabled.
+
+Template: wireshark-common/addgroup-failed
+Type: error
+_Description: Creating the wireshark system group failed
+ The wireshark group does not exist, and creating it failed, so
+ Wireshark cannot be configured to capture traffic as an unprivileged
+ user.
+ .
+ Please create the wireshark system group and try configuring
+ wireshark-common again.
+
+Template: wireshark-common/group-is-user-group
+Type: error
+_Description: The wireshark group is a system group
+ The wireshark group exists as a user group, but the preferred
+ configuration is for it to be created as a system group.
+ .
+ As a result, purging wireshark-common will not remove the wireshark
+ group, but everything else should work properly.
+
+Template: wireshark-common/setcap-failed
+Type: error
+_Description: Setting capabilities for dumpcap failed
+ The attempt to use Linux capabilities to grant packet-capturing
+ privileges to the dumpcap binary failed. Instead, it has had the
+ set-user-id bit set.
+
+Template: wireshark-common/group-removal-failed
+Type: error
+_Description: Removal of the wireshark group failed
+ When the wireshark-common package is configured to allow
+ non-superusers to capture packets the postinst script of
+ wireshark-common creates the wireshark group as a system group.
+ .
+ However, on this system the wireshark group is a user group instead of
+ being a system group, so purging wireshark-common did not remove it.
+ .
+ If the group is no longer needed, please remove it manually.
diff --git a/packaging/debian/tests/control b/packaging/debian/tests/control
new file mode 100644
index 0000000..889d49c
--- /dev/null
+++ b/packaging/debian/tests/control
@@ -0,0 +1,5 @@
+Tests: tshark
+Depends: tshark
+
+Tests: gui
+Depends: wireshark-qt, xvfb, xauth, at-spi2-core
diff --git a/packaging/debian/tests/frame-count.lua b/packaging/debian/tests/frame-count.lua
new file mode 100644
index 0000000..b41b4d2
--- /dev/null
+++ b/packaging/debian/tests/frame-count.lua
@@ -0,0 +1,17 @@
+do
+ packets = 0;
+ local function init_listener()
+ local tap = Listener.new("frame")
+ function tap.reset()
+ packets = 0;
+ end
+ function tap.packet(pinfo,tvb, ip)
+ packets = packets + 1
+ end
+ function tap.draw()
+ print("Packet count:", packets)
+ os.exit(0)
+ end
+ end
+ init_listener()
+end
diff --git a/packaging/debian/tests/gui b/packaging/debian/tests/gui
new file mode 100755
index 0000000..38ad706
--- /dev/null
+++ b/packaging/debian/tests/gui
@@ -0,0 +1,9 @@
+#!/bin/sh
+# autopkgtest check: Run wireshark GUI to see basic functionality working
+# Author: Balint Reczey <balint@balintreczey.hu>
+
+set -e
+
+xvfb-run --auto-servernum -s '-screen 0 1920x1080x24 +extension GLX' wireshark -Xlua_script:debian/tests/frame-count.lua test/captures/dhcp.pcap 2>&1
+
+echo "run: OK"
diff --git a/packaging/debian/tests/tshark b/packaging/debian/tests/tshark
new file mode 100755
index 0000000..020574f
--- /dev/null
+++ b/packaging/debian/tests/tshark
@@ -0,0 +1,8 @@
+#!/bin/sh
+# autopkgtest check: Run tshark to see basic functionality working
+# Author: Balint Reczey <balint@balintreczey.hu>
+
+set -e
+
+tshark --version
+echo "run: OK"
diff --git a/packaging/debian/tshark.docs b/packaging/debian/tshark.docs
new file mode 100644
index 0000000..e174728
--- /dev/null
+++ b/packaging/debian/tshark.docs
@@ -0,0 +1 @@
+debian/README.Debian
diff --git a/packaging/debian/tshark.install b/packaging/debian/tshark.install
new file mode 100644
index 0000000..9fe0330
--- /dev/null
+++ b/packaging/debian/tshark.install
@@ -0,0 +1 @@
+usr/bin/tshark
diff --git a/packaging/debian/tshark.lintian-overrides b/packaging/debian/tshark.lintian-overrides
new file mode 100644
index 0000000..4c68bc1
--- /dev/null
+++ b/packaging/debian/tshark.lintian-overrides
@@ -0,0 +1,2 @@
+# those long lines are examples which we can't break
+tshark: groff-message * can't break line [usr/share/man/man1/tshark.1.gz:*]
diff --git a/packaging/debian/tshark.manpages b/packaging/debian/tshark.manpages
new file mode 100644
index 0000000..8e9f364
--- /dev/null
+++ b/packaging/debian/tshark.manpages
@@ -0,0 +1 @@
+obj-*/doc/tshark.1
diff --git a/packaging/debian/wireshark-common.config b/packaging/debian/wireshark-common.config
new file mode 100644
index 0000000..e81a176
--- /dev/null
+++ b/packaging/debian/wireshark-common.config
@@ -0,0 +1,10 @@
+#! /bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input high wireshark-common/install-setuid || true
+db_go
+
+exit 0
diff --git a/packaging/debian/wireshark-common.install b/packaging/debian/wireshark-common.install
new file mode 100644
index 0000000..3bfbd3c
--- /dev/null
+++ b/packaging/debian/wireshark-common.install
@@ -0,0 +1,13 @@
+usr/bin/capinfos
+usr/bin/captype
+usr/bin/dumpcap
+usr/bin/editcap
+usr/bin/mergecap
+usr/bin/mmdbresolve
+usr/bin/randpkt
+usr/bin/rawshark
+usr/bin/reordercap
+usr/bin/text2pcap
+usr/lib/*/wireshark/extcap
+usr/share/icons/
+usr/share/mime/packages/
diff --git a/packaging/debian/wireshark-common.lintian-overrides b/packaging/debian/wireshark-common.lintian-overrides
new file mode 100644
index 0000000..e87e321
--- /dev/null
+++ b/packaging/debian/wireshark-common.lintian-overrides
@@ -0,0 +1,2 @@
+# those long lines are examples which we can't break
+wireshark-common: manpage-has-errors-from-man usr/share/man/man1/dumpcap.1.gz 156: warning [p 1, 2.0i]: can't break line
diff --git a/packaging/debian/wireshark-common.manpages b/packaging/debian/wireshark-common.manpages
new file mode 100644
index 0000000..d25e71f
--- /dev/null
+++ b/packaging/debian/wireshark-common.manpages
@@ -0,0 +1,18 @@
+obj-*/doc/capinfos.1
+obj-*/doc/captype.1
+obj-*/doc/dumpcap.1
+obj-*/doc/editcap.1
+obj-*/doc/mergecap.1
+obj-*/doc/mmdbresolve.1
+obj-*/doc/randpkt.1
+obj-*/doc/rawshark.1
+obj-*/doc/reordercap.1
+obj-*/doc/text2pcap.1
+obj-*/doc/androiddump.1
+obj-*/doc/ciscodump.1
+obj-*/doc/randpktdump.1
+obj-*/doc/udpdump.1
+obj-*/doc/sshdump.1
+obj-*/doc/wifidump.1
+obj-*/doc/extcap.4
+obj-*/doc/wireshark-filter.4
diff --git a/packaging/debian/wireshark-common.postinst b/packaging/debian/wireshark-common.postinst
new file mode 100644
index 0000000..8e6df32
--- /dev/null
+++ b/packaging/debian/wireshark-common.postinst
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+PROGRAM=$(dpkg-divert --truename /usr/bin/dumpcap)
+GROUP=wireshark
+
+if ! dpkg-statoverride --list $PROGRAM > /dev/null; then
+ db_get wireshark-common/install-setuid
+ if [ -e "$PROGRAM" ]; then
+ if [ "$RET" = "false" ] ; then
+ chown root:root $PROGRAM
+ chmod u=rwx,go=rx $PROGRAM
+ else
+ if ! addgroup --quiet --system $GROUP; then
+ if ! getent group wireshark > /dev/null; then
+ db_input high wireshark-common/addgroup-failed || true
+ db_go
+ exit 1
+ else
+ db_input high wireshark-common/group-is-user-group || true
+ db_go
+ fi
+ fi
+ chown root:$GROUP $PROGRAM
+ if which setcap > /dev/null ; then
+ chmod u=rwx,g=rx,o=r $PROGRAM
+ if ! setcap cap_net_raw,cap_net_admin=eip $PROGRAM; then
+ db_input high wireshark-common/setcap-failed || true
+ db_go
+ chmod u=rwxs,g=rx,o=r $PROGRAM
+ fi
+ else
+ chmod u=rwxs,g=rx,o=r $PROGRAM
+ fi
+ fi
+ fi
+else
+ dpkg-statoverride --list $PROGRAM
+fi
+
+#DEBHELPER#
diff --git a/packaging/debian/wireshark-common.postrm b/packaging/debian/wireshark-common.postrm
new file mode 100644
index 0000000..c261d6b
--- /dev/null
+++ b/packaging/debian/wireshark-common.postrm
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+GROUP=wireshark
+
+. /usr/share/debconf/confmodule
+
+if [ "$1" = "purge" ] ; then
+ if getent group $GROUP >/dev/null; then
+ if [ -x "$(command -v delgroup)" ]; then
+ if ! delgroup --quiet --system $GROUP; then
+ db_input high wireshark-common/group-removal-failed || true
+ db_go
+ fi
+ fi
+ fi
+fi
+
+#DEBHELPER#
diff --git a/packaging/debian/wireshark-dev.docs b/packaging/debian/wireshark-dev.docs
new file mode 100644
index 0000000..223c20b
--- /dev/null
+++ b/packaging/debian/wireshark-dev.docs
@@ -0,0 +1,5 @@
+doc/README.design
+doc/README.developer
+doc/README.idl2wrs
+doc/README.plugins
+doc/README.xml-output
diff --git a/packaging/debian/wireshark-dev.install b/packaging/debian/wireshark-dev.install
new file mode 100644
index 0000000..8be277d
--- /dev/null
+++ b/packaging/debian/wireshark-dev.install
@@ -0,0 +1,7 @@
+tools/idl2wrs usr/bin
+tools/idl2deb usr/bin
+tools/asn2deb usr/bin
+tools/make-plugin-reg.py usr/share/pyshared
+tools/wireshark_be.py usr/share/pyshared
+tools/wireshark_gen.py usr/share/pyshared
+tools/asn2wrs.py usr/share/pyshared
diff --git a/packaging/debian/wireshark-dev.manpages b/packaging/debian/wireshark-dev.manpages
new file mode 100644
index 0000000..1d678f9
--- /dev/null
+++ b/packaging/debian/wireshark-dev.manpages
@@ -0,0 +1,3 @@
+obj-*/doc/idl2wrs.1
+obj-*/doc/idl2deb.1
+obj-*/doc/asn2deb.1
diff --git a/packaging/debian/wireshark-dev.prerm b/packaging/debian/wireshark-dev.prerm
new file mode 100644
index 0000000..8614658
--- /dev/null
+++ b/packaging/debian/wireshark-dev.prerm
@@ -0,0 +1,17 @@
+#! /bin/bash
+#
+# Debian prerm script for Python x.y hierarchical modules
+# Written by Gregor Hoffleit <flight@debian.org>
+# Extended by Matthias Klose <doko@debian.org>
+#
+
+set -e
+
+PACKAGE=`basename $0 | sed -e 's/\.[^.]*$//'`
+
+dpkg --listfiles $PACKAGE |
+ awk '$0~/\.py$/ {print $0"c\n" $0"o"}' |
+ xargs rm -f >&2
+
+#DEBHELPER#
+
diff --git a/packaging/debian/wireshark-doc.docs b/packaging/debian/wireshark-doc.docs
new file mode 100644
index 0000000..c95d3d9
--- /dev/null
+++ b/packaging/debian/wireshark-doc.docs
@@ -0,0 +1,2 @@
+obj-*/docbook/wsdg_html_chunked
+obj-*/docbook/wsug_html_chunked
diff --git a/packaging/debian/wireshark-qt.docs b/packaging/debian/wireshark-qt.docs
new file mode 100644
index 0000000..e174728
--- /dev/null
+++ b/packaging/debian/wireshark-qt.docs
@@ -0,0 +1 @@
+debian/README.Debian
diff --git a/packaging/debian/wireshark-qt.install b/packaging/debian/wireshark-qt.install
new file mode 100644
index 0000000..a31db40
--- /dev/null
+++ b/packaging/debian/wireshark-qt.install
@@ -0,0 +1,2 @@
+usr/bin/wireshark
+usr/share/applications/org.wireshark.Wireshark.desktop
diff --git a/packaging/debian/wireshark-qt.lintian-overrides b/packaging/debian/wireshark-qt.lintian-overrides
new file mode 100644
index 0000000..b10a495
--- /dev/null
+++ b/packaging/debian/wireshark-qt.lintian-overrides
@@ -0,0 +1,2 @@
+# those long lines are examples which we can't break
+wireshark-qt: manpage-has-errors-from-man usr/share/man/man1/wireshark.1.gz *
diff --git a/packaging/debian/wireshark-qt.manpages b/packaging/debian/wireshark-qt.manpages
new file mode 100644
index 0000000..f8d254e
--- /dev/null
+++ b/packaging/debian/wireshark-qt.manpages
@@ -0,0 +1 @@
+obj-*/doc/wireshark.1
diff --git a/packaging/macosx/ChmodBPF/install-distribution.xml b/packaging/macosx/ChmodBPF/install-distribution.xml
new file mode 100644
index 0000000..fbd6fd9
--- /dev/null
+++ b/packaging/macosx/ChmodBPF/install-distribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Created using `productbuild -\-synthesize -\-package install.ChmodBPF.pkg /tmp/distribution.xml`
+See also: https://github.com/open-eid/osx-installer/blob/master/distribution.xml
+https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/DistributionDefinitionRef/
+https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/InstallerJavaScriptRef/
+-->
+<installer-gui-script minSpecVersion="1">
+ <title>ChmodBPF</title>
+ <welcome language="en" mime-type="text/html"><![CDATA[<html><body><br />
+<p style="margin: 0px; font: 13px 'Lucida Grande'">This package will install the ChmodBPF launch daemon, create the access_bpf group, and add you to that group.</p></body></html>]]></welcome>
+ <pkg-ref id="org.wireshark.ChmodBPF.pkg"/>
+ <options customize="never" require-scripts="false" hostArchitectures="arm64,x86_64"/>
+ <domains enable_anywhere="false" enable_currentUserHome="false" enable_localSystem="true"/>
+ <choices-outline>
+ <line choice="default">
+ <line choice="org.wireshark.ChmodBPF.pkg"/>
+ </line>
+ </choices-outline>
+ <choice id="default"/>
+ <choice id="org.wireshark.ChmodBPF.pkg" visible="false">
+ <pkg-ref id="org.wireshark.ChmodBPF.pkg"/>
+ </choice>
+ <pkg-ref id="org.wireshark.ChmodBPF.pkg" onConclusion="none">install.ChmodBPF.pkg</pkg-ref>
+</installer-gui-script>
diff --git a/packaging/macosx/ChmodBPF/install-scripts/postinstall b/packaging/macosx/ChmodBPF/install-scripts/postinstall
new file mode 100755
index 0000000..1f11eb3
--- /dev/null
+++ b/packaging/macosx/ChmodBPF/install-scripts/postinstall
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+#
+# Fix up ownership and permissions on /Library/Application Support/Wireshark;
+# for some reason, it's not being owned by root:wheel, and it's not
+# publicly readable and, for directories and executables, not publicly
+# searchable/executable.
+#
+# Also take away group write permission.
+#
+# XXX - that may be a problem with the process of building the installer
+# package; if so, that's where it *should* be fixed.
+#
+chown -R root:wheel "/Library/Application Support/Wireshark"
+chmod -R a+rX,go-w "/Library/Application Support/Wireshark"
+
+CHMOD_BPF_PLIST="/Library/LaunchDaemons/org.wireshark.ChmodBPF.plist"
+BPF_GROUP="access_bpf"
+BPF_GROUP_NAME="BPF device access ACL"
+min_gid=100
+
+if ! dscl . -read /Groups/"$BPF_GROUP" > /dev/null 2>&1; then
+ free_gid=$(dscl . -list /Groups PrimaryGroupID | sort -bnk2 | awk -v min_gid=$min_gid 'BEGIN{i=min_gid}{if($2==i)i++}END{print i}')
+ dseditgroup -q -o create -i $free_gid -r "$BPF_GROUP_NAME" "$BPF_GROUP"
+fi
+
+dseditgroup -q -o edit -a "$USER" -t user "$BPF_GROUP"
+
+chmod u=rw,g=r,o=r "$CHMOD_BPF_PLIST"
+chown root:wheel "$CHMOD_BPF_PLIST"
+
+# Clean up our legacy startup item if it's still around.
+rm -rf /Library/StartupItems/ChmodBPF
+
+launchctl bootstrap system "$CHMOD_BPF_PLIST"
diff --git a/packaging/macosx/ChmodBPF/root/Library/Application Support/Wireshark/ChmodBPF/ChmodBPF b/packaging/macosx/ChmodBPF/root/Library/Application Support/Wireshark/ChmodBPF/ChmodBPF
new file mode 100755
index 0000000..1dc12e7
--- /dev/null
+++ b/packaging/macosx/ChmodBPF/root/Library/Application Support/Wireshark/ChmodBPF/ChmodBPF
@@ -0,0 +1,41 @@
+#! /bin/zsh
+# shellcheck shell=bash
+
+#
+# Unfortunately, macOS's devfs is based on the old FreeBSD
+# one, not the current one, so there's no way to configure it
+# to create BPF devices with particular owners or groups. BPF
+# devices on macOS are also non-cloning, that is they can
+# be created on demand at any time. This startup item will
+# pre-create a number of BPF devices, then make them owned by
+# the access_bpf group, with permissions rw-rw----, so that
+# anybody in the access_bpf group can use programs that capture
+# or send raw packets.
+#
+# Change this as appropriate for your site, e.g. to make
+# it owned by a particular user without changing the permissions,
+# so only that user and the super-user can capture or send raw
+# packets, or give it the permissions rw-r-----, so that
+# only the super-user can send raw packets but anybody in the
+# admin group can capture packets.
+#
+
+# Pre-create BPF devices. Set to 0 to disable.
+FORCE_CREATE_BPF_MAX=256
+
+SYSCTL_MAX=$( sysctl -n debug.bpf_maxdevices )
+if [ "$FORCE_CREATE_BPF_MAX" -gt "$SYSCTL_MAX" ] ; then
+ FORCE_CREATE_BPF_MAX=$SYSCTL_MAX
+fi
+
+syslog -s -l notice "ChmodBPF: Forcing creation and setting permissions for /dev/bpf0-$(( FORCE_CREATE_BPF_MAX - 1))"
+
+CUR_DEV=0
+while [ "$CUR_DEV" -lt "$FORCE_CREATE_BPF_MAX" ] ; do
+ # Try to do the minimum necessary to trigger the next device.
+ read -r -n 0 < /dev/bpf$CUR_DEV > /dev/null 2>&1
+ CUR_DEV=$(( CUR_DEV + 1 ))
+done
+
+chgrp access_bpf /dev/bpf*
+chmod g+rw /dev/bpf*
diff --git a/packaging/macosx/ChmodBPF/root/Library/LaunchDaemons/org.wireshark.ChmodBPF.plist b/packaging/macosx/ChmodBPF/root/Library/LaunchDaemons/org.wireshark.ChmodBPF.plist
new file mode 100644
index 0000000..1b3317e
--- /dev/null
+++ b/packaging/macosx/ChmodBPF/root/Library/LaunchDaemons/org.wireshark.ChmodBPF.plist
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>org.wireshark.ChmodBPF</string>
+ <key>RunAtLoad</key>
+ <true/>
+ <key>Program</key>
+ <string>/Library/Application Support/Wireshark/ChmodBPF/ChmodBPF</string>
+ <key>AssociatedBundleIdentifiers</key>
+ <string>org.wireshark.Wireshark</string>
+</dict>
+</plist>
diff --git a/packaging/macosx/ChmodBPF/uninstall-distribution.xml b/packaging/macosx/ChmodBPF/uninstall-distribution.xml
new file mode 100644
index 0000000..001f6e1
--- /dev/null
+++ b/packaging/macosx/ChmodBPF/uninstall-distribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Created using `productbuild -\-synthesize -\-package install.ChmodBPF.pkg /tmp/distribution.xml`
+See also: https://github.com/open-eid/osx-installer/blob/master/distribution.xml
+https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/DistributionDefinitionRef/
+https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/InstallerJavaScriptRef/
+-->
+<installer-gui-script minSpecVersion="1">
+ <title>Uninstall ChmodBPF</title>
+ <welcome language="en" mime-type="text/html"><![CDATA[<html><body><br />
+<p style="margin: 0px; font: 13px 'Lucida Grande'">This package will uninstall the ChmodBPF launch daemon and remove the access_bpf group.</p></body></html>]]></welcome>
+ <pkg-ref id="org.wireshark.uninstall.ChmodBPF.pkg"/>
+ <options customize="never" require-scripts="false" hostArchitectures="arm64,x86_64"/>
+ <domains enable_anywhere="false" enable_currentUserHome="false" enable_localSystem="true"/>
+ <choices-outline>
+ <line choice="default">
+ <line choice="org.wireshark.uninstall.ChmodBPF.pkg"/>
+ </line>
+ </choices-outline>
+ <choice id="default"/>
+ <choice id="org.wireshark.uninstall.ChmodBPF.pkg" visible="false">
+ <pkg-ref id="org.wireshark.uninstall.ChmodBPF.pkg"/>
+ </choice>
+ <pkg-ref id="org.wireshark.uninstall.ChmodBPF.pkg" onConclusion="none">uninstall.ChmodBPF.pkg</pkg-ref>
+</installer-gui-script>
diff --git a/packaging/macosx/ChmodBPF/uninstall-scripts/postinstall b/packaging/macosx/ChmodBPF/uninstall-scripts/postinstall
new file mode 100755
index 0000000..93a33b4
--- /dev/null
+++ b/packaging/macosx/ChmodBPF/uninstall-scripts/postinstall
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+#
+# Remove the following:
+# - The ChmmodBPF launch daemon
+# - The ChmmodBPF script
+# - The access_bpf group
+#
+
+CHMOD_BPF_PLIST="/Library/LaunchDaemons/org.wireshark.ChmodBPF.plist"
+BPF_GROUP="access_bpf"
+
+launchctl bootout system "$CHMOD_BPF_PLIST"
+
+dscl . -read /Groups/"$BPF_GROUP" > /dev/null 2>&1 && \
+ dseditgroup -q -o delete "$BPF_GROUP"
+
+rm -rf "/Library/Application Support/Wireshark"
+
+rm -f "$CHMOD_BPF_PLIST"
+
+# ChmodBPF hasn't been a startup item since 2018 (ac4f3c0f4d).
+rm -rf /Library/StartupItems/ChmodBPF
+
+# https://gitlab.com/wireshark/wireshark/-/issues/18734
+pkgutil --forget org.wireshark.ChmodBPF.pkg
diff --git a/packaging/macosx/Donate_to_the_Wireshark_Foundation.adoc b/packaging/macosx/Donate_to_the_Wireshark_Foundation.adoc
new file mode 100644
index 0000000..3c461d5
--- /dev/null
+++ b/packaging/macosx/Donate_to_the_Wireshark_Foundation.adoc
@@ -0,0 +1,15 @@
+// Required attributes:
+// include-dir
+
+include::{include-dir}/attributes.adoc[]
+:stylesheet: {include-dir}/ws.css
+
+== The Wireshark Founation
+
+The https://wiresharkfoundation.org/[Wireshark Foundation] is a non-profit organization helping as many people as possible understand their networks as much as possible.
+As time goes on, more and more of our daily life happens using software, and that software relies on network connectivity.
+By hosting educational conferences, the Wireshark Foundation provides industry professionals and students with the knowledge and understanding required to ensure that the networks and systems we depend on are reliable, fast, and secure.
+
+The Wireshark Foundation fosters open source development and explores new ways of educating the public.
+
+You can learn more and donate at https://wiresharkfoundation.org/[wiresharkfoundation.org].
diff --git a/packaging/macosx/Logray.icns b/packaging/macosx/Logray.icns
new file mode 100644
index 0000000..68949c3
--- /dev/null
+++ b/packaging/macosx/Logray.icns
Binary files differ
diff --git a/packaging/macosx/LograyInfo.plist.in b/packaging/macosx/LograyInfo.plist.in
new file mode 100644
index 0000000..1074f1a
--- /dev/null
+++ b/packaging/macosx/LograyInfo.plist.in
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>Logray</string>
+ <key>CFBundleGetInfoString</key>
+ <string>@LOG_PROJECT_VERSION@, Copyright 1998-2024 Wireshark Development Team</string>
+ <key>CFBundleIconFile</key>
+ <string>Logray.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.wireshark.Logray</string>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>scap</string>
+ <string>scap.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>Sysdig capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <!-- XXX - This dictionary needs a lot more entries -->
+ </array>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>@LOG_PROJECT_VERSION@</string>
+ <key>CFBundleSignature</key>
+ <string>Lgry</string>
+ <key>CFBundleVersion</key>
+ <string>@LOG_PROJECT_VERSION@</string>
+ <key>NSHumanReadableCopyright</key>
+ <string>Copyright 1998-2024 Wireshark Developers, GNU General Public License.</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+ <key>NSHighResolutionCapable</key>
+ <true/>
+ <!-- Force dark mode support. -->
+ <key>NSRequiresAquaSystemAppearance</key>
+ <false/>
+ <key>LSMinimumSystemVersion</key>
+ <string>@MIN_MACOS_VERSION@</string>
+
+ <!-- Sparkle settings https://sparkle-project.org/documentation/customization/ -->
+ <key>SUFeedURL</key>
+ <string>https://www.wireshark.org/update/0/Logray/@LOG_PROJECT_MAJOR_VERSION@.@LOG_PROJECT_MINOR_VERSION@.@PROJECT_PATCH_VERSION@/macOS/x86-64/en-US/stable.xml</string>
+ <key>SUEnableAutomaticChecks</key>
+ <false/>
+ <key>SUPublicEDKey</key>
+ <string>BeSuPpEZOmOzkON9QMnfIdwyi06P/LcVoik8M5O2bsQ=</string>
+ <key>SUEnableSystemProfiling</key>
+ <false/>
+ <!--
+ Disable automatic updates here, then enable them at program
+ startup depending on prefs.gui_update_enabled.
+ -->
+ <key>SUAutomaticallyUpdate</key>
+ <false/>
+
+</dict>
+</plist>
diff --git a/packaging/macosx/Logray_dsym_installation.adoc b/packaging/macosx/Logray_dsym_installation.adoc
new file mode 100644
index 0000000..6ca4f2f
--- /dev/null
+++ b/packaging/macosx/Logray_dsym_installation.adoc
@@ -0,0 +1,17 @@
+// Required attributes:
+// include-dir
+
+include::{include-dir}/attributes.adoc[]
+:stylesheet: {include-dir}/ws.css
+
+== Debugging Symbols for Logray
+
+This archive contains the debugging symbols for Logray {logray-version}.
+The debugging symbols are only necessary if Logray is crashing and you need to report an issue to the Logray development team.
+
+WARNING: This won't work properly with any version other than Logray {logray-version}.
+
+To install the symbols, drag _Logray.dSYM_ to the same location as _Logray_.
+This is usually your _Applications_ folder.
+
+To uninstall, drag _Logray.dSYM_ to the trash.
diff --git a/packaging/macosx/Logray_read_me_first.adoc b/packaging/macosx/Logray_read_me_first.adoc
new file mode 100644
index 0000000..498b039
--- /dev/null
+++ b/packaging/macosx/Logray_read_me_first.adoc
@@ -0,0 +1,34 @@
+// Required attributes:
+// include-dir
+// min-macos-version
+
+include::{include-dir}/attributes.adoc[]
+:stylesheet: {include-dir}/ws.css
+
+== Before You Begin
+
+This release of Logray requires macOS {min-macos-version} or later.
+If you are running an earlier version of macOS you can install using another packaging system such as Homebrew or MacPorts.
+
+== Quick Setup
+
+To install Logray, drag the _Logray_ application bundle to the _Applications_ folder.
+
+////
+If you would like to add the path to
+https://www.wireshark.org/docs/man-pages/wireshark.html[Logray],
+https://www.wireshark.org/docs/man-pages/tshark.html[TShark],
+https://www.wireshark.org/docs/man-pages/capinfos.html[capinfos],
+https://www.wireshark.org/docs/man-pages/editcap.html[editcap],
+and
+https://www.wireshark.org/docs/man-pages/[other command line utilities]
+to the system PATH, install the
+link:Logray.app/Contents/Resources/Extras/Add%20Wireshark%20to%20the%20system%20path.pkg[Add Logray to the system path]
+package.
+////
+
+== Uninstalling
+
+To uninstall Logray, do the following:
+
+. Remove _/Applications/Logray.app_
diff --git a/packaging/macosx/Wireshark.icns b/packaging/macosx/Wireshark.icns
new file mode 100644
index 0000000..21dcd6c
--- /dev/null
+++ b/packaging/macosx/Wireshark.icns
Binary files differ
diff --git a/packaging/macosx/WiresharkInfo.plist.in b/packaging/macosx/WiresharkInfo.plist.in
new file mode 100644
index 0000000..64ae611
--- /dev/null
+++ b/packaging/macosx/WiresharkInfo.plist.in
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>Wireshark</string>
+ <key>CFBundleGetInfoString</key>
+ <string>@PROJECT_VERSION@, Copyright 1998-2024 Wireshark Development Team</string>
+ <key>CFBundleIconFile</key>
+ <string>Wireshark.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.wireshark.Wireshark</string>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>5vw</string>
+ <string>5vw.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>InfoVista/Accellent 5View Packet Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>apc</string>
+ <string>pkt</string>
+ <string>tpc</string>
+ <string>wpz</string>
+ <string>apc.gz</string>
+ <string>pkt.gz</string>
+ <string>tpc.gz</string>
+ <string>wpz.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>LiveAction/Savvius/WildPackets *Peek Packet Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>bfr</string>
+ <string>bfr.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>Viavi/Network Instruments Observer Packet Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>erf</string>
+ <string>erf.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>Endace ERF Packet Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>ipfix</string>
+ <string>ipfix.gz</string>
+ <!-- Don't register for .pfx: that extension
+ has another (more common) use.
+ -->
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>IPFIX Packet Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>mplog</string>
+ <string>mplog.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>Micropross mplog Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>pcap</string>
+ <string>pcap.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeMIMETypes</key>
+ <array>
+ <string>application/vnd.tcpdump.pcap</string>
+ </array>
+ <key>CFBundleTypeName</key>
+ <string>Pcap Network Capture</string>
+ <key>CFBundleTypeOSTypes</key>
+ <array>
+ <string>PCAP</string>
+ </array>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>pcapng</string>
+ <string>ntar</string>
+ <string>pcapng.gz</string>
+ <string>ntar.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>Pcapng Network Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>pklg</string>
+ <string>pklg.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>macOS PacketLogger Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>rf5</string>
+ <string>rf5.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>Tektronix K12 Packet Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>snoop</string>
+ <string>snoop.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>Solaris snoop Packet Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>tr1</string>
+ <string>tr1.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>Novell LANalyzer Packet Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>trc0</string>
+ <string>trc0.gz</string>
+ <string>trc1</string>
+ <string>trc1.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>HP-UX nettl Packet Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>vwr</string>
+ <string>vwr.gz</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>Ixia IxVeriWave Packet Capture</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>rtp</string>
+ <string>rtp.gz</string>
+ <string>rtp.zst</string>
+ <string>rtp.lz4</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Wiresharkdoc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>RTP stream (RTPDump)</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <!-- XXX - This dictionary needs a lot more entries -->
+ </array>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>@PROJECT_VERSION@</string>
+ <key>CFBundleSignature</key>
+ <string>Wshk</string>
+ <key>CFBundleVersion</key>
+ <string>@PROJECT_VERSION@</string>
+ <key>NSHumanReadableCopyright</key>
+ <string>Copyright 1998-2024 Wireshark Developers, GNU General Public License.</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+ <key>NSHighResolutionCapable</key>
+ <true/>
+ <!-- Force dark mode support. -->
+ <key>NSRequiresAquaSystemAppearance</key>
+ <false/>
+ <key>LSMinimumSystemVersion</key>
+ <string>@MIN_MACOS_VERSION@</string>
+
+ <!-- Sparkle settings https://sparkle-project.org/documentation/customization/ -->
+ <key>SUFeedURL</key>
+ <string>https://www.wireshark.org/update/0/Wireshark/@PROJECT_MAJOR_VERSION@.@PROJECT_MINOR_VERSION@.@PROJECT_PATCH_VERSION@/macOS/x86-64/en-US/stable.xml</string>
+ <key>SUEnableAutomaticChecks</key>
+ <false/>
+ <key>SUPublicEDKey</key>
+ <string>BeSuPpEZOmOzkON9QMnfIdwyi06P/LcVoik8M5O2bsQ=</string>
+ <key>SUEnableSystemProfiling</key>
+ <false/>
+ <!--
+ Disable automatic updates here, then enable them at program
+ startup depending on prefs.gui_update_enabled.
+ -->
+ <key>SUAutomaticallyUpdate</key>
+ <false/>
+
+</dict>
+</plist>
diff --git a/packaging/macosx/Wireshark_dsym_installation.adoc b/packaging/macosx/Wireshark_dsym_installation.adoc
new file mode 100644
index 0000000..a7c1b99
--- /dev/null
+++ b/packaging/macosx/Wireshark_dsym_installation.adoc
@@ -0,0 +1,17 @@
+// Required attributes:
+// include-dir
+
+include::{include-dir}/attributes.adoc[]
+:stylesheet: {include-dir}/ws.css
+
+== Debugging Symbols for Wireshark
+
+This archive contains the debugging symbols for Wireshark {wireshark-version}.
+The debugging symbols are only necessary if Wireshark is crashing and you need to report an issue to the Wireshark development team.
+
+WARNING: This won't work properly with any version other than Wireshark {wireshark-version}.
+
+To install the symbols, drag _Wireshark.dSYM_ to the same location as _Wireshark_.
+This is usually your _Applications_ folder.
+
+To uninstall, drag _Wireshark.dSYM_ to the trash.
diff --git a/packaging/macosx/Wireshark_read_me_first.adoc b/packaging/macosx/Wireshark_read_me_first.adoc
new file mode 100644
index 0000000..1f6073d
--- /dev/null
+++ b/packaging/macosx/Wireshark_read_me_first.adoc
@@ -0,0 +1,70 @@
+// Required attributes:
+// include-dir
+// min-macos-version
+
+include::{include-dir}/attributes.adoc[]
+:stylesheet: {include-dir}/ws.css
+
+== Before You Begin
+
+This release of Wireshark requires macOS {min-macos-version} or later.
+If you are running an earlier version of macOS you can install using another packaging system such as Homebrew or MacPorts.
+
+== Quick Setup
+
+To install Wireshark, drag the _Wireshark_ application bundle to the _Applications_ folder.
+
+In order to be able to capture packets, install the
+link:Wireshark.app/Contents/Resources/Extras/Install%20ChmodBPF.pkg[Install ChmodBPF]
+package.
+
+If you would like to add the path to
+https://www.wireshark.org/docs/man-pages/wireshark.html[Wireshark],
+https://www.wireshark.org/docs/man-pages/tshark.html[TShark],
+https://www.wireshark.org/docs/man-pages/capinfos.html[capinfos],
+https://www.wireshark.org/docs/man-pages/editcap.html[editcap],
+and
+https://www.wireshark.org/docs/man-pages/[other command line utilities]
+to the system PATH, install the
+link:Wireshark.app/Contents/Resources/Extras/Add%20Wireshark%20to%20the%20system%20path.pkg[Add Wireshark to the system path]
+package.
+
+== Package Installation Details
+
+The ChmodBPF installer writes to the following locations:
+
+* _/Library/LaunchDaemons/org.wireshark.ChmodBPF.plist_. A launch daemon that adjusts permissions on the system's packet capture devices (/dev/bpf*) when the system starts up.
+* _/Library/Application Support/Wireshark/ChmodBPF_. A copy of the launch daemon property list, and the script that the launch daemon runs.
+
+The installer group named “access_bpf” is created. The user who opened the package is added to the group.
+
+The system path installer writes to the following locations:
+
+* _/etc/paths.d/Wireshark_. The folder name in this file is automatically added to PATH
+* _/etc/manpaths.d/Wireshark_. The folder name in this file is used by the man command.
+
+It assumes that Wireshark is installed in _/Applications_.
+
+== Uninstalling
+
+To uninstall Wireshark, do the following:
+
+. Remove _/Applications/Wireshark.app_
+. Remove _/Library/Application Support/Wireshark_
+
+You can uninstall ChmodBPF via the
+link:Wireshark.app/Contents/Resources/Extras/Uninstall%20ChmodBPF.pkg[Uninstall ChmodBPF]
+package, which is available on this disk or via menu:Wireshark[About Wireshark,Folders,macOS Extras].
+You can also uninstall it manually by doing the following:
+
+. Unload the “org.wireshark.ChmodBPF.plist” launchd job
+. Remove _/Library/LaunchDaemons/org.wireshark.ChmodBPF.plist_
+. Remove the “access_bpf” group.
+
+You can uninstall the system path components via the
+link:Wireshark.app/Contents/Resources/Extras/Remove%20Wireshark%20from%20the%20system%20path.pkg[Remove Wireshark from the system path]
+package, which is available on this disk or via menu:Wireshark[About Wireshark,Folders,macOS Extras].
+You can also uninstall it manually by doing the following:
+
+. Remove _/etc/paths.d/Wireshark_
+. Remove _/etc/manpaths.d/Wireshark_
diff --git a/packaging/macosx/Wiresharkdoc.icns b/packaging/macosx/Wiresharkdoc.icns
new file mode 100644
index 0000000..fb66002
--- /dev/null
+++ b/packaging/macosx/Wiresharkdoc.icns
Binary files differ
diff --git a/packaging/macosx/dmg_background.png b/packaging/macosx/dmg_background.png
new file mode 100644
index 0000000..10502b6
--- /dev/null
+++ b/packaging/macosx/dmg_background.png
Binary files differ
diff --git a/packaging/macosx/dmg_background.svg b/packaging/macosx/dmg_background.svg
new file mode 100644
index 0000000..2588f01
--- /dev/null
+++ b/packaging/macosx/dmg_background.svg
@@ -0,0 +1,1394 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="360"
+ height="550"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="1.2 (dc2aeda, 2022-05-15)"
+ version="1.0"
+ sodipodi:docname="dmg_background.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="dmg_background.png"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96"
+ xml:space="preserve"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs4"><linearGradient
+ id="linearGradient3157"><stop
+ style="stop-color:#6eac2c;stop-opacity:1;"
+ offset="0"
+ id="stop3159" /><stop
+ id="stop3848"
+ offset="0.5"
+ style="stop-color:#acdd4a;stop-opacity:1;" /><stop
+ style="stop-color:#dbf1b0;stop-opacity:1;"
+ offset="1"
+ id="stop3161" /></linearGradient><inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 225 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="625 : 225 : 1"
+ inkscape:persp3d-origin="312.5 : 166.66667 : 1"
+ id="perspective2499" /><linearGradient
+ id="linearGradient4260"><stop
+ style="stop-color:#d3d3d3;stop-opacity:1;"
+ offset="0"
+ id="stop4262" /><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop4264" /></linearGradient><linearGradient
+ id="linearGradient10020"><stop
+ id="stop10022"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:0.85567009;" /><stop
+ style="stop-color:#ffffff;stop-opacity:0.49411765;"
+ offset="0.09"
+ id="stop3157" /><stop
+ style="stop-color:#ffffff;stop-opacity:0.35051546;"
+ offset="0.28999999"
+ id="stop4129" /><stop
+ id="stop10024"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0.05882353;" /></linearGradient><linearGradient
+ id="linearGradient3152"><stop
+ style="stop-color:#1ba0df;stop-opacity:1;"
+ offset="0"
+ id="stop3154" /><stop
+ style="stop-color:#1373a1;stop-opacity:1;"
+ offset="1"
+ id="stop3156" /></linearGradient><linearGradient
+ id="linearGradient3978"><stop
+ style="stop-color:#50e740;stop-opacity:1;"
+ offset="0"
+ id="stop3980" /><stop
+ style="stop-color:#45a615;stop-opacity:0.94117647;"
+ offset="1"
+ id="stop3982" /></linearGradient><inkscape:perspective
+ id="perspective3625"
+ inkscape:persp3d-origin="372.04724 : 400.78739 : 1"
+ inkscape:vp_z="744.09448 : 576.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 576.18109 : 1"
+ sodipodi:type="inkscape:persp3d" /><inkscape:perspective
+ id="perspective2594"
+ inkscape:persp3d-origin="372.04724 : 400.78739 : 1"
+ inkscape:vp_z="744.09448 : 576.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 576.18109 : 1"
+ sodipodi:type="inkscape:persp3d" /></defs><sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="152.5"
+ inkscape:cy="243.5"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="625px"
+ height="350px"
+ inkscape:window-width="1305"
+ inkscape:window-height="811"
+ inkscape:window-x="675"
+ inkscape:window-y="291"
+ showgrid="false"
+ inkscape:window-maximized="0"
+ inkscape:pagecheckerboard="true"
+ inkscape:showpageshadow="2"
+ inkscape:deskcolor="#d1d1d1" /><metadata
+ id="metadata7"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Screenshot"
+ style="display:none;opacity:0.5;stroke-width:1.33049"
+ transform="matrix(0.75321487,0,0,0.75,5.4076932,18.92308)"><image
+ width="477.95126"
+ height="733.33331"
+ preserveAspectRatio="none"
+ xlink:href="data:image/png;base64,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
+YII=
+"
+ id="image3451"
+ x="-7.1794829"
+ y="-89.230766" /></g><g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,150)"><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.551px;line-height:100%;font-family:'Lucida Grande';-inkscape-font-specification:'Lucida Grande';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="163.95821"
+ y="-49.2038"
+ id="text9542"
+ transform="scale(0.84784264,1.1794641)"
+ inkscape:export-filename="/tmp/util_background.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ sodipodi:role="line"
+ id="tspan9540"
+ x="163.95821"
+ y="-49.2038"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:62.4037px;font-family:'Arial Narrow';-inkscape-font-specification:'Arial Narrow Bold';stroke-width:0.869726px"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:62.4037px;font-family:'Arial Narrow';-inkscape-font-specification:'Arial Narrow Bold';fill:#000000;fill-opacity:0.372549;stroke-width:1px"
+ id="tspan9544">&gt;</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:62.4037px;font-family:'Arial Narrow';-inkscape-font-specification:'Arial Narrow Bold';fill:#000000;fill-opacity:0.498039;stroke-width:1px"
+ id="tspan9624">&gt;</tspan><tspan
+ style="fill:#000000;fill-opacity:0.623529;stroke-width:0.869726px"
+ id="tspan9676">&gt;</tspan></tspan></text></g></svg>
diff --git a/packaging/macosx/entitlements.plist b/packaging/macosx/entitlements.plist
new file mode 100644
index 0000000..62a5545
--- /dev/null
+++ b/packaging/macosx/entitlements.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.apple.security.cs.disable-library-validation</key>
+ <true/>
+</dict>
+</plist>
diff --git a/packaging/macosx/logray-app.dmgbuild.in b/packaging/macosx/logray-app.dmgbuild.in
new file mode 100644
index 0000000..a7d8360
--- /dev/null
+++ b/packaging/macosx/logray-app.dmgbuild.in
@@ -0,0 +1,146 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+import os.path
+
+#
+# Example settings file for dmgbuild
+#
+# Adapted from https://raw.githubusercontent.com/al45tair/dmgbuild/master/examples/settings.py
+
+# Use like this: dmgbuild -s settings.py "Test Volume" test.dmg
+
+# You can actually use this file for your own application (not just TextEdit)
+# by doing e.g.
+#
+# dmgbuild -s settings.py -D app=/path/to/My.app "My Application" MyApp.dmg
+
+# .. Useful stuff ..............................................................
+
+lr_version = '@LOG_PROJECT_VERSION@'
+lr_volname = 'Logray ' + lr_version
+lr_srcdir = '@CMAKE_SOURCE_DIR@'
+lr_bindir = '@CMAKE_BINARY_DIR@'
+lr_app = 'Logray.app'
+lr_readme = 'Read me first.html'
+lr_install_chmodbpf = 'Install ChmodBPF.pkg'
+lr_uninstall_chmodbpf = 'Uninstall ChmodBPF.pkg'
+lr_install_path_helper = 'Add Logray to the system path.pkg'
+lr_uninstall_path_helper = 'Remove Logray from the system path.pkg'
+
+# .. Basics ....................................................................
+
+# Uncomment to override the output filename
+# filename = lr_volname + ' Intel 64.dmg'
+
+# Uncomment to override the output volume name
+# volume_name = 'Logray ' + lr_version
+
+# From the hdiutil man page:
+# UDZO - UDIF zlib-compressed image
+# UDBZ - UDIF bzip2-compressed image (Mac OS X 10.4+ only)
+# ULFO - UDIF lzfse-compressed image (OS X 10.11+ only)
+# ULMO - UDIF lzma-compressed image (macOS 10.15+ only)
+# Volume format (see hdiutil create -help)
+
+# https://developer.apple.com/forums/thread/128166
+# currently (Jan 2023) says to use UDZO
+format = defines.get('format', 'UDZO')
+
+# Compression level (if relevant)
+compression_level = 9
+
+# Volume size
+size = None
+
+# Files to include
+files = [
+ os.path.join(lr_bindir, 'run', lr_app),
+ os.path.join(lr_bindir, 'packaging', 'macosx', 'logray', lr_readme),
+]
+
+# Symlinks to create
+symlinks = {
+ 'Applications': '/Applications',
+ }
+
+# Volume icon
+#
+# You can either define icon, in which case that icon file will be copied to the
+# image, *or* you can define badge_icon, in which case the icon file you specify
+# will be used to badge the system's Removable Disk icon
+#
+badge_icon = os.path.join(lr_srcdir, 'packaging', 'macosx', 'lriconvol.icns')
+#badge_icon = icon_from_app(application)
+
+# Where to put the icons
+icon_locations = {
+ lr_app: ( 80, 64),
+ 'Applications': (240, 64),
+ lr_readme: (160, 170),
+ lr_install_chmodbpf: ( 80, 276),
+ lr_uninstall_chmodbpf: (250, 276),
+ lr_install_path_helper: ( 80, 382),
+ lr_uninstall_path_helper: (250, 382),
+ }
+
+# .. Window configuration ......................................................
+
+# Background
+#
+# This is a STRING containing any of the following:
+#
+# #3344ff - web-style RGB color
+# #34f - web-style RGB color, short form (#34f == #3344ff)
+# rgb(1,0,0) - RGB color, each value is between 0 and 1
+# hsl(120,1,.5) - HSL (hue saturation lightness) color
+# hwb(300,0,0) - HWB (hue whiteness blackness) color
+# cmyk(0,1,0,0) - CMYK color
+# goldenrod - X11/SVG named color
+# builtin-arrow - A simple built-in background with a blue arrow
+# /foo/bar/baz.png - The path to an image file
+#
+# The hue component in hsl() and hwb() may include a unit; it defaults to
+# degrees ('deg'), but also supports radians ('rad') and gradians ('grad'
+# or 'gon').
+#
+# Other color components may be expressed either in the range 0 to 1, or
+# as percentages (e.g. 60% is equivalent to 0.6).
+background = os.path.join(lr_srcdir, 'packaging', 'macosx', 'dmg_background.png')
+
+show_status_bar = False
+show_tab_view = False
+show_toolbar = False
+show_pathbar = False
+show_sidebar = False
+sidebar_width = 180
+
+# Window position in ((x, y), (w, h)) format
+window_rect = ((600, 200), (350, 525))
+
+# Select the default view; must be one of
+#
+# 'icon-view'
+# 'list-view'
+# 'column-view'
+# 'coverflow'
+#
+default_view = 'icon-view'
+
+# General view configuration
+show_icon_preview = False
+
+# Set these to True to force inclusion of icon/list view settings (otherwise
+# we only include settings for the default view)
+include_icon_view_settings = 'auto'
+include_list_view_settings = 'auto'
+
+# .. Icon view configuration ...................................................
+
+arrange_by = None
+grid_offset = (0, 0)
+#grid_spacing = 100
+scroll_position = (0, 0)
+#label_pos = 'bottom' # or 'right'
+text_size = 12
+icon_size = 72
diff --git a/packaging/macosx/logray-dsym.dmgbuild.in b/packaging/macosx/logray-dsym.dmgbuild.in
new file mode 100644
index 0000000..f57950b
--- /dev/null
+++ b/packaging/macosx/logray-dsym.dmgbuild.in
@@ -0,0 +1,139 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+import os.path
+
+#
+# Example settings file for dmgbuild
+#
+# Adapted from https://raw.githubusercontent.com/al45tair/dmgbuild/master/examples/settings.py
+
+# Use like this: dmgbuild -s settings.py "Test Volume" test.dmg
+
+# You can actually use this file for your own application (not just TextEdit)
+# by doing e.g.
+#
+# dmgbuild -s settings.py -D app=/path/to/My.app "My Application" MyApp.dmg
+
+# .. Useful stuff ..............................................................
+
+lw_version = '@LOG_PROJECT_VERSION@'
+lw_volname = 'Logray Debugging Symbols' + lw_version
+lw_srcdir = '@CMAKE_SOURCE_DIR@'
+lw_bindir = '@CMAKE_BINARY_DIR@'
+lw_app_dsym = 'Logray.dSYM'
+lw_readme_dsym = 'Debugging symbols installation.html'
+
+# .. Basics ....................................................................
+
+# Uncomment to override the output filename
+# filename = lw_volname + ' Intel 64.dmg'
+
+# Uncomment to override the output volume name
+# volume_name = 'Logray ' + lw_version
+
+# From the hdiutil man page:
+# UDZO - UDIF zlib-compressed image
+# UDBZ - UDIF bzip2-compressed image (Mac OS X 10.4+ only)
+# ULFO - UDIF lzfse-compressed image (OS X 10.11+ only)
+# ULMO - UDIF lzma-compressed image (macOS 10.15+ only)
+# Volume format (see hdiutil create -help)
+
+# dSYMs are huge, so compress them with UDBZ despite what
+# https://developer.apple.com/forums/thread/128166
+# currently (Jan 2023) says.
+format = defines.get('format', 'UDBZ')
+
+# Compression level (if relevant)
+compression_level = 9
+
+# Volume size
+size = None
+
+# Files to include
+files = [
+ os.path.join(lw_bindir, 'run', lw_app_dsym),
+ os.path.join(lw_bindir, 'packaging', 'macosx', 'logray', lw_readme_dsym),
+]
+
+# Symlinks to create
+symlinks = {
+ 'Applications': '/Applications',
+ }
+
+# Volume icon
+#
+# You can either define icon, in which case that icon file will be copied to the
+# image, *or* you can define badge_icon, in which case the icon file you specify
+# will be used to badge the system's Removable Disk icon
+#
+badge_icon = os.path.join(lw_srcdir, 'packaging', 'macosx', 'lriconvol.icns')
+#badge_icon = icon_from_app(application)
+
+# Where to put the icons
+icon_locations = {
+ lw_app_dsym: ( 80, 64),
+ 'Applications': (240, 64),
+ lw_readme_dsym: (160, 170),
+ }
+
+# .. Window configuration ......................................................
+
+# Background
+#
+# This is a STRING containing any of the following:
+#
+# #3344ff - web-style RGB color
+# #34f - web-style RGB color, short form (#34f == #3344ff)
+# rgb(1,0,0) - RGB color, each value is between 0 and 1
+# hsl(120,1,.5) - HSL (hue saturation lightness) color
+# hwb(300,0,0) - HWB (hue whiteness blackness) color
+# cmyk(0,1,0,0) - CMYK color
+# goldenrod - X11/SVG named color
+# builtin-arrow - A simple built-in background with a blue arrow
+# /foo/bar/baz.png - The path to an image file
+#
+# The hue component in hsl() and hwb() may include a unit; it defaults to
+# degrees ('deg'), but also supports radians ('rad') and gradians ('grad'
+# or 'gon').
+#
+# Other color components may be expressed either in the range 0 to 1, or
+# as percentages (e.g. 60% is equivalent to 0.6).
+background = os.path.join(lw_srcdir, 'packaging', 'macosx', 'dmg_background.png')
+
+show_status_bar = False
+show_tab_view = False
+show_toolbar = False
+show_pathbar = False
+show_sidebar = False
+sidebar_width = 180
+
+# Window position in ((x, y), (w, h)) format
+window_rect = ((600, 200), (350, 325))
+
+# Select the default view; must be one of
+#
+# 'icon-view'
+# 'list-view'
+# 'column-view'
+# 'coverflow'
+#
+default_view = 'icon-view'
+
+# General view configuration
+show_icon_preview = False
+
+# Set these to True to force inclusion of icon/list view settings (otherwise
+# we only include settings for the default view)
+include_icon_view_settings = 'auto'
+include_list_view_settings = 'auto'
+
+# .. Icon view configuration ...................................................
+
+arrange_by = None
+grid_offset = (0, 0)
+#grid_spacing = 100
+scroll_position = (0, 0)
+#label_pos = 'bottom' # or 'right'
+text_size = 12
+icon_size = 72
diff --git a/packaging/macosx/lriconvol.icns b/packaging/macosx/lriconvol.icns
new file mode 100644
index 0000000..8028249
--- /dev/null
+++ b/packaging/macosx/lriconvol.icns
Binary files differ
diff --git a/packaging/macosx/lriconvol.svg b/packaging/macosx/lriconvol.svg
new file mode 100644
index 0000000..c25a8c8
--- /dev/null
+++ b/packaging/macosx/lriconvol.svg
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ id="svg548"
+ sodipodi:version="0.32"
+ sodipodi:docname="lriconvol.svg"
+ inkscape:version="1.2 (dc2aeda, 2022-05-15)"
+ inkscape:export-filename="lriconvol.iconset/icon_512x512.png"
+ inkscape:export-xdpi="2048"
+ inkscape:export-ydpi="2048"
+ x="0px"
+ y="0px"
+ width="24px"
+ height="24px"
+ viewBox="0 0 24 24"
+ enable-background="new 0 0 24 24"
+ xml:space="preserve"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
+ id="metadata3007"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+ id="defs3005"><linearGradient
+ inkscape:collect="always"
+ id="linearGradient1850"><stop
+ style="stop-color:#1f4c8c;stop-opacity:1;"
+ offset="0"
+ id="stop1846" /><stop
+ style="stop-color:#5785d9;stop-opacity:1;"
+ offset="1"
+ id="stop1848" /></linearGradient><linearGradient
+ id="linearGradient5067"><stop
+ style="stop-color:#000000;stop-opacity:0.15753424;"
+ offset="0"
+ id="stop5069" /><stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop5071" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1850"
+ id="linearGradient1852"
+ x1="0.90263927"
+ y1="14.816668"
+ x2="0.90263927"
+ y2="2.1164389"
+ gradientUnits="userSpaceOnUse" /></defs>
+
+<sodipodi:namedview
+ inkscape:snap-page="false"
+ inkscape:current-layer="svg548"
+ inkscape:window-width="1718"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="0"
+ inkscape:window-height="1032"
+ inkscape:cy="11.71897"
+ inkscape:cx="11.325527"
+ inkscape:window-x="250"
+ id="base"
+ inkscape:window-y="27"
+ showgrid="true"
+ inkscape:zoom="35.583333"
+ inkscape:document-rotation="0"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:showpageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1">
+
+ <inkscape:grid
+ type="xygrid"
+ enabled="true"
+ visible="true"
+ spacingx="0.5px"
+ spacingy="0.5px"
+ empspacing="5"
+ snapvisiblegridlinesonly="true"
+ id="grid3142">
+ </inkscape:grid>
+<sodipodi:guide
+ position="22,24"
+ orientation="-1,0"
+ id="guide4492"
+ inkscape:locked="false"
+ inkscape:label=""
+ inkscape:color="rgb(0,134,229)" /></sodipodi:namedview>
+
+<g
+ id="g3209"
+ style="display:inline;stroke-width:2.28576;fill:url(#linearGradient1852);fill-opacity:1"
+ transform="matrix(1.6535135,0,0,1.6535135,-1.9925262,-1.9995602)"
+ inkscape:label="logray"><path
+ id="path5467"
+ style="color:#000000;display:inline;fill:url(#linearGradient1852);stroke-width:2.28576;-inkscape-stroke:none;fill-opacity:1"
+ d="m 3.2400727,6.0332235 c -1.6282601,0.025031 -0.9649152,0.033365 -1.9427167,0.03514 -0.00246,4.4e-6 -0.00551,-1.246e-4 -0.00775,0 h -0.00207 c -0.00151,1.863e-4 -0.00755,0.00201 -0.00775,0.00207 -1.023e-4,3.36e-5 -0.00977,0.00358 -0.00982,0.00362 -5.02e-5,3.77e-5 -0.013438,0.029414 -0.013436,0.029456 1.8e-6,4.16e-5 0.011315,0.023209 0.011369,0.023254 5.36e-5,4.56e-5 0.00816,0.00408 0.00827,0.00413 2.104e-4,9.91e-5 0.0043,0.00374 0.00568,0.00413 0.00139,3.829e-4 0.00254,-2.261e-4 0.00362,0 0.00858,0.00181 0.019386,0.00364 0.037207,0.00568 0.7450762,0.1040572 1.4869276,0.2050597 2.0135135,0.2656165 0.050206,0.0061 0.092576,-0.01329 0.1188558,-0.041341 0.02628,-0.028051 0.035949,-0.06235 0.040824,-0.097152 0.00487,-0.034802 0.00431,-0.071307 0.00207,-0.099736 -0.00224,-0.02843 -0.00568,-0.052455 -0.00568,-0.054777 V 6.087992 L 3.4690065,6.080242 C 3.4186965,6.0664 3.3985335,6.056142 3.3692715,6.046652 3.3400085,6.037162 3.3054505,6.03221 3.2400804,6.033216 Z"
+ inkscape:label="path5467"
+ sodipodi:nodetypes="csccccssscsccscssccscc" /><path
+ style="fill:url(#linearGradient1852);fill-opacity:1;stroke:none;stroke-width:0.604772px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 8.9032692,6.1928876 C 6.8638617,6.0382159 4.5961906,5.9612841 3.6084262,5.9804506 3.4148813,5.9842241 3.4132913,6.0163697 3.2997077,6.1473133 3.2255203,6.2328396 3.1612662,6.302039 3.2225006,6.4932988 c 0.061237,0.19126 1.1039387,1.7303724 1.5035164,2.4394119 0.3087693,0.5479034 0.6305558,1.7898373 0.71721,2.4766723 0.095323,0.755546 0.00949,1.138757 -0.1326524,1.633742 -0.08989,0.313022 -0.277895,0.777884 -0.3291536,0.883345 -0.071749,0.147618 -0.2424409,0.438716 -0.2780846,0.533086 -0.084615,0.224023 -0.055321,0.267404 0.1122927,0.337702 0.144197,0.06048 1.4882014,-0.03298 1.8109768,-0.107824 0.3469277,-0.08045 0.7924818,-0.303498 1.1487712,-0.561988 C 8.2021253,13.817837 9.3085408,12.666171 9.7145043,11.889861 10.120468,11.113552 11.018747,9.8289026 11.235702,9.5534115 11.791959,8.8470788 12.42794,8.4769487 12.723889,8.3179773 13.178299,8.0738903 13.680024,8.2113596 14.207641,7.6982137 14.448023,7.4644225 14.608088,7.1972481 14.533722,6.9712183 14.459354,6.7451873 14.172097,6.745049 13.973417,6.7053004 13.774739,6.6655519 13.575575,6.6305956 13.364945,6.6053352 11.882005,6.4274872 11.256513,6.3713525 8.9032682,6.1928793 Z"
+ id="path3205"
+ sodipodi:nodetypes="ssssssssssssssssszsss" /><path
+ style="fill:url(#linearGradient1852);fill-opacity:1;stroke:none;stroke-width:0.604772px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 13.061635,5.2295311 C 13.013617,4.9413813 12.875822,4.3436854 12.80026,4.0297442 12.753435,3.8351889 12.645904,3.3934937 12.51538,3.1076385 12.355481,2.7574505 12.156827,2.4673879 11.900236,2.2341766 11.801496,2.1444339 11.623019,2.1134401 11.53973,2.1166641 11.323239,2.1250442 11.36145,2.1997672 11.305994,2.3921507 11.24828,2.5923659 11.224831,2.7057664 11.1125,2.9104136 10.960772,3.1868365 10.583333,3.7041667 10.31875,3.96875 9.9843113,4.3031885 9.5077152,4.5996551 9.2604168,4.7625 8.7662984,5.0878748 8.3389344,5.227556 8.0846163,5.3187745 7.475322,5.5373184 6.4981568,5.6783374 5.8414466,5.8117975 c 0.6818225,0.013539 2.5610101,0.097892 4.5452274,0.2552756 1.678991,0.1331734 2.755596,0.2723835 3.094781,0.3211796 -0.313793,-0.4073843 -0.350107,-0.7318582 -0.41982,-1.1587216 z"
+ id="path3207"
+ sodipodi:nodetypes="cssssssssscscc" /></g></svg>
diff --git a/packaging/macosx/osx-app.sh.in b/packaging/macosx/osx-app.sh.in
new file mode 100755
index 0000000..0bd0b93
--- /dev/null
+++ b/packaging/macosx/osx-app.sh.in
@@ -0,0 +1,717 @@
+#!/bin/bash
+#
+# USAGE
+# osx-app [-s] [-l /path/to/libraries]
+#
+# This script attempts to build an application bundle for macOS, resolving
+# dynamic libraries, etc.
+# It strips the executable and libraries if '-s' is given.
+#
+# AUTHORS
+# Kees Cook <kees@outflux.net>
+# Michael Wybrow <mjwybrow@users.sourceforge.net>
+# Jean-Olivier Irisson <jo.irisson@gmail.com>
+#
+# Copyright (C) 2005 Kees Cook
+# Copyright (C) 2005-2007 Michael Wybrow
+# Copyright (C) 2007 Jean-Olivier Irisson
+#
+# Released under GNU GPL, read the file 'COPYING' for more information
+#
+# Thanks to GNUnet's "build_app" script for help with library dep resolution.
+# https://gnunet.org/svn/GNUnet/contrib/OSX/build_app
+#
+# NB:
+# This originally came from Inkscape; Inkscape's configure script has an
+# "--enable-osxapp", which causes some of Inkscape's installation data
+# files to have macOS-ish paths under Contents/Resources of the bundle
+# or under /Library/Application Support. We don't have such an option;
+# we just put them in "bin", "etc", "lib", and "share" directories
+# under Contents/Resources, rather than in the "bin", "etc", "lib",
+# and "share" directories under the installation directory.
+#
+
+# XXX We could probably replace a lot of this with https://github.com/auriamg/macdylibbundler
+
+shopt -s extglob
+
+# Defaults
+strip=false
+install_exclude_prefixes="/System/|/Library/|/usr/lib/|/usr/X11/|/opt/X11/|@executable_path"
+
+# Bundle always has the same name. Version information is stored in
+# the Info.plist file which is filled in by the configure script.
+bundle="Wireshark.app"
+
+# Location for libraries (tools/macos-setup.sh defaults to whatever the
+# various support libraries use as their standard installation location,
+# which is /usr/local)
+if [ -z "$LIBPREFIX" ]; then
+ LIBPREFIX="/usr/local"
+fi
+
+
+# Help message
+#----------------------------------------------------------
+help()
+{
+echo -e "
+Create an app bundle for macOS
+
+USAGE
+ $0 [-s] [-l /path/to/libraries]
+
+OPTIONS
+ -h,--help
+ Display this help message.
+ -b,--bundle
+ The application bundle name. Default is Wireshark.app.
+ -s
+ Strip the libraries and executables from debugging symbols.
+ -l,--libraries
+ Specify the path to the libraries the application depends
+ on (typically /sw or /opt/local). By default it is
+ /usr/local.
+
+EXAMPLE
+ $0 -b Logray.app -s -l /opt/local
+"
+}
+
+
+# Parse command line arguments
+#----------------------------------------------------------
+while [ "$1" != "" ]
+do
+ case $1 in
+ -b|--bundle)
+ bundle="$2"
+ shift 1 ;;
+ -s)
+ strip=true ;;
+ -l|--libraries)
+ LIBPREFIX="$2"
+ shift 1 ;;
+ -h|--help)
+ help
+ exit 0 ;;
+ *)
+ echo "Invalid command line option: $1"
+ exit 2 ;;
+ esac
+ shift 1
+done
+
+# Safety tests
+if [ ! -e "$LIBPREFIX" ]; then
+ echo "Cannot find the directory containing the libraries: $LIBPREFIX" >&2
+ exit 1
+fi
+
+if [ ! -d "$bundle" ] ; then
+ echo "$bundle not found" >&2
+ exit 1
+fi
+
+qt_frameworks_dir=$( "@QT_QMAKE_EXECUTABLE@" -query QT_INSTALL_LIBS )
+if [ ! -d "$qt_frameworks_dir" ] ; then
+ echo "Can't find the Qt frameworks directory" >&2
+ exit 1
+fi
+
+sparkle_version="@SPARKLE_VERSION@"
+sparkle_frameworks_dir="@SPARKLE_LIBRARY@"
+
+#
+# Define the signing identities, or use self-signed ("-")
+# if the identity is not provided.
+if [ -n "$CODE_SIGN_IDENTITY" ] ; then
+ codesign_dev_app_identity="Developer ID Application: $CODE_SIGN_IDENTITY"
+ codesign_dev_install_identity="Developer ID Installer: $CODE_SIGN_IDENTITY"
+else
+ codesign_dev_app_identity="-"
+ codesign_dev_install_identity="-"
+fi
+
+#
+# Leave the Qt frameworks out of the special processing.
+#
+install_exclude_prefixes="$install_exclude_prefixes|$qt_frameworks_dir"
+
+app_name=${bundle%%.app}
+app_lower=$(echo "$app_name" | tr '[:upper:]' '[:lower:]')
+
+# Package paths
+pkgexec="$bundle/Contents/MacOS"
+#pkgres="$bundle/Contents/Resources"
+pkglib="$bundle/Contents/Frameworks"
+pkgplugin="$bundle/Contents/PlugIns/$app_lower/@PLUGIN_PATH_ID@"
+
+# Set the 'macosx' directory, usually the current directory.
+#resdir=$( pwd )
+
+#
+# Get a list of all binaries in the bundle.
+# Treat all plain files with read and execute permissions for all as
+# binaries.
+#
+secondary_binary_list=()
+while read -r binary ; do
+ secondary_binary_list+=("$binary")
+done < <( find "$pkgexec" \! -name "$app_name" -type f -perm -0555 -print | sort )
+plugin_library_list=()
+while read -r library ; do
+ plugin_library_list+=("$library")
+done < <( find "$pkgplugin" -name "*.so" -type f -perm -0555 -print | sort )
+bundle_binary_list=("$pkgexec/$app_name" "${secondary_binary_list[@]}" "${plugin_library_list[@]}")
+
+echo -e "\\nFixing up $bundle..."
+
+# Start with a clean Frameworks slate.
+if [ -d "$pkglib" ] ; then
+ printf "Removing %s\n" "$pkglib"
+ rm -v -r -f "$pkglib"
+fi
+mkdir -v -m u=rwx,go=rx "$pkglib"
+
+echo -e "\\nPrepopulating our libraries"
+
+# Copy only <library>.<SOVERSION>.dylib.
+cp -v +([^.]).+([[:digit:]]).dylib "$pkglib"
+
+# Fetch a unique list of LC_RPATHs from our executables, which will be used
+# for our dependency search below.
+bundle_binary_rpaths=("/usr/local/lib")
+rpaths=()
+
+# macdeployqt handles our Qt dependencies. We handle our Sparkle and
+# internal dependencies.
+skip_pats="Qt|Sparkle|build/run"
+
+for binary in "${bundle_binary_list[@]}" "$pkglib"/*.dylib ; do
+ while read -r rpath ; do
+ bundle_binary_rpaths+=("$rpath")
+ done < <( otool -l "$binary" | grep -A2 LC_RPATH | awk '$1=="path" && $2 !~ /^@/ {print $2}' | grep -E -v "$skip_pats" )
+done
+
+while read -r rpath ; do
+ rpaths+=("$rpath")
+done < <( printf '%s\n' "${bundle_binary_rpaths[@]}" | sort -u)
+
+printf "\nSearching the following LC_RPATHs for dependencies:\n"
+printf '%s\n' "${rpaths[@]}"
+
+# Find out libs we need from Fink, MacPorts, or from a custom install
+# (i.e. $LIBPREFIX), then loop until no changes.
+a=1
+nfiles=0
+endl=true
+while $endl; do
+ echo -e "\\nLooking for dependencies. Round $a"
+ #
+ # To find dependencies, we:
+ #
+ # run otool -L on all the binaries in the bundle, and on all
+ # the shared libraries in the $pkglib directory, to find all
+ # the libraries they depend on (we don't bother with the
+ # frameworks, as the only frameworks we ship are the Qt
+ # frameworks, which don't depend on any libraries that
+ # don't ship with the OS, and as it's hard to find the
+ # framework libraries under $pkglib without getting
+ # non-framework files);
+ #
+ # filter out all lines that don't contain "compatibility" to
+ # remove lines of output that don't correspond to dependencies;
+ #
+ # use cut to extract the library name from the output;
+
+ # replace "\tlibbrotli" with "\t/usr/local/lib/libbrotli" so that
+ # it isn't excluded from subsequent filtering.
+ # libbrotli 1.09 and earlier doesn't have a path prefix in its
+ # "install name" when built by tools/macos-setup.sh:
+ # https://github.com/google/brotli/pull/976;
+ #
+ # replace "@loader_path/libbrotli" with "/usr/local/lib/libbrotli" so that
+ # it isn't excluded from subsequent filtering;
+ #
+ # strip out system libraries, as we don't bundle them with
+ # Wireshark;
+ #
+ # eliminate duplicates.
+ #
+ # We might want to let dyld do some of the work for us, e.g. by
+ # parsing the output of
+ #
+ # `DYLD_PRINT_LIBRARIES=1 $bundle_binary`
+ #
+ # instead, or just use CMake's fixup_bundle:
+ # https://cmake.org/cmake/help/latest/module/BundleUtilities.html
+ libs=()
+ while read -r lib ; do
+ libs+=("$lib")
+ done < <(
+ otool -L "${bundle_binary_list[@]}" "$pkglib"/*.dylib 2>/dev/null \
+ | grep -F compatibility \
+ | grep -v @rpath \
+ | cut -d\( -f1 \
+ | sed '1,$s;^ libbrotli; /usr/local/lib/libbrotli;' \
+ | sed '1,$s;^ @loader_path/libbrotli; /usr/local/lib/libbrotli;' \
+ | grep -E -v "$install_exclude_prefixes" \
+ | sort \
+ | uniq \
+ )
+ while read -r rpath_lib _ ; do
+ suffix=${rpath_lib/@rpath\/}
+ for rpath in "${rpaths[@]}" ; do
+ if [ -f "$rpath/$suffix" ] ; then
+ printf "Found @rpath/%s in %s\n" "$suffix" "$rpath"
+ libs+=("$rpath/$suffix")
+ fi
+ done
+ done < <( otool -L "${bundle_binary_list[@]}" "$pkglib"/*.dylib \
+ | grep @rpath \
+ | grep -E -v "$skip_pats" \
+ | sort -u \
+ )
+ install -m 644 -C -v "${libs[@]}" "$pkglib"
+ (( a++ ))
+ # shellcheck disable=SC2012
+ nnfiles=$( ls "$pkglib" | wc -l )
+ if (( nnfiles == nfiles )); then
+ endl=false
+ else
+ nfiles=$nnfiles
+ fi
+done
+
+# Strip libraries and executables if requested
+#----------------------------------------------------------
+if [ "$strip" = "true" ]; then
+ echo -e "\\nStripping debugging symbols...\\n"
+ strip -x "$pkglib"/*.dylib
+ strip -ur "${bundle_binary_list[@]}"
+fi
+
+"@QT_MACDEPLOYQT_EXECUTABLE@" "$bundle" -no-strip -verbose=2 || exit 1
+
+#
+# The build process added to the Wireshark/Logray binary an rpath
+# entry pointing to the directory containing the Qt frameworks; remove
+# that entry from the binary in the package.
+#
+/usr/bin/install_name_tool -delete_rpath "$qt_frameworks_dir" "$pkgexec/$app_name"
+
+if [ -d "$sparkle_frameworks_dir" ] ; then
+ cp -R "$sparkle_frameworks_dir" "$pkglib" || exit 1
+ # Remove these if we ever start sandboxing.
+ rm -f "$pkglib/Sparkle.framework/XPCServices" || exit 1
+ rm -rf "$pkglib/Sparkle.framework/Versions/B/XPCServices" || exit 1
+fi
+
+# NOTE: we must rpathify *all* files, *including* Qt libraries etc.,
+#
+rpathify_file () {
+ local rpathify_exclude_prefixes="$install_exclude_prefixes|@rpath"
+
+ # Fix a given executable, library, or plugin to be relocatable
+ if [ ! -f "$1" ]; then
+ return 0;
+ fi
+
+ #
+ # OK, what type of file is this?
+ #
+ if ! filetype=$( otool -hv "$1" | grep -E MH_MAGIC | awk '{print $5}' ; exit "${PIPESTATUS[0]}" ) ; then
+ echo "Unable to rpathify $1 in $( pwd ): file type failed."
+ exit 1
+ fi
+
+ case "$filetype" in
+
+ EXECUTE|DYLIB|BUNDLE)
+ #
+ # Executable, library, or plugin. (Plugins
+ # can be either DYLIB or BUNDLE; shared
+ # libraries are DYLIB.)
+ #
+ # For DYLIB and BUNDLE, fix the shared
+ # library identification.
+ #
+ if [[ "$filetype" = "DYLIB" || "$filetype" = "BUNDLE" ]]; then
+ echo "Changing shared library identification of $1"
+ base=$( echo "$1" | awk -F/ '{print $NF}' )
+ #
+ # The library will end up in a directory in
+ # the rpath; this is what we should change its
+ # ID to.
+ #
+ to=@rpath/$base
+ /usr/bin/install_name_tool -id "$to" "$1"
+
+ #
+ # If we're a library and we depend on something in
+ # @executable_path/../Frameworks, replace that with
+ # @rpath.
+ #
+ while read -r dep_lib ; do
+ base=$( echo "$dep_lib" | awk -F/ '{print $NF}' )
+ to="@rpath/$base"
+ echo "Changing reference to $dep_lib to $to in $1"
+ /usr/bin/install_name_tool -change "$dep_lib" "$to" "$1"
+ done < <( otool -L "$1" | grep @executable_path/../Frameworks | awk '{print $1}' )
+
+ #
+ # Try to work around brotli's lack of a full path
+ # https://github.com/google/brotli/issues/934
+ #
+ while read -r base ; do
+ to="@rpath/$base"
+ echo "Changing reference to $base to $to in $1"
+ /usr/bin/install_name_tool -change "$base" "$to" "$1"
+ done < <( otool -L "$1" | grep '^ libbrotli' | awk '{print $1}' )
+ fi
+
+ #
+ # Find our local rpaths and remove them.
+ #
+ otool -l "$1" | grep -A2 LC_RPATH \
+ | awk '$1=="path" && $2 !~ /^@/ {print $2}' \
+ | grep -E -v "$rpathify_exclude_prefixes" | \
+ while read -r lc_rpath ; do
+ echo "Stripping LC_RPATH $lc_rpath from $1"
+ install_name_tool -delete_rpath "$lc_rpath" "$1"
+ done
+
+ #
+ # Add -Wl,-rpath,@executable_path/../Frameworks
+ # to the rpath, so it'll find the bundled
+ # frameworks and libraries if they're referred
+ # to by @rpath/, rather than having a wrapper
+ # script tweak DYLD_LIBRARY_PATH.
+ #
+ if [[ "$filetype" = "EXECUTE" ]]; then
+ if [ -d ../Frameworks ] ; then
+ framework_path=../Frameworks
+ elif [ -d ../../Frameworks ] ; then
+ framework_path=../../Frameworks
+ else
+ echo "Unable to find relative path to Frameworks for $1 from $( pwd )"
+ exit 1
+ fi
+
+ echo "Adding @executable_path/$framework_path to rpath of $1"
+ /usr/bin/install_name_tool -add_rpath @executable_path/$framework_path "$1"
+ fi
+
+ #
+ # Show the minimum supported version of macOS
+ # for each executable or library
+ #
+ if [[ "$filetype" = "EXECUTE" || "$filetype" = "DYLIB" ]] ; then
+ echo "Minimum macOS version for $1:"
+ otool -l "$1" | grep -A3 LC_VERSION_MIN_MACOSX
+ fi
+
+ #
+ # Get the list of dynamic libraries on which this
+ # file depends, and select only the libraries that
+ # are in $LIBPREFIX, as those are the only ones
+ # that we'll be shipping in the app bundle; the
+ # other libraries are system-supplied or supplied
+ # as part of X11, will be expected to be on the
+ # system on which the bundle will be installed,
+ # and should be referred to by their full pathnames.
+ #
+ local libs=()
+ while read -r lib ; do
+ libs+=("$lib")
+ done < <( otool -L "$1" \
+ | grep -F compatibility \
+ | cut -d\( -f1 \
+ | grep -E -v "$rpathify_exclude_prefixes" \
+ | sort \
+ | uniq \
+ )
+
+ for lib in "${libs[@]}"; do
+ #
+ # Get the file name of the library.
+ #
+ base=$( echo "$lib" | awk -F/ '{print $NF}' )
+ #
+ # The library will end up in a directory in
+ # the rpath; this is what we should change its
+ # file name to.
+ #
+ to=@rpath/$base
+ #
+ # Change the reference to that library.
+ #
+ echo "Changing reference to $lib to $to in $1"
+ /usr/bin/install_name_tool -change "$lib" "$to" "$1"
+ done
+ ;;
+ esac
+}
+
+rpathify_dir () {
+ #
+ # Make sure we *have* that directory
+ #
+ if [ -d "$1" ]; then
+ (cd "$1" || exit 1
+ echo "rpathifying $1"
+ #
+ # Make sure we *have* files to fix
+ #
+ # shellcheck disable=SC2086
+ files=$( ls $2 2>/dev/null )
+ if [ -n "$files" ]; then
+ for file in $files; do
+ rpathify_file "$file" "$( pwd )"
+ done
+ else
+ echo "no files found in $1"
+ fi
+ )
+ rf_ret=$?
+ if [ $rf_ret -ne 0 ] ; then exit $rf_ret ; fi
+ fi
+}
+
+rpathify_files () {
+ #
+ # Fix bundle deps
+ #
+ rpathify_dir "$pkglib" "*.dylib"
+ rpathify_dir "$pkgexec" "*"
+ for plugindir in "$pkgplugin"/*
+ do
+ rpathify_dir "$plugindir" "*"
+ done
+
+ rpathify_dir "$pkgexec/extcap" "*"
+}
+
+if [ ${#LIBPREFIX} -ge "6" ]; then
+ # If the LIBPREFIX path is long enough to allow
+ # path rewriting, then do this.
+ # 6 is the length of @rpath, which replaces LIBPREFIX.
+ rpathify_files
+else
+ echo "Could not rewrite dylib paths for bundled libraries. This requires" >&2
+ echo "the support libraries to be installed in a PREFIX of at least 6 characters in length." >&2
+ echo "" >&2
+ exit 1
+
+fi
+
+# QtNetwork might be linked with brotli.
+rpathify_file "$pkglib/QtNetwork.framework/Versions/Current/QtNetwork"
+
+bundle_dsym="${bundle%%.app}.dSYM"
+
+frameworks=()
+for framework in "$pkglib"/*.framework/Versions/*/* ; do
+ if [ -f "$framework" ];then
+ frameworks+=("$framework")
+ fi
+done
+
+echo "Dsymifying binaries to $bundle_dsym:"
+# shellcheck disable=SC2086
+dsymutil --minimize --out "$bundle_dsym" \
+ "${bundle_binary_list[@]}" \
+ "${frameworks[@]}" \
+ "$pkglib"/*.dylib
+
+# echo "Stripping binaries:"
+# # shellcheck disable=SC2086
+# strip -S \
+# "${bundle_binary_list[@]}" \
+# "${frameworks[@]}" \
+# "$pkglib"/*.dylib \
+# "$pkgplugin"/*/*.so
+
+# XXX What's the proper directory layout here?
+# dsymify_file () {
+# # out_dsym="${1/#$bundle/$bundle_dsym}.dSYM"
+# echo " $1"
+# dsymutil --minimize --out "$bundle_dsym" "$1"
+# strip "$1"
+# }
+
+# echo "Dsymifying and stripping executables:"
+# if [ -z "${bundle_binary_list[@]}" ] ; then
+# echo "No executables specified for dsymifying."
+# exit 1
+# fi
+# for binary in "${bundle_binary_list[@]}" ; do
+# if [ -e "$binary" ];then
+# dsymify_file "$binary"
+# fi
+# done
+
+# echo "Dsymifying and stripping frameworks:"
+# for framework in "$pkglib"/*.framework/Versions/*/* ; do
+# if [ -f "$framework" ];then
+# dsymify_file "$framework"
+# fi
+# done
+
+# echo "Dsymifying and stripping libraries:"
+# for library in "$pkglib"/*.dylib ; do
+# #
+# # Squelch warnings, in case the .o files from building
+# # support libraries aren't around any more.
+# #
+# dsymify_file "$library" | grep -E -v 'unable to open object file'
+# done
+
+# echo "Dsymifying and stripping plugins:"
+# for plugin in "$pkgplugin"/*/*.so ; do
+# dsymify_file "$plugin"
+# done
+
+codesign_file () {
+ # https://developer.apple.com/forums/thread/128166
+ # https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html
+ # https://developer.apple.com/library/archive/technotes/tn2206/_index.html
+ # https://developer.apple.com/documentation/security/notarizing_your_app_before_distribution/resolving_common_notarization_issues?language=objc
+ #
+ # XXX Do we need to add the com.apple.security.cs.allow-unsigned-executable-memory
+ # entitlement for Lua?
+ # https://developer.apple.com/documentation/security/hardened_runtime_entitlements?language=objc
+
+ codesign \
+ --sign "$codesign_dev_app_identity" \
+ --prefix "org.wireshark." \
+ --force \
+ --options runtime \
+ --entitlements "@CMAKE_SOURCE_DIR@/packaging/macosx/entitlements.plist" \
+ --timestamp \
+ --verbose \
+ "$1" || exit 1
+}
+
+# XXX We could do this via the productbuild calls in the {,un}install_*_pkg
+# targets in CMakeLists.txt instead.
+productsign_pkg () {
+ mv "$1" "$1.unsigned" || exit 1
+ productsign \
+ --sign "$codesign_dev_install_identity" \
+ --timestamp \
+ "$1.unsigned" "$1" || exit 1
+ rm -f "$1.unsigned" || exit 1
+}
+
+if [ -n "$CODE_SIGN_IDENTITY" ] ; then
+ security find-identity -v -s "$CODE_SIGN_IDENTITY" -p codesigning
+
+ # The Code Signing Guide says:
+ #
+ # "While you use the --deep option for verification to mimic what Gatekeeper does,
+ # it is not recommended for signing. During signing, if you have nested code, and
+ # if you are signing manually, you sign nested code in stages (as Xcode does
+ # automatically), starting with the most deeply embedded components first. You
+ # then sign code at the next level of hierarchy, and so on. You work your way
+ # outward, finally signing the top level entity that contains all the others.
+ # Signing all the components in one shot with --deep is for emergency repairs and
+ # temporary adjustments only. Note that signing with the combination --deep
+ # --force will forcibly re-sign all code in a bundle."
+
+ # We need to force-sign Sparkle and its Updater.app.
+ # https://sparkle-project.org/documentation/#4-distributing-your-app
+ # https://sparkle-project.org/documentation/sandboxing/#code-signing
+
+ if [ "$sparkle_version" == "2" ] ; then
+ echo "Signing Sparkle's assets"
+ codesign \
+ --sign "$codesign_dev_app_identity" \
+ --force \
+ --options runtime \
+ --verbose \
+ "$pkglib/Sparkle.framework/Versions/B/AutoUpdate" \
+ "$pkglib/Sparkle.framework/Versions/B/Updater.app" \
+ "$pkglib/Sparkle.framework" \
+ || exit 1
+ # Uncomment if we ever start sandboxing.
+ # "$pkglib/Sparkle.framework/Versions/B/XPCServices/org.sparkle-project.InstallerLauncher.xpc"
+ # codesign \
+ # --sign "$codesign_dev_app_identity" \
+ # --force \
+ # --options runtime \
+ # --entitlements "$sparkle_frameworks_dir/../Entitlements/org.sparkle-project.Downloader.entitlements" \
+ # --verbose \
+ # "$pkglib/Sparkle.framework/Versions/B/XPCServices/org.sparkle-project.Downloader.xpc" \
+ # || exit 1
+ else
+ echo "Signing Sparkle's AutoUpdate.app"
+ codesign \
+ --sign "$codesign_dev_app_identity" \
+ --force \
+ --timestamp \
+ --options runtime \
+ --verbose \
+ "$pkglib/Sparkle.framework/Versions/A/Resources/AutoUpdate.app" \
+ || exit 1
+ fi
+
+ echo "Signing frameworks"
+ for framework in "$pkglib"/*.framework/Versions/* ; do
+ if [ -L "$framework" ] ; then
+ # Skip "Current"
+ continue
+ fi
+ codesign_file "$framework"
+ done
+
+ echo "Signing libraries"
+ for library in "$pkglib"/*.dylib ; do
+ codesign_file "$library"
+ done
+
+ plugin_list=$( find "$bundle/Contents/PlugIns" -type f -name "*.dylib" -o -name "*.so" )
+ echo "Signing plugins"
+ for plugin in $plugin_list ; do
+ codesign_file "$plugin"
+ done
+
+ echo "Signing extra packages"
+ find "$bundle/Contents/Resources/Extras" -type f -name "*.pkg" | \
+ while read -r extra_pkg ; do
+ productsign_pkg "$extra_pkg"
+ done
+
+ echo "Signing secondary executables"
+ if (( ! ${#secondary_binary_list[@]} )) ; then
+ echo "No executables specified for code signing."
+ exit 1
+ fi
+ for binary in "${secondary_binary_list[@]}" ; do
+ if [ -e "$binary" ];then
+ codesign_file "$binary"
+ fi
+ done
+
+ echo "Signing primary executable"
+ codesign_file "$pkgexec/$app_name"
+
+ echo "Signing $bundle"
+ codesign_file "$bundle"
+
+ # Code Signing Guide, "Testing Conformance with Command Line Tools"
+ codesign --verify --deep --strict --verbose=2 "$bundle" || exit 1
+ spctl --assess --type exec --verbose=2 "$bundle" || exit 1
+else
+ echo "Code signing not performed (no identity)"
+fi
+
+# File permission sanity check.
+if badperms=$( find "$bundle" ! -perm -0444 -exec ls -l "{}" + | grep . ) ; then
+ echo "Found files with restrictive permissions:"
+ echo "$badperms"
+ exit 1
+fi
+
+exit 0
diff --git a/packaging/macosx/osx-dmg.sh.in b/packaging/macosx/osx-dmg.sh.in
new file mode 100755
index 0000000..5eda399
--- /dev/null
+++ b/packaging/macosx/osx-dmg.sh.in
@@ -0,0 +1,108 @@
+#!/bin/bash
+#
+# The script creates a disk image using the dmgbuild utility and signs it.
+
+set -e
+
+# Defaults
+app_name="Wireshark"
+dmgbuild="@DMGBUILD_EXECUTABLE@"
+version="@PROJECT_VERSION@"
+log_version="@LOG_PROJECT_VERSION@"
+app_settings_file="@CMAKE_BINARY_DIR@/packaging/macosx/wireshark-app.dmgbuild"
+dsym_settings_file="@CMAKE_BINARY_DIR@/packaging/macosx/wireshark-dsym.dmgbuild"
+architecture=""
+
+# Help message
+#----------------------------------------------------------
+help()
+{
+echo -e "
+Create a custom dmg file to distribute Wireshark
+
+USAGE
+ $0
+
+OPTIONS
+ -h,--help
+ Display this help message.
+
+Icons are positioned and the background image is set in wireshark-app.dmgbuild.in
+and wireshark-dsym.dmgbuild.in.
+"
+}
+
+if [ ! -x "$dmgbuild" ] ; then
+ echo "Error: \"$dmgbuild\" not found."
+ exit 1
+fi
+
+# Parse command line arguments
+while [ "$1" != "" ]
+do
+ case $1 in
+ -a|--app-name)
+ shift 1
+ app_name="$1"
+ ;;
+ -h|--help)
+ help
+ exit 0 ;;
+ *)
+ echo "Invalid command line option"
+ exit 2 ;;
+ esac
+ shift 1
+done
+
+if lipo "$app_name.app/Contents/MacOS/$app_name" -verify_arch arm64 ; then
+ architecture="Arm 64"
+elif lipo "$app_name.app/Contents/MacOS/$app_name" -verify_arch x86_64 ; then
+ architecture="Intel 64"
+else
+ echo "Error: $app_name.app missing or has unknown architecture."
+ lipo "$app_name.app/Contents/MacOS/$app_name" -detailed_info
+ exit 1
+fi
+
+if [[ $app_name = Log* ]] ; then
+ version=$log_version
+ app_settings_file="@CMAKE_BINARY_DIR@/packaging/macosx/logray-app.dmgbuild"
+ dsym_settings_file="@CMAKE_BINARY_DIR@/packaging/macosx/logray-dsym.dmgbuild"
+fi
+
+app_vol_name="$app_name ${version}"
+app_img_name="$app_vol_name $architecture.dmg"
+
+printf "\nCreating application disk image %s\n" "$app_img_name"
+
+"$dmgbuild" \
+ --no-hidpi \
+ -s "$app_settings_file" \
+ "$app_vol_name" \
+ "$app_img_name" || exit 1
+
+dsym_vol_name="$app_name dSYM ${version}"
+dsym_img_name="$dsym_vol_name $architecture.dmg"
+
+printf "\nCreating debugging symbols disk image %s\n" "$dsym_img_name"
+
+"$dmgbuild" \
+ --no-hidpi \
+ -s "$dsym_settings_file" \
+ "$dsym_vol_name" \
+ "$dsym_img_name" || exit 1
+
+printf "\nSigning disk images\n"
+
+# TN2206, "Signing Disk Images"
+if [ -n "$CODE_SIGN_IDENTITY" ] ; then
+ echo -e "Signing $app_img_name and $dsym_img_name"
+ codesign \
+ --sign "Developer ID Application: $CODE_SIGN_IDENTITY" \
+ --timestamp \
+ --verbose \
+ "$app_img_name" "$dsym_img_name"
+fi
+
+exit 0
diff --git a/packaging/macosx/osx-extras.sh b/packaging/macosx/osx-extras.sh
new file mode 100755
index 0000000..a306ce4
--- /dev/null
+++ b/packaging/macosx/osx-extras.sh
@@ -0,0 +1,86 @@
+#!/bin/bash
+#
+# USAGE
+# osx-extras
+#
+# This script preps the "Extras" packages prior to package creation.
+#
+
+set -e
+shopt -s extglob
+
+# Help message
+#----------------------------------------------------------
+help()
+{
+echo -e "
+Prepare Wireshark's \"Extras\" packages.
+
+USAGE
+ $0
+
+OPTIONS
+ -h,--help
+ Display this help message.
+"
+}
+
+
+# Parse command line arguments
+#----------------------------------------------------------
+while [ "$1" != "" ]
+do
+ case $1 in
+ -h|--help)
+ help
+ exit 0 ;;
+ *)
+ echo "Invalid command line option: $1"
+ exit 2 ;;
+ esac
+ shift 1
+done
+
+script_dir=$( dirname "$0" )
+
+codesign_file () {
+ # https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html
+ # https://developer.apple.com/library/archive/technotes/tn2206/_index.html
+ # https://developer.apple.com/documentation/security/notarizing_your_app_before_distribution/resolving_common_notarization_issues?language=objc
+ #
+ # XXX Do we need to add the com.apple.security.cs.allow-unsigned-executable-memory
+ # entitlement for Lua?
+ # https://developer.apple.com/documentation/security/hardened_runtime_entitlements?language=objc
+ codesign \
+ --sign "Developer ID Application: $CODE_SIGN_IDENTITY" \
+ --prefix "org.wireshark." \
+ --force \
+ --timestamp \
+ --verbose \
+ "$1"
+}
+
+if [ -n "$CODE_SIGN_IDENTITY" ] ; then
+ security find-identity -v -s "$CODE_SIGN_IDENTITY" -p codesigning
+
+ # According to
+ # https://developer.apple.com/library/archive/technotes/tn2206/_index.html and
+ # https://carlashley.com/2018/09/23/code-signing-scripts-for-pppc-whitelisting/
+ # script signatures are stored in the file's extended attributes.
+ #
+ # In general, signing shell scripts probably isn't very useful.
+ # In this specific case we should be able to ensure that
+ # ChmodBPF's extended attributes are preserved from the build
+ # system to the end user's machine.
+
+ chmodbpf="$script_dir/ChmodBPF/root/Library/Application Support/Wireshark/ChmodBPF/ChmodBPF"
+ echo "Signing ChmodBPF"
+ codesign_file "$chmodbpf"
+
+ # Code Signing Guide, "Testing Conformance with Command Line Tools"
+ codesign --verify --strict --verbose=2 "$chmodbpf" || exit 1
+else
+ echo "Extras code signing not performed (no identity)"
+fi
+
+exit 0
diff --git a/packaging/macosx/path_helper/install-distribution.xml b/packaging/macosx/path_helper/install-distribution.xml
new file mode 100644
index 0000000..245f076
--- /dev/null
+++ b/packaging/macosx/path_helper/install-distribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Created using `productbuild -\-synthesize -\-package org.wireshark.path_helper.pkg.pkg /tmp/install-distribution.xml`
+See also: https://github.com/open-eid/osx-installer/blob/master/distribution.xml
+https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/DistributionDefinitionRef/
+https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/InstallerJavaScriptRef/
+-->
+<installer-gui-script minSpecVersion="1">
+ <title>Add Wireshark to the system PATH</title>
+ <welcome language="en" mime-type="text/html"><![CDATA[<html><body><br />
+<p style="margin: 0px; font: 13px 'Lucida Grande'">This package will add Wireshark and its associated utilities to the system PATH and MANPATH. Wireshark must be installed in /Applications.</p></body></html>]]></welcome>
+ <pkg-ref id="org.wireshark.path_helper.pkg"/>
+ <options customize="never" require-scripts="false" hostArchitectures="arm64,x86_64"/>
+ <choices-outline>
+ <line choice="default">
+ <line choice="org.wireshark.path_helper.pkg"/>
+ </line>
+ </choices-outline>
+ <choice id="default"/>
+ <choice id="org.wireshark.path_helper.pkg" visible="false">
+ <pkg-ref id="org.wireshark.path_helper.pkg"/>
+ </choice>
+ <pkg-ref id="org.wireshark.path_helper.pkg" onConclusion="none">install.path_helper.pkg</pkg-ref>
+</installer-gui-script>
diff --git a/packaging/macosx/path_helper/root/etc/manpaths.d/Wireshark b/packaging/macosx/path_helper/root/etc/manpaths.d/Wireshark
new file mode 100644
index 0000000..205dad7
--- /dev/null
+++ b/packaging/macosx/path_helper/root/etc/manpaths.d/Wireshark
@@ -0,0 +1 @@
+/Applications/Wireshark.app/Contents/Resources/share/man
diff --git a/packaging/macosx/path_helper/root/etc/paths.d/Wireshark b/packaging/macosx/path_helper/root/etc/paths.d/Wireshark
new file mode 100644
index 0000000..5549376
--- /dev/null
+++ b/packaging/macosx/path_helper/root/etc/paths.d/Wireshark
@@ -0,0 +1 @@
+/Applications/Wireshark.app/Contents/MacOS
diff --git a/packaging/macosx/path_helper/uninstall-distribution.xml b/packaging/macosx/path_helper/uninstall-distribution.xml
new file mode 100644
index 0000000..d44538c
--- /dev/null
+++ b/packaging/macosx/path_helper/uninstall-distribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Created using `productbuild -\-synthesize -\-package org.wireshark.uninstall.path.pkg /tmp/uninstall-distribution.xml`
+See also: https://github.com/open-eid/osx-installer/blob/master/distribution.xml
+https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/DistributionDefinitionRef/
+https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/InstallerJavaScriptRef/
+-->
+<installer-gui-script minSpecVersion="1">
+ <title>Remove Wireshark from the system PATH</title>
+ <welcome language="en" mime-type="text/html"><![CDATA[<html><body><br />
+<p style="margin: 0px; font: 13px 'Lucida Grande'">This package will remove Wireshark and its associated utilities from the system PATH and MANPATH.</p></body></html>]]></welcome>
+ <pkg-ref id="org.wireshark.uninstall.path_helper.pkg"/>
+ <options customize="never" require-scripts="false" hostArchitectures="arm64,x86_64"/>
+ <choices-outline>
+ <line choice="default">
+ <line choice="org.wireshark.uninstall.path_helper.pkg"/>
+ </line>
+ </choices-outline>
+ <choice id="default"/>
+ <choice id="org.wireshark.uninstall.path_helper.pkg" visible="false">
+ <pkg-ref id="org.wireshark.uninstall.path_helper.pkg"/>
+ </choice>
+ <pkg-ref id="org.wireshark.uninstall.path_helper.pkg" onConclusion="none">uninstall.path_helper.pkg</pkg-ref>
+</installer-gui-script>
diff --git a/packaging/macosx/path_helper/uninstall-scripts/postinstall b/packaging/macosx/path_helper/uninstall-scripts/postinstall
new file mode 100755
index 0000000..5575bde
--- /dev/null
+++ b/packaging/macosx/path_helper/uninstall-scripts/postinstall
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+#
+# Remove the Wireshark paths.d and manpaths.d entries.
+#
+
+rm -f /private/etc/paths.d/Wireshark
+rm -f /private/etc/manpaths.d/Wireshark
+
+# https://gitlab.com/wireshark/wireshark/-/issues/18734
+pkgutil --forget org.wireshark.path_helper.pkg
diff --git a/packaging/macosx/wireshark-app.dmgbuild.in b/packaging/macosx/wireshark-app.dmgbuild.in
new file mode 100644
index 0000000..b7ba559
--- /dev/null
+++ b/packaging/macosx/wireshark-app.dmgbuild.in
@@ -0,0 +1,170 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+import os.path
+
+#
+# Example settings file for dmgbuild
+#
+# Adapted from https://raw.githubusercontent.com/al45tair/dmgbuild/master/examples/settings.py
+
+# Use like this: dmgbuild -s settings.py "Test Volume" test.dmg
+
+# You can actually use this file for your own application (not just TextEdit)
+# by doing e.g.
+#
+# dmgbuild -s settings.py -D app=/path/to/My.app "My Application" MyApp.dmg
+
+# .. Useful stuff ..............................................................
+
+ws_version = '@PROJECT_VERSION@'
+ws_volname = 'Wireshark ' + ws_version
+ws_srcdir = '@CMAKE_SOURCE_DIR@'
+ws_bindir = '@CMAKE_BINARY_DIR@'
+ws_app = 'Wireshark.app'
+ws_readme = 'Read me first.html'
+ws_donate = 'Donate to the Wireshark Foundation.html'
+ws_install_chmodbpf = 'Install ChmodBPF.pkg'
+ws_uninstall_chmodbpf = 'Uninstall ChmodBPF.pkg'
+ws_install_path_helper = 'Add Wireshark to the system path.pkg'
+ws_uninstall_path_helper = 'Remove Wireshark from the system path.pkg'
+
+# .. Basics ....................................................................
+
+# Uncomment to override the output filename
+# filename = ws_volname + ' Intel 64.dmg'
+
+# Uncomment to override the output volume name
+# volume_name = 'Wireshark ' + ws_version
+
+# From the hdiutil man page:
+# UDZO - UDIF zlib-compressed image
+# UDBZ - UDIF bzip2-compressed image (Mac OS X 10.4+ only)
+# ULFO - UDIF lzfse-compressed image (OS X 10.11+ only)
+# ULMO - UDIF lzma-compressed image (macOS 10.15+ only)
+# Volume format (see hdiutil create -help)
+#
+# A test with the following bundles resulted in the following .dmg sizes,
+# measured with `du -sm`:
+# 182 Wireshark.app
+# 267 Wireshark.dSYM
+#
+# UDBZ
+# 51 Wireshark 3.7.0 Intel 64.dmg
+# 81 Wireshark dSYM 3.7.0 Intel 64.dmg
+#
+# ULFO
+# 51 Wireshark 3.7.0 Intel 64.dmg
+# 81 Wireshark dSYM 3.7.0 Intel 64.dmg
+#
+# ULMO
+# 40 Wireshark 3.7.0 Intel 64.dmg
+# 50 Wireshark dSYM 3.7.0 Intel 64.dmg
+
+# https://developer.apple.com/forums/thread/128166
+# currently (Jan 2023) says to use UDZO
+format = defines.get('format', 'UDZO')
+
+# Compression level (if relevant)
+compression_level = 9
+
+# Volume size
+size = None
+
+# Files to include
+files = [
+ os.path.join(ws_bindir, 'run', ws_app),
+ os.path.join(ws_bindir, 'packaging', 'macosx', 'wireshark', ws_readme),
+ os.path.join(ws_bindir, 'packaging', 'macosx', 'wireshark', ws_donate),
+ os.path.join(ws_bindir, 'run', ws_app, 'Contents', 'Resources', 'Extras', ws_install_chmodbpf),
+ os.path.join(ws_bindir, 'run', ws_app, 'Contents', 'Resources', 'Extras', ws_uninstall_chmodbpf),
+ os.path.join(ws_bindir, 'run', ws_app, 'Contents', 'Resources', 'Extras', ws_install_path_helper),
+ os.path.join(ws_bindir, 'run', ws_app, 'Contents', 'Resources', 'Extras', ws_uninstall_path_helper),
+]
+
+# Symlinks to create
+symlinks = {
+ 'Applications': '/Applications',
+ }
+
+# Volume icon
+#
+# You can either define icon, in which case that icon file will be copied to the
+# image, *or* you can define badge_icon, in which case the icon file you specify
+# will be used to badge the system's Removable Disk icon
+#
+badge_icon = os.path.join(ws_srcdir, 'packaging', 'macosx', 'wsiconvol.icns')
+#badge_icon = icon_from_app(application)
+
+# Window position in ((x, y), (w, h)) format
+window_rect = ((600, 200), (360, 550))
+
+# Where to put the icons
+icon_locations = {
+ ws_app: ( 80, 64),
+ 'Applications': (250, 64),
+ ws_readme: ( 80, 180),
+ ws_donate: (250, 180),
+ ws_install_chmodbpf: ( 80, 296),
+ ws_uninstall_chmodbpf: (250, 296),
+ ws_install_path_helper: ( 80, 402),
+ ws_uninstall_path_helper: (250, 402),
+ }
+
+# .. Window configuration ......................................................
+
+# Background
+#
+# This is a STRING containing any of the following:
+#
+# #3344ff - web-style RGB color
+# #34f - web-style RGB color, short form (#34f == #3344ff)
+# rgb(1,0,0) - RGB color, each value is between 0 and 1
+# hsl(120,1,.5) - HSL (hue saturation lightness) color
+# hwb(300,0,0) - HWB (hue whiteness blackness) color
+# cmyk(0,1,0,0) - CMYK color
+# goldenrod - X11/SVG named color
+# builtin-arrow - A simple built-in background with a blue arrow
+# /foo/bar/baz.png - The path to an image file
+#
+# The hue component in hsl() and hwb() may include a unit; it defaults to
+# degrees ('deg'), but also supports radians ('rad') and gradians ('grad'
+# or 'gon').
+#
+# Other color components may be expressed either in the range 0 to 1, or
+# as percentages (e.g. 60% is equivalent to 0.6).
+background = os.path.join(ws_srcdir, 'packaging', 'macosx', 'dmg_background.png')
+
+show_status_bar = False
+show_tab_view = False
+show_toolbar = False
+show_pathbar = False
+show_sidebar = False
+sidebar_width = 180
+
+# Select the default view; must be one of
+#
+# 'icon-view'
+# 'list-view'
+# 'column-view'
+# 'coverflow'
+#
+default_view = 'icon-view'
+
+# General view configuration
+show_icon_preview = False
+
+# Set these to True to force inclusion of icon/list view settings (otherwise
+# we only include settings for the default view)
+include_icon_view_settings = 'auto'
+include_list_view_settings = 'auto'
+
+# .. Icon view configuration ...................................................
+
+arrange_by = None
+grid_offset = (0, 0)
+#grid_spacing = 100
+scroll_position = (0, 0)
+#label_pos = 'bottom' # or 'right'
+text_size = 12
+icon_size = 72
diff --git a/packaging/macosx/wireshark-dsym.dmgbuild.in b/packaging/macosx/wireshark-dsym.dmgbuild.in
new file mode 100644
index 0000000..99516a0
--- /dev/null
+++ b/packaging/macosx/wireshark-dsym.dmgbuild.in
@@ -0,0 +1,139 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+import os.path
+
+#
+# Example settings file for dmgbuild
+#
+# Adapted from https://raw.githubusercontent.com/al45tair/dmgbuild/master/examples/settings.py
+
+# Use like this: dmgbuild -s settings.py "Test Volume" test.dmg
+
+# You can actually use this file for your own application (not just TextEdit)
+# by doing e.g.
+#
+# dmgbuild -s settings.py -D app=/path/to/My.app "My Application" MyApp.dmg
+
+# .. Useful stuff ..............................................................
+
+ws_version = '@PROJECT_VERSION@'
+ws_volname = 'Wireshark Debugging Symbols' + ws_version
+ws_srcdir = '@CMAKE_SOURCE_DIR@'
+ws_bindir = '@CMAKE_BINARY_DIR@'
+ws_app_dsym = 'Wireshark.dSYM'
+ws_readme_dsym = 'Debugging symbols installation.html'
+
+# .. Basics ....................................................................
+
+# Uncomment to override the output filename
+# filename = ws_volname + ' Intel 64.dmg'
+
+# Uncomment to override the output volume name
+# volume_name = 'Wireshark ' + ws_version
+
+# From the hdiutil man page:
+# UDZO - UDIF zlib-compressed image
+# UDBZ - UDIF bzip2-compressed image (Mac OS X 10.4+ only)
+# ULFO - UDIF lzfse-compressed image (OS X 10.11+ only)
+# ULMO - UDIF lzma-compressed image (macOS 10.15+ only)
+# Volume format (see hdiutil create -help)
+
+# dSYMs are huge, so compress them with UDBZ despite what
+# https://developer.apple.com/forums/thread/128166
+# currently (Jan 2023) says.
+format = defines.get('format', 'UDBZ')
+
+# Compression level (if relevant)
+compression_level = 9
+
+# Volume size
+size = None
+
+# Files to include
+files = [
+ os.path.join(ws_bindir, 'run', ws_app_dsym),
+ os.path.join(ws_bindir, 'packaging', 'macosx', 'wireshark', ws_readme_dsym),
+]
+
+# Symlinks to create
+symlinks = {
+ 'Applications': '/Applications',
+ }
+
+# Volume icon
+#
+# You can either define icon, in which case that icon file will be copied to the
+# image, *or* you can define badge_icon, in which case the icon file you specify
+# will be used to badge the system's Removable Disk icon
+#
+badge_icon = os.path.join(ws_srcdir, 'packaging', 'macosx', 'wsiconvol.icns')
+#badge_icon = icon_from_app(application)
+
+# Where to put the icons
+icon_locations = {
+ ws_app_dsym: ( 80, 64),
+ 'Applications': (240, 64),
+ ws_readme_dsym: (160, 170),
+ }
+
+# .. Window configuration ......................................................
+
+# Background
+#
+# This is a STRING containing any of the following:
+#
+# #3344ff - web-style RGB color
+# #34f - web-style RGB color, short form (#34f == #3344ff)
+# rgb(1,0,0) - RGB color, each value is between 0 and 1
+# hsl(120,1,.5) - HSL (hue saturation lightness) color
+# hwb(300,0,0) - HWB (hue whiteness blackness) color
+# cmyk(0,1,0,0) - CMYK color
+# goldenrod - X11/SVG named color
+# builtin-arrow - A simple built-in background with a blue arrow
+# /foo/bar/baz.png - The path to an image file
+#
+# The hue component in hsl() and hwb() may include a unit; it defaults to
+# degrees ('deg'), but also supports radians ('rad') and gradians ('grad'
+# or 'gon').
+#
+# Other color components may be expressed either in the range 0 to 1, or
+# as percentages (e.g. 60% is equivalent to 0.6).
+background = os.path.join(ws_srcdir, 'packaging', 'macosx', 'dmg_background.png')
+
+show_status_bar = False
+show_tab_view = False
+show_toolbar = False
+show_pathbar = False
+show_sidebar = False
+sidebar_width = 180
+
+# Window position in ((x, y), (w, h)) format
+window_rect = ((600, 200), (350, 325))
+
+# Select the default view; must be one of
+#
+# 'icon-view'
+# 'list-view'
+# 'column-view'
+# 'coverflow'
+#
+default_view = 'icon-view'
+
+# General view configuration
+show_icon_preview = False
+
+# Set these to True to force inclusion of icon/list view settings (otherwise
+# we only include settings for the default view)
+include_icon_view_settings = 'auto'
+include_list_view_settings = 'auto'
+
+# .. Icon view configuration ...................................................
+
+arrange_by = None
+grid_offset = (0, 0)
+#grid_spacing = 100
+scroll_position = (0, 0)
+#label_pos = 'bottom' # or 'right'
+text_size = 12
+icon_size = 72
diff --git a/packaging/macosx/wsiconvol.icns b/packaging/macosx/wsiconvol.icns
new file mode 100644
index 0000000..e32e03c
--- /dev/null
+++ b/packaging/macosx/wsiconvol.icns
Binary files differ
diff --git a/packaging/macosx/wsiconvol.svg b/packaging/macosx/wsiconvol.svg
new file mode 100644
index 0000000..542fbab
--- /dev/null
+++ b/packaging/macosx/wsiconvol.svg
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="svg548"
+ sodipodi:version="0.32"
+ sodipodi:docname="wsiconvol.svg"
+ inkscape:version="1.0beta2 (2b71d25, 2019-12-03)"
+ inkscape:export-filename="/tmp/diskicon512.png"
+ inkscape:export-xdpi="2048"
+ inkscape:export-ydpi="2048"
+ x="0px"
+ y="0px"
+ width="24px"
+ height="24px"
+ viewBox="0 0 24 24"
+ enable-background="new 0 0 24 24"
+ xml:space="preserve"><metadata
+ id="metadata3007"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+ id="defs3005"><linearGradient
+ id="linearGradient875"
+ inkscape:collect="always"><stop
+ id="stop871"
+ offset="0"
+ style="stop-color:#243ea3;stop-opacity:1" /><stop
+ id="stop873"
+ offset="1"
+ style="stop-color:#5873da;stop-opacity:1" /></linearGradient><linearGradient
+ id="linearGradient5067"><stop
+ style="stop-color:#000000;stop-opacity:0.15753424;"
+ offset="0"
+ id="stop5069" /><stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop5071" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5067"
+ id="linearGradient5073"
+ x1="15"
+ y1="21.5"
+ x2="12.5"
+ y2="11.5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2395694,0,0,1.1444028,21.297859,-1.7705992)" /><linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="0"
+ x2="13.5"
+ y1="24"
+ x1="13.5"
+ id="linearGradient877"
+ xlink:href="#linearGradient875"
+ inkscape:collect="always"
+ gradientTransform="matrix(0.87638123,0,0,0.87638123,1.4841582,0.98437829)" /></defs>
+
+<sodipodi:namedview
+ inkscape:snap-page="false"
+ inkscape:current-layer="svg548"
+ inkscape:window-width="1443"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-maximized="0"
+ inkscape:window-height="837"
+ inkscape:cy="12"
+ inkscape:cx="12"
+ inkscape:window-x="89"
+ id="base"
+ inkscape:window-y="54"
+ showgrid="true"
+ inkscape:zoom="26.208333"
+ inkscape:document-rotation="0">
+
+ <inkscape:grid
+ type="xygrid"
+ enabled="true"
+ visible="true"
+ spacingx="0.5px"
+ spacingy="0.5px"
+ empspacing="5"
+ snapvisiblegridlinesonly="true"
+ id="grid3142">
+ </inkscape:grid>
+</sodipodi:namedview>
+<path
+ d="m 21.25269,21.999123 v 0 L 2.4166278,21.971079 C 2.2991927,21.970203 2.1870159,21.921125 2.1072652,21.83524 2.0275146,21.747602 1.9880773,21.632796 1.9977176,21.515361 2.0152452,21.313794 3.9257562,1.2814715 21.576951,1.0027823 c 0.145479,-0.0210331 0.29797,0.07975 0.373338,0.2155897 0.07537,0.1349627 0.07099,0.3005988 -0.01315,0.4303032 -5.18029,8.1091553 -0.824675,18.5696408 -0.347047,19.6616118 0.06135,0.07274 0.09815,0.166513 0.09815,0.269926 0,0.232241 -0.188423,0.419787 -0.419788,0.419787 -0.0035,0 -0.0096,0 -0.01578,-8.77e-4 z"
+ id="path3002"
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient877);fill-opacity:1;stroke-width:3.50552;stroke-miterlimit:4;stroke-dasharray:none"
+ sodipodi:nodetypes="cccccccccssc" />
+<path
+ id="path4555"
+ inkscape:export-filename="/home/gerald/devel/wsweb/image/wslogo.png"
+ inkscape:export-xdpi="90.000000"
+ inkscape:export-ydpi="90.000000"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc"
+ d="M 25.5,23.001143 C 25.5,23.001143 28.365885,3.2922387 46.267747,1 40.714476,11.678422 46,23.02632 46,23.02632 Z"
+ style="fill:url(#linearGradient5073);fill-opacity:1;stroke-width:1.19103" /></svg>
diff --git a/packaging/msys2/mingw-w64-wireshark-git/PKGBUILD b/packaging/msys2/mingw-w64-wireshark-git/PKGBUILD
new file mode 100644
index 0000000..24516f2
--- /dev/null
+++ b/packaging/msys2/mingw-w64-wireshark-git/PKGBUILD
@@ -0,0 +1,103 @@
+# Maintainer: Wireshark Core Team <wireshark-dev@wireshark.org>
+
+_realname=wireshark
+pkgbase=mingw-w64-${_realname}-git
+pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-git")
+pkgver=4.1.0rc0.1408.gd00bd20fea
+pkgrel=1
+pkgdesc="Network traffic and protocol analyzer/sniffer"
+arch=('any')
+mingw_arch=('mingw64' 'ucrt64' 'clang64')
+url="https://www.wireshark.org"
+license=('GPL2')
+depends=("${MINGW_PACKAGE_PREFIX}-bcg729"
+ "${MINGW_PACKAGE_PREFIX}-brotli"
+ "${MINGW_PACKAGE_PREFIX}-c-ares"
+ "${MINGW_PACKAGE_PREFIX}-glib2"
+ "${MINGW_PACKAGE_PREFIX}-gnutls"
+ "${MINGW_PACKAGE_PREFIX}-libgcrypt"
+ "${MINGW_PACKAGE_PREFIX}-libilbc"
+ "${MINGW_PACKAGE_PREFIX}-libmaxminddb"
+ "${MINGW_PACKAGE_PREFIX}-libpcap"
+ "${MINGW_PACKAGE_PREFIX}-libsmi"
+ "${MINGW_PACKAGE_PREFIX}-libssh"
+ "${MINGW_PACKAGE_PREFIX}-libxml2"
+ "${MINGW_PACKAGE_PREFIX}-lz4"
+ "${MINGW_PACKAGE_PREFIX}-minizip"
+ "${MINGW_PACKAGE_PREFIX}-nghttp2"
+ "${MINGW_PACKAGE_PREFIX}-opencore-amr"
+ "${MINGW_PACKAGE_PREFIX}-opus"
+ "${MINGW_PACKAGE_PREFIX}-pcre2"
+ "${MINGW_PACKAGE_PREFIX}-qt6-base"
+ "${MINGW_PACKAGE_PREFIX}-qt6-multimedia"
+ "${MINGW_PACKAGE_PREFIX}-qt6-5compat"
+ "${MINGW_PACKAGE_PREFIX}-sbc"
+ "${MINGW_PACKAGE_PREFIX}-snappy"
+ "${MINGW_PACKAGE_PREFIX}-spandsp"
+ "${MINGW_PACKAGE_PREFIX}-speexdsp"
+ "${MINGW_PACKAGE_PREFIX}-zlib"
+ "${MINGW_PACKAGE_PREFIX}-zstd")
+makedepends=("${MINGW_PACKAGE_PREFIX}-cmake"
+ "${MINGW_PACKAGE_PREFIX}-ninja"
+ "${MINGW_PACKAGE_PREFIX}-cc"
+ "${MINGW_PACKAGE_PREFIX}-python"
+ "${MINGW_PACKAGE_PREFIX}-qt6-tools"
+ "${MINGW_PACKAGE_PREFIX}-asciidoctor"
+ "${MINGW_PACKAGE_PREFIX}-docbook-xsl"
+ "${MINGW_PACKAGE_PREFIX}-libxslt"
+ 'git')
+checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest"
+ "${MINGW_PACKAGE_PREFIX}-python-pytest-xdist")
+provides=("${MINGW_PACKAGE_PREFIX}-${_realname}")
+conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}")
+_commit=${PKG_COMMIT:-HEAD}
+source=("${_realname}"::"git+https://gitlab.com/wireshark/wireshark.git#commit=${_commit}")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd "${_realname}"
+
+ git describe --long "${_commit}" | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g;s/^v//g'
+}
+
+build() {
+ mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}"
+
+ declare -a extra_config
+ if check_option "debug" "n"; then
+ extra_config+=("-DCMAKE_BUILD_TYPE=Release")
+ else
+ extra_config+=("-DCMAKE_BUILD_TYPE=Debug")
+ fi
+
+ MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
+ "${MINGW_PREFIX}"/bin/cmake.exe \
+ -GNinja \
+ -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \
+ "${extra_config[@]}" \
+ -DENABLE_WERROR=OFF \
+ -DUSE_qt6=ON \
+ -DENABLE_WINSPARKLE=OFF \
+ -DFETCH_lua=ON \
+ ../${_realname}
+
+ "${MINGW_PREFIX}"/bin/cmake.exe --build .
+ "${MINGW_PREFIX}"/bin/cmake.exe --build . --target user_guide_html
+}
+
+check() {
+ cd "${srcdir}/build-${MSYSTEM}"
+
+ "${MINGW_PREFIX}"/bin/cmake.exe --build . --target test-programs
+ "${MINGW_PREFIX}"/bin/pytest.exe
+}
+
+package() {
+ cd "${srcdir}/build-${MSYSTEM}"
+
+ DESTDIR="${pkgdir}" "${MINGW_PREFIX}"/bin/cmake.exe --install .
+ DESTDIR="${pkgdir}" "${MINGW_PREFIX}"/bin/cmake.exe --install . --component UserGuide
+ DESTDIR="${pkgdir}" "${MINGW_PREFIX}"/bin/cmake.exe --install . --component Development
+
+ install -Dm644 "${srcdir}/${_realname}/COPYING" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING"
+}
diff --git a/packaging/nsis/CMakeLists.txt b/packaging/nsis/CMakeLists.txt
new file mode 100644
index 0000000..d0c4866
--- /dev/null
+++ b/packaging/nsis/CMakeLists.txt
@@ -0,0 +1,400 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+# We should use CPack to generate the NSIS package. Even better,
+# we should use CPack to create a .msi using WiX.
+
+set(WIRESHARK_NSIS_GENERATED_FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/wireshark-manifest.nsh
+ ${CMAKE_CURRENT_BINARY_DIR}/wireshark-config.nsh
+)
+if(NOT SKIP_NSIS_QT_DLLS)
+ list(APPEND WIRESHARK_NSIS_GENERATED_FILES ${CMAKE_CURRENT_BINARY_DIR}/wireshark-qt-manifest.nsh)
+endif()
+set(WIRESHARK_NSIS_GENERATED_FILES ${WIRESHARK_NSIS_GENERATED_FILES} PARENT_SCOPE)
+
+set(WIRESHARK_NSIS_FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/wireshark.nsi
+ ${CMAKE_CURRENT_SOURCE_DIR}/wireshark-common.nsh
+ ${CMAKE_CURRENT_SOURCE_DIR}/GetWindowsVersion.nsh
+ ${CMAKE_CURRENT_SOURCE_DIR}/servicelib.nsh
+ ${CMAKE_CURRENT_SOURCE_DIR}/NpcapPage.ini
+ ${CMAKE_CURRENT_SOURCE_DIR}/USBPcapPage.ini
+ ${WIRESHARK_NSIS_GENERATED_FILES}
+ PARENT_SCOPE
+)
+
+set(LOGRAY_NSIS_GENERATED_FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/logray-manifest.nsh
+ ${CMAKE_CURRENT_BINARY_DIR}/logray-config.nsh
+ ${CMAKE_CURRENT_BINARY_DIR}/logray-qt-manifest.nsh
+)
+set(LOGRAY_NSIS_GENERATED_FILES ${LOGRAY_NSIS_GENERATED_FILES} PARENT_SCOPE)
+
+set(LOGRAY_NSIS_FILES
+ logray.nsi
+ uninstall-logray.nsi
+ logray-common.nsh
+ GetWindowsVersion.nsh
+ servicelib.nsh
+ NpcapPage.ini
+ USBPcapPage.ini
+ ${LOGRAY_NSIS_GENERATED_FILES}
+ PARENT_SCOPE
+)
+
+# Variables required for config.nsh
+set(PROGRAM_NAME ${CMAKE_PROJECT_NAME})
+set(LOG_PROGRAM_NAME ${LOG_PROJECT_NAME})
+file(TO_NATIVE_PATH "${CMAKE_SOURCE_DIR}" TOP_SRC_DIR)
+# STAGING_DIR depends on the build configuration so we pass it
+# on the command line below.
+file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/docbook" DOCBOOK_DIR)
+set (MMDBRESOLVE_EXE ${MAXMINDDB_FOUND})
+
+# To do:
+# - Sync the various version names between CMake and NSIS.
+# - Set CMakeLists.txt version strings in tools/make-version.py
+# - Add a VERSION_EXTRA cmake option
+set (PRODUCT_VERSION ${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION}.${PROJECT_BUILD_VERSION})
+set (LOG_PRODUCT_VERSION ${LOG_PROJECT_MAJOR_VERSION}.${LOG_PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION}.${PROJECT_BUILD_VERSION})
+
+if((BUILD_wireshark OR BUILD_logray) AND QT_FOUND)
+ set (QT_DIR "\${STAGING_DIR}")
+endif()
+
+# Look for the Visual C++ Redistributable packages in the following locations:
+# - _PROJECT_LIB_DIR
+# - _PROJECT_LIB_DIR/vcredist_MSVCxx
+# - %VCINSTALLDIR%
+# - %VCINSTALLDIR%/redist/1033 (<= Visual Studio 2015)
+# - %VCINSTALLDIR%/Redist/MSVC/* (>= Visual Studio 2017)
+# MSVC_VERSION (_MSC_VER) = Visual Studio Version / MSVC Toolset Version
+# 1900 = VS2015 14.0 / 14.00
+# 1910 = VS2017 15.1, 15.2 / 14.10
+# 1911 = VS2017 15.3, 15.4 / 14.11
+# 1912 = VS2017 15.5 / 14.12
+# 1913 = VS2017 15.6 / 14.13
+# 1914 = VS2017 15.7 / 14.14
+if(MSVC_VERSION GREATER_EQUAL 1930)
+ set(_ws_vcredist_subdir "vcredist_MSVC2022")
+elseif(MSVC_VERSION GREATER_EQUAL 1920)
+ set(_ws_vcredist_subdir "vcredist_MSVC2019")
+ set(_msvs_version 15.0) # Doesn't appear to be set
+elseif(MSVC_VERSION GREATER_EQUAL 1910)
+ set(_ws_vcredist_subdir "vcredist_MSVC2017")
+ set(_msvs_version 15.0)
+elseif(MSVC_VERSION GREATER_EQUAL 1900)
+ set(_ws_vcredist_subdir "vcredist_MSVC2015")
+ set(_ms_vcredist_subdir "redist/1033")
+ set(_msvs_version 14.0)
+endif()
+
+# Try to find the Redist folder in VCINSTALLDIR which is set by vcvarsall.bat.
+# If it is not set, query it within the registry. VS2015 looks for the "VC7" key
+# in two locations (four if you count HKCU instead of HKLM). However, VS2017
+# does not use "VC7" (it sets a directory relative to vsdevcmd_start.bat). As
+# both versions do set "VS7", use that instead.
+find_path(VCINSTALLDIR Redist PATHS
+ "$ENV{VCINSTALLDIR}"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7;${_msvs_version}]\\VC"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\VisualStudio\\SxS\\VS7;${_msvs_version}]\\VC"
+ NO_DEFAULT_PATH
+)
+file(TO_NATIVE_PATH "${VCINSTALLDIR}" VCINSTALLDIR_NATIVE)
+message(STATUS "Using VCINSTALLDIR: ${VCINSTALLDIR_NATIVE}")
+
+# Visual Studio Community 2017 version 15.7.5 uses VCRT 14.14.26405, but an
+# earlier version used 14.10.25008. Let's just glob for the right value.
+if(MSVC_VERSION GREATER_EQUAL 1910 AND VCINSTALLDIR)
+ file(GLOB _ms_vcredist_subdir RELATIVE "${VCINSTALLDIR}"
+ "${VCINSTALLDIR}/Redist/MSVC/14.*.*")
+endif()
+
+find_program(_vcredist
+ NAMES
+ "vc_redist.${WIRESHARK_TARGET_PLATFORM}.exe" # Visual Studio 2022 and later
+ "vcredist_${WIRESHARK_TARGET_PLATFORM}.exe" # Visual Studio 2019 and earlier
+ PATHS "${_PROJECT_LIB_DIR}" $ENV{VCToolsRedistDir} "${VCINSTALLDIR}"
+ PATH_SUFFIXES ${_ws_vcredist_subdir} ${_ms_vcredist_subdir}
+ NO_DEFAULT_PATH
+)
+if(_vcredist)
+ file(TO_NATIVE_PATH "${_vcredist}" _vcredist)
+ message(STATUS "Using ${_vcredist} for the NSIS installer.")
+ get_filename_component(VCREDIST_DIR ${_vcredist} DIRECTORY)
+ get_filename_component(VCREDIST_EXE ${_vcredist} NAME)
+endif()
+
+if (BUILD_wireshark)
+ # Ideally we would generate this at compile time using a separate cmake
+ # module, e.g. cmake/modules/configure_nsis_file.cmake. However we would
+ # have to figure out a clean way to pass in the variables above.
+ file(READ "${CMAKE_CURRENT_SOURCE_DIR}/wireshark-config.nsh.in" _config_nsh_contents)
+ string(CONFIGURE "${_config_nsh_contents}" _config_nsh_contents)
+ string(REPLACE "#define" "!define" _config_nsh_contents "${_config_nsh_contents}")
+ string(REPLACE "#undef" "!undef" _config_nsh_contents "${_config_nsh_contents}")
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/wireshark-config.nsh" "${_config_nsh_contents}")
+
+ # wireshark-manifest.nsh. Can be created at configure time.
+ set(_all_manifest "${CMAKE_CURRENT_BINARY_DIR}/wireshark-manifest.nsh")
+ set(_all_manifest_contents "# Files required for all sections. Generated by CMake.\n")
+ if(USE_REPOSITORY)
+ set(_all_manifest_contents "${_all_manifest_contents}!ifdef BUNDLE_DEBUG_DLLS\n")
+ foreach(_dll ${GLIB2_DLLS_DEBUG})
+ set(_all_manifest_contents "${_all_manifest_contents}File \"\${STAGING_DIR}\\${_dll}\"\n")
+ endforeach()
+ set(_all_manifest_contents "${_all_manifest_contents}!else\n")
+ foreach(_dll ${GLIB2_DLLS_RELEASE})
+ set(_all_manifest_contents "${_all_manifest_contents}File \"\${STAGING_DIR}\\${_dll}\"\n")
+ endforeach()
+ set(_all_manifest_contents "${_all_manifest_contents}!endif\n")
+ foreach(_dll ${CARES_DLL} ${PCRE2_RELEASE_DLL} ${GCRYPT_DLLS}
+ ${GNUTLS_DLLS} ${KERBEROS_DLLS} ${LIBSSH_DLLS} ${LUA_DLL}
+ ${LZ4_DLL} ${MINIZIP_DLL} ${NGHTTP2_DLL} ${NGHTTP3_DLL} ${SBC_DLL} ${SMI_DLL}
+ ${SNAPPY_DLL} ${SPANDSP_DLL} ${BCG729_DLL} ${LIBXML2_DLLS} ${WINSPARKLE_DLL}
+ ${ZLIB_DLL} ${BROTLI_DLLS} ${ZSTD_DLL} ${ILBC_DLL} ${OPUS_DLL}
+ ${SPEEXDSP_DLL}
+ # Needed for mmdbresolve
+ ${MAXMINDDB_DLL}
+ )
+ set(_all_manifest_contents "${_all_manifest_contents}File \"\${STAGING_DIR}\\${_dll}\"\n")
+ endforeach()
+ elseif(USE_MSYSTEM)
+ include(${CMAKE_CURRENT_SOURCE_DIR}/InstallMSYS2.cmake)
+ foreach(_dll ${MINGW_DLLS})
+ file(TO_NATIVE_PATH ${_dll} _path)
+ set(_all_manifest_contents "${_all_manifest_contents}File \"${_path}\"\n")
+ endforeach()
+ else()
+ include(${CMAKE_CURRENT_SOURCE_DIR}/InstallMinGW.cmake)
+ foreach(_dll ${MINGW_DLLS})
+ file(TO_NATIVE_PATH ${_dll} _path)
+ set(_all_manifest_contents "${_all_manifest_contents}File \"${_path}\"\n")
+ endforeach()
+ endif()
+ file(WRITE "${_all_manifest}" "${_all_manifest_contents}")
+endif()
+
+if (BUILD_logray)
+ # Ideally we would generate this at compile time using a separate cmake
+ # module, e.g. cmake/modules/configure_nsis_file.cmake. However we would
+ # have to figure out a clean way to pass in the variables above.
+ file(READ "${CMAKE_CURRENT_SOURCE_DIR}/logray-config.nsh.in" _config_nsh_contents)
+ string(CONFIGURE "${_config_nsh_contents}" _config_nsh_contents)
+ string(REPLACE "#define" "!define" _config_nsh_contents "${_config_nsh_contents}")
+ string(REPLACE "#undef" "!undef" _config_nsh_contents "${_config_nsh_contents}")
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/logray-config.nsh" "${_config_nsh_contents}")
+
+ # logray-manifest.nsh. Can be created at configure time.
+ set(_all_manifest "${CMAKE_CURRENT_BINARY_DIR}/logray-manifest.nsh")
+ set(_all_manifest_contents "# Files required for all sections. Generated by CMake.\n")
+ set(_all_manifest_contents "${_all_manifest_contents}!ifdef BUNDLE_DEBUG_DLLS\n")
+ foreach(_dll ${GLIB2_DLLS_DEBUG})
+ set(_all_manifest_contents "${_all_manifest_contents}File \"\${STAGING_DIR}\\${_dll}\"\n")
+ endforeach()
+ set(_all_manifest_contents "${_all_manifest_contents}!else\n")
+ foreach(_dll ${GLIB2_DLLS_RELEASE})
+ set(_all_manifest_contents "${_all_manifest_contents}File \"\${STAGING_DIR}\\${_dll}\"\n")
+ endforeach()
+ set(_all_manifest_contents "${_all_manifest_contents}!endif\n")
+ foreach(_dll ${CARES_DLL} ${PCRE2_RELEASE_DLL} ${GCRYPT_DLLS}
+ ${GNUTLS_DLLS} ${KERBEROS_DLLS} ${LIBSSH_DLLS} ${LUA_DLL}
+ ${LZ4_DLL} ${NGHTTP2_DLL} ${NGHTTP3_DLL} ${SBC_DLL} ${SMI_DLL} ${SNAPPY_DLL}
+ ${SPANDSP_DLL} ${BCG729_DLL} ${LIBXML2_DLLS} ${WINSPARKLE_DLL}
+ ${ZLIB_DLL} ${BROTLI_DLLS} ${ZSTD_DLL} ${ILBC_DLL} ${OPUS_DLL}
+ ${SPEEXDSP_DLL}
+ # Needed for mmdbresolve
+ ${MAXMINDDB_DLL}
+ )
+ set(_all_manifest_contents "${_all_manifest_contents}File \"\${STAGING_DIR}\\${_dll}\"\n")
+ endforeach()
+ file(WRITE "${_all_manifest}" "${_all_manifest_contents}")
+endif()
+
+file(TO_NATIVE_PATH "${DATAFILE_DIR}" _staging_dir)
+file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}" _outfile_dir)
+file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}" _nsis_include_dir)
+
+# Variables we can't set via config.nsh.
+set(NSIS_OPTIONS
+ -DSTAGING_DIR=${_staging_dir}
+ -DOUTFILE_DIR=${_outfile_dir}
+ -DNSIS_INCLUDE_DIR=${_nsis_include_dir}
+ -V2
+ PARENT_SCOPE
+)
+
+# We want to sign all of the executables that we ship in the official
+# installers. This means that uninstall-wireshark.exe must be built
+# separately AND that building the installer itself won't overwrite
+# uninstall-wireshark.exe
+macro( ADD_NSIS_UNINSTALLER_TARGETS )
+ set (_nsis_source_dir ${CMAKE_SOURCE_DIR}/packaging/nsis )
+ set (_nsis_binary_dir ${CMAKE_BINARY_DIR}/packaging/nsis )
+
+ #
+ # XXX - if we're not building Wireshark, we can't build
+ # anything, so there's nothing to uninstall.
+ #
+ if(BUILD_logray)
+ add_custom_command(OUTPUT ${DATAFILE_DIR}/uninstall-logray.exe
+ DEPENDS ${_nsis_source_dir}/uninstall-logray.nsi
+ ${_nsis_source_dir}/logray-common.nsh
+ COMMAND ${MAKENSIS_EXECUTABLE} ${NSIS_OPTIONS}
+ uninstall-logray.nsi
+ COMMAND ${POWERSHELL_COMMAND} "${_nsis_source_dir}/makeUninstall.ps1" ${DATAFILE_DIR}/uninstall_logray_installer.exe
+ COMMAND ${CMAKE_COMMAND} -E remove ${DATAFILE_DIR}/uninstall_logray_installer.exe
+ WORKING_DIRECTORY ${_nsis_source_dir}
+ )
+ endif()
+endmacro( ADD_NSIS_UNINSTALLER_TARGETS )
+
+macro( ADD_NSIS_PACKAGE_TARGETS )
+ set (_nsis_source_dir ${CMAKE_SOURCE_DIR}/packaging/nsis )
+ set (_nsis_binary_dir ${CMAKE_BINARY_DIR}/packaging/nsis )
+ #
+ # XXX - if we're not building Wireshark, we can't build the
+ # manifest below. On the other hand, if we're not building
+ # Wireshark, we have no need to include Qt in the installer,
+ # so it's not clear we need this manifest.
+ #
+ # This should probably be fixed, so that people can produce
+ # command-line-only installer packages.
+ if(BUILD_wireshark)
+ # wireshark-qt-manifest.nsh. Created using Wireshark.exe.
+ if(NOT SKIP_NSIS_QT_DLLS)
+ if (USE_REPOSITORY)
+ add_custom_command(OUTPUT ${_nsis_binary_dir}/wireshark-qt-manifest.nsh
+ COMMAND set "PATH=${QT_BIN_PATH};%PATH%"
+ COMMAND ${POWERSHELL_COMMAND} "${_nsis_source_dir}/windeployqt-to-nsis.ps1"
+ -Executable $<TARGET_FILE:wireshark>
+ -FilePath ${_nsis_binary_dir}/wireshark-qt-manifest.nsh
+ $<$<CONFIG:Debug>:-DebugConfig>
+ DEPENDS
+ "${_nsis_source_dir}/windeployqt-to-nsis.ps1"
+ $<TARGET_FILE:wireshark>
+ )
+ elseif(HAVE_MSYSTEM)
+ add_custom_command(OUTPUT ${_nsis_binary_dir}/wireshark-qt-manifest.nsh
+ COMMAND ${Python3_EXECUTABLE} "${_nsis_source_dir}/windeployqt-to-nsis.py"
+ --executable $<TARGET_FILE:wireshark>
+ ${_nsis_binary_dir}/wireshark-qt-manifest.nsh
+ #$<$<CONFIG:Debug>:-DebugConfig>
+ DEPENDS
+ "${_nsis_source_dir}/windeployqt-to-nsis.py"
+ $<TARGET_FILE:wireshark>
+ )
+ elseif(MINGW AND CMAKE_CROSSCOMPILING)
+ add_custom_command(OUTPUT ${_nsis_binary_dir}/wireshark-qt-manifest.nsh
+ COMMAND ${Python3_EXECUTABLE} "${_nsis_source_dir}/windeployqt-to-nsis.py"
+ --sysroot "${MINGW_SYSROOT}"
+ --mapping "${_nsis_source_dir}/mingw64-qt-mapping.txt"
+ ${_nsis_binary_dir}/wireshark-qt-manifest.nsh
+ #$<$<CONFIG:Debug>:-DebugConfig>
+ DEPENDS
+ "${_nsis_source_dir}/windeployqt-to-nsis.py"
+ "${_nsis_source_dir}/mingw64-qt-mapping.txt"
+ )
+ else()
+ message(FATAL_ERROR "Unknown Qt deployment method")
+ endif()
+ endif()
+
+ # Build NSIS package dependencies. We build the package in
+ # two stages so that wireshark_nsis below doesn't trigger
+ # any dependencies that might clobber any signed executables.
+ add_custom_target(wireshark_nsis_prep
+ DEPENDS
+ ${WIRESHARK_NSIS_FILES}
+ copy_data_files
+ user_guide_html
+ faq_html
+ )
+ set_target_properties(wireshark_nsis_prep PROPERTIES
+ FOLDER "Packaging"
+ EXCLUDE_FROM_DEFAULT_BUILD True
+ )
+
+ # Make sure required blobs are available
+ FetchContent_MakeAvailable(Npcap USBPcap)
+
+ # Dump the installer into
+ # ${CMAKE_CURRENT_SOURCE_DIR}/packaging/nsis
+ # Note that executables and DLLs *must* be built separately
+ add_custom_target(wireshark_nsis
+ COMMAND ${MAKENSIS_EXECUTABLE} ${NSIS_OPTIONS}
+ $<$<CONFIG:Debug>:-DBUNDLE_DEBUG_DLLS>
+ $<$<BOOL:${MSVC}>:-DUSE_VCREDIST>
+ wireshark.nsi
+ WORKING_DIRECTORY ${_nsis_source_dir}
+ )
+ set_target_properties(wireshark_nsis PROPERTIES
+ FOLDER "Packaging"
+ EXCLUDE_FROM_DEFAULT_BUILD True
+ )
+ endif()
+
+ if(BUILD_logray)
+ # logray-qt-manifest.nsh. Created using Wireshark.exe.
+ add_custom_command(OUTPUT ${_nsis_binary_dir}/logray-qt-manifest.nsh
+ COMMAND set "PATH=${QT_BIN_PATH};%PATH%"
+ COMMAND ${POWERSHELL_COMMAND} "${_nsis_source_dir}/windeployqt-to-nsis.ps1"
+ -Executable $<TARGET_FILE:logray>
+ -FilePath ${_nsis_binary_dir}/logray-qt-manifest.nsh
+ $<$<CONFIG:Debug>:-DebugConfig>
+ DEPENDS "${_nsis_source_dir}/windeployqt-to-nsis.ps1"
+ )
+
+ # Build NSIS package dependencies. We build the package in
+ # two stages so that logray_nsis below doesn't trigger
+ # any dependencies that might clobber any signed executables.
+ add_custom_target(logray_nsis_prep
+ DEPENDS
+ ${LOGRAY_NSIS_FILES}
+ copy_data_files
+ user_guide_html
+ faq_html
+ ${DATAFILE_DIR}/uninstall-logray.exe
+ )
+ set_target_properties(logray_nsis_prep PROPERTIES
+ FOLDER "Packaging"
+ EXCLUDE_FROM_DEFAULT_BUILD True
+ )
+
+ # Dump the installer into
+ # ${CMAKE_CURRENT_SOURCE_DIR}/packaging/nsis
+ # Note that executables and DLLs *must* be built separately
+ add_custom_target(logray_nsis
+ COMMAND ${MAKENSIS_EXECUTABLE} ${NSIS_OPTIONS}
+ $<$<CONFIG:Debug>:-DBUNDLE_DEBUG_DLLS>
+ logray.nsi
+ WORKING_DIRECTORY ${_nsis_source_dir}
+ )
+ set_target_properties(logray_nsis PROPERTIES
+ FOLDER "Packaging"
+ EXCLUDE_FROM_DEFAULT_BUILD True
+ )
+ endif()
+endmacro( ADD_NSIS_PACKAGE_TARGETS )
+
+set(CLEAN_FILES
+ #NEWS.txt
+ #user-guide.chm
+ ${DATAFILE_DIR}/uninstall-wireshark.exe
+ wireshark-${VERSION}-${WIRESHARK_TARGET_PLATFORM}.exe
+ wireshark-config.nsh
+ wireshark-manifest.nsh
+ wireshark-qt-manifest.nsh
+ ${DATAFILE_DIR}/uninstall-logray.exe
+ logray-${VERSION}-${WIRESHARK_TARGET_PLATFORM}.exe
+ logray-config.nsh
+ logray-manifest.nsh
+ logray-qt-manifest.nsh
+)
diff --git a/packaging/nsis/DonatePage.ini b/packaging/nsis/DonatePage.ini
new file mode 100644
index 0000000..ccd9760
--- /dev/null
+++ b/packaging/nsis/DonatePage.ini
@@ -0,0 +1,19 @@
+[Settings]
+NumFields=2
+
+[Field 1]
+Type=Label
+Left=10
+Right=250
+Top=10
+Bottom=34
+Text=The Wireshark Foundation wants to help as many people as possible understand their networks as much as possible. Your donation helps to support Wireshark and host SharkFest.
+
+[Field 2]
+Type=Link
+Left=10
+Right=250
+Top=50
+Bottom=58
+Text=You can learn more and donate at https://wiresharkfoundation.org.
+State=https://wiresharkfoundation.org/
diff --git a/packaging/nsis/GetWindowsVersion.nsh b/packaging/nsis/GetWindowsVersion.nsh
new file mode 100644
index 0000000..d020129
--- /dev/null
+++ b/packaging/nsis/GetWindowsVersion.nsh
@@ -0,0 +1,190 @@
+; GetWindowsVersion 4.1.1 (2015-06-22) - alternate script with server versions
+;
+; https://nsis.sourceforge.io/Get_Windows_version
+;
+; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
+; Update by Joost Verburg
+; Update (Macro, Define, Windows 7 detection) - John T. Haller of PortableApps.com - 2008-01-07
+; Update (Windows 8 detection) - Marek Mizanin (Zanir) - 2013-02-07
+; Update (Windows 8.1 detection) - John T. Haller of PortableApps.com - 2014-04-04
+; Update (Windows 2008, 2008R2, 2012 and 2012R2 detection) - Francisco Simoões Filho franksimoes@gmail.com - 2014-08-25
+; Update (Windows 10 TP detection) - John T. Haller of PortableApps.com - 2014-10-01
+; Update (Windows 10 TP4 and 2016 detection, and added include guards) - Kairu - 2015-06-22
+;
+; Usage: ${GetWindowsVersion} $R0
+;
+; $R0 contains: 95, 98, ME, NT x.x, 2000, XP, 2003, Vista, 2008, 7, 2008R2,
+; 8, 2012, 8.1, 2012R2, 10.0, 2016 or '' (for unknown)
+
+!ifndef __GET_WINDOWS_VERSION_NSH
+!define __GET_WINDOWS_VERSION_NSH
+
+Function GetWindowsVersion
+
+ Push $R0
+ Push $R1
+ Push $R2
+
+ ClearErrors
+
+ ; check if Windows NT family
+ ReadRegStr $R0 HKLM \
+ "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
+
+ IfErrors 0 lbl_winnt
+
+ ; we are not NT
+ ReadRegStr $R0 HKLM \
+ "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
+
+ StrCpy $R1 $R0 1
+ StrCmp $R1 '4' 0 lbl_error
+
+ StrCpy $R1 $R0 3
+
+ StrCmp $R1 '4.0' lbl_win32_95
+ StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
+
+ lbl_win32_95:
+ StrCpy $R0 '95'
+ Goto lbl_done
+
+ lbl_win32_98:
+ StrCpy $R0 '98'
+ Goto lbl_done
+
+ lbl_win32_ME:
+ StrCpy $R0 'ME'
+ Goto lbl_done
+
+ lbl_winnt:
+
+ ; check if Windows is Client or Server.
+ ReadRegStr $R2 HKLM \
+ "SOFTWARE\Microsoft\Windows NT\CurrentVersion" InstallationType
+
+ StrCpy $R1 $R0 1
+
+ StrCmp $R1 '3' lbl_winnt_x
+ StrCmp $R1 '4' lbl_winnt_x
+
+ StrCpy $R1 $R0 3
+
+ StrCmp $R1 '5.0' lbl_winnt_2000
+ StrCmp $R1 '5.1' lbl_winnt_XP
+ StrCmp $R1 '5.2' lbl_winnt_2003
+ StrCmp $R1 '6.0' lbl_winnt_vista_2008
+ StrCmp $R1 '6.1' lbl_winnt_7_2008R2
+ StrCmp $R1 '6.2' lbl_winnt_8_2012
+ StrCmp $R1 '6.3' lbl_winnt_81_2012R2
+ StrCmp $R1 '6.4' lbl_winnt_10_2016 ; the early Windows 10 tech previews used version 6.4
+
+ StrCpy $R1 $R0 4
+
+ StrCmp $R1 '10.0' lbl_winnt_10_2016
+ Goto lbl_error
+
+ lbl_winnt_x:
+ StrCpy $R0 "NT $R0" 6
+ Goto lbl_done
+
+ lbl_winnt_2000:
+ Strcpy $R0 '2000'
+ Goto lbl_done
+
+ lbl_winnt_XP:
+ Strcpy $R0 'XP'
+ Goto lbl_done
+
+ lbl_winnt_2003:
+ Strcpy $R0 '2003'
+ Goto lbl_done
+
+ ;----------------- Family - Vista / 2008 -------------
+ lbl_winnt_vista_2008:
+ StrCmp $R2 'Client' go_vista
+ StrCmp $R2 'Server' go_2008
+
+ go_vista:
+ Strcpy $R0 'Vista'
+ Goto lbl_done
+
+ go_2008:
+ Strcpy $R0 '2008'
+ Goto lbl_done
+ ;-----------------------------------------------------
+
+ ;----------------- Family - 7 / 2008R2 -------------
+ lbl_winnt_7_2008R2:
+ StrCmp $R2 'Client' go_7
+ StrCmp $R2 'Server' go_2008R2
+
+ go_7:
+ Strcpy $R0 '7'
+ Goto lbl_done
+
+ go_2008R2:
+ Strcpy $R0 '2008R2'
+ Goto lbl_done
+ ;-----------------------------------------------------
+
+ ;----------------- Family - 8 / 2012 -------------
+ lbl_winnt_8_2012:
+ StrCmp $R2 'Client' go_8
+ StrCmp $R2 'Server' go_2012
+
+ go_8:
+ Strcpy $R0 '8'
+ Goto lbl_done
+
+ go_2012:
+ Strcpy $R0 '2012'
+ Goto lbl_done
+ ;-----------------------------------------------------
+
+ ;----------------- Family - 8.1 / 2012R2 -------------
+ lbl_winnt_81_2012R2:
+ StrCmp $R2 'Client' go_81
+ StrCmp $R2 'Server' go_2012R2
+
+ go_81:
+ Strcpy $R0 '8.1'
+ Goto lbl_done
+
+ go_2012R2:
+ Strcpy $R0 '2012R2'
+ Goto lbl_done
+ ;-----------------------------------------------------
+
+ ;----------------- Family - 10 / 2016 -------------
+ lbl_winnt_10_2016:
+ StrCmp $R2 'Client' go_10
+ StrCmp $R2 'Server' go_2016
+
+ go_10:
+ Strcpy $R0 '10.0'
+ Goto lbl_done
+
+ go_2016:
+ Strcpy $R0 '2016'
+ Goto lbl_done
+ ;-----------------------------------------------------
+
+ lbl_error:
+ Strcpy $R0 ''
+ lbl_done:
+
+ Pop $R2
+ Pop $R1
+ Exch $R0
+
+FunctionEnd
+
+!macro GetWindowsVersion OUTPUT_VALUE
+ Call GetWindowsVersion
+ Pop `${OUTPUT_VALUE}`
+!macroend
+
+!define GetWindowsVersion '!insertmacro "GetWindowsVersion"'
+
+!endif
diff --git a/packaging/nsis/InstallMSYS2.cmake b/packaging/nsis/InstallMSYS2.cmake
new file mode 100644
index 0000000..a383e4c
--- /dev/null
+++ b/packaging/nsis/InstallMSYS2.cmake
@@ -0,0 +1,71 @@
+set(MINGW_BIN $ENV{MINGW_PREFIX}/bin)
+
+if(USE_MSYSTEM)
+ # mingw-w64 dlls
+ # (use msys2checkdeps.py to list required libraries / check for missing or unused libraries)
+ file(GLOB MINGW_DLLS
+ ${MINGW_BIN}/libLerc.dll
+ ${MINGW_BIN}/libb2-*.dll
+ ${MINGW_BIN}/libbrotlicommon.dll
+ ${MINGW_BIN}/libbrotlidec.dll
+ ${MINGW_BIN}/libbrotlienc.dll
+ ${MINGW_BIN}/libbz2-*.dll
+ ${MINGW_BIN}/libbcg729.dll
+ ${MINGW_BIN}/libcares-*.dll
+ ${MINGW_BIN}/libcrypto-*-x64.dll
+ ${MINGW_BIN}/libdeflate.dll
+ ${MINGW_BIN}/libdouble-conversion.dll
+ ${MINGW_BIN}/libexpat-*.dll
+ ${MINGW_BIN}/libffi-*.dll
+ ${MINGW_BIN}/libfreetype-*.dll
+ ${MINGW_BIN}/libgcc_s_seh-*.dll
+ ${MINGW_BIN}/libgcrypt-*.dll
+ ${MINGW_BIN}/libglib-2.0-*.dll
+ ${MINGW_BIN}/libgmodule-2.0-*.dll
+ ${MINGW_BIN}/libgmp-*.dll
+ ${MINGW_BIN}/libgnutls-*.dll
+ ${MINGW_BIN}/libgpg-error-*.dll
+ ${MINGW_BIN}/libgraphite2.dll
+ ${MINGW_BIN}/libharfbuzz-*.dll
+ ${MINGW_BIN}/libhogweed-*.dll
+ ${MINGW_BIN}/libiconv-*.dll
+ ${MINGW_BIN}/libicudt*.dll
+ ${MINGW_BIN}/libicuin*.dll
+ ${MINGW_BIN}/libicuuc*.dll
+ ${MINGW_BIN}/libilbc.dll
+ ${MINGW_BIN}/libidn2-*.dll
+ ${MINGW_BIN}/libintl-*.dll
+ ${MINGW_BIN}/libjbig-*.dll
+ ${MINGW_BIN}/libjpeg-*.dll
+ ${MINGW_BIN}/liblz4.dll
+ ${MINGW_BIN}/liblzma-*.dll
+ ${MINGW_BIN}/libmd4c.dll
+ ${MINGW_BIN}/libmaxminddb.dll
+ ${MINGW_BIN}/libminizip-*.dll
+ ${MINGW_BIN}/libnettle-*.dll
+ ${MINGW_BIN}/libnghttp2-*.dll
+ ${MINGW_BIN}/libopus-*.dll
+ ${MINGW_BIN}/libp11-kit-*.dll
+ ${MINGW_BIN}/libpcre2-16-*.dll
+ ${MINGW_BIN}/libpcre2-8-*.dll
+ ${MINGW_BIN}/libpng16-*.dll
+ ${MINGW_BIN}/libsbc-*.dll
+ ${MINGW_BIN}/libsharpyuv-*.dll
+ ${MINGW_BIN}/libsmi-*.dll
+ ${MINGW_BIN}/libsnappy.dll
+ ${MINGW_BIN}/libspandsp-*.dll
+ ${MINGW_BIN}/libspeexdsp-*.dll
+ ${MINGW_BIN}/libssh.dll
+ ${MINGW_BIN}/libstdc++-*.dll
+ ${MINGW_BIN}/libtasn1-*.dll
+ ${MINGW_BIN}/libtiff-*.dll
+ ${MINGW_BIN}/libunistring-*.dll
+ ${MINGW_BIN}/libwebp-*.dll
+ ${MINGW_BIN}/libunistring-*.dll
+ ${MINGW_BIN}/libwinpthread-*.dll
+ ${MINGW_BIN}/libxml2-*.dll
+ ${MINGW_BIN}/libzstd.dll
+ ${MINGW_BIN}/lua51.dll
+ ${MINGW_BIN}/zlib1.dll
+ )
+endif()
diff --git a/packaging/nsis/InstallMinGW.cmake b/packaging/nsis/InstallMinGW.cmake
new file mode 100644
index 0000000..effec0b
--- /dev/null
+++ b/packaging/nsis/InstallMinGW.cmake
@@ -0,0 +1,55 @@
+set(MINGW_SYSROOT "/usr/x86_64-w64-mingw32/sys-root/mingw" CACHE FILEPATH "Path to MinGW system root bindir")
+set(MINGW_BINDIR ${MINGW_SYSROOT}/bin)
+
+if(MINGW)
+ # mingw-w64 dlls
+ file(GLOB MINGW_DLLS
+ ${MINGW_BINDIR}/iconv.dll
+ ${MINGW_BINDIR}/icudata72.dll
+ ${MINGW_BINDIR}/icui18n72.dll
+ ${MINGW_BINDIR}/icuuc72.dll
+ ${MINGW_BINDIR}/libbrotlicommon.dll
+ ${MINGW_BINDIR}/libbrotlidec.dll
+ ${MINGW_BINDIR}/libbrotlienc.dll
+ ${MINGW_BINDIR}/libbz2-1.dll
+ ${MINGW_BINDIR}/libcares-*.dll
+ ${MINGW_BINDIR}/libcrypto-3-x64.dll
+ ${MINGW_BINDIR}/libexpat-1.dll
+ ${MINGW_BINDIR}/libffi-8.dll
+ ${MINGW_BINDIR}/libfontconfig-1.dll
+ ${MINGW_BINDIR}/libfreetype-6.dll
+ ${MINGW_BINDIR}/libgcc_s_seh-1.dll
+ ${MINGW_BINDIR}/libgcrypt-20.dll
+ ${MINGW_BINDIR}/libglib-2.0-0.dll
+ ${MINGW_BINDIR}/libgmodule-2.0-0.dll
+ ${MINGW_BINDIR}/libgmp-10.dll
+ ${MINGW_BINDIR}/libgnutls-30.dll
+ ${MINGW_BINDIR}/libgpg-error-0.dll
+ ${MINGW_BINDIR}/libgraphite2.dll
+ ${MINGW_BINDIR}/libharfbuzz-0.dll
+ ${MINGW_BINDIR}/libhogweed-6.dll
+ ${MINGW_BINDIR}/libiconv-*.dll
+ ${MINGW_BINDIR}/libidn2-*.dll
+ ${MINGW_BINDIR}/libintl-8.dll
+ ${MINGW_BINDIR}/liblz4.dll
+ ${MINGW_BINDIR}/liblzma-5.dll
+ ${MINGW_BINDIR}/libminizip-*.dll
+ ${MINGW_BINDIR}/libnettle-8.dll
+ ${MINGW_BINDIR}/libnghttp2-*.dll
+ ${MINGW_BINDIR}/libopus-0.dll
+ ${MINGW_BINDIR}/libp11-kit-0.dll
+ ${MINGW_BINDIR}/libpcre2-16-0.dll
+ ${MINGW_BINDIR}/libpcre2-8-0.dll
+ ${MINGW_BINDIR}/libpng16-16.dll
+ ${MINGW_BINDIR}/libsnappy.dll
+ ${MINGW_BINDIR}/libspeexdsp-1.dll
+ ${MINGW_BINDIR}/libssp-0.dll
+ ${MINGW_BINDIR}/libstdc++-6.dll
+ ${MINGW_BINDIR}/libtasn1-6.dll
+ ${MINGW_BINDIR}/libunistring-*.dll
+ ${MINGW_BINDIR}/libwinpthread-1.dll
+ ${MINGW_BINDIR}/libxml2-2.dll
+ ${MINGW_BINDIR}/libzstd.dll
+ ${MINGW_BINDIR}/zlib1.dll
+ )
+endif()
diff --git a/packaging/nsis/NpcapPage.ini b/packaging/nsis/NpcapPage.ini
new file mode 100644
index 0000000..1b523c7
--- /dev/null
+++ b/packaging/nsis/NpcapPage.ini
@@ -0,0 +1,85 @@
+[Settings]
+NumFields=10
+
+[Field 1]
+Type=GroupBox
+Left=0
+Right=-1
+Top=0
+Bottom=25
+Text=Currently installed Npcap or WinPcap version
+
+[Field 2]
+Type=Label
+Left=10
+Right=250
+Top=10
+Bottom=18
+Text=This text will be replaced with current Npcap installer version
+
+[Field 3]
+Type=GroupBox
+Left=0
+Right=-1
+Top=30
+Bottom=65
+Text=Install
+
+[Field 4]
+Type=CheckBox
+Left=10
+Right=250
+Top=40
+Bottom=48
+Text=This text will be replaced, depending on current Npcap version in wireshark.nsi
+State=1
+
+[Field 5]
+Type=Label
+Left=20
+Right=290
+Top=50
+Bottom=58
+Text=This text will be replaced, depending on whether Npcap is already installed
+
+[Field 6]
+Type=GroupBox
+Left=0
+Right=-1
+Top=70
+Bottom=105
+Text=Important notice
+
+[Field 7]
+Type=Label
+Left=10
+Right=290
+Top=80
+Bottom=88
+Text=If your system has crashed during a Wireshark installation, you must run the command
+
+[Field 8]
+Type=Label
+Left=10
+Right=295
+Top=89
+Bottom=97
+Text='net stop npcap' as Administrator before upgrading Npcap, so that it doesn't crash again
+
+[Field 9]
+Type=Link
+Left=0
+Right=290
+Top=112
+Bottom=120
+Text=Get WinPcap
+State=https://www.winpcap.org/
+
+[Field 10]
+Type=Link
+Left=0
+Right=290
+Top=127
+Bottom=135
+Text=Learn more about Npcap and WinPcap
+State=https://gitlab.com/wireshark/wireshark/-/wikis/WinPcap
diff --git a/packaging/nsis/USBPcapPage.ini b/packaging/nsis/USBPcapPage.ini
new file mode 100644
index 0000000..b1097e0
--- /dev/null
+++ b/packaging/nsis/USBPcapPage.ini
@@ -0,0 +1,77 @@
+[Settings]
+NumFields=9
+
+[Field 1]
+Type=GroupBox
+Left=0
+Right=-1
+Top=0
+Bottom=25
+Text=Currently installed USBPcap version
+
+[Field 2]
+Type=Label
+Left=10
+Right=250
+Top=10
+Bottom=18
+Text=This text will be replaced with current USBPcap installer version
+
+[Field 3]
+Type=GroupBox
+Left=0
+Right=-1
+Top=30
+Bottom=65
+Text=Install
+
+[Field 4]
+Type=CheckBox
+Left=10
+Right=250
+Top=40
+Bottom=48
+Text=This text will be replaced, depending on current USBPcap version in wireshark.nsi
+State=0
+
+[Field 5]
+Type=Label
+Left=20
+Right=290
+Top=50
+Bottom=58
+Text=This text will be replaced, depending if USBPcap is already installed
+
+[Field 6]
+Type=GroupBox
+Left=0
+Right=-1
+Top=70
+Bottom=105
+Text=Important notice
+
+[Field 7]
+Type=Label
+Left=10
+Right=290
+Top=80
+Bottom=88
+Text=In case of issue after installation, please use the system restore point created or read
+
+[Field 8]
+Type=Link
+Left=10
+Right=250
+Top=89
+Bottom=97
+Text=https://github.com/desowin/usbpcap/issues/3
+State=https://github.com/desowin/usbpcap/issues/3
+
+[Field 9]
+Type=Link
+Left=0
+Right=290
+Top=127
+Bottom=135
+Text=Learn more about USBPcap
+State=https://desowin.org/usbpcap/
diff --git a/packaging/nsis/custom_diameter_xmls.txt b/packaging/nsis/custom_diameter_xmls.txt
new file mode 100644
index 0000000..b89ce66
--- /dev/null
+++ b/packaging/nsis/custom_diameter_xmls.txt
@@ -0,0 +1,3 @@
+;Add your custom diameter dictionary here
+; Example:
+;File "${STAGING_DIR}\diameter\foo.xml"
diff --git a/packaging/nsis/custom_mibs.txt b/packaging/nsis/custom_mibs.txt
new file mode 100644
index 0000000..5b863a9
--- /dev/null
+++ b/packaging/nsis/custom_mibs.txt
@@ -0,0 +1,4 @@
+; Add your custom SNMP MIBS directives here
+; Example:
+; Point to the dir of the MIBS
+;File "mymibdirpath\mibs\*"
diff --git a/packaging/nsis/custom_plugins.txt b/packaging/nsis/custom_plugins.txt
new file mode 100644
index 0000000..1233805
--- /dev/null
+++ b/packaging/nsis/custom_plugins.txt
@@ -0,0 +1,3 @@
+;Add your custom plugins directives here
+; Example:
+;File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\foo.dll"
diff --git a/packaging/nsis/custom_radius_dict.txt b/packaging/nsis/custom_radius_dict.txt
new file mode 100644
index 0000000..48ecad6
--- /dev/null
+++ b/packaging/nsis/custom_radius_dict.txt
@@ -0,0 +1,3 @@
+;Add your custom radius dictionary here
+; Example:
+;File "..\..\radius\dictionary.foo" \ No newline at end of file
diff --git a/packaging/nsis/logray-additional-tasks.nsddef b/packaging/nsis/logray-additional-tasks.nsddef
new file mode 100644
index 0000000..853e958
--- /dev/null
+++ b/packaging/nsis/logray-additional-tasks.nsddef
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+This file was created by NSISDialogDesigner 1.5.0.0
+https://coolsoft.altervista.org/nsisdialogdesigner
+Do not edit manually!
+-->
+<Dialog Name="AdditionalTasksPage" Title="Additional Tasks" Subtitle="Create shortcuts and associate file extensions.">
+ <CreateFunctionCustomScript>; Defined in logray.nsi
+Call InitAdditionalTasksPage</CreateFunctionCustomScript>
+ <Label Name="ExtensionsLabel" Location="22, 151" Size="372, 52" Text="Extensions include 5vw, acp, apc, atc, bfr, cap, enc, erf, fdc, ipfix, lcap, mplog, ntar, out, pcap, pcapng, pklg, pkt, rf5, snoop, syc, tpc, tr1, trace, trc, vwr, wpc, and wpz." TabIndex="0" />
+ <CheckBox Name="AssociateExtensionsCheckBox" Location="22, 126" Size="406, 14" Text="Associate trace file extensions with Logray" TabIndex="1" />
+ <CheckBox Name="QuickLaunchCheckBox" Location="22, 74" Size="406, 14" Text="Logray Quick Launch Icon" TabIndex="2" />
+ <CheckBox Name="DesktopIconCheckBox" Location="22, 54" Size="406, 14" Text="Logray Desktop Icon" TabIndex="3" />
+ <CheckBox Name="StartMenuCheckBox" Location="22, 34" Size="406, 14" Text="Logray Start Menu Item" TabIndex="4" />
+ <Label Name="FileExtensionsLabel" Location="12, 101" Size="426, 14" Text="Associate File Extensions" Font="Microsoft Sans Serif, 8.25pt, style=Bold" TabIndex="5" />
+ <Label Name="CreateShortcutsLabel" Location="12, 9" Size="426, 14" Text="Create Shortcuts" Font="Microsoft Sans Serif, 8.25pt, style=Bold" TabIndex="6" />
+</Dialog>
diff --git a/packaging/nsis/logray-additional-tasks.nsdinc b/packaging/nsis/logray-additional-tasks.nsdinc
new file mode 100644
index 0000000..f35dee8
--- /dev/null
+++ b/packaging/nsis/logray-additional-tasks.nsdinc
@@ -0,0 +1,75 @@
+; =========================================================
+; This file was generated by NSISDialogDesigner 1.5.0.0
+; https://coolsoft.altervista.org/nsisdialogdesigner
+;
+; Do not edit it manually, use NSISDialogDesigner instead!
+; =========================================================
+
+; handle variables
+Var hCtl_AdditionalTasksPage
+Var hCtl_AdditionalTasksPage_ExtensionsLabel
+Var hCtl_AdditionalTasksPage_AssociateExtensionsCheckBox
+Var hCtl_AdditionalTasksPage_QuickLaunchCheckBox
+Var hCtl_AdditionalTasksPage_DesktopIconCheckBox
+Var hCtl_AdditionalTasksPage_StartMenuCheckBox
+Var hCtl_AdditionalTasksPage_FileExtensionsLabel
+Var hCtl_AdditionalTasksPage_CreateShortcutsLabel
+Var hCtl_AdditionalTasksPage_Font1
+
+
+; dialog create function
+Function fnc_AdditionalTasksPage_Create
+
+ ; custom font definitions
+ CreateFont $hCtl_AdditionalTasksPage_Font1 "Microsoft Sans Serif" "8.25" "700"
+
+ ; === AdditionalTasksPage (type: Dialog) ===
+ nsDialogs::Create 1018
+ Pop $hCtl_AdditionalTasksPage
+ ${If} $hCtl_AdditionalTasksPage == error
+ Abort
+ ${EndIf}
+ !insertmacro MUI_HEADER_TEXT "Additional Tasks" "Create shortcuts and associate file extensions."
+
+ ; === ExtensionsLabel (type: Label) ===
+ ${NSD_CreateLabel} 14u 93u 245u 32u "Extensions include scap."
+ Pop $hCtl_AdditionalTasksPage_ExtensionsLabel
+
+ ; === AssociateExtensionsCheckBox (type: Checkbox) ===
+ ${NSD_CreateCheckbox} 14u 78u 267u 9u "Associate log file extensions with Logray"
+ Pop $hCtl_AdditionalTasksPage_AssociateExtensionsCheckBox
+
+ ; === QuickLaunchCheckBox (type: Checkbox) ===
+ ${NSD_CreateCheckbox} 14u 46u 267u 9u "Logray Quick Launch Icon"
+ Pop $hCtl_AdditionalTasksPage_QuickLaunchCheckBox
+
+ ; === DesktopIconCheckBox (type: Checkbox) ===
+ ${NSD_CreateCheckbox} 14u 33u 267u 9u "Logray Desktop Icon"
+ Pop $hCtl_AdditionalTasksPage_DesktopIconCheckBox
+
+ ; === StartMenuCheckBox (type: Checkbox) ===
+ ${NSD_CreateCheckbox} 14u 21u 267u 9u "Logray Start Menu Item"
+ Pop $hCtl_AdditionalTasksPage_StartMenuCheckBox
+
+ ; === FileExtensionsLabel (type: Label) ===
+ ${NSD_CreateLabel} 8u 62u 280u 9u "Associate File Extensions"
+ Pop $hCtl_AdditionalTasksPage_FileExtensionsLabel
+ SendMessage $hCtl_AdditionalTasksPage_FileExtensionsLabel ${WM_SETFONT} $hCtl_AdditionalTasksPage_Font1 0
+
+ ; === CreateShortcutsLabel (type: Label) ===
+ ${NSD_CreateLabel} 8u 6u 280u 9u "Create Shortcuts"
+ Pop $hCtl_AdditionalTasksPage_CreateShortcutsLabel
+ SendMessage $hCtl_AdditionalTasksPage_CreateShortcutsLabel ${WM_SETFONT} $hCtl_AdditionalTasksPage_Font1 0
+
+ ; CreateFunctionCustomScript
+ ; Defined in logray.nsi
+ Call InitAdditionalTasksPage
+
+
+FunctionEnd
+
+; dialog show function
+Function fnc_AdditionalTasksPage_Show
+ Call fnc_AdditionalTasksPage_Create
+ nsDialogs::Show
+FunctionEnd
diff --git a/packaging/nsis/logray-common.nsh b/packaging/nsis/logray-common.nsh
new file mode 100644
index 0000000..4eaacd5
--- /dev/null
+++ b/packaging/nsis/logray-common.nsh
@@ -0,0 +1,126 @@
+
+; ============================================================================
+; Name and version information
+; ============================================================================
+
+Unicode true
+; This improves the installer's appearance considerably here on a display scaled
+; to 225%, but checkboxes are comically small. We might be able to fix this
+; using the SysCompImg extension:
+; http://forums.winamp.com/showthread.php?t=443754
+ManifestDPIAware true
+; These might be correct in the future, but are currently undocumented:
+; http://forums.winamp.com/showthread.php?t=452632
+; ManifestDPIAware System
+; ManifestDPIAwareness "PerMonitorV2,System"
+
+!ifdef NSIS_INCLUDE_DIR
+!addincludedir ${NSIS_INCLUDE_DIR}
+!endif
+
+!include "logray-config.nsh"
+
+!define DISPLAY_NAME "${PROGRAM_NAME} ${VERSION} ${WIRESHARK_TARGET_PLATFORM}"
+Name "${DISPLAY_NAME}"
+
+!define PROGRAM_FULL_NAME "The ${PROGRAM_NAME} Log Analyzer"
+!define PROGRAM_NAME_PATH "${PROGRAM_NAME}.exe"
+
+!define UNINSTALLER_NAME "uninstall-logray.exe"
+
+VIAddVersionKey "ProductName" "${PROGRAM_NAME}"
+VIAddVersionKey "Comments" "My manta ray is all right."
+VIAddVersionKey "CompanyName" "${PROGRAM_NAME} development team"
+; NSIS handles U+00a9 but not a UTF-8 encoded copyright symbol.
+VIAddVersionKey "LegalCopyright" "${U+00a9} Gerald Combs and many others"
+VIAddVersionKey "LegalTrademarks" "Logray and the 'ray' logo are registered trademarks"
+VIAddVersionKey "FileDescription" "${PROGRAM_NAME} installer for Windows on ${WIRESHARK_TARGET_PLATFORM}"
+VIAddVersionKey "Language" "English"
+VIAddVersionKey "ProductVersion" "${PRODUCT_VERSION}"
+VIAddVersionKey "FileVersion" "${PRODUCT_VERSION}"
+VIProductVersion "${PRODUCT_VERSION}"
+
+XPStyle on
+
+
+; ============================================================================
+; Functions and macros
+; ============================================================================
+
+; Used to refresh the display of file association
+!define SHCNE_ASSOCCHANGED 0x08000000
+!define SHCNF_IDLIST 0
+
+!macro UpdateIcons
+ Push $R0
+ Push $R1
+ Push $R2
+
+ !define UPDATEICONS_UNIQUE ${__LINE__}
+
+ IfFileExists "$SYSDIR\shell32.dll" UpdateIcons.ok_shell32_${UPDATEICONS_UNIQUE} UpdateIcons.error_shell32_${UPDATEICONS_UNIQUE}
+UpdateIcons.ok_shell32_${UPDATEICONS_UNIQUE}:
+ System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)'
+ Goto UpdateIcons.quit_${UPDATEICONS_UNIQUE}
+
+UpdateIcons.error_shell32_${UPDATEICONS_UNIQUE}:
+ MessageBox MB_OK|MB_ICONSTOP \
+ "Can't find 'shell32.dll' library. Impossible to update icons" \
+ /SD IDOK
+ Goto UpdateIcons.quit_${UPDATEICONS_UNIQUE}
+
+UpdateIcons.quit_${UPDATEICONS_UNIQUE}:
+ !undef UPDATEICONS_UNIQUE
+ Pop $R2
+ Pop $R1
+ Pop $R0
+
+; Force the icon cache to refresh
+; https://superuser.com/questions/499078/refresh-icon-cache-without-rebooting
+IfFileExists "$SYSDIR\ie4uinit.exe" 0 +2
+Exec '"$SYSDIR\ie4uinit.exe" -ClearIconCache'
+
+!macroend
+
+; ============================================================================
+; Push our known file extensions onto the stack, prepended with a marker
+; Note that this is a subset of dump_open_table in wiretap/file_access.c. We
+; probably don't want to grab JPEG or MP3 files.
+; ============================================================================
+
+; Used to add associations between file extensions and Logray
+!define LOGRAY_ASSOC "logray-log-file"
+
+!define FILE_EXTENSION_MARKER "FILE_EXTENSION_MARKER"
+
+!macro PushFileExtensions
+ Push "${FILE_EXTENSION_MARKER}"
+ Push ".scap"
+!macroend
+
+!macro IsLograyRunning
+; See if Logray is running
+; https://nsis.sourceforge.io/Check_whether_your_application_is_running
+${Do}
+
+ System::Call 'kernel32::OpenMutex(i 0x100000, b 0, t "Global\${PROGRAM_NAME}-is-running-{9CA78EEA-EA4D-4490-9240-FC01FCEF464B}") i .R0'
+ IntCmp $R0 0 checkRunningSession
+ System::Call 'kernel32::CloseHandle(i $R0)'
+ Goto isRunning
+
+checkRunningSession:
+ System::Call 'kernel32::OpenMutex(i 0x100000, b 0, t "${PROGRAM_NAME}-is-running-{9CA78EEA-EA4D-4490-9240-FC01FCEF464B}") i .R0'
+ IntCmp $R0 0 notRunning
+ System::Call 'kernel32::CloseHandle(i $R0)'
+
+isRunning:
+ ; You'd better go catch it.
+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "${PROGRAM_NAME} or one of its associated programs is running.$\r$\nPlease close it first." /SD IDCANCEL IDRETRY continueChecking
+ Quit
+
+notRunning:
+ ${ExitDo}
+
+continueChecking:
+${Loop}
+!macroend
diff --git a/packaging/nsis/logray-config.nsh.in b/packaging/nsis/logray-config.nsh.in
new file mode 100644
index 0000000..b083272
--- /dev/null
+++ b/packaging/nsis/logray-config.nsh.in
@@ -0,0 +1,30 @@
+# ============================================================================
+# NSIS configuration definitions. Generated from wireshark-config.nsh.in.
+# ============================================================================
+
+# Do not prefix comments with ";". They will be removed by CMake.
+
+# MUST match "<Product ... Name=" in wix/Wireshark.wxs.
+#define PROGRAM_NAME "@LOG_PROGRAM_NAME@"
+#define TOP_SRC_DIR "@TOP_SRC_DIR@"
+#define WIRESHARK_TARGET_PLATFORM @WIRESHARK_TARGET_PLATFORM@
+#define EXTRA_INSTALLER_DIR "@EXTRA_INSTALLER_DIR@"
+#define VERSION @LOG_PROJECT_VERSION@
+#define PRODUCT_VERSION @LOG_PRODUCT_VERSION@
+# Plugins
+#define MAJOR_VERSION @PROJECT_MAJOR_VERSION@
+#define MINOR_VERSION @PROJECT_MINOR_VERSION@
+
+#define VCREDIST_DIR "@VCREDIST_DIR@"
+#define VCREDIST_EXE "@VCREDIST_EXE@"
+
+# Optional components
+
+#cmakedefine MMDBRESOLVE_EXE @MMDBRESOLVE_EXE@
+
+# Skip the User's Guide until we have one of our own.
+#cmakeundefine DOCBOOK_DIR
+
+#cmakedefine SMI_DIR "@SMI_DIR@"
+
+#cmakedefine QT_DIR "@QT_DIR@"
diff --git a/packaging/nsis/logray.nsi b/packaging/nsis/logray.nsi
new file mode 100644
index 0000000..e87e3ca
--- /dev/null
+++ b/packaging/nsis/logray.nsi
@@ -0,0 +1,1105 @@
+;
+; logray.nsi
+;
+
+; Set the compression mechanism first.
+; As of NSIS 2.07, solid compression which makes installer about 1MB smaller
+; is no longer the default, so use the /SOLID switch.
+; This unfortunately is unknown to NSIS prior to 2.07 and creates an error.
+; So if you get an error here, please update to at least NSIS 2.07!
+SetCompressor /SOLID lzma
+SetCompressorDictSize 64 ; MB
+
+!include "logray-common.nsh"
+!include 'LogicLib.nsh'
+!include "StrFunc.nsh"
+!include "WordFunc.nsh"
+
+; See https://nsis.sourceforge.io/Check_if_a_file_exists_at_compile_time for documentation
+!macro !defineifexist _VAR_NAME _FILE_NAME
+ !tempfile _TEMPFILE
+ !ifdef NSIS_WIN32_MAKENSIS
+ ; Windows - cmd.exe
+ !system 'if exist "${_FILE_NAME}" echo !define ${_VAR_NAME} > "${_TEMPFILE}"'
+ !else
+ ; Posix - sh
+ !system 'if [ -e "${_FILE_NAME}" ]; then echo "!define ${_VAR_NAME}" > "${_TEMPFILE}"; fi'
+ !endif
+ !include '${_TEMPFILE}'
+ !delfile '${_TEMPFILE}'
+ !undef _TEMPFILE
+!macroend
+!define !defineifexist "!insertmacro !defineifexist"
+
+; ============================================================================
+; Header configuration
+; ============================================================================
+
+; The file to write
+OutFile "${OUTFILE_DIR}\${PROGRAM_NAME}-${VERSION}-${WIRESHARK_TARGET_PLATFORM}.exe"
+; Installer icon
+Icon "${TOP_SRC_DIR}\resources\icons\lograyinst.ico"
+
+; ============================================================================
+; Modern UI
+; ============================================================================
+; The modern user interface will look much better than the common one.
+; However, as the development of the modern UI is still going on, and the script
+; syntax changes, you will need exactly that NSIS version, which this script is
+; made for. This is the current (December 2003) latest version: V2.0b4
+; If you are using a different version, it's not predictable what will happen.
+
+!include "MUI2.nsh"
+!include "InstallOptions.nsh"
+;!addplugindir ".\Plugins"
+
+!define MUI_ICON "${TOP_SRC_DIR}\resources\icons\lograyinst.ico"
+BrandingText "Logray${U+00ae} Installer"
+
+!define MUI_COMPONENTSPAGE_SMALLDESC
+!define MUI_FINISHPAGE_NOAUTOCLOSE
+!define MUI_WELCOMEPAGE_TITLE_3LINES
+!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of ${PROGRAM_NAME}.$\r$\n$\r$\nBefore starting the installation, make sure ${PROGRAM_NAME} is not running.$\r$\n$\r$\nClick 'Next' to continue."
+
+; NSIS shows Readme files by opening the Readme file with the default application for
+; the file's extension. "README.win32" won't work in most cases, because extension "win32"
+; is usually not associated with an appropriate text editor. We should use extension "txt"
+; for a text file or "html" for an html README file.
+!define MUI_FINISHPAGE_TITLE_3LINES
+!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\NEWS.txt"
+!define MUI_FINISHPAGE_SHOWREADME_TEXT "Show News"
+!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
+; NSIS runs as Administrator and will run Logray as Administrator
+; if these are enabled.
+;!define MUI_FINISHPAGE_RUN "$INSTDIR\${PROGRAM_NAME_PATH}"
+;!define MUI_FINISHPAGE_RUN_NOTCHECKED
+
+; ============================================================================
+; MUI Pages
+; ============================================================================
+
+!insertmacro MUI_PAGE_WELCOME
+
+!define MUI_LICENSEPAGE_TEXT_TOP "Logray is distributed under the GNU General Public License."
+!define MUI_LICENSEPAGE_TEXT_BOTTOM "This is not an end user license agreement (EULA). It is provided here for informational purposes only."
+!define MUI_LICENSEPAGE_BUTTON "Noted"
+!insertmacro MUI_PAGE_LICENSE "${STAGING_DIR}\COPYING.txt"
+
+!insertmacro MUI_PAGE_COMPONENTS
+!ifdef QT_DIR
+Page custom DisplayAdditionalTasksPage LeaveAdditionalTasksPage
+!endif
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+; ============================================================================
+; MUI Languages
+; ============================================================================
+
+!insertmacro MUI_LANGUAGE "English"
+
+; ============================================================================
+; Reserve Files
+; ============================================================================
+
+ ;Things that need to be extracted on first (keep these lines before any File command!)
+ ;Only useful for BZIP2 compression
+
+ ; Old Modern 1 UI: https://nsis.sourceforge.io/Docs/Modern%20UI/Readme.html
+ ; To do: Upgrade to the Modern 2 UI:
+ ;ReserveFile "AdditionalTasksPage.ini"
+ ReserveFile /plugin InstallOptions.dll
+
+ ; Modern UI 2 / nsDialog pages.
+ ; https://nsis.sourceforge.io/Docs/Modern%20UI%202/Readme.html
+ ; https://nsis.sourceforge.io/Docs/nsDialogs/Readme.html
+ !ifdef QT_DIR
+ !include "logray-additional-tasks.nsdinc"
+ !endif
+
+; ============================================================================
+; Section macros
+; ============================================================================
+!include "Sections.nsh"
+
+; ============================================================================
+; Command Line
+; ============================================================================
+!include "FileFunc.nsh"
+
+!insertmacro GetParameters
+!insertmacro GetOptions
+
+; ========= Install extcap binary and help file =========
+!macro InstallExtcap EXTCAP_NAME
+
+ SetOutPath $INSTDIR
+ File "${STAGING_DIR}\${EXTCAP_NAME}.html"
+ SetOutPath $INSTDIR\extcap
+ File "${STAGING_DIR}\extcap\${EXTCAP_NAME}.exe"
+
+!macroend
+
+; ========= Check if silent mode install of /EXTRACOMPONENTS =========
+!macro CheckExtrasFlag EXTRAS_NAME
+ !define EXTRAS_FLAG ${__LINE__}
+Section
+ IfSilent +1 skip_${EXTRAS_FLAG}
+ push $R0
+ push $R1
+ push $R2
+ ${GetParameters} $R0
+ ${GetOptions} $R0 "/EXTRACOMPONENTS=" $R1
+ IfErrors popreg_${EXTRAS_FLAG}
+ ${WordFind} $R1 "," "E+1" $R0
+
+; No delimiters found - check for single word match
+ ${If} $R0 = 1
+ StrCmp $R1 ${EXTRAS_NAME} install_${EXTRAS_FLAG} popreg_${EXTRAS_FLAG}
+ ${ENDIF}
+
+; Loop through all delimited words checking for match
+ IntOp $R2 0 + 1
+ ${While} $R0 != 2
+ StrCmp $R0 ${EXTRAS_NAME} install_${EXTRAS_FLAG} 0
+ IntOp $R2 $R2 + 1
+ ${WordFind} $R1 "," "E+$R2" $R0
+ ${EndWhile}
+ Goto popreg_${EXTRAS_FLAG}
+
+install_${EXTRAS_FLAG}:
+ !insertmacro InstallExtcap ${EXTRAS_NAME}
+popreg_${EXTRAS_FLAG}:
+ pop $R2
+ pop $R1
+ pop $R0
+skip_${EXTRAS_FLAG}:
+ !undef EXTRAS_FLAG
+SectionEnd
+!macroend
+
+; ============================================================================
+; Component page configuration
+; ============================================================================
+ComponentText "The following components are available for installation."
+
+; ============================================================================
+; Directory selection page configuration
+; ============================================================================
+; The text to prompt the user to enter a directory
+DirText "Choose a directory in which to install ${PROGRAM_NAME}."
+
+; The default installation directory
+InstallDir $PROGRAMFILES64\${PROGRAM_NAME}
+
+; See if this is an upgrade; if so, use the old InstallDir as default
+InstallDirRegKey HKEY_LOCAL_MACHINE SOFTWARE\${PROGRAM_NAME} InstallDir
+
+
+; ============================================================================
+; Install page configuration
+; ============================================================================
+ShowInstDetails show
+
+; ============================================================================
+; Functions and macros
+; ============================================================================
+
+Var EXTENSION
+; https://docs.microsoft.com/en-us/windows/win32/shell/fa-file-types
+Function Associate
+ Push $R0
+ !insertmacro PushFileExtensions
+
+ Pop $EXTENSION
+
+ ${DoUntil} $EXTENSION == ${FILE_EXTENSION_MARKER}
+ ReadRegStr $R0 HKCR $EXTENSION ""
+ StrCmp $R0 "" Associate.doRegister
+ Goto Associate.end
+
+Associate.doRegister:
+ ;The extension is not associated to any program, we can do the link
+ WriteRegStr HKCR $EXTENSION "" ${LOGRAY_ASSOC}
+ DetailPrint "Registered file type: $EXTENSION"
+
+Associate.end:
+ Pop $EXTENSION
+ ${Loop}
+
+ Pop $R0
+FunctionEnd
+
+; Control states
+Var START_MENU_STATE
+Var DESKTOP_ICON_STATE
+Var FILE_ASSOCIATE_STATE
+
+; NSIS
+Var OLD_UNINSTALLER
+Var OLD_INSTDIR
+Var OLD_DISPLAYNAME
+Var TMP_UNINSTALLER
+
+; WiX
+Var REGISTRY_BITS
+Var TMP_PRODUCT_GUID
+Var WIX_DISPLAYNAME
+Var WIX_DISPLAYVERSION
+Var WIX_UNINSTALLSTRING
+
+; ============================================================================
+; 64-bit support
+; ============================================================================
+!include x64.nsh
+
+!include "GetWindowsVersion.nsh"
+!include WinMessages.nsh
+
+Function .onInit
+ !if ${WIRESHARK_TARGET_PLATFORM} == "x64"
+ ; http://forums.winamp.com/printthread.php?s=16ffcdd04a8c8d52bee90c0cae273ac5&threadid=262873
+ ${IfNot} ${RunningX64}
+ MessageBox MB_OK "Logray only runs on 64-bit machines." /SD IDOK
+ Abort
+ ${EndIf}
+ !endif
+
+ ; Get the Windows version
+ ${GetWindowsVersion} $R0
+
+ ; This should match the following:
+ ; - The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in
+ ; - The <compatibility><application> section in image\wireshark.exe.manifest.in
+ ; - The VersionNT parts of packaging\wix\Prerequisites.wxi
+
+ ; Uncomment to test.
+ ; MessageBox MB_OK "You're running Windows $R0."
+
+ ; Check if we're able to run with this version
+ StrCmp $R0 '95' lbl_winversion_unsupported
+ StrCmp $R0 '98' lbl_winversion_unsupported
+ StrCmp $R0 'ME' lbl_winversion_unsupported
+ StrCmp $R0 'NT 4.0' lbl_winversion_unsupported
+ StrCmp $R0 '2000' lbl_winversion_unsupported
+ StrCmp $R0 'XP' lbl_winversion_unsupported
+ StrCmp $R0 '2003' lbl_winversion_unsupported
+ StrCmp $R0 'Vista' lbl_winversion_unsupported
+ StrCmp $R0 '2008' lbl_winversion_unsupported
+ Goto lbl_winversion_supported
+
+lbl_winversion_unsupported:
+ MessageBox MB_OK \
+ "Windows $R0 is not supported." \
+ /SD IDOK
+ Quit
+
+lbl_winversion_supported:
+!insertmacro IsLograyRunning
+
+ ; Default control values.
+ StrCpy $START_MENU_STATE ${BST_CHECKED}
+ StrCpy $DESKTOP_ICON_STATE ${BST_UNCHECKED}
+ StrCpy $FILE_ASSOCIATE_STATE ${BST_CHECKED}
+
+ ; Copied from https://nsis.sourceforge.io/Auto-uninstall_old_before_installing_new
+ ReadRegStr $OLD_UNINSTALLER HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" \
+ "UninstallString"
+ StrCmp $OLD_UNINSTALLER "" check_wix
+
+ ReadRegStr $OLD_INSTDIR HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\App Paths\${PROGRAM_NAME}.exe" \
+ "Path"
+ StrCmp $OLD_INSTDIR "" check_wix
+
+ ReadRegStr $OLD_DISPLAYNAME HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" \
+ "DisplayName"
+ StrCmp $OLD_DISPLAYNAME "" done
+
+ ; We're reinstalling. Flip our control states according to what the
+ ; user chose before.
+ ; (we use the "all users" start menu, so select it first)
+ SetShellVarContext all
+ ; MessageBox MB_OK|MB_ICONINFORMATION "oninit 1 sm $START_MENU_STATE di $DESKTOP_ICON_STATE"
+ ${IfNot} ${FileExists} $SMPROGRAMS\${PROGRAM_NAME}.lnk
+ StrCpy $START_MENU_STATE ${BST_UNCHECKED}
+ ${Endif}
+ ${If} ${FileExists} $DESKTOP\${PROGRAM_NAME}.lnk
+ StrCpy $DESKTOP_ICON_STATE ${BST_CHECKED}
+ ${Endif}
+ ; Leave FILE_ASSOCIATE_STATE checked.
+ ; MessageBox MB_OK|MB_ICONINFORMATION "oninit 2 sm $START_MENU_STATE $SMPROGRAMS\${PROGRAM_NAME}\${PROGRAM_NAME}.lnk \
+ ; $\ndi $DESKTOP_ICON_STATE $DESKTOP\${PROGRAM_NAME}.lnk
+
+ MessageBox MB_YESNOCANCEL|MB_ICONQUESTION \
+ "$OLD_DISPLAYNAME is already installed.\
+ $\n$\nWould you like to uninstall it first?" \
+ /SD IDYES \
+ IDYES prep_nsis_uninstaller \
+ IDNO done
+ Abort
+
+; Copy the uninstaller to $TEMP and run it.
+; The uninstaller normally does this by itself, but doesn't wait around
+; for the executable to finish, which means ExecWait won't work correctly.
+prep_nsis_uninstaller:
+ ClearErrors
+ StrCpy $TMP_UNINSTALLER "$TEMP\${PROGRAM_NAME}_uninstaller.exe"
+ ; ...because we surround UninstallString in quotes.
+ StrCpy $0 $OLD_UNINSTALLER -1 1
+ StrCpy $1 "$TEMP\${PROGRAM_NAME}_uninstaller.exe"
+ StrCpy $2 1
+ System::Call 'kernel32::CopyFile(t r0, t r1, b r2) 1'
+ ExecWait "$TMP_UNINSTALLER /S _?=$OLD_INSTDIR"
+
+ Delete "$TMP_UNINSTALLER"
+
+; Look for a WiX-installed package.
+
+check_wix:
+ StrCpy $REGISTRY_BITS 64
+ SetRegView 64
+ check_wix_restart:
+ StrCpy $0 0
+ wix_reg_enum_loop:
+ EnumRegKey $TMP_PRODUCT_GUID HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" $0
+ StrCmp $TMP_PRODUCT_GUID "" wix_enum_reg_done
+ IntOp $0 $0 + 1
+ ReadRegStr $WIX_DISPLAYNAME HKLM \
+ "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$TMP_PRODUCT_GUID" \
+ "DisplayName"
+ ; MessageBox MB_OK|MB_ICONINFORMATION "Reading HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$1 DisplayName = $2"
+ ; Look for "Logray".
+ StrCmp $WIX_DISPLAYNAME "${PROGRAM_NAME}" wix_found wix_reg_enum_loop
+
+ wix_found:
+ ReadRegStr $WIX_DISPLAYVERSION HKLM \
+ "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$TMP_PRODUCT_GUID" \
+ "DisplayVersion"
+ ReadRegStr $WIX_UNINSTALLSTRING HKLM \
+ "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$TMP_PRODUCT_GUID" \
+ "UninstallString"
+ StrCmp $WIX_UNINSTALLSTRING "" done
+ MessageBox MB_YESNOCANCEL|MB_ICONQUESTION \
+ "$WIX_DISPLAYNAME $WIX_DISPLAYVERSION (msi) is already installed.\
+ $\n$\nWould you like to uninstall it first?" \
+ /SD IDYES \
+ IDYES prep_wix_uninstaller \
+ IDNO done
+ Abort
+
+ ; Run the WiX-provided UninstallString.
+ prep_wix_uninstaller:
+ ClearErrors
+ ExecWait "$WIX_UNINSTALLSTRING"
+
+ Goto done
+
+ wix_enum_reg_done:
+ ; MessageBox MB_OK|MB_ICONINFORMATION "Checked $0 $REGISTRY_BITS bit keys"
+ IntCmp $REGISTRY_BITS 32 done
+ StrCpy $REGISTRY_BITS 32
+ SetRegView 32
+ Goto check_wix_restart
+
+done:
+
+ ; Command line parameters
+ ${GetParameters} $R0
+
+ ${GetOptions} $R0 "/desktopicon=" $R1
+ ${If} $R1 == "yes"
+ StrCpy $DESKTOP_ICON_STATE ${BST_CHECKED}
+ ${ElseIf} $R1 == "no"
+ StrCpy $DESKTOP_ICON_STATE ${BST_UNCHECKED}
+ ${Endif}
+
+ ;Extract InstallOptions INI files
+ ;!insertmacro INSTALLOPTIONS_EXTRACT "AdditionalTasksPage.ini"
+FunctionEnd
+
+!ifdef QT_DIR
+Function DisplayAdditionalTasksPage
+ Call fnc_AdditionalTasksPage_Show
+FunctionEnd
+!endif
+
+; ============================================================================
+; Installation execution commands
+; ============================================================================
+
+Section "-Required"
+;-------------------------------------------
+
+;
+; Install for every user
+;
+SetShellVarContext all
+
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\${UNINSTALLER_NAME}"
+File "${STAGING_DIR}\libwiretap.dll"
+File "${STAGING_DIR}\libwireshark.dll"
+File "${STAGING_DIR}\libwsutil.dll"
+
+!include logray-manifest.nsh
+
+File "${STAGING_DIR}\COPYING.txt"
+File "${STAGING_DIR}\NEWS.txt"
+File "${STAGING_DIR}\README.txt"
+File "${STAGING_DIR}\README.windows.txt"
+File "${STAGING_DIR}\wka"
+File "${STAGING_DIR}\pdml2html.xsl"
+File "${STAGING_DIR}\ws.css"
+;File "${STAGING_DIR}\logray.html"
+File "${STAGING_DIR}\wireshark-filter.html"
+File "${STAGING_DIR}\dumpcap.exe"
+File "${STAGING_DIR}\dumpcap.html"
+File "${STAGING_DIR}\extcap.html"
+File "${STAGING_DIR}\ipmap.html"
+
+; C-runtime redistributable
+; vc_redist.x64.exe or vc_redist.x86.exe - copy and execute the redistributable installer
+File "${VCREDIST_DIR}\${VCREDIST_EXE}"
+; If the user already has the redistributable installed they will see a
+; Big Ugly Dialog by default, asking if they want to uninstall or repair.
+; Ideally we should add a checkbox for this somewhere. In the meantime,
+; just do a "quiet" install.
+
+; http://asawicki.info/news_1597_installing_visual_c_redistributable_package_from_command_line.html
+ExecWait '"$INSTDIR\${VCREDIST_EXE}" /install /quiet /norestart' $0
+DetailPrint "${VCREDIST_EXE} returned $0"
+
+; https://docs.microsoft.com/en-us/windows/desktop/Msi/error-codes
+!define ERROR_SUCCESS 0
+!define ERROR_SUCCESS_REBOOT_INITIATED 1641
+!define ERROR_PRODUCT_VERSION 1638
+!define ERROR_SUCCESS_REBOOT_REQUIRED 3010
+${Switch} $0
+ ${Case} ${ERROR_SUCCESS}
+ ${Case} ${ERROR_PRODUCT_VERSION}
+ ${Break}
+ ${Case} ${ERROR_SUCCESS_REBOOT_INITIATED} ; Shouldn't happen.
+ ${Case} ${ERROR_SUCCESS_REBOOT_REQUIRED}
+ SetRebootFlag true
+ ${Break}
+ ${Default}
+ MessageBox MB_OK "The Visual C++ Redistributable installer failed with error $0.$\nUnable to continue installation." /SD IDOK
+ Abort
+ ${Break}
+${EndSwitch}
+
+Delete "$INSTDIR\${VCREDIST_EXE}"
+
+
+; global config files - don't overwrite if already existing
+;IfFileExists cfilters dont_overwrite_cfilters
+File "${STAGING_DIR}\cfilters"
+;dont_overwrite_cfilters:
+;IfFileExists colorfilters dont_overwrite_colorfilters
+File "${STAGING_DIR}\colorfilters"
+;dont_overwrite_colorfilters:
+;IfFileExists dfilters dont_overwrite_dfilters
+File "${STAGING_DIR}\dfilters"
+;dont_overwrite_dfilters:
+;IfFileExists smi_modules dont_overwrite_smi_modules
+File "${STAGING_DIR}\smi_modules"
+;dont_overwrite_smi_modules:
+
+
+;
+; Install the Diameter DTD and XML files in the "diameter" subdirectory
+; of the installation directory.
+;
+SetOutPath $INSTDIR\diameter
+File "${STAGING_DIR}\diameter\AlcatelLucent.xml"
+File "${STAGING_DIR}\diameter\chargecontrol.xml"
+File "${STAGING_DIR}\diameter\Cisco.xml"
+File "${STAGING_DIR}\diameter\CiscoSystems.xml"
+File "${STAGING_DIR}\diameter\Custom.xml"
+File "${STAGING_DIR}\diameter\dictionary.dtd"
+File "${STAGING_DIR}\diameter\dictionary.xml"
+File "${STAGING_DIR}\diameter\eap.xml"
+File "${STAGING_DIR}\diameter\Ericsson.xml"
+File "${STAGING_DIR}\diameter\etsie2e4.xml"
+File "${STAGING_DIR}\diameter\HP.xml"
+File "${STAGING_DIR}\diameter\Huawei.xml"
+File "${STAGING_DIR}\diameter\Inovar.xml"
+File "${STAGING_DIR}\diameter\Juniper.xml"
+File "${STAGING_DIR}\diameter\Metaswitch.xml"
+File "${STAGING_DIR}\diameter\Microsoft.xml"
+File "${STAGING_DIR}\diameter\mobileipv4.xml"
+File "${STAGING_DIR}\diameter\mobileipv6.xml"
+File "${STAGING_DIR}\diameter\nasreq.xml"
+File "${STAGING_DIR}\diameter\Nokia.xml"
+File "${STAGING_DIR}\diameter\NokiaSolutionsAndNetworks.xml"
+File "${STAGING_DIR}\diameter\Oracle.xml"
+File "${STAGING_DIR}\diameter\Siemens.xml"
+File "${STAGING_DIR}\diameter\sip.xml"
+File "${STAGING_DIR}\diameter\Starent.xml"
+File "${STAGING_DIR}\diameter\sunping.xml"
+File "${STAGING_DIR}\diameter\Telefonica.xml"
+File "${STAGING_DIR}\diameter\TGPP.xml"
+File "${STAGING_DIR}\diameter\TGPP2.xml"
+File "${STAGING_DIR}\diameter\Vodafone.xml"
+File "${STAGING_DIR}\diameter\VerizonWireless.xml"
+!include "custom_diameter_xmls.txt"
+SetOutPath $INSTDIR
+
+;
+; Install the RADIUS directory files in the "radius" subdirectory
+; of the installation directory.
+;
+SetOutPath $INSTDIR\radius
+File "${STAGING_DIR}\radius\README.radius_dictionary"
+File "${STAGING_DIR}\radius\custom.includes"
+File "${STAGING_DIR}\radius\dictionary"
+File "${STAGING_DIR}\radius\dictionary.3com"
+File "${STAGING_DIR}\radius\dictionary.3gpp"
+File "${STAGING_DIR}\radius\dictionary.3gpp2"
+File "${STAGING_DIR}\radius\dictionary.5x9"
+File "${STAGING_DIR}\radius\dictionary.acc"
+File "${STAGING_DIR}\radius\dictionary.acme"
+File "${STAGING_DIR}\radius\dictionary.actelis"
+File "${STAGING_DIR}\radius\dictionary.aerohive"
+File "${STAGING_DIR}\radius\dictionary.airespace"
+File "${STAGING_DIR}\radius\dictionary.alcatel"
+File "${STAGING_DIR}\radius\dictionary.alcatel-lucent.aaa"
+File "${STAGING_DIR}\radius\dictionary.alcatel.esam"
+File "${STAGING_DIR}\radius\dictionary.alcatel.sr"
+File "${STAGING_DIR}\radius\dictionary.alteon"
+File "${STAGING_DIR}\radius\dictionary.altiga"
+File "${STAGING_DIR}\radius\dictionary.alvarion"
+File "${STAGING_DIR}\radius\dictionary.alvarion.wimax.v2_2"
+File "${STAGING_DIR}\radius\dictionary.apc"
+File "${STAGING_DIR}\radius\dictionary.aptilo"
+File "${STAGING_DIR}\radius\dictionary.aptis"
+File "${STAGING_DIR}\radius\dictionary.arbor"
+File "${STAGING_DIR}\radius\dictionary.aruba"
+File "${STAGING_DIR}\radius\dictionary.ascend"
+File "${STAGING_DIR}\radius\dictionary.asn"
+File "${STAGING_DIR}\radius\dictionary.audiocodes"
+File "${STAGING_DIR}\radius\dictionary.avaya"
+File "${STAGING_DIR}\radius\dictionary.azaire"
+File "${STAGING_DIR}\radius\dictionary.bay"
+File "${STAGING_DIR}\radius\dictionary.bintec"
+File "${STAGING_DIR}\radius\dictionary.bluecoat"
+File "${STAGING_DIR}\radius\dictionary.bristol"
+File "${STAGING_DIR}\radius\dictionary.broadsoft"
+File "${STAGING_DIR}\radius\dictionary.brocade"
+File "${STAGING_DIR}\radius\dictionary.bskyb"
+File "${STAGING_DIR}\radius\dictionary.bt"
+File "${STAGING_DIR}\radius\dictionary.cablelabs"
+File "${STAGING_DIR}\radius\dictionary.cabletron"
+File "${STAGING_DIR}\radius\dictionary.camiant"
+File "${STAGING_DIR}\radius\dictionary.chillispot"
+File "${STAGING_DIR}\radius\dictionary.cisco"
+File "${STAGING_DIR}\radius\dictionary.cisco.asa"
+File "${STAGING_DIR}\radius\dictionary.cisco.bbsm"
+File "${STAGING_DIR}\radius\dictionary.cisco.vpn3000"
+File "${STAGING_DIR}\radius\dictionary.cisco.vpn5000"
+File "${STAGING_DIR}\radius\dictionary.citrix"
+File "${STAGING_DIR}\radius\dictionary.clavister"
+File "${STAGING_DIR}\radius\dictionary.cnergee"
+File "${STAGING_DIR}\radius\dictionary.colubris"
+File "${STAGING_DIR}\radius\dictionary.columbia_university"
+File "${STAGING_DIR}\radius\dictionary.compat"
+File "${STAGING_DIR}\radius\dictionary.compatible"
+File "${STAGING_DIR}\radius\dictionary.cosine"
+File "${STAGING_DIR}\radius\dictionary.dante"
+File "${STAGING_DIR}\radius\dictionary.dellemc"
+File "${STAGING_DIR}\radius\dictionary.dhcp"
+File "${STAGING_DIR}\radius\dictionary.digium"
+File "${STAGING_DIR}\radius\dictionary.dlink"
+File "${STAGING_DIR}\radius\dictionary.dragonwave"
+File "${STAGING_DIR}\radius\dictionary.efficientip"
+File "${STAGING_DIR}\radius\dictionary.eltex"
+File "${STAGING_DIR}\radius\dictionary.enterasys"
+File "${STAGING_DIR}\radius\dictionary.epygi"
+File "${STAGING_DIR}\radius\dictionary.equallogic"
+File "${STAGING_DIR}\radius\dictionary.ericsson"
+File "${STAGING_DIR}\radius\dictionary.ericsson.ab"
+File "${STAGING_DIR}\radius\dictionary.ericsson.packet.core.networks"
+File "${STAGING_DIR}\radius\dictionary.extreme"
+File "${STAGING_DIR}\radius\dictionary.f5"
+File "${STAGING_DIR}\radius\dictionary.fdxtended"
+File "${STAGING_DIR}\radius\dictionary.fortinet"
+File "${STAGING_DIR}\radius\dictionary.foundry"
+File "${STAGING_DIR}\radius\dictionary.freedhcp"
+File "${STAGING_DIR}\radius\dictionary.freeradius"
+File "${STAGING_DIR}\radius\dictionary.freeradius.internal"
+File "${STAGING_DIR}\radius\dictionary.freeswitch"
+File "${STAGING_DIR}\radius\dictionary.gandalf"
+File "${STAGING_DIR}\radius\dictionary.garderos"
+File "${STAGING_DIR}\radius\dictionary.gemtek"
+File "${STAGING_DIR}\radius\dictionary.h3c"
+File "${STAGING_DIR}\radius\dictionary.hp"
+File "${STAGING_DIR}\radius\dictionary.huawei"
+File "${STAGING_DIR}\radius\dictionary.iana"
+File "${STAGING_DIR}\radius\dictionary.identity_engines"
+File "${STAGING_DIR}\radius\dictionary.iea"
+File "${STAGING_DIR}\radius\dictionary.infoblox"
+File "${STAGING_DIR}\radius\dictionary.infonet"
+File "${STAGING_DIR}\radius\dictionary.ipunplugged"
+File "${STAGING_DIR}\radius\dictionary.issanni"
+File "${STAGING_DIR}\radius\dictionary.itk"
+File "${STAGING_DIR}\radius\dictionary.jradius"
+File "${STAGING_DIR}\radius\dictionary.juniper"
+File "${STAGING_DIR}\radius\dictionary.karlnet"
+File "${STAGING_DIR}\radius\dictionary.kineto"
+File "${STAGING_DIR}\radius\dictionary.lancom"
+File "${STAGING_DIR}\radius\dictionary.livingston"
+File "${STAGING_DIR}\radius\dictionary.localweb"
+File "${STAGING_DIR}\radius\dictionary.lucent"
+File "${STAGING_DIR}\radius\dictionary.manzara"
+File "${STAGING_DIR}\radius\dictionary.meinberg"
+File "${STAGING_DIR}\radius\dictionary.meraki"
+File "${STAGING_DIR}\radius\dictionary.merit"
+File "${STAGING_DIR}\radius\dictionary.meru"
+File "${STAGING_DIR}\radius\dictionary.microsemi"
+File "${STAGING_DIR}\radius\dictionary.microsoft"
+File "${STAGING_DIR}\radius\dictionary.mikrotik"
+File "${STAGING_DIR}\radius\dictionary.motorola"
+File "${STAGING_DIR}\radius\dictionary.motorola.wimax"
+File "${STAGING_DIR}\radius\dictionary.navini"
+File "${STAGING_DIR}\radius\dictionary.netscreen"
+File "${STAGING_DIR}\radius\dictionary.networkphysics"
+File "${STAGING_DIR}\radius\dictionary.nexans"
+File "${STAGING_DIR}\radius\dictionary.nokia"
+File "${STAGING_DIR}\radius\dictionary.nokia.conflict"
+File "${STAGING_DIR}\radius\dictionary.nomadix"
+File "${STAGING_DIR}\radius\dictionary.nortel"
+File "${STAGING_DIR}\radius\dictionary.ntua"
+File "${STAGING_DIR}\radius\dictionary.openser"
+File "${STAGING_DIR}\radius\dictionary.packeteer"
+File "${STAGING_DIR}\radius\dictionary.paloalto"
+File "${STAGING_DIR}\radius\dictionary.patton"
+File "${STAGING_DIR}\radius\dictionary.perle"
+File "${STAGING_DIR}\radius\dictionary.propel"
+File "${STAGING_DIR}\radius\dictionary.prosoft"
+File "${STAGING_DIR}\radius\dictionary.proxim"
+File "${STAGING_DIR}\radius\dictionary.purewave"
+File "${STAGING_DIR}\radius\dictionary.quiconnect"
+File "${STAGING_DIR}\radius\dictionary.quintum"
+File "${STAGING_DIR}\radius\dictionary.redcreek"
+File "${STAGING_DIR}\radius\dictionary.rfc2865"
+File "${STAGING_DIR}\radius\dictionary.rfc2866"
+File "${STAGING_DIR}\radius\dictionary.rfc2867"
+File "${STAGING_DIR}\radius\dictionary.rfc2868"
+File "${STAGING_DIR}\radius\dictionary.rfc2869"
+File "${STAGING_DIR}\radius\dictionary.rfc3162"
+File "${STAGING_DIR}\radius\dictionary.rfc3576"
+File "${STAGING_DIR}\radius\dictionary.rfc3580"
+File "${STAGING_DIR}\radius\dictionary.rfc4072"
+File "${STAGING_DIR}\radius\dictionary.rfc4372"
+File "${STAGING_DIR}\radius\dictionary.rfc4603"
+File "${STAGING_DIR}\radius\dictionary.rfc4675"
+File "${STAGING_DIR}\radius\dictionary.rfc4679"
+File "${STAGING_DIR}\radius\dictionary.rfc4818"
+File "${STAGING_DIR}\radius\dictionary.rfc4849"
+File "${STAGING_DIR}\radius\dictionary.rfc5090"
+File "${STAGING_DIR}\radius\dictionary.rfc5176"
+File "${STAGING_DIR}\radius\dictionary.rfc5447"
+File "${STAGING_DIR}\radius\dictionary.rfc5580"
+File "${STAGING_DIR}\radius\dictionary.rfc5607"
+File "${STAGING_DIR}\radius\dictionary.rfc5904"
+File "${STAGING_DIR}\radius\dictionary.rfc6519"
+File "${STAGING_DIR}\radius\dictionary.rfc6572"
+File "${STAGING_DIR}\radius\dictionary.rfc6677"
+File "${STAGING_DIR}\radius\dictionary.rfc6911"
+File "${STAGING_DIR}\radius\dictionary.rfc6929"
+File "${STAGING_DIR}\radius\dictionary.rfc6930"
+File "${STAGING_DIR}\radius\dictionary.rfc7055"
+File "${STAGING_DIR}\radius\dictionary.rfc7155"
+File "${STAGING_DIR}\radius\dictionary.rfc7268"
+File "${STAGING_DIR}\radius\dictionary.rfc7499"
+File "${STAGING_DIR}\radius\dictionary.rfc7930"
+File "${STAGING_DIR}\radius\dictionary.riverbed"
+File "${STAGING_DIR}\radius\dictionary.riverstone"
+File "${STAGING_DIR}\radius\dictionary.roaringpenguin"
+File "${STAGING_DIR}\radius\dictionary.ruckus"
+File "${STAGING_DIR}\radius\dictionary.ruggedcom"
+File "${STAGING_DIR}\radius\dictionary.sangoma"
+File "${STAGING_DIR}\radius\dictionary.sg"
+File "${STAGING_DIR}\radius\dictionary.shasta"
+File "${STAGING_DIR}\radius\dictionary.shiva"
+File "${STAGING_DIR}\radius\dictionary.siemens"
+File "${STAGING_DIR}\radius\dictionary.slipstream"
+File "${STAGING_DIR}\radius\dictionary.sofaware"
+File "${STAGING_DIR}\radius\dictionary.sonicwall"
+File "${STAGING_DIR}\radius\dictionary.springtide"
+File "${STAGING_DIR}\radius\dictionary.starent"
+File "${STAGING_DIR}\radius\dictionary.starent.vsa1"
+File "${STAGING_DIR}\radius\dictionary.surfnet"
+File "${STAGING_DIR}\radius\dictionary.symbol"
+File "${STAGING_DIR}\radius\dictionary.t_systems_nova"
+File "${STAGING_DIR}\radius\dictionary.telebit"
+File "${STAGING_DIR}\radius\dictionary.telkom"
+File "${STAGING_DIR}\radius\dictionary.terena"
+File "${STAGING_DIR}\radius\dictionary.trapeze"
+File "${STAGING_DIR}\radius\dictionary.travelping"
+File "${STAGING_DIR}\radius\dictionary.tropos"
+File "${STAGING_DIR}\radius\dictionary.ukerna"
+File "${STAGING_DIR}\radius\dictionary.unisphere"
+File "${STAGING_DIR}\radius\dictionary.unix"
+File "${STAGING_DIR}\radius\dictionary.usr"
+File "${STAGING_DIR}\radius\dictionary.utstarcom"
+File "${STAGING_DIR}\radius\dictionary.valemount"
+File "${STAGING_DIR}\radius\dictionary.versanet"
+File "${STAGING_DIR}\radius\dictionary.verizon"
+File "${STAGING_DIR}\radius\dictionary.vqp"
+File "${STAGING_DIR}\radius\dictionary.walabi"
+File "${STAGING_DIR}\radius\dictionary.waverider"
+File "${STAGING_DIR}\radius\dictionary.wichorus"
+File "${STAGING_DIR}\radius\dictionary.wimax"
+File "${STAGING_DIR}\radius\dictionary.wimax.alvarion"
+File "${STAGING_DIR}\radius\dictionary.wimax.wichorus"
+File "${STAGING_DIR}\radius\dictionary.wispr"
+File "${STAGING_DIR}\radius\dictionary.xedia"
+File "${STAGING_DIR}\radius\dictionary.xylan"
+File "${STAGING_DIR}\radius\dictionary.yubico"
+File "${STAGING_DIR}\radius\dictionary.zeus"
+File "${STAGING_DIR}\radius\dictionary.zte"
+File "${STAGING_DIR}\radius\dictionary.zyxel"
+!include "custom_radius_dict.txt"
+SetOutPath $INSTDIR
+
+;
+; install the dtds in the dtds subdirectory
+;
+SetOutPath $INSTDIR\dtds
+File "${STAGING_DIR}\dtds\dc.dtd"
+File "${STAGING_DIR}\dtds\itunes.dtd"
+File "${STAGING_DIR}\dtds\mscml.dtd"
+File "${STAGING_DIR}\dtds\pocsettings.dtd"
+File "${STAGING_DIR}\dtds\presence.dtd"
+File "${STAGING_DIR}\dtds\reginfo.dtd"
+File "${STAGING_DIR}\dtds\rlmi.dtd"
+File "${STAGING_DIR}\dtds\rss.dtd"
+File "${STAGING_DIR}\dtds\smil.dtd"
+File "${STAGING_DIR}\dtds\xcap-caps.dtd"
+File "${STAGING_DIR}\dtds\xcap-error.dtd"
+File "${STAGING_DIR}\dtds\watcherinfo.dtd"
+SetOutPath $INSTDIR
+
+; Create the extcap directory
+CreateDirectory $INSTDIR\extcap
+
+;
+; install the protobuf .proto definitions in the protobuf subdirectory
+;
+SetOutPath $INSTDIR\protobuf
+File "${STAGING_DIR}\protobuf\*.proto"
+
+; Install the TPNCP DAT file in the "tpncp" subdirectory
+; of the installation directory.
+SetOutPath $INSTDIR\tpncp
+File "${STAGING_DIR}\tpncp\tpncp.dat"
+
+; Write the installation path into the registry for InstallDirRegKey
+WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\${PROGRAM_NAME} InstallDir "$INSTDIR"
+
+; Write the uninstall keys for Windows
+; https://nsis.sourceforge.io/Add_uninstall_information_to_Add/Remove_Programs
+; https://docs.microsoft.com/en-us/previous-versions/ms954376(v=msdn.10)
+; https://docs.microsoft.com/en-us/windows/win32/msi/uninstall-registry-key
+!define UNINSTALL_PATH "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}"
+
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "Comments" "${DISPLAY_NAME}"
+!ifdef QT_DIR
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "DisplayIcon" "$INSTDIR\${PROGRAM_NAME_PATH},0"
+!endif
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "DisplayName" "${DISPLAY_NAME}"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "DisplayVersion" "${VERSION}"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "HelpLink" "https://ask.wireshark.org/"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "InstallLocation" "$INSTDIR"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "Publisher" "The Logray developer community, https://www.wireshark.org"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "URLInfoAbout" "https://www.wireshark.org"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "URLUpdateInfo" "https://www.wireshark.org/download.html"
+
+WriteRegDWORD HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "NoModify" 1
+WriteRegDWORD HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "NoRepair" 1
+WriteRegDWORD HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "VersionMajor" ${MAJOR_VERSION}
+WriteRegDWORD HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "VersionMinor" ${MINOR_VERSION}
+
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "UninstallString" '"$INSTDIR\${UNINSTALLER_NAME}"'
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "QuietUninstallString" '"$INSTDIR\${UNINSTALLER_NAME}" /S'
+
+; To quote https://web.archive.org/web/20150911221413/http://download.microsoft.com/download/0/4/6/046bbd36-0812-4c22-a870-41911c6487a6/WindowsUserExperience.pdf:
+; "Do not include Readme, Help, or Uninstall entries on the Programs menu."
+Delete "$SMPROGRAMS\${PROGRAM_NAME}\Wireshark Web Site.lnk"
+
+; Create file extensions if the Associated Tasks page check box
+; is checked.
+${If} $FILE_ASSOCIATE_STATE == ${BST_CHECKED}
+WriteRegStr HKCR ${LOGRAY_ASSOC} "" "Logray log file"
+WriteRegStr HKCR "${LOGRAY_ASSOC}\Shell\open\command" "" '"$INSTDIR\${PROGRAM_NAME_PATH}" "%1"'
+WriteRegStr HKCR "${LOGRAY_ASSOC}\DefaultIcon" "" '"$INSTDIR\${PROGRAM_NAME_PATH}",1'
+; We refresh the icon cache down in -Finally.
+Call Associate
+; If you add something here be sure to sync it with the uninstall section and the
+; AdditionalTasks page
+${Endif}
+
+SectionEnd ; "Required"
+
+!ifdef QT_DIR
+Section "${PROGRAM_NAME}" SecLograyQt
+;-------------------------------------------
+; by default, Logray.exe is installed
+SetOutPath $INSTDIR
+File "${QT_DIR}\${PROGRAM_NAME_PATH}"
+; Write an entry for ShellExecute
+WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\${PROGRAM_NAME_PATH}" "" '$INSTDIR\${PROGRAM_NAME_PATH}'
+WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\${PROGRAM_NAME_PATH}" "Path" '$INSTDIR'
+!include logray-qt-manifest.nsh
+
+${!defineifexist} TRANSLATIONS_FOLDER "${QT_DIR}\translations"
+SetOutPath $INSTDIR
+!ifdef TRANSLATIONS_FOLDER
+ ; Starting from Qt 5.5, *.qm files are put in a translations subfolder
+ File /r "${QT_DIR}\translations"
+!else
+ File "${QT_DIR}\*.qm"
+!endif
+
+; Is the Start Menu check box checked?
+${If} $START_MENU_STATE == ${BST_CHECKED}
+ CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}.lnk" "$INSTDIR\${PROGRAM_NAME_PATH}" "" "$INSTDIR\${PROGRAM_NAME_PATH}" 0 "" "" "${PROGRAM_FULL_NAME}"
+${Endif}
+
+${If} $DESKTOP_ICON_STATE == ${BST_CHECKED}
+ CreateShortCut "$DESKTOP\${PROGRAM_NAME}.lnk" "$INSTDIR\${PROGRAM_NAME_PATH}" "" "$INSTDIR\${PROGRAM_NAME_PATH}" 0 "" "" "${PROGRAM_FULL_NAME}"
+${Endif}
+
+SectionEnd ; "SecLograyQt"
+!endif
+
+
+Section "TShark" SecTShark
+;-------------------------------------------
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\tshark.exe"
+File "${STAGING_DIR}\tshark.html"
+SectionEnd
+
+SectionGroup "Plugins & Extensions" SecPluginsGroup
+
+Section "Dissector Plugins" SecPlugins
+;-------------------------------------------
+SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\falco-bridge.dll"
+SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\falco'
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\falco\cloudtrail.dll"
+!include "custom_plugins.txt"
+SectionEnd
+
+Section "Tree Statistics Plugin" SecStatsTree
+;-------------------------------------------
+SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\stats_tree.dll"
+SectionEnd
+
+Section "Mate - Meta Analysis and Tracing Engine" SecMate
+;-------------------------------------------
+SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\mate.dll"
+SectionEnd
+
+Section "Configuration Profiles" SecProfiles
+;-------------------------------------------
+; This should be a function or macro
+SetOutPath '$INSTDIR\profiles\Bluetooth'
+File "${STAGING_DIR}\profiles\Bluetooth\colorfilters"
+File "${STAGING_DIR}\profiles\Bluetooth\preferences"
+SetOutPath '$INSTDIR\profiles\Classic'
+File "${STAGING_DIR}\profiles\Classic\colorfilters"
+SetOutPath '$INSTDIR\profiles\No Reassembly'
+File "${STAGING_DIR}\profiles\No Reassembly\preferences"
+SectionEnd
+
+!ifdef SMI_DIR
+Section "SNMP MIBs" SecMIBs
+;-------------------------------------------
+SetOutPath '$INSTDIR\snmp\mibs'
+File "${SMI_DIR}\share\mibs\iana\*"
+File "${SMI_DIR}\share\mibs\ietf\*"
+File "${SMI_DIR}\share\mibs\irtf\*"
+File "${SMI_DIR}\share\mibs\tubs\*"
+File "${SMI_DIR}\share\pibs\*"
+File "${SMI_DIR}\share\yang\*.yang"
+!include "custom_mibs.txt"
+SectionEnd
+!endif
+
+SectionGroupEnd ; "Plugins / Extensions"
+
+
+SectionGroup "Tools" SecToolsGroup
+
+Section "Editcap" SecEditcap
+;-------------------------------------------
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\editcap.exe"
+File "${STAGING_DIR}\editcap.html"
+SectionEnd
+
+Section "Text2Pcap" SecText2Pcap
+;-------------------------------------------
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\text2pcap.exe"
+File "${STAGING_DIR}\text2pcap.html"
+SectionEnd
+
+Section "Mergecap" SecMergecap
+;-------------------------------------------
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\mergecap.exe"
+File "${STAGING_DIR}\mergecap.html"
+SectionEnd
+
+Section "Reordercap" SecReordercap
+;-------------------------------------------
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\reordercap.exe"
+File "${STAGING_DIR}\reordercap.html"
+SectionEnd
+
+Section "Capinfos" SecCapinfos
+;-------------------------------------------
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\capinfos.exe"
+File "${STAGING_DIR}\capinfos.html"
+SectionEnd
+
+Section "Captype" SecCaptype
+;-------------------------------------------
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\captype.exe"
+File "${STAGING_DIR}\captype.html"
+SectionEnd
+
+Section /o "Randpkt" SecRandpkt
+;-------------------------------------------
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\randpkt.exe"
+File "${STAGING_DIR}\randpkt.html"
+SectionEnd
+
+!ifdef MMDBRESOLVE_EXE
+Section "MMDBResolve" SecMMDBResolve
+;-------------------------------------------
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\mmdbresolve.html"
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\mmdbresolve.exe"
+SectionEnd
+!endif
+
+Section /o "Etwdump" SecEtwdump
+;-------------------------------------------
+ !insertmacro InstallExtcap "Etwdump"
+SectionEnd
+!insertmacro CheckExtrasFlag "Etwdump"
+
+SectionGroupEnd ; "Tools"
+
+!ifdef DOCBOOK_DIR
+Section "Documentation" SecDocumentation
+;-------------------------------------------
+SetOutPath "$INSTDIR\Wireshark User's Guide"
+File /r "${DOCBOOK_DIR}\wsug_html_chunked\*.*"
+
+SetOutPath $INSTDIR
+File "${DOCBOOK_DIR}\faq.html"
+SectionEnd
+!endif
+
+Section "-Finally"
+
+!insertmacro UpdateIcons
+
+; Compute and write the installation directory size
+${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
+IntFmt $0 "0x%08X" $0
+WriteRegDWORD HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "EstimatedSize" "$0"
+
+SectionEnd
+
+; ============================================================================
+; PLEASE MAKE SURE, THAT THE DESCRIPTIVE TEXT FITS INTO THE DESCRIPTION FIELD!
+; ============================================================================
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+!ifdef QT_DIR
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecLograyQt} "The main network protocol analyzer application."
+!endif
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecTShark} "Text based network protocol analyzer."
+
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsGroup} "Plugins and extensions for both ${PROGRAM_NAME} and TShark."
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} "Additional protocol dissectors."
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecStatsTree} "Extended statistics."
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecMate} "Plugin - Meta Analysis and Tracing Engine (Experimental)."
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecProfiles} "Configuration profiles"
+
+!ifdef SMI_DIR
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecMIBs} "SNMP MIBs for better SNMP dissection."
+!endif
+
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecToolsGroup} "Additional command line based tools."
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecEtwdump} "Provide ETW reader"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecEditCap} "Copy packets to a new file, optionally trimming packets, omitting them, or saving to a different format."
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecText2Pcap} "Read an ASCII hex dump and write the data into a libpcap-style capture file."
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecMergecap} "Combine multiple saved capture files into a single output file"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecReordercap} "Copy packets to a new file, sorted by time."
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecCapinfos} "Print information about capture files."
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecCaptype} "Print the types capture files."
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecRandpkt} "Random packet generator."
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecMMDBResolve} "MaxMind Database resolution tool"
+
+!ifdef DOCBOOK_DIR
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecDocumentation} "Install an offline copy of the User's Guide and FAQ."
+!endif
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+; ============================================================================
+; Callback functions
+; ============================================================================
+!ifdef QT_DIR
+
+Var QT_SELECTED
+
+; Called from fnc_AdditionalTasksPage_Create via DisplayAdditionalTasksPage.
+Function InitAdditionalTasksPage
+ ; We've created the Additional tasks page. Update our control states
+ ; before they are shown.
+ ; We set XXX_STATE -> XxxCheckBox here and go the other direction below.
+ ${NSD_SetState} $hCtl_AdditionalTasksPage_StartMenuCheckBox $START_MENU_STATE
+ ${NSD_SetState} $hCtl_AdditionalTasksPage_DesktopIconCheckBox $DESKTOP_ICON_STATE
+ ${NSD_SetState} $hCtl_AdditionalTasksPage_AssociateExtensionsCheckBox $FILE_ASSOCIATE_STATE
+
+ StrCpy $QT_SELECTED 0
+ ${If} ${SectionIsSelected} ${SecLograyQt}
+ StrCpy $QT_SELECTED 1
+ ${Endif}
+ EnableWindow $hCtl_AdditionalTasksPage_CreateShortcutsLabel $QT_SELECTED
+ EnableWindow $hCtl_AdditionalTasksPage_StartMenuCheckBox $QT_SELECTED
+ EnableWindow $hCtl_AdditionalTasksPage_DesktopIconCheckBox $QT_SELECTED
+
+ EnableWindow $hCtl_AdditionalTasksPage_ExtensionsLabel $QT_SELECTED
+ EnableWindow $hCtl_AdditionalTasksPage_AssociateExtensionsCheckBox $QT_SELECTED
+ EnableWindow $hCtl_AdditionalTasksPage_FileExtensionsLabel $QT_SELECTED
+FunctionEnd
+
+Function LeaveAdditionalTasksPage
+ ; We're leaving the Additional tasks page. Get our control states
+ ; before they're destroyed.
+ ; We set XxxCheckBox -> XXX_STATE here and go the other direction above.
+ ${NSD_GetState} $hCtl_AdditionalTasksPage_StartMenuCheckBox $START_MENU_STATE
+ ${NSD_GetState} $hCtl_AdditionalTasksPage_DesktopIconCheckBox $DESKTOP_ICON_STATE
+ ${NSD_GetState} $hCtl_AdditionalTasksPage_AssociateExtensionsCheckBox $FILE_ASSOCIATE_STATE
+FunctionEnd
+
+!endif ; QT_DIR
diff --git a/packaging/nsis/makeUninstall.ps1 b/packaging/nsis/makeUninstall.ps1
new file mode 100644
index 0000000..601b3ff
--- /dev/null
+++ b/packaging/nsis/makeUninstall.ps1
@@ -0,0 +1,47 @@
+# MakeUninstall.ps1
+#
+# Runs the uninstall_installer to create the uninstall.exe that can be signed
+# Uses set __COMPAT_LAYER=RunAsInvoker to not request elevation
+#
+# Copyright 2020 Graham Bloice <graham.bloice@trihedral.com>
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+#requires -version 2
+
+<#
+.SYNOPSIS
+Runs the uninstall_<application>_installer without invoking UAC.
+
+.DESCRIPTION
+This script runs the uninstall_<application>_installer that creates an
+uninstall exe but without invoking a UAC elevation prompt that is required
+by the uninstaller
+
+.PARAMETER Executable
+The path to the uninstall_<application>_installer.exe
+
+.INPUTS
+-Executable Path to the uninstaller installer.
+
+.OUTPUTS
+An unsigned uninstall-<application>.exe for signing
+
+.EXAMPLE
+C:\PS> .\makeUninstall.ps1 run\RelWithDebInfo\uninstall_wireshark_installer.exe
+#>
+
+Param(
+ [Parameter(Mandatory=$true, Position=0)]
+ [String] $Executable
+)
+
+# Stop the process requesting elevation, runs as the user
+$env:__COMPAT_LAYER = "RunAsInvoker"
+
+# And run the process
+Start-Process $Executable -Wait -NoNewWindow
diff --git a/packaging/nsis/mingw64-qt-mapping.txt b/packaging/nsis/mingw64-qt-mapping.txt
new file mode 100644
index 0000000..40ca2ef
--- /dev/null
+++ b/packaging/nsis/mingw64-qt-mapping.txt
@@ -0,0 +1,30 @@
+#
+# Generated by running
+# "windeployqt6.exe --no-compiler-runtime --no-translations --list mapping /path/to/Wireshark.exe"
+# on a Windows machine and editing by hand.
+#
+
+"bin/Qt6Core.dll" "Qt6Core.dll"
+"bin/Qt6Core5Compat.dll" "Qt6Core5Compat.dll"
+"bin/Qt6Gui.dll" "Qt6Gui.dll"
+"bin/Qt6Multimedia.dll" "Qt6Multimedia.dll"
+"bin/Qt6Network.dll" "Qt6Network.dll"
+"bin/Qt6PrintSupport.dll" "Qt6PrintSupport.dll"
+#"bin/Qt6Svg.dll" "Qt6Svg.dll"
+"bin/Qt6Widgets.dll" "Qt6Widgets.dll"
+#"bin/opengl32sw.dll" "opengl32sw.dll"
+#"bin/D3Dcompiler_47.dll" "D3Dcompiler_47.dll"
+"lib/qt6/plugins/generic/qtuiotouchplugin.dll" "generic/qtuiotouchplugin.dll"
+#"lib/qt6/plugins/iconengines/qsvgicon.dll" "iconengines/qsvgicon.dll"
+"lib/qt6/plugins/imageformats/qgif.dll" "imageformats/qgif.dll"
+"lib/qt6/plugins/imageformats/qico.dll" "imageformats/qico.dll"
+"lib/qt6/plugins/imageformats/qjpeg.dll" "imageformats/qjpeg.dll"
+#"lib/qt6/plugins/imageformats/qsvg.dll" "imageformats/qsvg.dll"
+#"lib/qt6/plugins/multimedia/ffmpegmediaplugin.dll" "multimedia/ffmpegmediaplugin.dll"
+"lib/qt6/plugins/multimedia/windowsmediaplugin.dll" "multimedia/windowsmediaplugin.dll"
+"lib/qt6/plugins/networkinformation/qnetworklistmanager.dll" "networkinformation/qnetworklistmanager.dll"
+"lib/qt6/plugins/platforms/qwindows.dll" "platforms/qwindows.dll"
+"lib/qt6/plugins/styles/qwindowsvistastyle.dll" "styles/qwindowsvistastyle.dll"
+"lib/qt6/plugins/tls/qcertonlybackend.dll" "tls/qcertonlybackend.dll"
+"lib/qt6/plugins/tls/qopensslbackend.dll" "tls/qopensslbackend.dll"
+"lib/qt6/plugins/tls/qschannelbackend.dll" "tls/qschannelbackend.dll"
diff --git a/packaging/nsis/servicelib.nsh b/packaging/nsis/servicelib.nsh
new file mode 100644
index 0000000..55f5116
--- /dev/null
+++ b/packaging/nsis/servicelib.nsh
@@ -0,0 +1,344 @@
+; from https://nsis.sourceforge.io/mediawiki/index.php?title=NSIS_Service_Lib&oldid=4726
+; un. functions disabled to prevent a NSIS warning
+;
+; NSIS SERVICE LIBRARY - servicelib.nsh
+; Version 1.2 - 02/29/2004
+; Questions/Comments - dselkirk@hotmail.com
+;
+; Description:
+; Provides an interface to window services
+;
+; Inputs:
+; action - systemlib action ie. create, delete, start, stop, pause,
+; continue, installed, running, status
+; name - name of service to manipulate
+; param - action parameters; usage: var1=value1;var2=value2;...etc.
+;
+; Actions:
+; create - creates a new windows service
+; Parameters:
+; path - path to service executable
+; autostart - automatically start with system ie. 1|0
+; interact - interact with the desktop ie. 1|0
+; machine - machine name where to install service
+; user - user that runs the service
+; password - password of the above user
+;
+; delete - deletes a windows service
+; start - start a stopped windows service
+; stop - stops a running windows service
+; pause - pauses a running windows service
+; continue - continues a paused windows service
+; installed - is the provided service installed
+; Parameters:
+; action - if true then invokes the specified action
+; running - is the provided service running
+; Parameters:
+; action - if true then invokes the specified action
+; status - check the status of the provided service
+;
+; If run from uninstall define "UN" as "un." gefore running.
+;
+; Usage:
+; Method 1:
+; Push "action"
+; Push "name"
+; Push "param"
+; Call Service
+; Pop $0 ;response
+;
+; Method 2:
+; !insertmacro SERVICE "action" "name" "param"
+;
+; History:
+; 1.0 - 09/15/2003 - Initial release
+; 1.1 - 09/16/2003 - Changed &l to i, thx brainsucker
+; 1.2 - 02/29/2004 - Fixed documentation.
+
+!ifndef SERVICELIB
+ !define SERVICELIB
+
+ !define SC_MANAGER_ALL_ACCESS 0x3F
+ !define SERVICE_ALL_ACCESS 0xF01FF
+
+ !define SERVICE_CONTROL_STOP 1
+ !define SERVICE_CONTROL_PAUSE 2
+ !define SERVICE_CONTROL_CONTINUE 3
+
+ !define SERVICE_STOPPED 0x1
+ !define SERVICE_START_PENDING 0x2
+ !define SERVICE_STOP_PENDING 0x3
+ !define SERVICE_RUNNING 0x4
+ !define SERVICE_CONTINUE_PENDING 0x5
+ !define SERVICE_PAUSE_PENDING 0x6
+ !define SERVICE_PAUSED 0x7
+
+ !ifndef UN
+ !define UN ""
+ !endif
+
+ !macro SERVICE ACTION NAME PARAM
+ Push '${ACTION}'
+ Push '${NAME}'
+ Push '${PARAM}'
+ Call ${UN}Service
+ !macroend
+
+ !macro FUNC_GETPARAM
+ Push $0
+ Push $1
+ Push $2
+ Push $3
+ Push $4
+ Push $5
+ Push $6
+ Push $7
+ Exch 8
+ Pop $1 ;name
+ Exch 8
+ Pop $2 ;source
+ StrCpy $0 ""
+ StrLen $7 $2
+ StrCpy $3 0
+ lbl_loop:
+ IntCmp $3 $7 0 0 lbl_done
+ StrLen $4 "$1="
+ StrCpy $5 $2 $4 $3
+ StrCmp $5 "$1=" 0 lbl_next
+ IntOp $5 $3 + $4
+ StrCpy $3 $5
+ lbl_loop2:
+ IntCmp $3 $7 0 0 lbl_done
+ StrCpy $6 $2 1 $3
+ StrCmp $6 ";" 0 lbl_next2
+ IntOp $6 $3 - $5
+ StrCpy $0 $2 $6 $5
+ Goto lbl_done
+ lbl_next2:
+ IntOp $3 $3 + 1
+ Goto lbl_loop2
+ lbl_next:
+ IntOp $3 $3 + 1
+ Goto lbl_loop
+ lbl_done:
+ Pop $5
+ Pop $4
+ Pop $3
+ Pop $2
+ Pop $1
+ Exch 2
+ Pop $6
+ Pop $7
+ Exch $0
+ !macroend
+
+ !macro CALL_GETPARAM VAR NAME DEFAULT LABEL
+ Push $1
+ Push ${NAME}
+ Call ${UN}GETPARAM
+ Pop $6
+ StrCpy ${VAR} "${DEFAULT}"
+ StrCmp $6 "" "${LABEL}" 0
+ StrCpy ${VAR} $6
+ !macroend
+
+ !macro FUNC_SERVICE UN
+ Push $0
+ Push $1
+ Push $2
+ Push $3
+ Push $4
+ Push $5
+ Push $6
+ Push $7
+ Exch 8
+ Pop $1 ;param
+ Exch 8
+ Pop $2 ;name
+ Exch 8
+ Pop $3 ;action
+ ;$0 return
+ ;$4 OpenSCManager
+ ;$5 OpenService
+
+
+ StrCpy $0 "false"
+ System::Call 'advapi32::OpenSCManagerA(n, n, i ${SC_MANAGER_ALL_ACCESS}) i.r4'
+ IntCmp $4 0 lbl_done
+ StrCmp $3 "create" lbl_create
+ System::Call 'advapi32::OpenServiceA(i r4, t r2, i ${SERVICE_ALL_ACCESS}) i.r5'
+ IntCmp $5 0 lbl_done
+
+ lbl_select:
+ StrCmp $3 "delete" lbl_delete
+ StrCmp $3 "start" lbl_start
+ StrCmp $3 "stop" lbl_stop
+ StrCmp $3 "pause" lbl_pause
+ StrCmp $3 "continue" lbl_continue
+ StrCmp $3 "installed" lbl_installed
+ StrCmp $3 "running" lbl_running
+ StrCmp $3 "status" lbl_status
+ Goto lbl_done
+
+ ; create service
+ lbl_create:
+ Push $R1 ;machine
+ Push $R2 ;user
+ Push $R3 ;password
+ Push $R4 ;interact
+ Push $R5 ;autostart
+ Push $R6 ;path
+
+ !insertmacro CALL_GETPARAM $R1 "machine" "n" "lbl_machine"
+ lbl_machine:
+
+ !insertmacro CALL_GETPARAM $R2 "user" "n" "lbl_user"
+ lbl_user:
+
+ !insertmacro CALL_GETPARAM $R3 "password" "n" "lbl_password"
+ lbl_password:
+
+ !insertmacro CALL_GETPARAM $R4 "interact" "0x10" "lbl_interact"
+ StrCpy $6 0x10
+ IntCmp $R4 0 +2
+ IntOp $R4 $6 | 0x100
+ StrCpy $R4 $6
+ lbl_interact:
+
+ !insertmacro CALL_GETPARAM $R5 "autostart" "0x3" "lbl_autostart"
+ StrCpy $6 0x3
+ IntCmp $R5 0 +2
+ StrCpy $6 0x2
+ StrCpy $R5 $6
+ lbl_autostart:
+
+ !insertmacro CALL_GETPARAM $R6 "path" "n" "lbl_path"
+ lbl_path:
+
+ System::Call 'advapi32::CreateServiceA(i r4, t r2, t r2, i ${SERVICE_ALL_ACCESS}, i R4, i R5, i 0, t R6, n, n, R1, R2, R3) i.r6'
+ Pop $R6
+ Pop $R5
+ Pop $R4
+ Pop $R3
+ Pop $R2
+ Pop $R1
+ StrCmp $6 0 lbl_done lbl_good
+
+ ; delete service
+ lbl_delete:
+ System::Call 'advapi32::DeleteService(i r5) i.r6'
+ StrCmp $6 0 lbl_done lbl_good
+
+ ; start service
+ lbl_start:
+ System::Call 'advapi32::StartServiceA(i r5, i 0, i 0) i.r6'
+ StrCmp $6 0 lbl_done lbl_good
+
+ ; stop service
+ lbl_stop:
+ Push $R1
+ System::Call '*(i,i,i,i,i,i,i) i.R1'
+ System::Call 'advapi32::ControlService(i r5, i ${SERVICE_CONTROL_STOP}, i $R1) i'
+ System::Free $R1
+ Pop $R1
+ StrCmp $6 0 lbl_done lbl_good
+
+ ; pause service
+ lbl_pause:
+ Push $R1
+ System::Call '*(i,i,i,i,i,i,i) i.R1'
+ System::Call 'advapi32::ControlService(i r5, i ${SERVICE_CONTROL_PAUSE}, i $R1) i'
+ System::Free $R1
+ Pop $R1
+ StrCmp $6 0 lbl_done lbl_good
+
+ ; continue service
+ lbl_continue:
+ Push $R1
+ System::Call '*(i,i,i,i,i,i,i) i.R1'
+ System::Call 'advapi32::ControlService(i r5, i ${SERVICE_CONTROL_CONTINUE}, i $R1) i'
+ System::Free $R1
+ Pop $R1
+ StrCmp $6 0 lbl_done lbl_good
+
+ ; is installed
+ lbl_installed:
+ !insertmacro CALL_GETPARAM $7 "action" "" "lbl_good"
+ StrCpy $3 $7
+ Goto lbl_select
+
+ ; is service running
+ lbl_running:
+ Push $R1
+ System::Call '*(i,i,i,i,i,i,i) i.R1'
+ System::Call 'advapi32::QueryServiceStatus(i r5, i $R1) i'
+ System::Call '*$R1(i, i.r6)'
+ System::Free $R1
+ Pop $R1
+ IntFmt $6 "0x%X" $6
+ StrCmp $6 ${SERVICE_RUNNING} 0 lbl_done
+ !insertmacro CALL_GETPARAM $7 "action" "" "lbl_good"
+ StrCpy $3 $7
+ Goto lbl_select
+
+ lbl_status:
+ Push $R1
+ System::Call '*(i,i,i,i,i,i,i) i.R1'
+ System::Call 'advapi32::QueryServiceStatus(i r5, i $R1) i'
+ System::Call '*$R1(i, i .r6)'
+ System::Free $R1
+ Pop $R1
+ IntFmt $6 "0x%X" $6
+ StrCpy $0 "running"
+ IntCmp $6 ${SERVICE_RUNNING} lbl_done
+ StrCpy $0 "stopped"
+ IntCmp $6 ${SERVICE_STOPPED} lbl_done
+ StrCpy $0 "start_pending"
+ IntCmp $6 ${SERVICE_START_PENDING} lbl_done
+ StrCpy $0 "stop_pending"
+ IntCmp $6 ${SERVICE_STOP_PENDING} lbl_done
+ StrCpy $0 "running"
+ IntCmp $6 ${SERVICE_RUNNING} lbl_done
+ StrCpy $0 "continue_pending"
+ IntCmp $6 ${SERVICE_CONTINUE_PENDING} lbl_done
+ StrCpy $0 "pause_pending"
+ IntCmp $6 ${SERVICE_PAUSE_PENDING} lbl_done
+ StrCpy $0 "paused"
+ IntCmp $6 ${SERVICE_PAUSED} lbl_done
+ StrCpy $0 "unknown"
+
+ lbl_good:
+ StrCpy $0 "true"
+ lbl_done:
+ IntCmp $5 0 +2
+ System::Call 'advapi32::CloseServiceHandle(i r5) n'
+ IntCmp $4 0 +2
+ System::Call 'advapi32::CloseServiceHandle(i r4) n'
+ Pop $4
+ Pop $3
+ Pop $2
+ Pop $1
+ Exch 3
+ Pop $5
+ Pop $6
+ Pop $7
+ Exch $0
+ !macroend
+
+ Function Service
+ !insertmacro FUNC_SERVICE ""
+ FunctionEnd
+
+; Function un.Service
+; !insertmacro FUNC_SERVICE "un."
+; FunctionEnd
+
+ Function GetParam
+ !insertmacro FUNC_GETPARAM
+ FunctionEnd
+
+; Function un.GetParam
+; !insertmacro FUNC_GETPARAM
+; FunctionEnd
+
+!endif
diff --git a/packaging/nsis/uninstall-logray.nsi b/packaging/nsis/uninstall-logray.nsi
new file mode 100644
index 0000000..5a8d440
--- /dev/null
+++ b/packaging/nsis/uninstall-logray.nsi
@@ -0,0 +1,274 @@
+;
+; uninstall-logray.nsi
+;
+
+; Create an installer that only writes an uninstaller.
+; https://nsis.sourceforge.io/Signing_an_Uninstaller
+
+!include "logray-common.nsh"
+!include 'LogicLib.nsh'
+!include x64.nsh
+!include "StrFunc.nsh"
+
+SetCompress off
+OutFile "${STAGING_DIR}\uninstall_logray_installer.exe"
+
+; InstType "un.Default (keep Personal Settings and Npcap)"
+InstType "un.All (remove all)"
+
+; Uninstaller icon
+UninstallIcon "..\..\resources\icons\lograyinst.ico"
+
+!include "MUI.nsh"
+
+!define MUI_UNICON "..\..\resources\icons\lograyinst.ico"
+
+; Uninstall stuff (NSIS 2.08: "\r\n" don't work here)
+!define MUI_UNCONFIRMPAGE_TEXT_TOP "The following ${PROGRAM_NAME} installation will be removed. Click 'Next' to continue."
+; Uninstall stuff (this text isn't used with the MODERN_UI!)
+;UninstallText "This will uninstall ${PROGRAM_NAME}.\r\nBefore starting the uninstallation, make sure ${PROGRAM_NAME} is not running.\r\nClick 'Next' to continue."
+
+!define MUI_UNFINISHPAGE_NOAUTOCLOSE
+!define MUI_WELCOMEPAGE_TITLE_3LINES
+!define MUI_FINISHPAGE_TITLE_3LINES
+
+!insertmacro MUI_UNPAGE_WELCOME
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_COMPONENTS
+!insertmacro MUI_UNPAGE_INSTFILES
+!insertmacro MUI_UNPAGE_FINISH
+
+!insertmacro MUI_LANGUAGE "English"
+
+; ============================================================================
+; Section macros
+; ============================================================================
+!include "Sections.nsh"
+
+; ============================================================================
+; Uninstall page configuration
+; ============================================================================
+ShowUninstDetails show
+
+; ============================================================================
+; Functions and macros
+; ============================================================================
+
+Function .onInit
+ ; MUST be the absolute path to our staging directory.
+ WriteUninstaller "${STAGING_DIR}\${UNINSTALLER_NAME}"
+ SetErrorLevel 0
+ Quit
+FunctionEnd
+
+Var EXTENSION
+Function un.Disassociate
+ Push $R0
+!insertmacro PushFileExtensions
+
+ Pop $EXTENSION
+ ${DoUntil} $EXTENSION == ${FILE_EXTENSION_MARKER}
+ ReadRegStr $R0 HKCR $EXTENSION ""
+ StrCmp $R0 ${LOGRAY_ASSOC} un.Disassociate.doDeregister
+ Goto un.Disassociate.end
+un.Disassociate.doDeregister:
+ ; The extension is associated with Logray so, we must destroy this!
+ DeleteRegKey HKCR $EXTENSION
+ DetailPrint "Deregistered file type: $EXTENSION"
+un.Disassociate.end:
+ Pop $EXTENSION
+ ${Loop}
+
+ Pop $R0
+FunctionEnd
+
+Section "-Required"
+SectionEnd
+
+!define EXECUTABLE_MARKER "EXECUTABLE_MARKER"
+Var EXECUTABLE
+
+Section "Uninstall" un.SecUinstall
+;-------------------------------------------
+;
+; UnInstall for every user
+;
+SectionIn 1 2
+SetShellVarContext all
+
+!insertmacro IsLograyRunning
+
+Push "${EXECUTABLE_MARKER}"
+Push "${PROGRAM_NAME}"
+Push "capinfos"
+Push "captype"
+Push "dftest"
+Push "dumpcap"
+Push "editcap"
+Push "mergecap"
+Push "reordercap"
+Push "text2pcap"
+
+!ifdef MMDBRESOLVE_EXE
+Push "mmdbresolve"
+!endif
+
+Pop $EXECUTABLE
+${DoUntil} $EXECUTABLE == ${EXECUTABLE_MARKER}
+
+ ; IsLograyRunning should make sure everything is closed down so we *shouldn't* run
+ ; into any problems here.
+ Delete "$INSTDIR\$EXECUTABLE.exe"
+ IfErrors 0 deletionSuccess
+ MessageBox MB_OK "$EXECUTABLE.exe could not be removed. Is it in use?" /SD IDOK IDOK 0
+ Abort "$EXECUTABLE.exe could not be removed. Aborting the uninstall process."
+
+deletionSuccess:
+ Pop $EXECUTABLE
+
+${Loop}
+
+
+DeleteRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}"
+DeleteRegKey HKEY_LOCAL_MACHINE "Software\${PROGRAM_NAME}"
+DeleteRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\${PROGRAM_NAME}.exe"
+
+Call un.Disassociate
+
+DeleteRegKey HKCR ${LOGRAY_ASSOC}
+DeleteRegKey HKCR "${LOGRAY_ASSOC}\Shell\open\command"
+DeleteRegKey HKCR "${LOGRAY_ASSOC}\DefaultIcon"
+
+Delete "$INSTDIR\*.dll"
+Delete "$INSTDIR\*.exe"
+Delete "$INSTDIR\*.html"
+Delete "$INSTDIR\*.qm"
+Delete "$INSTDIR\accessible\*.*"
+Delete "$INSTDIR\AUTHORS-SHORT"
+Delete "$INSTDIR\COPYING*"
+Delete "$INSTDIR\audio\*.*"
+Delete "$INSTDIR\bearer\*.*"
+Delete "$INSTDIR\diameter\*.*"
+Delete "$INSTDIR\gpl-2.0-standalone.html"
+Delete "$INSTDIR\Acknowledgements.md"
+Delete "$INSTDIR\help\*.*"
+Delete "$INSTDIR\iconengines\*.*"
+Delete "$INSTDIR\imageformats\*.*"
+Delete "$INSTDIR\mediaservice\*.*"
+Delete "$INSTDIR\networkinformation\*.*"
+Delete "$INSTDIR\platforms\*.*"
+Delete "$INSTDIR\playlistformats\*.*"
+Delete "$INSTDIR\printsupport\*.*"
+Delete "$INSTDIR\share\glib-2.0\schemas\*.*"
+Delete "$INSTDIR\snmp\*.*"
+Delete "$INSTDIR\snmp\mibs\*.*"
+Delete "$INSTDIR\styles\translations\*.*"
+Delete "$INSTDIR\styles\*.*"
+Delete "$INSTDIR\protobuf\*.*"
+Delete "$INSTDIR\tls\*.*"
+Delete "$INSTDIR\tpncp\*.*"
+Delete "$INSTDIR\translations\*.*"
+Delete "$INSTDIR\ui\*.*"
+Delete "$INSTDIR\wimaxasncp\*.*"
+Delete "$INSTDIR\ws.css"
+Delete "$INSTDIR\README*"
+Delete "$INSTDIR\NEWS.txt"
+Delete "$INSTDIR\manuf"
+Delete "$INSTDIR\wka"
+Delete "$INSTDIR\services"
+Delete "$INSTDIR\pdml2html.xsl"
+Delete "$INSTDIR\pcrepattern.3.txt"
+Delete "$INSTDIR\example_snmp_users_file"
+Delete "$INSTDIR\ipmap.html"
+Delete "$INSTDIR\radius\*.*"
+Delete "$INSTDIR\dtds\*.*"
+
+RMDir "$INSTDIR\accessible"
+RMDir "$INSTDIR\audio"
+RMDir "$INSTDIR\bearer"
+RMDir "$INSTDIR\extcap"
+RMDir "$INSTDIR\iconengines"
+RMDir "$INSTDIR\imageformats"
+RMDir "$INSTDIR\mediaservice"
+RMDir "$INSTDIR\networkinformation"
+RMDir "$INSTDIR\platforms"
+RMDir "$INSTDIR\playlistformats"
+RMDir "$INSTDIR\printsupport"
+RMDir "$INSTDIR\styles\translations"
+RMDir "$INSTDIR\styles"
+RMDir "$SMPROGRAMS\${PROGRAM_NAME}"
+RMDir "$INSTDIR\help"
+;RMDir /r "$INSTDIR\Wireshark User's Guide"
+RMDir "$INSTDIR\diameter"
+RMDir "$INSTDIR\snmp\mibs"
+RMDir "$INSTDIR\snmp"
+RMDir "$INSTDIR\radius"
+RMDir "$INSTDIR\dtds"
+RMDir "$INSTDIR\protobuf"
+RMDir "$INSTDIR\tpncp"
+RMDir "$INSTDIR\tls"
+RMDir "$INSTDIR\translations"
+RMDir "$INSTDIR\ui"
+RMDir "$INSTDIR\wimaxasncp"
+RMDir "$INSTDIR"
+
+SectionEnd ; "Uinstall"
+
+Section "Un.Plugins" un.SecPlugins
+;-------------------------------------------
+SectionIn 1 2
+;Delete "$INSTDIR\plugins\${VERSION}\*.*"
+;Delete "$INSTDIR\plugins\*.*"
+;RMDir "$INSTDIR\plugins\${VERSION}"
+;RMDir "$INSTDIR\plugins"
+RMDir /r "$INSTDIR\plugins"
+SectionEnd
+
+Section "Un.Global Profiles" un.SecProfiles
+;-------------------------------------------
+SectionIn 1 2
+RMDir /r "$INSTDIR\profiles"
+SectionEnd
+
+Section "Un.Global Settings" un.SecGlobalSettings
+;-------------------------------------------
+SectionIn 1 2
+Delete "$INSTDIR\cfilters"
+Delete "$INSTDIR\colorfilters"
+Delete "$INSTDIR\dfilters"
+Delete "$INSTDIR\enterprises.tsv"
+Delete "$INSTDIR\init.lua"
+Delete "$INSTDIR\console.lua"
+Delete "$INSTDIR\dtd_gen.lua"
+Delete "$INSTDIR\smi_modules"
+RMDir "$INSTDIR"
+SectionEnd
+
+Section /o "Un.Personal Settings" un.SecPersonalSettings
+;-------------------------------------------
+SectionIn 2
+SetShellVarContext current
+Delete "$APPDATA\${PROGRAM_NAME}\*.*"
+RMDir "$APPDATA\${PROGRAM_NAME}"
+DeleteRegKey HKCU "Software\${PROGRAM_NAME}"
+SectionEnd
+
+Section "-Un.Finally"
+;-------------------------------------------
+SectionIn 1 2
+
+!insertmacro UpdateIcons
+
+; this test must be done after all other things uninstalled (e.g. Global Settings)
+IfFileExists "$INSTDIR" 0 NoFinalErrorMsg
+ MessageBox MB_OK "Unable to remove $INSTDIR." /SD IDOK IDOK 0 ; skipped if dir doesn't exist
+NoFinalErrorMsg:
+SectionEnd
+
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecUinstall} "Uninstall all ${PROGRAM_NAME} components."
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecPlugins} "Uninstall all Plugins (even from previous ${PROGRAM_NAME} versions)."
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecProfiles} "Uninstall all global configuration profiles."
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecGlobalSettings} "Uninstall global settings like: $INSTDIR\cfilters"
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecPersonalSettings} "Uninstall personal settings like your preferences file from your profile: $PROFILE."
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_END
diff --git a/packaging/nsis/windeployqt-to-nsis.ps1 b/packaging/nsis/windeployqt-to-nsis.ps1
new file mode 100644
index 0000000..14883f1
--- /dev/null
+++ b/packaging/nsis/windeployqt-to-nsis.ps1
@@ -0,0 +1,108 @@
+# windeployqt-to-nsh
+#
+# Windeployqt-to-nsh - Convert the output of windeployqt to an equivalent set of
+# NSIS "File" function calls.
+#
+# Copyright 2014 Gerald Combs <gerald@wireshark.org>
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+#requires -version 2
+
+<#
+.SYNOPSIS
+Creates NSIS "File" function calls required for Qt packaging.
+
+.DESCRIPTION
+This script creates an NSIS-compatible file based on the output of
+windeployqt. If Qt is present, version 5.3 or later is required.
+Otherwise a dummy file will be created.
+
+If building with Qt, QMake must be in your PATH.
+
+.PARAMETER Executable
+The path to a Qt application. It will be examined for dependent DLLs.
+
+.PARAMETER FilePath
+Output filename.
+
+.PARAMETER DebugConfig
+Assume debug binaries.
+
+.INPUTS
+-Executable Path to the Qt application.
+-FilePath Output NSIS file.
+
+.OUTPUTS
+List of NSIS commands required to package supporting DLLs.
+
+.EXAMPLE
+C:\PS> .\windeployqt-to-nsis.ps1 windeployqt.exe ..\..\staging\wireshark.exe wireshark-qt-manifest.nsh [-DebugConfig]
+#>
+
+Param(
+ [Parameter(Mandatory=$true, Position=0)]
+ [String] $Executable,
+
+ [Parameter(Position=1)]
+ [String] $FilePath = "wireshark-qt-manifest.nsh",
+
+ [Parameter(Mandatory=$false)]
+ [Switch] $DebugConfig
+)
+
+
+try {
+ $qtVersion = [version](qmake -query QT_VERSION)
+ $nsisCommands = @("# Qt version " + $qtVersion ; "#")
+
+ if ($qtVersion -lt "5.3") {
+ Throw "Qt " + $qtVersion + " found. 5.3 or later is required."
+ }
+
+ $DebugOrRelease = If ($DebugConfig) {"--debug"} Else {"--release"}
+
+ # windeployqt lists translation files that it don't exist (e.g.
+ # qtbase_ar.qm), so we handle those by hand.
+ # https://bugreports.qt.io/browse/QTBUG-65974
+ $wdqtList = windeployqt `
+ $DebugOrRelease `
+ --no-compiler-runtime `
+ --no-translations `
+ --list relative `
+ $Executable
+
+ $basePath = Split-Path -Parent $Executable
+
+ $currentDir = ""
+
+ foreach ($entry in $wdqtList) {
+ $dir = Split-Path -Parent $entry
+ if ($dir -and $dir -ne $currentDir) {
+ $nsisCommands += "SetOutPath `"`$INSTDIR\$dir`""
+ $currentDir = $dir
+ }
+ $nsisCommands += "File `"$basePath\$entry`""
+ }
+}
+
+catch {
+
+ $nsisCommands = @"
+# Qt not configured
+#
+"@
+
+}
+
+Set-Content $FilePath @"
+#
+# Automatically generated by $($MyInvocation.MyCommand.Name)
+#
+"@
+
+Add-Content $FilePath $nsisCommands
diff --git a/packaging/nsis/windeployqt-to-nsis.py b/packaging/nsis/windeployqt-to-nsis.py
new file mode 100644
index 0000000..2881f31
--- /dev/null
+++ b/packaging/nsis/windeployqt-to-nsis.py
@@ -0,0 +1,91 @@
+#!/bin/env python3
+
+# windeployqt-to-nsh
+#
+# Windeployqt-to-nsh - Convert the output of windeployqt to an equivalent set of
+# NSIS "File" function calls.
+#
+# Rewritten in python from windeployqt-to-nsis.ps1, that has the following copyright:
+#
+# Copyright 2014 Gerald Combs <gerald@wireshark.org>
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import sys
+import os
+import argparse
+import subprocess
+
+parser = argparse.ArgumentParser()
+group = parser.add_mutually_exclusive_group(required=True)
+group.add_argument('--mapping')
+group.add_argument('--executable')
+parser.add_argument('--sysroot')
+parser.add_argument('outfile')
+args = parser.parse_args()
+
+if args.mapping:
+ if not args.sysroot:
+ sys.exit('Option --sysroot is required with option --mapping')
+ qt_version = None
+ with open(args.mapping, 'r', encoding='utf-8') as f:
+ out = f.read()
+else:
+ # Qt version
+ qmake_command = [
+ 'qmake6.exe',
+ '-query', 'QT_VERSION'
+ ]
+ qmake_out = subprocess.run(qmake_command, check=True, capture_output=True, encoding="utf-8")
+ qt_version = qmake_out.stdout.strip()
+
+ # XXX The powershell script asserts that the Qt version is greater than 5.3. We already require Qt6 to build the
+ # installer using MSYS2 (currently not enforced).
+
+ # Windeployqt output
+ windeploy_command = [
+ "windeployqt6.exe",
+ "--no-compiler-runtime",
+ "--no-translations",
+ "--list", "mapping",
+ args.executable
+ ]
+ out = subprocess.run(windeploy_command, check=True, capture_output=True, encoding="utf-8").stdout
+
+with open(args.outfile, 'w') as f:
+ header = """\
+#
+# Automatically generated by {}
+#""".format(parser.prog)
+
+ if qt_version:
+ header += """\
+# Qt version {}
+#""".format(qt_version)
+
+ print(header, file=f)
+
+ current_dir = ""
+ for line in out.splitlines():
+ line = line.strip()
+ if not line or line.startswith('#'):
+ continue
+ path, relative = line.split(" ")
+ rel_path = os.path.split(relative)
+ if len(rel_path) > 1:
+ base_dir = rel_path[0].strip('"')
+ if base_dir != current_dir:
+ set_out_path = 'SetOutPath "$INSTDIR\{}"'.format(base_dir)
+ print(set_out_path, file=f)
+ current_dir = base_dir
+
+ path = path.strip('"')
+ if args.sysroot:
+ path = os.path.join(args.sysroot, path)
+ file_path = 'File "{}"'.format(path)
+ print(file_path, file=f)
+
diff --git a/packaging/nsis/wireshark-additional-tasks.nsddef b/packaging/nsis/wireshark-additional-tasks.nsddef
new file mode 100644
index 0000000..bc12865
--- /dev/null
+++ b/packaging/nsis/wireshark-additional-tasks.nsddef
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+This file was created by NSISDialogDesigner 1.5.0.0
+https://coolsoft.altervista.org/nsisdialogdesigner
+Do not edit manually!
+-->
+<Dialog Name="AdditionalTasksPage" Title="Additional Tasks" Subtitle="Create shortcuts and associate file extensions.">
+ <CreateFunctionCustomScript>; Defined in wireshark.nsi
+Call InitAdditionalTasksPage</CreateFunctionCustomScript>
+ <Label Name="ExtensionsLabel" Location="22, 151" Size="372, 52" Text="Extensions include 5vw, acp, apc, atc, bfr, cap, enc, erf, fdc, ipfix, lcap, mplog, ntar, out, pcap, pcapng, pklg, pkt, rf5, rtp, snoop, syc, tpc, tr1, trace, trc, vwr, wpc, and wpz." TabIndex="0" />
+ <CheckBox Name="AssociateExtensionsCheckBox" Location="22, 126" Size="406, 14" Text="Associate trace file extensions with Wireshark" TabIndex="1" />
+ <CheckBox Name="QuickLaunchCheckBox" Location="22, 74" Size="406, 14" Text="Wireshark Quick Launch Icon" TabIndex="2" />
+ <CheckBox Name="DesktopIconCheckBox" Location="22, 54" Size="406, 14" Text="Wireshark Desktop Icon" TabIndex="3" />
+ <CheckBox Name="StartMenuCheckBox" Location="22, 34" Size="406, 14" Text="Wireshark Start Menu Item" TabIndex="4" />
+ <Label Name="FileExtensionsLabel" Location="12, 101" Size="426, 14" Text="Associate File Extensions" Font="Microsoft Sans Serif, 8.25pt, style=Bold" TabIndex="5" />
+ <Label Name="CreateShortcutsLabel" Location="12, 9" Size="426, 14" Text="Create Shortcuts" Font="Microsoft Sans Serif, 8.25pt, style=Bold" TabIndex="6" />
+</Dialog>
diff --git a/packaging/nsis/wireshark-additional-tasks.nsdinc b/packaging/nsis/wireshark-additional-tasks.nsdinc
new file mode 100644
index 0000000..694bb58
--- /dev/null
+++ b/packaging/nsis/wireshark-additional-tasks.nsdinc
@@ -0,0 +1,70 @@
+; =========================================================
+; This file was generated by NSISDialogDesigner 1.5.0.0
+; https://coolsoft.altervista.org/nsisdialogdesigner
+;
+; Do not edit it manually, use NSISDialogDesigner instead!
+; =========================================================
+
+; handle variables
+Var hCtl_AdditionalTasksPage
+Var hCtl_AdditionalTasksPage_ExtensionsLabel
+Var hCtl_AdditionalTasksPage_AssociateExtensionsCheckBox
+Var hCtl_AdditionalTasksPage_DesktopIconCheckBox
+Var hCtl_AdditionalTasksPage_StartMenuCheckBox
+Var hCtl_AdditionalTasksPage_FileExtensionsLabel
+Var hCtl_AdditionalTasksPage_CreateShortcutsLabel
+Var hCtl_AdditionalTasksPage_Font1
+
+
+; dialog create function
+Function fnc_AdditionalTasksPage_Create
+
+ ; custom font definitions
+ CreateFont $hCtl_AdditionalTasksPage_Font1 "Microsoft Sans Serif" "8.25" "700"
+
+ ; === AdditionalTasksPage (type: Dialog) ===
+ nsDialogs::Create 1018
+ Pop $hCtl_AdditionalTasksPage
+ ${If} $hCtl_AdditionalTasksPage == error
+ Abort
+ ${EndIf}
+ !insertmacro MUI_HEADER_TEXT "Additional Tasks" "Create shortcuts and associate file extensions."
+
+ ; === ExtensionsLabel (type: Label) ===
+ ${NSD_CreateLabel} 14u 93u 245u 32u "Extensions include 5vw, acp, apc, atc, bfr, cap, enc, erf, fdc, ipfix, lcap, mplog, ntar, out, pcap, pcapng, pklg, pkt, rf5, rtp, snoop, syc, tpc, tr1, trace, trc, vwr, wpc, and wpz."
+ Pop $hCtl_AdditionalTasksPage_ExtensionsLabel
+
+ ; === AssociateExtensionsCheckBox (type: Checkbox) ===
+ ${NSD_CreateCheckbox} 14u 78u 267u 9u "Associate trace file extensions with Wireshark"
+ Pop $hCtl_AdditionalTasksPage_AssociateExtensionsCheckBox
+
+ ; === DesktopIconCheckBox (type: Checkbox) ===
+ ${NSD_CreateCheckbox} 14u 33u 267u 9u "Wireshark Desktop Icon"
+ Pop $hCtl_AdditionalTasksPage_DesktopIconCheckBox
+
+ ; === StartMenuCheckBox (type: Checkbox) ===
+ ${NSD_CreateCheckbox} 14u 21u 267u 9u "Wireshark Start Menu Item"
+ Pop $hCtl_AdditionalTasksPage_StartMenuCheckBox
+
+ ; === FileExtensionsLabel (type: Label) ===
+ ${NSD_CreateLabel} 8u 62u 280u 9u "Associate File Extensions"
+ Pop $hCtl_AdditionalTasksPage_FileExtensionsLabel
+ SendMessage $hCtl_AdditionalTasksPage_FileExtensionsLabel ${WM_SETFONT} $hCtl_AdditionalTasksPage_Font1 0
+
+ ; === CreateShortcutsLabel (type: Label) ===
+ ${NSD_CreateLabel} 8u 6u 280u 9u "Create Shortcuts"
+ Pop $hCtl_AdditionalTasksPage_CreateShortcutsLabel
+ SendMessage $hCtl_AdditionalTasksPage_CreateShortcutsLabel ${WM_SETFONT} $hCtl_AdditionalTasksPage_Font1 0
+
+ ; CreateFunctionCustomScript
+ ; Defined in wireshark.nsi
+ Call InitAdditionalTasksPage
+
+
+FunctionEnd
+
+; dialog show function
+Function fnc_AdditionalTasksPage_Show
+ Call fnc_AdditionalTasksPage_Create
+ nsDialogs::Show
+FunctionEnd
diff --git a/packaging/nsis/wireshark-common.nsh b/packaging/nsis/wireshark-common.nsh
new file mode 100644
index 0000000..00e3152
--- /dev/null
+++ b/packaging/nsis/wireshark-common.nsh
@@ -0,0 +1,154 @@
+
+; ============================================================================
+; Name and version information
+; ============================================================================
+
+Unicode true
+; This improves the installer's appearance considerably here on a display scaled
+; to 225%, but checkboxes are comically small. We might be able to fix this
+; using the SysCompImg extension:
+; http://forums.winamp.com/showthread.php?t=443754
+ManifestDPIAware true
+; These might be correct in the future, but are currently undocumented:
+; http://forums.winamp.com/showthread.php?t=452632
+; ManifestDPIAware System
+; ManifestDPIAwareness "PerMonitorV2,System"
+
+!ifdef NSIS_INCLUDE_DIR
+!addincludedir ${NSIS_INCLUDE_DIR}
+!endif
+
+!include "wireshark-config.nsh"
+
+!define DISPLAY_NAME "${PROGRAM_NAME} ${VERSION} ${WIRESHARK_TARGET_PLATFORM}"
+Name "${DISPLAY_NAME}"
+
+!define PROGRAM_FULL_NAME "The ${PROGRAM_NAME} Network Protocol Analyzer"
+!define PROGRAM_NAME_PATH "${PROGRAM_NAME}.exe"
+
+!define UNINSTALLER_NAME "uninstall-wireshark.exe"
+
+VIAddVersionKey "ProductName" "${PROGRAM_NAME}"
+VIAddVersionKey "Comments" "It's a great product with a great story to tell. I'm pumped!"
+VIAddVersionKey "CompanyName" "${PROGRAM_NAME} development team"
+; NSIS handles U+00a9 but not a UTF-8 encoded copyright symbol.
+VIAddVersionKey "LegalCopyright" "${U+00a9} Gerald Combs and many others"
+VIAddVersionKey "LegalTrademarks" "Wireshark and the 'fin' logo are registered trademarks of the Wireshark Foundation"
+VIAddVersionKey "FileDescription" "${PROGRAM_NAME} installer for Windows on ${WIRESHARK_TARGET_PLATFORM}"
+VIAddVersionKey "Language" "English"
+VIAddVersionKey "ProductVersion" "${PRODUCT_VERSION}"
+VIAddVersionKey "FileVersion" "${PRODUCT_VERSION}"
+VIProductVersion "${PRODUCT_VERSION}"
+
+XPStyle on
+
+
+; ============================================================================
+; Functions and macros
+; ============================================================================
+
+; Used to refresh the display of file association
+!define SHCNE_ASSOCCHANGED 0x08000000
+!define SHCNF_IDLIST 0
+
+!macro UpdateIcons
+ Push $R0
+ Push $R1
+ Push $R2
+
+ !define UPDATEICONS_UNIQUE ${__LINE__}
+
+ IfFileExists "$SYSDIR\shell32.dll" UpdateIcons.ok_shell32_${UPDATEICONS_UNIQUE} UpdateIcons.error_shell32_${UPDATEICONS_UNIQUE}
+UpdateIcons.ok_shell32_${UPDATEICONS_UNIQUE}:
+ System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)'
+ Goto UpdateIcons.quit_${UPDATEICONS_UNIQUE}
+
+UpdateIcons.error_shell32_${UPDATEICONS_UNIQUE}:
+ MessageBox MB_OK|MB_ICONSTOP \
+ "Can't find 'shell32.dll' library. Impossible to update icons" \
+ /SD IDOK
+ Goto UpdateIcons.quit_${UPDATEICONS_UNIQUE}
+
+UpdateIcons.quit_${UPDATEICONS_UNIQUE}:
+ !undef UPDATEICONS_UNIQUE
+ Pop $R2
+ Pop $R1
+ Pop $R0
+
+; Force the icon cache to refresh
+; https://superuser.com/questions/499078/refresh-icon-cache-without-rebooting
+IfFileExists "$SYSDIR\ie4uinit.exe" 0 +2
+Exec '"$SYSDIR\ie4uinit.exe" -ClearIconCache'
+
+!macroend
+
+; ============================================================================
+; Push our known file extensions onto the stack, prepended with a marker
+; Note that this is a subset of all the extensions for files that
+; Wireshark can read. We probably don't want to grab JPEG or MP3 files.
+; ============================================================================
+
+; Used to add associations between file extensions and Wireshark
+!define WIRESHARK_ASSOC "wireshark-capture-file"
+
+!define FILE_EXTENSION_MARKER "FILE_EXTENSION_MARKER"
+
+!macro PushFileExtensions
+ Push "${FILE_EXTENSION_MARKER}"
+ Push ".wpz"
+ Push ".wpc"
+ Push ".vwr"
+ Push ".trc"
+ Push ".trace"
+ Push ".tr1"
+ Push ".tpc"
+ Push ".syc"
+ Push ".snoop"
+ Push ".rf5"
+ Push ".pkt"
+ Push ".pklg"
+ Push ".pcapng"
+ Push ".pcap"
+ Push ".out"
+ Push ".ntar"
+ Push ".mplog"
+ Push ".lcap"
+ Push ".ipfix"
+ Push ".fdc"
+ Push ".erf"
+ Push ".enc"
+ Push ".cap"
+ Push ".bfr"
+ Push ".atc"
+ Push ".apc"
+ Push ".acp"
+ Push ".5vw"
+ Push ".rtp"
+!macroend
+
+!macro IsWiresharkRunning
+; See if Wireshark is running
+; https://nsis.sourceforge.io/Check_whether_your_application_is_running
+${Do}
+
+ System::Call 'kernel32::OpenMutex(i 0x100000, b 0, t "Global\${PROGRAM_NAME}-is-running-{9CA78EEA-EA4D-4490-9240-FC01FCEF464B}") i .R0'
+ IntCmp $R0 0 checkRunningSession
+ System::Call 'kernel32::CloseHandle(i $R0)'
+ Goto isRunning
+
+checkRunningSession:
+ System::Call 'kernel32::OpenMutex(i 0x100000, b 0, t "${PROGRAM_NAME}-is-running-{9CA78EEA-EA4D-4490-9240-FC01FCEF464B}") i .R0'
+ IntCmp $R0 0 notRunning
+ System::Call 'kernel32::CloseHandle(i $R0)'
+
+isRunning:
+ ; You'd better go catch it.
+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "${PROGRAM_NAME} or one of its associated programs is running.$\r$\nPlease close it first." /SD IDCANCEL IDRETRY continueChecking
+ Quit
+
+notRunning:
+ ${ExitDo}
+
+continueChecking:
+${Loop}
+!macroend
diff --git a/packaging/nsis/wireshark-config.nsh.in b/packaging/nsis/wireshark-config.nsh.in
new file mode 100644
index 0000000..769f9e7
--- /dev/null
+++ b/packaging/nsis/wireshark-config.nsh.in
@@ -0,0 +1,40 @@
+# ============================================================================
+# NSIS configuration definitions. Generated from wireshark-config.nsh.in.
+# ============================================================================
+
+# Do not prefix comments with ";". They will be removed by CMake.
+
+# MUST match "<Product ... Name=" in wix/Wireshark.wxs.
+#define PROGRAM_NAME "@PROGRAM_NAME@"
+#define TOP_SRC_DIR "@TOP_SRC_DIR@"
+#define WIRESHARK_TARGET_PLATFORM @WIRESHARK_TARGET_PLATFORM@
+#define EXTRA_INSTALLER_DIR "@EXTRA_INSTALLER_DIR@"
+#define NPCAP_PACKAGE_VERSION @NPCAP_VERSION@
+#define USBPCAP_PACKAGE_VERSION @USBPCAP_VERSION@
+#define VERSION @PROJECT_VERSION@
+#define MAJOR_VERSION @PROJECT_MAJOR_VERSION@
+#define MINOR_VERSION @PROJECT_MINOR_VERSION@
+#define PRODUCT_VERSION @PRODUCT_VERSION@
+
+#define VCREDIST_DIR "@VCREDIST_DIR@"
+#define VCREDIST_EXE "@VCREDIST_EXE@"
+
+# Optional components
+
+#cmakedefine MMDBRESOLVE_EXE @MMDBRESOLVE_EXE@
+#cmakedefine BUILD_etwdump
+#cmakedefine SPANDSP_FOUND
+#cmakedefine BCG729_FOUND
+#cmakedefine SBC_FOUND
+#cmakedefine ILBC_FOUND
+#cmakedefine OPUS_FOUND
+#cmakedefine LIBSSH_FOUND
+
+#cmakedefine DOCBOOK_DIR "@DOCBOOK_DIR@"
+
+#cmakedefine SMI_DIR "@SMI_DIR@"
+
+#cmakedefine QT_DIR "@QT_DIR@"
+
+#cmakedefine ENABLE_SIGNED_NSIS
+#cmakedefine SKIP_NSIS_QT_DLLS
diff --git a/packaging/nsis/wireshark.nsi b/packaging/nsis/wireshark.nsi
new file mode 100644
index 0000000..5271cd3
--- /dev/null
+++ b/packaging/nsis/wireshark.nsi
@@ -0,0 +1,1657 @@
+;
+; wireshark.nsi
+;
+
+; Set the compression mechanism first.
+; As of NSIS 2.07, solid compression which makes installer about 1MB smaller
+; is no longer the default, so use the /SOLID switch.
+; This unfortunately is unknown to NSIS prior to 2.07 and creates an error.
+; So if you get an error here, please update to at least NSIS 2.07!
+SetCompressor /SOLID lzma
+SetCompressorDictSize 64 ; MB
+
+!include "wireshark-common.nsh"
+!include 'LogicLib.nsh'
+!include "StrFunc.nsh"
+!include "WordFunc.nsh"
+
+${StrRep}
+${UnStrRep}
+
+; See https://nsis.sourceforge.io/Check_if_a_file_exists_at_compile_time for documentation
+!macro !defineifexist _VAR_NAME _FILE_NAME
+ !tempfile _TEMPFILE
+ !ifdef NSIS_WIN32_MAKENSIS
+ ; Windows - cmd.exe
+ !system 'if exist "${_FILE_NAME}" echo !define ${_VAR_NAME} > "${_TEMPFILE}"'
+ !else
+ ; Posix - sh
+ !system 'if [ -e "${_FILE_NAME}" ]; then echo "!define ${_VAR_NAME}" > "${_TEMPFILE}"; fi'
+ !endif
+ !include '${_TEMPFILE}'
+ !delfile '${_TEMPFILE}'
+ !undef _TEMPFILE
+!macroend
+!define !defineifexist "!insertmacro !defineifexist"
+
+; ============================================================================
+; Header configuration
+; ============================================================================
+
+; The file to write
+OutFile "${OUTFILE_DIR}\${PROGRAM_NAME}-${VERSION}-${WIRESHARK_TARGET_PLATFORM}.exe"
+; Installer icon
+Icon "${TOP_SRC_DIR}\resources\icons\wiresharkinst.ico"
+; Uninstaller icon
+UninstallIcon "${TOP_SRC_DIR}\resources\icons\wiresharkinst.ico"
+
+; ============================================================================
+; Modern UI
+; ============================================================================
+; The modern user interface will look much better than the common one.
+; However, as the development of the modern UI is still going on, and the script
+; syntax changes, you will need exactly that NSIS version, which this script is
+; made for. This is the current (December 2003) latest version: V2.0b4
+; If you are using a different version, it's not predictable what will happen.
+
+!include "MUI2.nsh"
+!include "InstallOptions.nsh"
+;!addplugindir ".\Plugins"
+
+!define MUI_ICON "${TOP_SRC_DIR}\resources\icons\wiresharkinst.ico"
+!define MUI_UNICON "${TOP_SRC_DIR}\resources\icons\wiresharkinst.ico"
+BrandingText "Wireshark${U+00ae} Installer"
+
+!define MUI_COMPONENTSPAGE_SMALLDESC
+!define MUI_FINISHPAGE_NOAUTOCLOSE
+!define MUI_WELCOMEPAGE_TITLE_3LINES
+!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of ${PROGRAM_NAME}.$\r$\n$\r$\nBefore starting the installation, make sure ${PROGRAM_NAME} is not running.$\r$\n$\r$\nClick 'Next' to continue."
+;!define MUI_FINISHPAGE_LINK "Install Npcap to be able to capture packets from a network."
+;!define MUI_FINISHPAGE_LINK_LOCATION "https://npcap.com/"
+
+; NSIS shows Readme files by opening the Readme file with the default application for
+; the file's extension. "README.win32" won't work in most cases, because extension "win32"
+; is usually not associated with an appropriate text editor. We should use extension "txt"
+; for a text file or "html" for an html README file.
+!define MUI_FINISHPAGE_TITLE_3LINES
+!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\NEWS.txt"
+!define MUI_FINISHPAGE_SHOWREADME_TEXT "Show News"
+!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
+; NSIS runs as Administrator and will run Wireshark as Administrator
+; if these are enabled.
+;!define MUI_FINISHPAGE_RUN "$INSTDIR\${PROGRAM_NAME_PATH}"
+;!define MUI_FINISHPAGE_RUN_NOTCHECKED
+
+!define MUI_PAGE_CUSTOMFUNCTION_SHOW myShowCallback
+
+; ============================================================================
+; MUI Pages
+; ============================================================================
+
+!insertmacro MUI_PAGE_WELCOME
+
+!define MUI_LICENSEPAGE_TEXT_TOP "Wireshark is distributed under the GNU General Public License."
+!define MUI_LICENSEPAGE_TEXT_BOTTOM "This is not an end user license agreement (EULA). It is provided here for informational purposes only."
+!define MUI_LICENSEPAGE_BUTTON "Noted"
+!insertmacro MUI_PAGE_LICENSE "${STAGING_DIR}\COPYING.txt"
+
+Page custom DisplayDonatePage
+
+!insertmacro MUI_PAGE_COMPONENTS
+!ifdef QT_DIR
+Page custom DisplayAdditionalTasksPage LeaveAdditionalTasksPage
+!endif
+!insertmacro MUI_PAGE_DIRECTORY
+Page custom DisplayNpcapPage
+Page custom DisplayUSBPcapPage
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+; Uninstall stuff (NSIS 2.08: "\r\n" don't work here)
+!define MUI_UNCONFIRMPAGE_TEXT_TOP "The following ${PROGRAM_NAME} installation will be removed. Click 'Next' to continue."
+; Uninstall stuff (this text isn't used with the MODERN_UI!)
+;UninstallText "This will uninstall ${PROGRAM_NAME}.\r\nBefore starting the uninstallation, make sure ${PROGRAM_NAME} is not running.\r\nClick 'Next' to continue."
+
+!define MUI_UNFINISHPAGE_NOAUTOCLOSE
+!define MUI_WELCOMEPAGE_TITLE_3LINES
+!define MUI_FINISHPAGE_TITLE_3LINES
+
+!insertmacro MUI_UNPAGE_WELCOME
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_COMPONENTS
+!insertmacro MUI_UNPAGE_INSTFILES
+!insertmacro MUI_UNPAGE_FINISH
+
+; ============================================================================
+; MUI Languages
+; ============================================================================
+
+!insertmacro MUI_LANGUAGE "English"
+
+; ============================================================================
+; Reserve Files
+; ============================================================================
+
+ ;Things that need to be extracted on first (keep these lines before any File command!)
+ ;Only useful for BZIP2 compression
+
+ ; Old Modern 1 UI: https://nsis.sourceforge.io/Docs/Modern%20UI/Readme.html
+ ; To do: Upgrade to the Modern 2 UI:
+ ;ReserveFile "AdditionalTasksPage.ini"
+ ReserveFile "DonatePage.ini"
+ ReserveFile "NpcapPage.ini"
+ ReserveFile "USBPcapPage.ini"
+ ReserveFile /plugin InstallOptions.dll
+
+ ; Modern UI 2 / nsDialog pages.
+ ; https://nsis.sourceforge.io/Docs/Modern%20UI%202/Readme.html
+ ; https://nsis.sourceforge.io/Docs/nsDialogs/Readme.html
+ !ifdef QT_DIR
+ !include "wireshark-additional-tasks.nsdinc"
+ !endif
+
+; ============================================================================
+; Section macros
+; ============================================================================
+!include "Sections.nsh"
+
+; ============================================================================
+; Command Line
+; ============================================================================
+!include "FileFunc.nsh"
+
+!insertmacro GetParameters
+!insertmacro GetOptions
+
+; ========= Install extcap binary and help file =========
+!macro InstallExtcap EXTCAP_NAME
+
+ SetOutPath $INSTDIR
+ File "${STAGING_DIR}\${EXTCAP_NAME}.html"
+ SetOutPath $INSTDIR\extcap
+ File "${STAGING_DIR}\extcap\${EXTCAP_NAME}.exe"
+
+!macroend
+
+; ========= Check if silent mode install of /EXTRACOMPONENTS =========
+!macro CheckExtrasFlag EXTRAS_NAME
+ !define EXTRAS_FLAG ${__LINE__}
+Section
+ IfSilent +1 skip_${EXTRAS_FLAG}
+ push $R0
+ push $R1
+ push $R2
+ ${GetParameters} $R0
+ ${GetOptions} $R0 "/EXTRACOMPONENTS=" $R1
+ IfErrors popreg_${EXTRAS_FLAG}
+ ${WordFind} $R1 "," "E+1" $R0
+
+; No delimiters found - check for single word match
+ ${If} $R0 = 1
+ StrCmp $R1 ${EXTRAS_NAME} install_${EXTRAS_FLAG} popreg_${EXTRAS_FLAG}
+ ${ENDIF}
+
+; Loop through all delimited words checking for match
+ IntOp $R2 0 + 1
+ ${While} $R0 != 2
+ StrCmp $R0 ${EXTRAS_NAME} install_${EXTRAS_FLAG} 0
+ IntOp $R2 $R2 + 1
+ ${WordFind} $R1 "," "E+$R2" $R0
+ ${EndWhile}
+ Goto popreg_${EXTRAS_FLAG}
+
+install_${EXTRAS_FLAG}:
+ !insertmacro InstallExtcap ${EXTRAS_NAME}
+popreg_${EXTRAS_FLAG}:
+ pop $R2
+ pop $R1
+ pop $R0
+skip_${EXTRAS_FLAG}:
+ !undef EXTRAS_FLAG
+SectionEnd
+!macroend
+
+; ============================================================================
+; Component page configuration
+; ============================================================================
+ComponentText "The following components are available for installation."
+
+; ============================================================================
+; Directory selection page configuration
+; ============================================================================
+; The text to prompt the user to enter a directory
+DirText "Choose a directory in which to install ${PROGRAM_NAME}."
+
+; The default installation directory
+InstallDir $PROGRAMFILES64\${PROGRAM_NAME}
+
+; See if this is an upgrade; if so, use the old InstallDir as default
+InstallDirRegKey HKEY_LOCAL_MACHINE SOFTWARE\${PROGRAM_NAME} InstallDir
+
+
+; ============================================================================
+; Install page configuration
+; ============================================================================
+ShowInstDetails show
+
+; ============================================================================
+; Functions and macros
+; ============================================================================
+
+Var EXTENSION
+; https://docs.microsoft.com/en-us/windows/win32/shell/fa-file-types
+Function Associate
+ Push $R0
+ !insertmacro PushFileExtensions
+
+ Pop $EXTENSION
+
+ ${DoUntil} $EXTENSION == ${FILE_EXTENSION_MARKER}
+ ReadRegStr $R0 HKCR $EXTENSION ""
+ StrCmp $R0 "" Associate.doRegister
+ Goto Associate.end
+
+Associate.doRegister:
+ ;The extension is not associated to any program, we can do the link
+ WriteRegStr HKCR $EXTENSION "" ${WIRESHARK_ASSOC}
+ DetailPrint "Registered file type: $EXTENSION"
+
+Associate.end:
+ Pop $EXTENSION
+ ${Loop}
+
+ Pop $R0
+FunctionEnd
+
+; Control states
+Var START_MENU_STATE
+Var DESKTOP_ICON_STATE
+Var FILE_ASSOCIATE_STATE
+
+; NSIS
+Var OLD_UNINSTALLER
+Var OLD_INSTDIR
+Var OLD_DISPLAYNAME
+Var TMP_UNINSTALLER
+
+; WiX
+Var REGISTRY_BITS
+Var TMP_PRODUCT_GUID
+Var WIX_DISPLAYNAME
+Var WIX_DISPLAYVERSION
+Var WIX_UNINSTALLSTRING
+
+; ============================================================================
+; 64-bit support
+; ============================================================================
+!include x64.nsh
+
+!include "GetWindowsVersion.nsh"
+!include WinMessages.nsh
+
+Function .onInit
+ ; http://forums.winamp.com/printthread.php?s=16ffcdd04a8c8d52bee90c0cae273ac5&threadid=262873
+ ${IfNot} ${RunningX64}
+ MessageBox MB_OK "Wireshark only runs on 64 bit machines.$\nTry installing a 32 bit version (3.6 or earlier) instead." /SD IDOK
+ Abort
+ ${EndIf}
+
+ !if ${WIRESHARK_TARGET_PLATFORM} == "x64"
+ ${If} ${IsNativeARM64}
+ MessageBox MB_OK "You're installing the x64 version of Wireshark on an Arm64 system.$\nThe native Arm64 installer might work better." /SD IDOK
+ ${EndIf}
+ !endif
+
+ !if ${WIRESHARK_TARGET_PLATFORM} == "arm64"
+ ${IfNot} ${IsNativeARM64}
+ MessageBox MB_OK "You're trying to install the Arm64 version of Wireshark on an x64 system.$\nTry the native x64 installer instead." /SD IDOK
+ Abort
+ ${EndIf}
+ !endif
+
+ ; Get the Windows version
+ ${GetWindowsVersion} $R0
+
+ ; This should match the following:
+ ; - The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in
+ ; - The <compatibility><application> section in image\wireshark.exe.manifest.in
+ ; - The VersionNT parts of packaging\wix\Prerequisites.wxi
+
+ ; Uncomment to test.
+ ; MessageBox MB_OK "You're running Windows $R0."
+
+ ; Check if we're able to run with this version
+ StrCmp $R0 '95' lbl_winversion_unsupported
+ StrCmp $R0 '98' lbl_winversion_unsupported
+ StrCmp $R0 'ME' lbl_winversion_unsupported
+ StrCmp $R0 'NT 4.0' lbl_winversion_unsupported_nt4
+ StrCmp $R0 '2000' lbl_winversion_unsupported_2000
+ StrCmp $R0 'XP' lbl_winversion_unsupported_xp_2003
+ StrCmp $R0 '2003' lbl_winversion_unsupported_xp_2003
+ StrCmp $R0 'Vista' lbl_winversion_unsupported_vista_2008
+ StrCmp $R0 '2008' lbl_winversion_unsupported_vista_2008
+ Goto lbl_winversion_supported
+
+lbl_winversion_unsupported:
+ MessageBox MB_OK \
+ "Windows $R0 is no longer supported.$\nPlease install Ethereal 0.99.0 instead." \
+ /SD IDOK
+ Quit
+
+lbl_winversion_unsupported_nt4:
+ MessageBox MB_OK \
+ "Windows $R0 is no longer supported.$\nPlease install Wireshark 0.99.4 instead." \
+ /SD IDOK
+ Quit
+
+lbl_winversion_unsupported_2000:
+ MessageBox MB_OK \
+ "Windows $R0 is no longer supported.$\nPlease install Wireshark 1.2 or 1.0 instead." \
+ /SD IDOK
+ Quit
+
+lbl_winversion_unsupported_xp_2003:
+ MessageBox MB_OK \
+ "Windows $R0 is no longer supported.$\nPlease install ${PROGRAM_NAME} 1.12 or 1.10 instead." \
+ /SD IDOK
+ Quit
+
+lbl_winversion_unsupported_vista_2008:
+ MessageBox MB_OK \
+ "Windows $R0 is no longer supported.$\nPlease install ${PROGRAM_NAME} 2.2 instead." \
+ /SD IDOK
+ Quit
+
+lbl_winversion_supported:
+!insertmacro IsWiresharkRunning
+
+ ; Default control values.
+ StrCpy $START_MENU_STATE ${BST_CHECKED}
+ StrCpy $DESKTOP_ICON_STATE ${BST_UNCHECKED}
+ StrCpy $FILE_ASSOCIATE_STATE ${BST_CHECKED}
+
+ ; Copied from https://nsis.sourceforge.io/Auto-uninstall_old_before_installing_new
+ ReadRegStr $OLD_UNINSTALLER HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" \
+ "UninstallString"
+ StrCmp $OLD_UNINSTALLER "" check_wix
+
+ ReadRegStr $OLD_INSTDIR HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\App Paths\${PROGRAM_NAME}.exe" \
+ "Path"
+ StrCmp $OLD_INSTDIR "" check_wix
+
+ ReadRegStr $OLD_DISPLAYNAME HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" \
+ "DisplayName"
+ StrCmp $OLD_DISPLAYNAME "" done
+
+ ; We're reinstalling. Flip our control states according to what the
+ ; user chose before.
+ ; (we use the "all users" start menu, so select it first)
+ SetShellVarContext all
+ ; MessageBox MB_OK|MB_ICONINFORMATION "oninit 1 sm $START_MENU_STATE di $DESKTOP_ICON_STATE"
+ ${IfNot} ${FileExists} $SMPROGRAMS\${PROGRAM_NAME}.lnk
+ StrCpy $START_MENU_STATE ${BST_UNCHECKED}
+ ${Endif}
+ ${If} ${FileExists} $DESKTOP\${PROGRAM_NAME}.lnk
+ StrCpy $DESKTOP_ICON_STATE ${BST_CHECKED}
+ ${Endif}
+ ; Leave FILE_ASSOCIATE_STATE checked.
+ ; MessageBox MB_OK|MB_ICONINFORMATION "oninit 2 sm $START_MENU_STATE $SMPROGRAMS\${PROGRAM_NAME}\${PROGRAM_NAME}.lnk \
+ ; $\ndi $DESKTOP_ICON_STATE $DESKTOP\${PROGRAM_NAME}.lnk
+
+ MessageBox MB_YESNOCANCEL|MB_ICONQUESTION \
+ "$OLD_DISPLAYNAME is already installed.\
+ $\n$\nWould you like to uninstall it first?" \
+ /SD IDYES \
+ IDYES prep_nsis_uninstaller \
+ IDNO done
+ Abort
+
+; Copy the uninstaller to $TEMP and run it.
+; The uninstaller normally does this by itself, but doesn't wait around
+; for the executable to finish, which means ExecWait won't work correctly.
+prep_nsis_uninstaller:
+ ClearErrors
+ StrCpy $TMP_UNINSTALLER "$TEMP\${PROGRAM_NAME}_uninstaller.exe"
+ ; ...because we surround UninstallString in quotes.
+ StrCpy $0 $OLD_UNINSTALLER -1 1
+ StrCpy $1 "$TEMP\${PROGRAM_NAME}_uninstaller.exe"
+ StrCpy $2 1
+ System::Call 'kernel32::CopyFile(t r0, t r1, b r2) 1'
+ ExecWait "$TMP_UNINSTALLER /S _?=$OLD_INSTDIR"
+
+ Delete "$TMP_UNINSTALLER"
+
+; Look for a WiX-installed package.
+
+check_wix:
+ StrCpy $REGISTRY_BITS 64
+ SetRegView 64
+ check_wix_restart:
+ StrCpy $0 0
+ wix_reg_enum_loop:
+ EnumRegKey $TMP_PRODUCT_GUID HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" $0
+ StrCmp $TMP_PRODUCT_GUID "" wix_enum_reg_done
+ IntOp $0 $0 + 1
+ ReadRegStr $WIX_DISPLAYNAME HKLM \
+ "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$TMP_PRODUCT_GUID" \
+ "DisplayName"
+ ; MessageBox MB_OK|MB_ICONINFORMATION "Reading HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$1 DisplayName = $2"
+ ; Look for "Wireshark".
+ StrCmp $WIX_DISPLAYNAME "${PROGRAM_NAME}" wix_found wix_reg_enum_loop
+
+ wix_found:
+ ReadRegStr $WIX_DISPLAYVERSION HKLM \
+ "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$TMP_PRODUCT_GUID" \
+ "DisplayVersion"
+ ReadRegStr $WIX_UNINSTALLSTRING HKLM \
+ "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$TMP_PRODUCT_GUID" \
+ "UninstallString"
+ StrCmp $WIX_UNINSTALLSTRING "" done
+ MessageBox MB_YESNOCANCEL|MB_ICONQUESTION \
+ "$WIX_DISPLAYNAME $WIX_DISPLAYVERSION (msi) is already installed.\
+ $\n$\nWould you like to uninstall it first?" \
+ /SD IDYES \
+ IDYES prep_wix_uninstaller \
+ IDNO done
+ Abort
+
+ ; Run the WiX-provided UninstallString.
+ prep_wix_uninstaller:
+ ClearErrors
+ ExecWait "$WIX_UNINSTALLSTRING"
+
+ Goto done
+
+ wix_enum_reg_done:
+ ; MessageBox MB_OK|MB_ICONINFORMATION "Checked $0 $REGISTRY_BITS bit keys"
+ IntCmp $REGISTRY_BITS 32 done
+ StrCpy $REGISTRY_BITS 32
+ SetRegView 32
+ Goto check_wix_restart
+
+done:
+
+ ; Command line parameters
+ ${GetParameters} $R0
+
+ ${GetOptions} $R0 "/desktopicon=" $R1
+ ${If} $R1 == "yes"
+ StrCpy $DESKTOP_ICON_STATE ${BST_CHECKED}
+ ${ElseIf} $R1 == "no"
+ StrCpy $DESKTOP_ICON_STATE ${BST_UNCHECKED}
+ ${Endif}
+
+ ;Extract InstallOptions INI files
+ ;!insertmacro INSTALLOPTIONS_EXTRACT "AdditionalTasksPage.ini"
+ !insertmacro INSTALLOPTIONS_EXTRACT "DonatePage.ini"
+ !insertmacro INSTALLOPTIONS_EXTRACT "NpcapPage.ini"
+ !insertmacro INSTALLOPTIONS_EXTRACT "USBPcapPage.ini"
+FunctionEnd
+
+!ifdef QT_DIR
+Function DisplayAdditionalTasksPage
+ Call fnc_AdditionalTasksPage_Show
+FunctionEnd
+!endif
+
+Function DisplayDonatePage
+ !insertmacro MUI_HEADER_TEXT "Your donations keep these releases coming" "Donate today"
+ !insertmacro INSTALLOPTIONS_DISPLAY "DonatePage.ini"
+FunctionEnd
+
+Function DisplayNpcapPage
+ !insertmacro MUI_HEADER_TEXT "Packet Capture" "Wireshark requires either Npcap or WinPcap to capture live network data."
+ !insertmacro INSTALLOPTIONS_DISPLAY "NpcapPage.ini"
+FunctionEnd
+
+Function DisplayUSBPcapPage
+ !insertmacro MUI_HEADER_TEXT "USB Capture" "USBPcap is required to capture USB traffic. Should USBPcap be installed (experimental)?"
+ !insertmacro INSTALLOPTIONS_DISPLAY "USBPcapPage.ini"
+FunctionEnd
+
+; ============================================================================
+; Installation execution commands
+; ============================================================================
+
+Var USBPCAP_UNINSTALL ;declare variable for holding the value of a registry key
+;Var WIRESHARK_UNINSTALL ;declare variable for holding the value of a registry key
+
+Section "-Required"
+;-------------------------------------------
+
+;
+; Install for every user
+;
+SetShellVarContext all
+
+SetOutPath $INSTDIR
+!ifndef SKIP_UNINSTALLER
+WriteUninstaller "$INSTDIR\${UNINSTALLER_NAME}"
+!endif
+File "${STAGING_DIR}\libwiretap.dll"
+File "${STAGING_DIR}\libwireshark.dll"
+File "${STAGING_DIR}\libwsutil.dll"
+
+!include wireshark-manifest.nsh
+
+File "${STAGING_DIR}\COPYING.txt"
+File "${STAGING_DIR}\NEWS.txt"
+File "${STAGING_DIR}\README.txt"
+File "${STAGING_DIR}\README.windows.txt"
+File "${STAGING_DIR}\wka"
+File "${STAGING_DIR}\pdml2html.xsl"
+File "${STAGING_DIR}\ws.css"
+File "${STAGING_DIR}\wireshark.html"
+File "${STAGING_DIR}\wireshark-filter.html"
+File "${STAGING_DIR}\dumpcap.exe"
+File "${STAGING_DIR}\dumpcap.html"
+File "${STAGING_DIR}\extcap.html"
+File "${STAGING_DIR}\ipmap.html"
+File "${STAGING_DIR}\release-notes.html"
+
+!ifdef USE_VCREDIST
+; C-runtime redistributable
+; vc_redist.x64.exe or vc_redist.x86.exe - copy and execute the redistributable installer
+File "${VCREDIST_DIR}\${VCREDIST_EXE}"
+; If the user already has the redistributable installed they will see a
+; Big Ugly Dialog by default, asking if they want to uninstall or repair.
+; Ideally we should add a checkbox for this somewhere. In the meantime,
+; just do a "quiet" install.
+
+; http://asawicki.info/news_1597_installing_visual_c_redistributable_package_from_command_line.html
+ExecWait '"$INSTDIR\${VCREDIST_EXE}" /install /quiet /norestart' $0
+DetailPrint "${VCREDIST_EXE} returned $0"
+
+; https://docs.microsoft.com/en-us/windows/desktop/Msi/error-codes
+!define ERROR_SUCCESS 0
+!define ERROR_SUCCESS_REBOOT_INITIATED 1641
+!define ERROR_PRODUCT_VERSION 1638
+!define ERROR_SUCCESS_REBOOT_REQUIRED 3010
+${Switch} $0
+ ${Case} ${ERROR_SUCCESS}
+ ${Case} ${ERROR_PRODUCT_VERSION}
+ ${Break}
+ ${Case} ${ERROR_SUCCESS_REBOOT_INITIATED} ; Shouldn't happen.
+ ${Case} ${ERROR_SUCCESS_REBOOT_REQUIRED}
+ SetRebootFlag true
+ ${Break}
+ ${Default}
+ MessageBox MB_OK "The Visual C++ Redistributable installer failed with error $0.$\nUnable to continue installation." /SD IDOK
+ Abort
+ ${Break}
+${EndSwitch}
+
+Delete "$INSTDIR\${VCREDIST_EXE}"
+!endif
+
+
+; global config files - don't overwrite if already existing
+;IfFileExists cfilters dont_overwrite_cfilters
+File "${STAGING_DIR}\cfilters"
+;dont_overwrite_cfilters:
+;IfFileExists colorfilters dont_overwrite_colorfilters
+File "${STAGING_DIR}\colorfilters"
+;dont_overwrite_colorfilters:
+;IfFileExists dfilters dont_overwrite_dfilters
+File "${STAGING_DIR}\dfilters"
+;dont_overwrite_dfilters:
+;IfFileExists smi_modules dont_overwrite_smi_modules
+File "${STAGING_DIR}\smi_modules"
+;dont_overwrite_smi_modules:
+
+
+;
+; Install the Diameter DTD and XML files in the "diameter" subdirectory
+; of the installation directory.
+;
+SetOutPath $INSTDIR\diameter
+File "${STAGING_DIR}\diameter\AlcatelLucent.xml"
+File "${STAGING_DIR}\diameter\chargecontrol.xml"
+File "${STAGING_DIR}\diameter\Cisco.xml"
+File "${STAGING_DIR}\diameter\CiscoSystems.xml"
+File "${STAGING_DIR}\diameter\Custom.xml"
+File "${STAGING_DIR}\diameter\dictionary.dtd"
+File "${STAGING_DIR}\diameter\dictionary.xml"
+File "${STAGING_DIR}\diameter\eap.xml"
+File "${STAGING_DIR}\diameter\Ericsson.xml"
+File "${STAGING_DIR}\diameter\etsie2e4.xml"
+File "${STAGING_DIR}\diameter\HP.xml"
+File "${STAGING_DIR}\diameter\Huawei.xml"
+File "${STAGING_DIR}\diameter\Inovar.xml"
+File "${STAGING_DIR}\diameter\Juniper.xml"
+File "${STAGING_DIR}\diameter\Metaswitch.xml"
+File "${STAGING_DIR}\diameter\Microsoft.xml"
+File "${STAGING_DIR}\diameter\mobileipv4.xml"
+File "${STAGING_DIR}\diameter\mobileipv6.xml"
+File "${STAGING_DIR}\diameter\nasreq.xml"
+File "${STAGING_DIR}\diameter\Nokia.xml"
+File "${STAGING_DIR}\diameter\NokiaSolutionsAndNetworks.xml"
+File "${STAGING_DIR}\diameter\Oracle.xml"
+File "${STAGING_DIR}\diameter\Siemens.xml"
+File "${STAGING_DIR}\diameter\sip.xml"
+File "${STAGING_DIR}\diameter\Starent.xml"
+File "${STAGING_DIR}\diameter\sunping.xml"
+File "${STAGING_DIR}\diameter\Telefonica.xml"
+File "${STAGING_DIR}\diameter\TGPP.xml"
+File "${STAGING_DIR}\diameter\TGPP2.xml"
+File "${STAGING_DIR}\diameter\Vodafone.xml"
+File "${STAGING_DIR}\diameter\VerizonWireless.xml"
+!include "custom_diameter_xmls.txt"
+SetOutPath $INSTDIR
+
+;
+; Install the RADIUS directory files in the "radius" subdirectory
+; of the installation directory.
+;
+SetOutPath $INSTDIR\radius
+File "${STAGING_DIR}\radius\README.radius_dictionary"
+File "${STAGING_DIR}\radius\custom.includes"
+File "${STAGING_DIR}\radius\dictionary"
+File "${STAGING_DIR}\radius\dictionary.3com"
+File "${STAGING_DIR}\radius\dictionary.3gpp"
+File "${STAGING_DIR}\radius\dictionary.3gpp2"
+File "${STAGING_DIR}\radius\dictionary.5x9"
+File "${STAGING_DIR}\radius\dictionary.acc"
+File "${STAGING_DIR}\radius\dictionary.acme"
+File "${STAGING_DIR}\radius\dictionary.actelis"
+File "${STAGING_DIR}\radius\dictionary.aerohive"
+File "${STAGING_DIR}\radius\dictionary.airespace"
+File "${STAGING_DIR}\radius\dictionary.alcatel"
+File "${STAGING_DIR}\radius\dictionary.alcatel-lucent.aaa"
+File "${STAGING_DIR}\radius\dictionary.alcatel.esam"
+File "${STAGING_DIR}\radius\dictionary.alcatel.sr"
+File "${STAGING_DIR}\radius\dictionary.alteon"
+File "${STAGING_DIR}\radius\dictionary.altiga"
+File "${STAGING_DIR}\radius\dictionary.alvarion"
+File "${STAGING_DIR}\radius\dictionary.alvarion.wimax.v2_2"
+File "${STAGING_DIR}\radius\dictionary.apc"
+File "${STAGING_DIR}\radius\dictionary.aptilo"
+File "${STAGING_DIR}\radius\dictionary.aptis"
+File "${STAGING_DIR}\radius\dictionary.arbor"
+File "${STAGING_DIR}\radius\dictionary.aruba"
+File "${STAGING_DIR}\radius\dictionary.ascend"
+File "${STAGING_DIR}\radius\dictionary.asn"
+File "${STAGING_DIR}\radius\dictionary.audiocodes"
+File "${STAGING_DIR}\radius\dictionary.avaya"
+File "${STAGING_DIR}\radius\dictionary.azaire"
+File "${STAGING_DIR}\radius\dictionary.bay"
+File "${STAGING_DIR}\radius\dictionary.bintec"
+File "${STAGING_DIR}\radius\dictionary.bluecoat"
+File "${STAGING_DIR}\radius\dictionary.bristol"
+File "${STAGING_DIR}\radius\dictionary.broadsoft"
+File "${STAGING_DIR}\radius\dictionary.brocade"
+File "${STAGING_DIR}\radius\dictionary.bskyb"
+File "${STAGING_DIR}\radius\dictionary.bt"
+File "${STAGING_DIR}\radius\dictionary.cablelabs"
+File "${STAGING_DIR}\radius\dictionary.cabletron"
+File "${STAGING_DIR}\radius\dictionary.camiant"
+File "${STAGING_DIR}\radius\dictionary.chillispot"
+File "${STAGING_DIR}\radius\dictionary.cisco"
+File "${STAGING_DIR}\radius\dictionary.cisco.asa"
+File "${STAGING_DIR}\radius\dictionary.cisco.bbsm"
+File "${STAGING_DIR}\radius\dictionary.cisco.vpn3000"
+File "${STAGING_DIR}\radius\dictionary.cisco.vpn5000"
+File "${STAGING_DIR}\radius\dictionary.citrix"
+File "${STAGING_DIR}\radius\dictionary.clavister"
+File "${STAGING_DIR}\radius\dictionary.cnergee"
+File "${STAGING_DIR}\radius\dictionary.colubris"
+File "${STAGING_DIR}\radius\dictionary.columbia_university"
+File "${STAGING_DIR}\radius\dictionary.compat"
+File "${STAGING_DIR}\radius\dictionary.compatible"
+File "${STAGING_DIR}\radius\dictionary.cosine"
+File "${STAGING_DIR}\radius\dictionary.dante"
+File "${STAGING_DIR}\radius\dictionary.dellemc"
+File "${STAGING_DIR}\radius\dictionary.dhcp"
+File "${STAGING_DIR}\radius\dictionary.digium"
+File "${STAGING_DIR}\radius\dictionary.dlink"
+File "${STAGING_DIR}\radius\dictionary.dragonwave"
+File "${STAGING_DIR}\radius\dictionary.efficientip"
+File "${STAGING_DIR}\radius\dictionary.eltex"
+File "${STAGING_DIR}\radius\dictionary.enterasys"
+File "${STAGING_DIR}\radius\dictionary.epygi"
+File "${STAGING_DIR}\radius\dictionary.equallogic"
+File "${STAGING_DIR}\radius\dictionary.ericsson"
+File "${STAGING_DIR}\radius\dictionary.ericsson.ab"
+File "${STAGING_DIR}\radius\dictionary.ericsson.packet.core.networks"
+File "${STAGING_DIR}\radius\dictionary.extreme"
+File "${STAGING_DIR}\radius\dictionary.f5"
+File "${STAGING_DIR}\radius\dictionary.fdxtended"
+File "${STAGING_DIR}\radius\dictionary.fortinet"
+File "${STAGING_DIR}\radius\dictionary.foundry"
+File "${STAGING_DIR}\radius\dictionary.freedhcp"
+File "${STAGING_DIR}\radius\dictionary.freeradius"
+File "${STAGING_DIR}\radius\dictionary.freeradius.internal"
+File "${STAGING_DIR}\radius\dictionary.freeswitch"
+File "${STAGING_DIR}\radius\dictionary.gandalf"
+File "${STAGING_DIR}\radius\dictionary.garderos"
+File "${STAGING_DIR}\radius\dictionary.gemtek"
+File "${STAGING_DIR}\radius\dictionary.h3c"
+File "${STAGING_DIR}\radius\dictionary.hp"
+File "${STAGING_DIR}\radius\dictionary.huawei"
+File "${STAGING_DIR}\radius\dictionary.iana"
+File "${STAGING_DIR}\radius\dictionary.identity_engines"
+File "${STAGING_DIR}\radius\dictionary.iea"
+File "${STAGING_DIR}\radius\dictionary.infoblox"
+File "${STAGING_DIR}\radius\dictionary.infonet"
+File "${STAGING_DIR}\radius\dictionary.ipunplugged"
+File "${STAGING_DIR}\radius\dictionary.issanni"
+File "${STAGING_DIR}\radius\dictionary.itk"
+File "${STAGING_DIR}\radius\dictionary.jradius"
+File "${STAGING_DIR}\radius\dictionary.juniper"
+File "${STAGING_DIR}\radius\dictionary.karlnet"
+File "${STAGING_DIR}\radius\dictionary.kineto"
+File "${STAGING_DIR}\radius\dictionary.lancom"
+File "${STAGING_DIR}\radius\dictionary.livingston"
+File "${STAGING_DIR}\radius\dictionary.localweb"
+File "${STAGING_DIR}\radius\dictionary.lucent"
+File "${STAGING_DIR}\radius\dictionary.manzara"
+File "${STAGING_DIR}\radius\dictionary.meinberg"
+File "${STAGING_DIR}\radius\dictionary.meraki"
+File "${STAGING_DIR}\radius\dictionary.merit"
+File "${STAGING_DIR}\radius\dictionary.meru"
+File "${STAGING_DIR}\radius\dictionary.microsemi"
+File "${STAGING_DIR}\radius\dictionary.microsoft"
+File "${STAGING_DIR}\radius\dictionary.mikrotik"
+File "${STAGING_DIR}\radius\dictionary.motorola"
+File "${STAGING_DIR}\radius\dictionary.motorola.wimax"
+File "${STAGING_DIR}\radius\dictionary.navini"
+File "${STAGING_DIR}\radius\dictionary.netscreen"
+File "${STAGING_DIR}\radius\dictionary.networkphysics"
+File "${STAGING_DIR}\radius\dictionary.nexans"
+File "${STAGING_DIR}\radius\dictionary.nokia"
+File "${STAGING_DIR}\radius\dictionary.nokia.conflict"
+File "${STAGING_DIR}\radius\dictionary.nomadix"
+File "${STAGING_DIR}\radius\dictionary.nortel"
+File "${STAGING_DIR}\radius\dictionary.ntua"
+File "${STAGING_DIR}\radius\dictionary.openser"
+File "${STAGING_DIR}\radius\dictionary.packeteer"
+File "${STAGING_DIR}\radius\dictionary.paloalto"
+File "${STAGING_DIR}\radius\dictionary.patton"
+File "${STAGING_DIR}\radius\dictionary.perle"
+File "${STAGING_DIR}\radius\dictionary.propel"
+File "${STAGING_DIR}\radius\dictionary.prosoft"
+File "${STAGING_DIR}\radius\dictionary.proxim"
+File "${STAGING_DIR}\radius\dictionary.purewave"
+File "${STAGING_DIR}\radius\dictionary.quiconnect"
+File "${STAGING_DIR}\radius\dictionary.quintum"
+File "${STAGING_DIR}\radius\dictionary.redcreek"
+File "${STAGING_DIR}\radius\dictionary.rfc2865"
+File "${STAGING_DIR}\radius\dictionary.rfc2866"
+File "${STAGING_DIR}\radius\dictionary.rfc2867"
+File "${STAGING_DIR}\radius\dictionary.rfc2868"
+File "${STAGING_DIR}\radius\dictionary.rfc2869"
+File "${STAGING_DIR}\radius\dictionary.rfc3162"
+File "${STAGING_DIR}\radius\dictionary.rfc3576"
+File "${STAGING_DIR}\radius\dictionary.rfc3580"
+File "${STAGING_DIR}\radius\dictionary.rfc4072"
+File "${STAGING_DIR}\radius\dictionary.rfc4372"
+File "${STAGING_DIR}\radius\dictionary.rfc4603"
+File "${STAGING_DIR}\radius\dictionary.rfc4675"
+File "${STAGING_DIR}\radius\dictionary.rfc4679"
+File "${STAGING_DIR}\radius\dictionary.rfc4818"
+File "${STAGING_DIR}\radius\dictionary.rfc4849"
+File "${STAGING_DIR}\radius\dictionary.rfc5090"
+File "${STAGING_DIR}\radius\dictionary.rfc5176"
+File "${STAGING_DIR}\radius\dictionary.rfc5447"
+File "${STAGING_DIR}\radius\dictionary.rfc5580"
+File "${STAGING_DIR}\radius\dictionary.rfc5607"
+File "${STAGING_DIR}\radius\dictionary.rfc5904"
+File "${STAGING_DIR}\radius\dictionary.rfc6519"
+File "${STAGING_DIR}\radius\dictionary.rfc6572"
+File "${STAGING_DIR}\radius\dictionary.rfc6677"
+File "${STAGING_DIR}\radius\dictionary.rfc6911"
+File "${STAGING_DIR}\radius\dictionary.rfc6929"
+File "${STAGING_DIR}\radius\dictionary.rfc6930"
+File "${STAGING_DIR}\radius\dictionary.rfc7055"
+File "${STAGING_DIR}\radius\dictionary.rfc7155"
+File "${STAGING_DIR}\radius\dictionary.rfc7268"
+File "${STAGING_DIR}\radius\dictionary.rfc7499"
+File "${STAGING_DIR}\radius\dictionary.rfc7930"
+File "${STAGING_DIR}\radius\dictionary.riverbed"
+File "${STAGING_DIR}\radius\dictionary.riverstone"
+File "${STAGING_DIR}\radius\dictionary.roaringpenguin"
+File "${STAGING_DIR}\radius\dictionary.ruckus"
+File "${STAGING_DIR}\radius\dictionary.ruggedcom"
+File "${STAGING_DIR}\radius\dictionary.sangoma"
+File "${STAGING_DIR}\radius\dictionary.sg"
+File "${STAGING_DIR}\radius\dictionary.shasta"
+File "${STAGING_DIR}\radius\dictionary.shiva"
+File "${STAGING_DIR}\radius\dictionary.siemens"
+File "${STAGING_DIR}\radius\dictionary.slipstream"
+File "${STAGING_DIR}\radius\dictionary.sofaware"
+File "${STAGING_DIR}\radius\dictionary.sonicwall"
+File "${STAGING_DIR}\radius\dictionary.springtide"
+File "${STAGING_DIR}\radius\dictionary.starent"
+File "${STAGING_DIR}\radius\dictionary.starent.vsa1"
+File "${STAGING_DIR}\radius\dictionary.surfnet"
+File "${STAGING_DIR}\radius\dictionary.symbol"
+File "${STAGING_DIR}\radius\dictionary.t_systems_nova"
+File "${STAGING_DIR}\radius\dictionary.telebit"
+File "${STAGING_DIR}\radius\dictionary.telkom"
+File "${STAGING_DIR}\radius\dictionary.terena"
+File "${STAGING_DIR}\radius\dictionary.trapeze"
+File "${STAGING_DIR}\radius\dictionary.travelping"
+File "${STAGING_DIR}\radius\dictionary.tropos"
+File "${STAGING_DIR}\radius\dictionary.ukerna"
+File "${STAGING_DIR}\radius\dictionary.unisphere"
+File "${STAGING_DIR}\radius\dictionary.unix"
+File "${STAGING_DIR}\radius\dictionary.usr"
+File "${STAGING_DIR}\radius\dictionary.utstarcom"
+File "${STAGING_DIR}\radius\dictionary.valemount"
+File "${STAGING_DIR}\radius\dictionary.versanet"
+File "${STAGING_DIR}\radius\dictionary.verizon"
+File "${STAGING_DIR}\radius\dictionary.vqp"
+File "${STAGING_DIR}\radius\dictionary.walabi"
+File "${STAGING_DIR}\radius\dictionary.waverider"
+File "${STAGING_DIR}\radius\dictionary.wichorus"
+File "${STAGING_DIR}\radius\dictionary.wimax"
+File "${STAGING_DIR}\radius\dictionary.wimax.alvarion"
+File "${STAGING_DIR}\radius\dictionary.wimax.wichorus"
+File "${STAGING_DIR}\radius\dictionary.wispr"
+File "${STAGING_DIR}\radius\dictionary.xedia"
+File "${STAGING_DIR}\radius\dictionary.xylan"
+File "${STAGING_DIR}\radius\dictionary.yubico"
+File "${STAGING_DIR}\radius\dictionary.zeus"
+File "${STAGING_DIR}\radius\dictionary.zte"
+File "${STAGING_DIR}\radius\dictionary.zyxel"
+!include "custom_radius_dict.txt"
+SetOutPath $INSTDIR
+
+;
+; install the dtds in the dtds subdirectory
+;
+SetOutPath $INSTDIR\dtds
+File "${STAGING_DIR}\dtds\dc.dtd"
+File "${STAGING_DIR}\dtds\itunes.dtd"
+File "${STAGING_DIR}\dtds\mscml.dtd"
+File "${STAGING_DIR}\dtds\pocsettings.dtd"
+File "${STAGING_DIR}\dtds\presence.dtd"
+File "${STAGING_DIR}\dtds\reginfo.dtd"
+File "${STAGING_DIR}\dtds\rlmi.dtd"
+File "${STAGING_DIR}\dtds\rss.dtd"
+File "${STAGING_DIR}\dtds\smil.dtd"
+File "${STAGING_DIR}\dtds\xcap-caps.dtd"
+File "${STAGING_DIR}\dtds\xcap-error.dtd"
+File "${STAGING_DIR}\dtds\watcherinfo.dtd"
+SetOutPath $INSTDIR
+
+; Create the extcap directory
+CreateDirectory $INSTDIR\extcap
+
+;
+; install the protobuf .proto definitions in the protobuf subdirectory
+;
+SetOutPath $INSTDIR\protobuf
+File "${STAGING_DIR}\protobuf\*.proto"
+
+; Install the TPNCP DAT file in the "tpncp" subdirectory
+; of the installation directory.
+SetOutPath $INSTDIR\tpncp
+File "${STAGING_DIR}\tpncp\tpncp.dat"
+
+;
+; install the wimaxasncp TLV definitions in the wimaxasncp subdirectory
+;
+SetOutPath $INSTDIR\wimaxasncp
+File "${STAGING_DIR}\wimaxasncp\dictionary.xml"
+File "${STAGING_DIR}\wimaxasncp\dictionary.dtd"
+SetOutPath $INSTDIR
+
+; Write the installation path into the registry for InstallDirRegKey
+WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\${PROGRAM_NAME} InstallDir "$INSTDIR"
+
+; Write the uninstall keys for Windows
+; https://nsis.sourceforge.io/Add_uninstall_information_to_Add/Remove_Programs
+; https://docs.microsoft.com/en-us/previous-versions/ms954376(v=msdn.10)
+; https://docs.microsoft.com/en-us/windows/win32/msi/uninstall-registry-key
+!define UNINSTALL_PATH "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}"
+
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "Comments" "${DISPLAY_NAME}"
+!ifdef QT_DIR
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "DisplayIcon" "$INSTDIR\${PROGRAM_NAME_PATH},0"
+!endif
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "DisplayName" "${DISPLAY_NAME}"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "DisplayVersion" "${VERSION}"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "HelpLink" "https://ask.wireshark.org/"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "InstallLocation" "$INSTDIR"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "Publisher" "The Wireshark developer community, https://www.wireshark.org"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "URLInfoAbout" "https://www.wireshark.org"
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "URLUpdateInfo" "https://www.wireshark.org/download.html"
+
+WriteRegDWORD HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "NoModify" 1
+WriteRegDWORD HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "NoRepair" 1
+WriteRegDWORD HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "VersionMajor" ${MAJOR_VERSION}
+WriteRegDWORD HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "VersionMinor" ${MINOR_VERSION}
+
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "UninstallString" '"$INSTDIR\${UNINSTALLER_NAME}"'
+WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "QuietUninstallString" '"$INSTDIR\${UNINSTALLER_NAME}" /S'
+
+; To quote https://web.archive.org/web/20150911221413/http://download.microsoft.com/download/0/4/6/046bbd36-0812-4c22-a870-41911c6487a6/WindowsUserExperience.pdf:
+; "Do not include Readme, Help, or Uninstall entries on the Programs menu."
+Delete "$SMPROGRAMS\${PROGRAM_NAME}\Wireshark Web Site.lnk"
+
+; Create file extensions if the Associated Tasks page check box
+; is checked.
+${If} $FILE_ASSOCIATE_STATE == ${BST_CHECKED}
+WriteRegStr HKCR ${WIRESHARK_ASSOC} "" "Wireshark capture file"
+WriteRegStr HKCR "${WIRESHARK_ASSOC}\Shell\open\command" "" '"$INSTDIR\${PROGRAM_NAME_PATH}" "%1"'
+WriteRegStr HKCR "${WIRESHARK_ASSOC}\DefaultIcon" "" '"$INSTDIR\${PROGRAM_NAME_PATH}",1'
+; We refresh the icon cache down in -Finally.
+Call Associate
+; If you add something here be sure to sync it with the uninstall section and the
+; AdditionalTasks page
+${Endif}
+
+; if running as a silent installer, don't try to install npcap
+IfSilent SecRequired_skip_Npcap
+
+; Install Npcap (depending on npcap page setting)
+ReadINIStr $0 "$PLUGINSDIR\NpcapPage.ini" "Field 4" "State"
+StrCmp $0 "0" SecRequired_skip_Npcap
+SetOutPath $INSTDIR
+File "${EXTRA_INSTALLER_DIR}\npcap-${NPCAP_PACKAGE_VERSION}.exe"
+ExecWait '"$INSTDIR\npcap-${NPCAP_PACKAGE_VERSION}.exe" /winpcap_mode=no /loopback_support=no' $0
+DetailPrint "Npcap installer returned $0"
+SecRequired_skip_Npcap:
+
+; If running as a silent installer, don't try to install USBPcap
+IfSilent SecRequired_skip_USBPcap
+
+ReadINIStr $0 "$PLUGINSDIR\USBPcapPage.ini" "Field 4" "State"
+StrCmp $0 "0" SecRequired_skip_USBPcap
+SetOutPath $INSTDIR
+File "${EXTRA_INSTALLER_DIR}\USBPcapSetup-${USBPCAP_PACKAGE_VERSION}.exe"
+ExecWait '"$INSTDIR\USBPcapSetup-${USBPCAP_PACKAGE_VERSION}.exe"' $0
+DetailPrint "USBPcap installer returned $0"
+${If} $0 == "0"
+ ${If} ${RunningX64}
+ ${DisableX64FSRedirection}
+ SetRegView 64
+ ${EndIf}
+ ReadRegStr $USBPCAP_UNINSTALL HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\USBPcap" "UninstallString"
+ ${If} ${RunningX64}
+ ${EnableX64FSRedirection}
+ SetRegView 32
+ ${EndIf}
+ ${StrRep} $0 '$USBPCAP_UNINSTALL' 'Uninstall.exe' 'USBPcapCMD.exe'
+ ${StrRep} $1 '$0' '"' ''
+ CopyFiles /SILENT $1 $INSTDIR\extcap
+ SetRebootFlag true
+${EndIf}
+SecRequired_skip_USBPcap:
+
+; If no user profile exists for Wireshark but for Ethereal, copy it over
+SetShellVarContext current
+IfFileExists $APPDATA\Wireshark profile_done
+IfFileExists $APPDATA\Ethereal 0 profile_done
+;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
+CreateDirectory $APPDATA\Wireshark
+CopyFiles $APPDATA\Ethereal\*.* $APPDATA\Wireshark
+profile_done:
+SetShellVarContext all
+
+SectionEnd ; "Required"
+
+!ifdef QT_DIR
+Section "${PROGRAM_NAME}" SecWiresharkQt
+;-------------------------------------------
+; by default, Wireshark.exe is installed
+SetOutPath $INSTDIR
+File "${QT_DIR}\${PROGRAM_NAME_PATH}"
+; Write an entry for ShellExecute
+WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\${PROGRAM_NAME_PATH}" "" '$INSTDIR\${PROGRAM_NAME_PATH}'
+WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\${PROGRAM_NAME_PATH}" "Path" '$INSTDIR'
+
+!ifndef SKIP_NSIS_QT_DLLS
+!include wireshark-qt-manifest.nsh
+!endif
+
+${!defineifexist} TRANSLATIONS_FOLDER "${QT_DIR}\translations"
+SetOutPath $INSTDIR
+!ifdef TRANSLATIONS_FOLDER
+ ; Starting from Qt 5.5, *.qm files are put in a translations subfolder
+ File /r "${QT_DIR}\translations"
+!else
+ File "${QT_DIR}\*.qm"
+!endif
+
+; Is the Start Menu check box checked?
+${If} $START_MENU_STATE == ${BST_CHECKED}
+ CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}.lnk" "$INSTDIR\${PROGRAM_NAME_PATH}" "" "$INSTDIR\${PROGRAM_NAME_PATH}" 0 "" "" "${PROGRAM_FULL_NAME}"
+${Endif}
+
+${If} $DESKTOP_ICON_STATE == ${BST_CHECKED}
+ CreateShortCut "$DESKTOP\${PROGRAM_NAME}.lnk" "$INSTDIR\${PROGRAM_NAME_PATH}" "" "$INSTDIR\${PROGRAM_NAME_PATH}" 0 "" "" "${PROGRAM_FULL_NAME}"
+${Endif}
+
+SectionEnd ; "SecWiresharkQt"
+!endif
+
+
+Section "TShark" SecTShark
+;-------------------------------------------
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\tshark.exe"
+File "${STAGING_DIR}\tshark.html"
+SectionEnd
+
+Section "-Plugins & Extensions"
+
+SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs'
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\g711.dll"
+!ifdef SPANDSP_FOUND
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\g722.dll"
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\g726.dll"
+!endif
+!ifdef BCG729_FOUND
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\g729.dll"
+!endif
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\l16mono.dll"
+!ifdef SBC_FOUND
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\sbc.dll"
+!endif
+!ifdef ILBC_FOUND
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\ilbc.dll"
+!endif
+!ifdef OPUS_FOUND
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\opus_dec.dll"
+!endif
+
+; This should be a function or macro
+SetOutPath '$INSTDIR\profiles\Bluetooth'
+File "${STAGING_DIR}\profiles\Bluetooth\colorfilters"
+File "${STAGING_DIR}\profiles\Bluetooth\preferences"
+SetOutPath '$INSTDIR\profiles\Classic'
+File "${STAGING_DIR}\profiles\Classic\colorfilters"
+SetOutPath '$INSTDIR\profiles\No Reassembly'
+File "${STAGING_DIR}\profiles\No Reassembly\preferences"
+
+SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\ethercat.dll"
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\gryphon.dll"
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\irda.dll"
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\opcua.dll"
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\profinet.dll"
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\unistim.dll"
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\wimax.dll"
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\wimaxasncp.dll"
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\wimaxmacphy.dll"
+!include "custom_plugins.txt"
+
+SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\wiretap'
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\wiretap\usbdump.dll"
+
+SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\mate.dll"
+
+!ifdef SMI_DIR
+SetOutPath '$INSTDIR\snmp\mibs'
+File "${SMI_DIR}\share\mibs\iana\*"
+File "${SMI_DIR}\share\mibs\ietf\*"
+File "${SMI_DIR}\share\mibs\irtf\*"
+File "${SMI_DIR}\share\mibs\tubs\*"
+File "${SMI_DIR}\share\pibs\*"
+File "${SMI_DIR}\share\yang\*.yang"
+!include "custom_mibs.txt"
+!endif
+
+SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\transum.dll"
+
+SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
+File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\stats_tree.dll"
+
+SectionEnd ; "Plugins / Extensions"
+
+Section "-Additional command line tools"
+
+SetOutPath $INSTDIR
+File "${STAGING_DIR}\capinfos.exe"
+File "${STAGING_DIR}\capinfos.html"
+
+File "${STAGING_DIR}\captype.exe"
+File "${STAGING_DIR}\captype.html"
+
+File "${STAGING_DIR}\editcap.exe"
+File "${STAGING_DIR}\editcap.html"
+
+File "${STAGING_DIR}\mergecap.exe"
+File "${STAGING_DIR}\mergecap.html"
+
+!ifdef MMDBRESOLVE_EXE
+File "${STAGING_DIR}\mmdbresolve.html"
+File "${STAGING_DIR}\mmdbresolve.exe"
+!endif
+
+File "${STAGING_DIR}\randpkt.exe"
+File "${STAGING_DIR}\randpkt.html"
+
+File "${STAGING_DIR}\rawshark.exe"
+File "${STAGING_DIR}\rawshark.html"
+
+File "${STAGING_DIR}\reordercap.exe"
+File "${STAGING_DIR}\reordercap.html"
+
+File "${STAGING_DIR}\sharkd.exe"
+;File "${STAGING_DIR}\sharkd.html"
+
+File "${STAGING_DIR}\text2pcap.exe"
+File "${STAGING_DIR}\text2pcap.html"
+
+SectionEnd ; "Tools"
+
+SectionGroup /e "External capture tools (extcap)" SecExtcapGroup
+
+Section /o "Androiddump" SecAndroiddump
+;-------------------------------------------
+ !insertmacro InstallExtcap "androiddump"
+SectionEnd
+!insertmacro CheckExtrasFlag "androiddump"
+
+!ifdef BUILD_etwdump
+Section "Etwdump" SecEtwdump
+;-------------------------------------------
+ !insertmacro InstallExtcap "Etwdump"
+SectionEnd
+!insertmacro CheckExtrasFlag "Etwdump"
+!endif
+
+Section /o "Randpktdump" SecRandpktdump
+;-------------------------------------------
+ !insertmacro InstallExtcap "randpktdump"
+SectionEnd
+!insertmacro CheckExtrasFlag "randpktdump"
+
+!ifdef LIBSSH_FOUND
+Section /o "Sshdump, Ciscodump, and Wifidump" SecSshdump
+;-------------------------------------------
+ !insertmacro InstallExtcap "sshdump"
+ !insertmacro InstallExtcap "ciscodump"
+ !insertmacro InstallExtcap "wifidump"
+SectionEnd
+!insertmacro CheckExtrasFlag "sshdump"
+!insertmacro CheckExtrasFlag "ciscodump"
+!insertmacro CheckExtrasFlag "wifidump"
+!endif
+
+Section /o "UDPdump" SecUDPdump
+;-------------------------------------------
+ !insertmacro InstallExtcap "udpdump"
+SectionEnd
+!insertmacro CheckExtrasFlag "udpdump"
+
+SectionGroupEnd ; "External Capture (extcap)"
+
+Section "-Clear Partial Selected"
+!insertmacro ClearSectionFlag ${SecExtcapGroup} ${SF_PSELECTED}
+SectionEnd
+
+!ifdef DOCBOOK_DIR
+Section "-Documentation"
+
+SetOutPath "$INSTDIR\Wireshark User's Guide"
+File /r "${DOCBOOK_DIR}\wsug_html_chunked\*.*"
+
+SetOutPath $INSTDIR
+File "${DOCBOOK_DIR}\faq.html"
+SectionEnd
+!endif
+
+Section "-Finally"
+
+!insertmacro UpdateIcons
+
+; Compute and write the installation directory size
+${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
+IntFmt $0 "0x%08X" $0
+WriteRegDWORD HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}" "EstimatedSize" "$0"
+
+SectionEnd
+
+; ============================================================================
+; Section macros
+; ============================================================================
+!include "Sections.nsh"
+
+; ============================================================================
+; Uninstall page configuration
+; ============================================================================
+ShowUninstDetails show
+
+; ============================================================================
+; Functions and macros
+; ============================================================================
+
+Function un.Disassociate
+ Push $R0
+!insertmacro PushFileExtensions
+
+ Pop $EXTENSION
+ ${DoUntil} $EXTENSION == ${FILE_EXTENSION_MARKER}
+ ReadRegStr $R0 HKCR $EXTENSION ""
+ StrCmp $R0 ${WIRESHARK_ASSOC} un.Disassociate.doDeregister
+ Goto un.Disassociate.end
+un.Disassociate.doDeregister:
+ ; The extension is associated with Wireshark so, we must destroy this!
+ DeleteRegKey HKCR $EXTENSION
+ DetailPrint "Deregistered file type: $EXTENSION"
+un.Disassociate.end:
+ Pop $EXTENSION
+ ${Loop}
+
+ Pop $R0
+FunctionEnd
+
+Section "-Required"
+SectionEnd
+
+!define EXECUTABLE_MARKER "EXECUTABLE_MARKER"
+Var EXECUTABLE
+
+Section /o "Un.USBPcap" un.SecUSBPcap
+;-------------------------------------------
+SectionIn 2
+${If} ${RunningX64}
+ ${DisableX64FSRedirection}
+ SetRegView 64
+${EndIf}
+ReadRegStr $1 HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\USBPcap" "UninstallString"
+${If} ${RunningX64}
+ ${EnableX64FSRedirection}
+ SetRegView 32
+${EndIf}
+${If} $1 != ""
+ ${UnStrRep} $2 '$1' '\Uninstall.exe' ''
+ ${UnStrRep} $3 '$2' '"' ''
+ ExecWait '$1 _?=$3' $0
+ DetailPrint "USBPcap uninstaller returned $0"
+ ${If} $0 == "0"
+ Delete "$3\Uninstall.exe"
+ Delete "$INSTDIR\extcap\USBPcapCMD.exe"
+ ${EndIf}
+${EndIf}
+ClearErrors
+SectionEnd
+
+
+Section "Uninstall" un.SecUinstall
+;-------------------------------------------
+;
+; UnInstall for every user
+;
+SectionIn 1 2
+SetShellVarContext all
+
+!insertmacro IsWiresharkRunning
+
+Push "${EXECUTABLE_MARKER}"
+Push "${PROGRAM_NAME}"
+Push "capinfos"
+Push "captype"
+Push "dftest"
+Push "dumpcap"
+Push "editcap"
+Push "mergecap"
+Push "randpkt"
+Push "rawshark"
+Push "reordercap"
+Push "sharkd"
+Push "text2pcap"
+Push "tshark"
+
+!ifdef MMDBRESOLVE_EXE
+Push "mmdbresolve"
+!endif
+
+Pop $EXECUTABLE
+${DoUntil} $EXECUTABLE == ${EXECUTABLE_MARKER}
+
+ ; IsWiresharkRunning should make sure everything is closed down so we *shouldn't* run
+ ; into any problems here.
+ Delete "$INSTDIR\$EXECUTABLE.exe"
+ IfErrors 0 deletionSuccess
+ MessageBox MB_OK "$EXECUTABLE.exe could not be removed. Is it in use?" /SD IDOK IDOK 0
+ Abort "$EXECUTABLE.exe could not be removed. Aborting the uninstall process."
+
+deletionSuccess:
+ Pop $EXECUTABLE
+
+${Loop}
+
+
+DeleteRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}"
+DeleteRegKey HKEY_LOCAL_MACHINE "Software\${PROGRAM_NAME}"
+DeleteRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\${PROGRAM_NAME}.exe"
+
+Call un.Disassociate
+
+DeleteRegKey HKCR ${WIRESHARK_ASSOC}
+DeleteRegKey HKCR "${WIRESHARK_ASSOC}\Shell\open\command"
+DeleteRegKey HKCR "${WIRESHARK_ASSOC}\DefaultIcon"
+
+Delete "$INSTDIR\*.dll"
+Delete "$INSTDIR\*.exe"
+Delete "$INSTDIR\*.html"
+Delete "$INSTDIR\*.qm"
+Delete "$INSTDIR\accessible\*.*"
+Delete "$INSTDIR\AUTHORS-SHORT"
+Delete "$INSTDIR\COPYING*"
+Delete "$INSTDIR\audio\*.*"
+Delete "$INSTDIR\bearer\*.*"
+Delete "$INSTDIR\diameter\*.*"
+Delete "$INSTDIR\extcap\androiddump.*"
+Delete "$INSTDIR\extcap\ciscodump.*"
+Delete "$INSTDIR\extcap\etwdump.*"
+Delete "$INSTDIR\extcap\randpktdump.*"
+Delete "$INSTDIR\extcap\sshdump.*"
+Delete "$INSTDIR\extcap\udpdump.*"
+Delete "$INSTDIR\extcap\wifidump.*"
+Delete "$INSTDIR\gpl-2.0-standalone.html"
+Delete "$INSTDIR\Acknowledgements.md"
+Delete "$INSTDIR\generic\*.*"
+Delete "$INSTDIR\help\*.*"
+Delete "$INSTDIR\iconengines\*.*"
+Delete "$INSTDIR\imageformats\*.*"
+Delete "$INSTDIR\mediaservice\*.*"
+Delete "$INSTDIR\multimedia\*.*"
+Delete "$INSTDIR\networkinformation\*.*"
+Delete "$INSTDIR\platforms\*.*"
+Delete "$INSTDIR\playlistformats\*.*"
+Delete "$INSTDIR\printsupport\*.*"
+Delete "$INSTDIR\share\glib-2.0\schemas\*.*"
+Delete "$INSTDIR\snmp\*.*"
+Delete "$INSTDIR\snmp\mibs\*.*"
+Delete "$INSTDIR\styles\translations\*.*"
+Delete "$INSTDIR\styles\*.*"
+Delete "$INSTDIR\protobuf\*.*"
+Delete "$INSTDIR\tls\*.*"
+Delete "$INSTDIR\tpncp\*.*"
+Delete "$INSTDIR\translations\*.*"
+Delete "$INSTDIR\ui\*.*"
+Delete "$INSTDIR\wimaxasncp\*.*"
+Delete "$INSTDIR\ws.css"
+; previous versions installed these files
+Delete "$INSTDIR\*.manifest"
+; previous versions installed this file
+Delete "$INSTDIR\AUTHORS-SHORT-FORMAT"
+Delete "$INSTDIR\README*"
+Delete "$INSTDIR\NEWS.txt"
+Delete "$INSTDIR\manuf"
+Delete "$INSTDIR\wka"
+Delete "$INSTDIR\services"
+Delete "$INSTDIR\pdml2html.xsl"
+Delete "$INSTDIR\pcrepattern.3.txt"
+Delete "$INSTDIR\user-guide.chm"
+Delete "$INSTDIR\example_snmp_users_file"
+Delete "$INSTDIR\ipmap.html"
+Delete "$INSTDIR\radius\*.*"
+Delete "$INSTDIR\dtds\*.*"
+Delete "$INSTDIR\browser_sslkeylog.lua"
+Delete "$INSTDIR\console.lua"
+Delete "$INSTDIR\dtd_gen.lua"
+Delete "$INSTDIR\init.lua"
+Delete "$INSTDIR\release-notes.html"
+
+RMDir "$INSTDIR\accessible"
+RMDir "$INSTDIR\audio"
+RMDir "$INSTDIR\bearer"
+RMDir "$INSTDIR\extcap"
+RMDir "$INSTDIR\iconengines"
+RMDir "$INSTDIR\imageformats"
+RMDir "$INSTDIR\mediaservice"
+RMDir "$INSTDIR\multimedia"
+RMDir "$INSTDIR\networkinformation"
+RMDir "$INSTDIR\platforms"
+RMDir "$INSTDIR\playlistformats"
+RMDir "$INSTDIR\printsupport"
+RMDir "$INSTDIR\styles\translations"
+RMDir "$INSTDIR\styles"
+RMDir "$SMPROGRAMS\${PROGRAM_NAME}"
+RMDir "$INSTDIR\help"
+RMDir "$INSTDIR\generic"
+RMDir /r "$INSTDIR\Wireshark User's Guide"
+RMDir "$INSTDIR\diameter"
+RMDir "$INSTDIR\snmp\mibs"
+RMDir "$INSTDIR\snmp"
+RMDir "$INSTDIR\radius"
+RMDir "$INSTDIR\dtds"
+RMDir "$INSTDIR\protobuf"
+RMDir "$INSTDIR\tls"
+RMDir "$INSTDIR\tpncp"
+RMDir "$INSTDIR\translations"
+RMDir "$INSTDIR\ui"
+RMDir "$INSTDIR\wimaxasncp"
+RMDir "$INSTDIR"
+
+SectionEnd ; "Uinstall"
+
+Section "Un.Plugins" un.SecPlugins
+;-------------------------------------------
+SectionIn 1 2
+;Delete "$INSTDIR\plugins\${VERSION}\*.*"
+;Delete "$INSTDIR\plugins\*.*"
+;RMDir "$INSTDIR\plugins\${VERSION}"
+;RMDir "$INSTDIR\plugins"
+RMDir /r "$INSTDIR\plugins"
+SectionEnd
+
+Section "Un.Global Profiles" un.SecProfiles
+;-------------------------------------------
+SectionIn 1 2
+RMDir /r "$INSTDIR\profiles"
+SectionEnd
+
+Section "Un.Global Settings" un.SecGlobalSettings
+;-------------------------------------------
+SectionIn 1 2
+Delete "$INSTDIR\cfilters"
+Delete "$INSTDIR\colorfilters"
+Delete "$INSTDIR\dfilters"
+Delete "$INSTDIR\enterprises.tsv"
+Delete "$INSTDIR\smi_modules"
+RMDir "$INSTDIR"
+SectionEnd
+
+Section /o "Un.Personal Settings" un.SecPersonalSettings
+;-------------------------------------------
+SectionIn 2
+SetShellVarContext current
+Delete "$APPDATA\${PROGRAM_NAME}\*.*"
+RMDir "$APPDATA\${PROGRAM_NAME}"
+DeleteRegKey HKCU "Software\${PROGRAM_NAME}"
+SectionEnd
+
+;VAR un.NPCAP_UNINSTALL
+
+Section /o "Un.Npcap" un.SecNpcap
+;-------------------------------------------
+SectionIn 2
+ReadRegStr $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\NpcapInst" "UninstallString"
+;IfErrors un.lbl_npcap_notinstalled ;if RegKey is unavailable, Npcap is not installed
+${If} $1 != ""
+ ;MessageBox MB_OK "Npcap $1" /SD IDOK
+ ExecWait '$1' $0
+ DetailPrint "Npcap uninstaller returned $0"
+ ;SetRebootFlag true
+${EndIf}
+;un.lbl_npcap_notinstalled:
+SectionEnd
+
+Section "-Un.Finally"
+;-------------------------------------------
+SectionIn 1 2
+
+!insertmacro UpdateIcons
+
+; this test must be done after all other things uninstalled (e.g. Global Settings)
+IfFileExists "$INSTDIR" 0 NoFinalErrorMsg
+ MessageBox MB_OK "Unable to remove $INSTDIR." /SD IDOK IDOK 0 ; skipped if dir doesn't exist
+NoFinalErrorMsg:
+SectionEnd
+
+; Sign our installer and uninstaller during compilation.
+!ifdef ENABLE_SIGNED_NSIS
+!finalize 'sign-wireshark.bat "%1"' = 0 ; %1 is replaced by the installer exe to be signed.
+!uninstfinalize 'sign-wireshark.bat "%1"' = 0 ; %1 is replaced by the uninstaller exe to be signed.
+!endif
+
+; ============================================================================
+; PLEASE MAKE SURE, THAT THE DESCRIPTIVE TEXT FITS INTO THE DESCRIPTION FIELD!
+; ============================================================================
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+!ifdef QT_DIR
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecWiresharkQt} "The main network protocol analyzer application."
+!endif
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecTShark} "Text based network protocol analyzer."
+
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecExtcapGroup} "External Capture Interfaces"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecAndroiddump} "Provide capture interfaces from Android devices."
+ !ifdef BUILD_etwdump
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecEtwdump} "Provide an interface to read Event Tracing for Windows (ETW) event trace (ETL)."
+ !endif
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecRandpktdump} "Provide an interface to the random packet generator. (see also randpkt)"
+ !ifdef LIBSSH_FOUND
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecSshdump} "Provide remote capture through SSH. (tcpdump, Cisco EPC, wifi)"
+ !endif
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecUDPdump} "Provide capture interface to receive UDP packets streamed from network devices."
+
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecUinstall} "Uninstall all ${PROGRAM_NAME} components."
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecPlugins} "Uninstall all Plugins (even from previous ${PROGRAM_NAME} versions)."
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecProfiles} "Uninstall all global configuration profiles."
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecGlobalSettings} "Uninstall global settings like: $INSTDIR\cfilters"
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecPersonalSettings} "Uninstall personal settings like your preferences file from your profile: $PROFILE."
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecNpcap} "Call Npcap's uninstall program."
+ !insertmacro MUI_DESCRIPTION_TEXT ${un.SecUSBPcap} "Call USBPcap's uninstall program."
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_END
+
+; ============================================================================
+; Callback functions
+; ============================================================================
+!ifdef QT_DIR
+
+Var QT_SELECTED
+
+; Called from fnc_AdditionalTasksPage_Create via DisplayAdditionalTasksPage.
+Function InitAdditionalTasksPage
+ ; We've created the Additional tasks page. Update our control states
+ ; before they are shown.
+ ; We set XXX_STATE -> XxxCheckBox here and go the other direction below.
+ ${NSD_SetState} $hCtl_AdditionalTasksPage_StartMenuCheckBox $START_MENU_STATE
+ ${NSD_SetState} $hCtl_AdditionalTasksPage_DesktopIconCheckBox $DESKTOP_ICON_STATE
+ ${NSD_SetState} $hCtl_AdditionalTasksPage_AssociateExtensionsCheckBox $FILE_ASSOCIATE_STATE
+
+ StrCpy $QT_SELECTED 0
+ ${If} ${SectionIsSelected} ${SecWiresharkQt}
+ StrCpy $QT_SELECTED 1
+ ${Endif}
+ EnableWindow $hCtl_AdditionalTasksPage_CreateShortcutsLabel $QT_SELECTED
+ EnableWindow $hCtl_AdditionalTasksPage_StartMenuCheckBox $QT_SELECTED
+ EnableWindow $hCtl_AdditionalTasksPage_DesktopIconCheckBox $QT_SELECTED
+
+ EnableWindow $hCtl_AdditionalTasksPage_ExtensionsLabel $QT_SELECTED
+ EnableWindow $hCtl_AdditionalTasksPage_AssociateExtensionsCheckBox $QT_SELECTED
+ EnableWindow $hCtl_AdditionalTasksPage_FileExtensionsLabel $QT_SELECTED
+FunctionEnd
+
+Function LeaveAdditionalTasksPage
+ ; We're leaving the Additional tasks page. Get our control states
+ ; before they're destroyed.
+ ; We set XxxCheckBox -> XXX_STATE here and go the other direction above.
+ ${NSD_GetState} $hCtl_AdditionalTasksPage_StartMenuCheckBox $START_MENU_STATE
+ ${NSD_GetState} $hCtl_AdditionalTasksPage_DesktopIconCheckBox $DESKTOP_ICON_STATE
+ ${NSD_GetState} $hCtl_AdditionalTasksPage_AssociateExtensionsCheckBox $FILE_ASSOCIATE_STATE
+FunctionEnd
+
+!endif ; QT_DIR
+
+Var NPCAP_NAME ; DisplayName from Npcap installation
+Var WINPCAP_NAME ; DisplayName from WinPcap installation
+Var NPCAP_DISPLAY_VERSION ; DisplayVersion from Npcap installation
+Var USBPCAP_NAME ; DisplayName from USBPcap installation
+
+Function myShowCallback
+
+ ClearErrors
+ ; detect if WinPcap should be installed
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 4" "Text" "Install Npcap ${NPCAP_PACKAGE_VERSION}"
+ ReadRegStr $NPCAP_NAME HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\NpcapInst" "DisplayName"
+ IfErrors 0 lbl_npcap_installed
+ ; check also if WinPcap is installed
+ ReadRegStr $WINPCAP_NAME HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" "DisplayName"
+ IfErrors 0 lbl_winpcap_installed ;if RegKey is available, WinPcap is already installed
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 2" "Text" "Neither of these are installed"
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 2" "Flags" "DISABLED"
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 5" "Text" "(Use Add/Remove Programs first to uninstall any undetected old Npcap or WinPcap versions)"
+ Goto lbl_npcap_done
+
+lbl_npcap_installed:
+ ReadRegStr $NPCAP_DISPLAY_VERSION HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\NpcapInst" "DisplayVersion"
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 1" "Text" "Currently installed Npcap version"
+ StrCmp $NPCAP_NAME "Npcap" 0 +3
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 2" "Text" "Npcap $NPCAP_DISPLAY_VERSION"
+ Goto +2
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 2" "Text" "$NPCAP_NAME"
+
+ ; Compare the installed build against the one we have.
+ StrCmp $NPCAP_DISPLAY_VERSION "" lbl_npcap_do_install ; Npcap wasn't installed improperly?
+ ${VersionConvert} $NPCAP_DISPLAY_VERSION "" $R0 ; 0.99-r7 -> 0.99.114.7
+ ${VersionConvert} "${NPCAP_PACKAGE_VERSION}" "" $R1
+ ${VersionCompare} $R0 $R1 $1
+ StrCmp $1 "2" lbl_npcap_do_install
+
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 4" "State" "0"
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 4" "Flags" "DISABLED"
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 5" "Text" "If you wish to install Npcap, please uninstall $NPCAP_NAME manually first."
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 5" "Flags" "DISABLED"
+ Goto lbl_npcap_done
+
+lbl_winpcap_installed:
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 2" "Text" "$WINPCAP_NAME"
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 4" "State" "1"
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 5" "Text" "The currently installed $WINPCAP_NAME may be uninstalled first."
+ Goto lbl_npcap_done
+
+lbl_npcap_do_install:
+ ; seems to be an old version, install newer one
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 4" "State" "1"
+ StrCmp $NPCAP_NAME "Npcap" 0 +3
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 5" "Text" "The currently installed Npcap $NPCAP_DISPLAY_VERSION will be uninstalled first."
+ Goto +2
+ WriteINIStr "$PLUGINSDIR\NpcapPage.ini" "Field 5" "Text" "The currently installed $NPCAP_NAME will be uninstalled first."
+
+lbl_npcap_done:
+
+ ; detect if USBPcap should be installed
+ WriteINIStr "$PLUGINSDIR\USBPcapPage.ini" "Field 4" "Text" "Install USBPcap ${USBPCAP_PACKAGE_VERSION}"
+ ${If} ${RunningX64}
+ ${DisableX64FSRedirection}
+ SetRegView 64
+ ${EndIf}
+ ReadRegStr $USBPCAP_NAME HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\USBPcap" "DisplayName"
+ ${If} ${RunningX64}
+ ${EnableX64FSRedirection}
+ SetRegView 32
+ ${EndIf}
+ IfErrors 0 lbl_usbpcap_installed ;if RegKey is available, USBPcap is already installed
+ WriteINIStr "$PLUGINSDIR\USBPcapPage.ini" "Field 2" "Text" "USBPcap is currently not installed"
+ WriteINIStr "$PLUGINSDIR\USBPcapPage.ini" "Field 2" "Flags" "DISABLED"
+ WriteINIStr "$PLUGINSDIR\USBPcapPage.ini" "Field 5" "Text" "(Use Add/Remove Programs first to uninstall any undetected old USBPcap versions)"
+ Goto lbl_usbpcap_done
+
+lbl_usbpcap_installed:
+ WriteINIStr "$PLUGINSDIR\USBPcapPage.ini" "Field 2" "Text" "$USBPCAP_NAME"
+ WriteINIStr "$PLUGINSDIR\USBPcapPage.ini" "Field 4" "State" "0"
+ WriteINIStr "$PLUGINSDIR\USBPcapPage.ini" "Field 4" "Flags" "DISABLED"
+ WriteINIStr "$PLUGINSDIR\USBPcapPage.ini" "Field 5" "Text" "If you wish to install USBPcap ${USBPCAP_PACKAGE_VERSION}, please uninstall $USBPCAP_NAME manually first."
+ WriteINIStr "$PLUGINSDIR\USBPcapPage.ini" "Field 5" "Flags" "DISABLED"
+ Goto lbl_usbpcap_done
+
+lbl_usbpcap_done:
+
+FunctionEnd
diff --git a/packaging/portableapps/CMakeLists.txt b/packaging/portableapps/CMakeLists.txt
new file mode 100644
index 0000000..ad84fd1
--- /dev/null
+++ b/packaging/portableapps/CMakeLists.txt
@@ -0,0 +1,133 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+# PortableApps.com appears to use "FooAppPortable" for 32-bit packages
+# and "FooAppPortable64" for 64-bit packages. We deviate from that here
+# by always appending a bit suffix.
+#
+# PA.com also tends to ship 32-bit and 64-bit executables in combined
+# packages. We don't do that because a) we're large and b) we build
+# our 32-bit and 64-bit packages independently in separate pipelines.
+
+set(PORTABLEAPPS_BITS 64)
+set(PORTABLEAPPS_BITS ${PORTABLEAPPS_BITS} PARENT_SCOPE)
+
+set(PORTABLEAPPS_NAME "${CMAKE_PROJECT_NAME}Portable${PORTABLEAPPS_BITS}")
+set(PORTABLEAPPS_NAME ${PORTABLEAPPS_NAME} PARENT_SCOPE)
+
+set (_launcher_dir "${CMAKE_CURRENT_BINARY_DIR}/${PORTABLEAPPS_NAME}")
+set (PORTABLEAPPS_LAUNCHER_STAGING_DIR ${_launcher_dir} PARENT_SCOPE)
+
+set(PORTABLEAPPS_DIRS
+ ${_launcher_dir}
+ ${_launcher_dir}/App
+ ${_launcher_dir}/App/AppInfo
+ ${_launcher_dir}/App/AppInfo/Launcher
+ ${_launcher_dir}/Data
+ ${_launcher_dir}/Other
+ ${_launcher_dir}/Other/Source
+ PARENT_SCOPE
+)
+
+macro( ADD_PORTABLEAPPS_PACKAGE_TARGET )
+ # Copy our binaries, libraries, and data files to the PortableApps build directory.
+ set(_wireshark_portableapps_app_dir "${PORTABLEAPPS_LAUNCHER_STAGING_DIR}/App/${CMAKE_PROJECT_NAME}")
+ file(TO_NATIVE_PATH "${_wireshark_portableapps_app_dir}" _wireshark_portableapps_app_dir_native)
+ file(TO_NATIVE_PATH "${DATAFILE_DIR}" _datafile_dir_native)
+ file(TO_NATIVE_PATH "${CMAKE_SOURCE_DIR}/packaging/portableapps/xcopy-deploy-exclude.txt" _xcopy_deploy_exclude)
+
+ add_custom_target(wireshark_portableapps_app_dir
+ # We "Deploy using XCopy," which is described at
+ # https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/ms235291(v=vs.90)
+ # We also assume that the project has been built at this point.
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${_wireshark_portableapps_app_dir}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${_wireshark_portableapps_app_dir}
+ COMMAND xcopy ${_datafile_dir_native} ${_wireshark_portableapps_app_dir_native} /D /I /E /Y /exclude:${_xcopy_deploy_exclude}
+ )
+
+ set_target_properties(wireshark_portableapps_app_dir PROPERTIES
+ FOLDER "Packaging"
+ EXCLUDE_FROM_DEFAULT_BUILD True
+ )
+
+ if(MSVCR_DLL)
+ add_custom_target(wireshark_portableapps_runtime
+ COMMAND xcopy "${MSVCR_DLL}" ${_wireshark_portableapps_app_dir_native} /D /I /Y
+ )
+ else(MSVCR_DLL)
+ add_custom_target(wireshark_portableapps_runtime
+ COMMAND ${CMAKE_COMMAND} -E echo "C Runtime MUST be installed on target system."
+ )
+ endif(MSVCR_DLL)
+
+ set_target_properties(wireshark_portableapps_runtime PROPERTIES
+ FOLDER "Packaging"
+ EXCLUDE_FROM_DEFAULT_BUILD True
+ )
+ add_dependencies(wireshark_portableapps_runtime wireshark_portableapps_app_dir)
+
+ # Build the PortableApps package.
+ # wireshark_nsis_prep must be built prior to this.
+ # XXX Rename this to wireshark_portableapps
+ set (_portableapps_package ${CMAKE_BINARY_DIR}/packaging/portableapps/${PORTABLEAPPS_NAME}_${PROJECT_VERSION}.paf.exe)
+ add_custom_target(wireshark_portableapps
+ DEPENDS
+ wireshark_portableapps_runtime
+ ${_portableapps_package}
+ )
+ set_target_properties(wireshark_portableapps PROPERTIES
+ FOLDER "Packaging"
+ EXCLUDE_FROM_DEFAULT_BUILD True
+ )
+
+ set(PORTABLEAPPS_PACKAGE_VERSION "${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION}.0")
+ configure_file(
+ ${CMAKE_SOURCE_DIR}/packaging/portableapps/appinfo.tmpl
+ ${PORTABLEAPPS_LAUNCHER_STAGING_DIR}/App/AppInfo/appinfo.ini
+ NEWLINE_STYLE WIN32
+ )
+
+ foreach(_portableapps_dir ${PORTABLEAPPS_DIRS})
+ file(MAKE_DIRECTORY ${_portableapps_dir})
+ endforeach()
+
+ set(_portableapps_launcher_ini ${PORTABLEAPPS_LAUNCHER_STAGING_DIR}/App/AppInfo/Launcher/${PORTABLEAPPS_NAME}.ini)
+ configure_file(
+ ${CMAKE_SOURCE_DIR}/packaging/portableapps/${CMAKE_PROJECT_NAME}Portable.tmpl
+ ${_portableapps_launcher_ini}
+ NEWLINE_STYLE WIN32
+ )
+
+ set(_portableapps_launcher_exe ${PORTABLEAPPS_LAUNCHER_STAGING_DIR}/${PORTABLEAPPS_NAME}.exe)
+ file(TO_NATIVE_PATH "${PORTABLEAPPS_LAUNCHER_STAGING_DIR}" _portableapps_native )
+ add_custom_command(OUTPUT ${_portableapps_launcher_exe}
+ DEPENDS
+ ${_portableapps_launcher_ini}
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/packaging/portableapps/help.html ${PORTABLEAPPS_LAUNCHER_STAGING_DIR}/help.html
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/packaging/portableapps/help.html ${PORTABLEAPPS_LAUNCHER_STAGING_DIR}/help.html
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/resources/icons/wireshark.ico ${PORTABLEAPPS_LAUNCHER_STAGING_DIR}/App/AppInfo/appicon.ico
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/resources/icons/wsicon16.png ${PORTABLEAPPS_LAUNCHER_STAGING_DIR}/App/AppInfo/appicon_16.png
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/resources/icons/wsicon32.png ${PORTABLEAPPS_LAUNCHER_STAGING_DIR}/App/AppInfo/appicon_32.png
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/resources/icons/wsicon128.png ${PORTABLEAPPS_LAUNCHER_STAGING_DIR}/App/AppInfo/appicon_128.png
+ COMMAND ${PORTABLEAPPS_LAUNCHER_GENERATOR_EXECUTABLE} ${_portableapps_native}
+ )
+
+ add_custom_command(OUTPUT ${_portableapps_package}
+ DEPENDS
+ ${PORTABLEAPPS_LAUNCHER_STAGING_DIR}/App/AppInfo/appinfo.ini
+ ${_portableapps_launcher_ini}
+ ${_portableapps_launcher_exe}
+ COMMAND ${PORTABLEAPPS_INSTALLER_EXECUTABLE} ${_portableapps_native}
+ )
+endmacro( ADD_PORTABLEAPPS_PACKAGE_TARGET )
+
+#set(CLEAN_FILES
+# ${_launcher_dir}
+# ${_portableapps_package}
+#)
diff --git a/packaging/portableapps/WiresharkPortable.tmpl b/packaging/portableapps/WiresharkPortable.tmpl
new file mode 100644
index 0000000..52dc3ba
--- /dev/null
+++ b/packaging/portableapps/WiresharkPortable.tmpl
@@ -0,0 +1,10 @@
+# https://portableapps.com/manuals/PortableApps.comLauncher/ref/launcher.ini/launch.html
+[Launch]
+ProgramExecutable=Wireshark\Wireshark.exe
+SinglePortableAppInstance=false
+SingleAppInstance=false
+WaitForProgram=false
+MinOS=7
+
+[Environment]
+WIRESHARK_APPDATA=%PAL:DataDir%
diff --git a/packaging/portableapps/appinfo.tmpl b/packaging/portableapps/appinfo.tmpl
new file mode 100644
index 0000000..1e690e2
--- /dev/null
+++ b/packaging/portableapps/appinfo.tmpl
@@ -0,0 +1,27 @@
+[Format]
+Type=PortableApps.comFormat
+Version=3.0
+
+[Details]
+Name=Wireshark Portable (@PORTABLEAPPS_BITS@-bit)
+AppID=@PORTABLEAPPS_NAME@
+Publisher=Wireshark.org
+Homepage=https://www.wireshark.org/
+Category=Internet
+Description=Wireshark is one of the world's foremost network protocol analyzers.
+Language=Multilingual
+Trademarks=Wireshark and the fin logo are registered trademarks of the Wireshark Foundation
+
+[License]
+Shareable=true
+OpenSource=true
+Freeware=true
+CommercialUse=true
+
+[Version]
+PackageVersion=@PORTABLEAPPS_PACKAGE_VERSION@
+DisplayVersion=@PROJECT_VERSION@
+
+[Control]
+Icons=1
+Start=@PORTABLEAPPS_NAME@.exe
diff --git a/packaging/portableapps/help.html b/packaging/portableapps/help.html
new file mode 100644
index 0000000..35dae9b
--- /dev/null
+++ b/packaging/portableapps/help.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Wireshark Portable · Help</title>
+</head>
+<body>
+Please see <a href="https://www.wireshark.org/docs/">the online documentation</a>.
+</body> \ No newline at end of file
diff --git a/packaging/portableapps/readme.txt b/packaging/portableapps/readme.txt
new file mode 100644
index 0000000..bfb871e
--- /dev/null
+++ b/packaging/portableapps/readme.txt
@@ -0,0 +1,45 @@
+Portable Wireshark
+==================
+
+This directory contains experimental packaging for running Wireshark under the Portable Apps
+(https://portableapps.com).
+
+Currently only an additional menu item for Wireshark is added - the other tools could be added to Portable Apps menu if required.
+
+WinPcap
+=======
+
+If you want to capture packets, then WinPcap needs to be installed. Wireshark Portable will try and install WinPcap if it doesn't find it installed on the local machine. If it does install it, it will uninstall it when Wireshark Portable quits.
+A quieter install/de-install for WinPcap would help matters - but ultimately a minimal installation mechanism needs to be identified for WinPcap. But that is not for the Wireshark forum.
+
+NSIS
+====
+
+The Portable Apps packaging uses the NullSoft Scriptable Installer System (NSIS) to create a installation package to install onto the USB drive, and a launcher to launch Wireshark from the USB drive.
+
+NSIS is used by the standard Win32 installation mechanism (packaging/nsis) but an additional plug-in is required for the Wireshark Portable launcher. This is now automatically downloaded and installed from the wireshark-win32-libs repository.
+
+INI Settings
+============
+The Wireshark Portable Launcher will look for an ini file called WiresharkPortable.ini within its directory. It is only necessary to have a ini file if you wish to change the default configuration.
+There is an example INI included with this package to get you started. The INI file is formatted as follows:
+
+[WiresharkPortable]
+WiresharkDirectory
+WiresharkExecutable
+AdditionalParameters
+DisableWinPcapInstall
+WinPcapInstaller
+MSVCRedist
+
+The WiresharkDirectory entry should be set to the *relative* path to the directory containing the Wireshark Portable Launcher (WiresharkPortable.exe). This entry must be present.
+
+The WiresharkExecutable entry allows you to set the Wireshark Portable Launcher to use an alternate EXE call to launch Wireshark.
+
+The AdditionalParameters entry allows you to pass additional commandline parameter entries to wireshark.exe.
+
+The DisableWinPcapInstall allows you to disable the installation of WinPcap, even if it it not present on the host system.
+
+The WinPcapInstaller allows you to specify a different WinPcap installer than the default one included in the distribution. For example, if you download a later version.
+
+The MSVCRedist allows you to specify a different redistributable package to be used than the default one included in the distribution.
diff --git a/packaging/portableapps/xcopy-deploy-exclude.txt b/packaging/portableapps/xcopy-deploy-exclude.txt
new file mode 100644
index 0000000..90de79f
--- /dev/null
+++ b/packaging/portableapps/xcopy-deploy-exclude.txt
@@ -0,0 +1,10 @@
+.exp
+.ilk
+.lib
+.pdb
+fuzzshark.exe
+idl2wrs.exe
+lemon.exe
+make-
+test.exe
+uninstall.exe
diff --git a/packaging/rpm/wireshark.spec.in b/packaging/rpm/wireshark.spec.in
new file mode 100644
index 0000000..e7ec51a
--- /dev/null
+++ b/packaging/rpm/wireshark.spec.in
@@ -0,0 +1,693 @@
+# Note that this is NOT a relocatable package
+# XXX is this still true? https://fedoraproject.org/wiki/Packaging:Cmake
+# says that recent CMake versions take care of rpathification.
+
+# To do:
+# - Support clang with non Fedora distributions
+
+%bcond_with toolchain_clang
+%bcond_with ninja
+%bcond_with ccache
+# In rpm 4.17.1 it's possible to define these so that
+# the one is set, the default is the inverse of the other
+%if 0%{?fedora} || 0%{?rhel} >= 9
+%bcond_with qt5
+%bcond_without qt6
+%else
+%bcond_without qt5
+%bcond_with qt6
+%endif
+%bcond_with lua
+%bcond_with mmdbresolve
+%bcond_with lz4_and_snappy
+%bcond_with spandsp
+%bcond_with bcg729
+%bcond_with libxml2
+%bcond_with nghttp2
+%bcond_with sdjournal
+%bcond_with guides
+%bcond_with brotli
+%bcond_with zstd
+%bcond_with ilbc
+%bcond_with opus
+
+# Fedora options to use clang as the compiler
+# https://docs.fedoraproject.org/en-US/packaging-guidelines/#compiler
+%if 0%{?fedora}
+%if %{with toolchain_clang}
+%global toolchain clang
+%else
+%global toolchain gcc
+%endif
+%endif
+
+# Set at most one of these two:
+# Note that setcap requires rpmbuild 4.7.0 or later.
+%global setuid_dumpcap 0
+%global setcap_dumpcap 1
+
+# Set to 1 if you want a group called 'wireshark' which users must be a member
+# of in order to run dumpcap. Only used if setuid_dumpcap or setcap_dumpcap
+# are set.
+%global use_wireshark_group 1
+
+# RPM 4.11.2 and higher errors out on double dash in versions by default.
+# Some, but not all, distros make this a warning instead; ensure that it is.
+# We override the dashes with underscores for the main wireshark RPM version,
+# but rpmbuild will fail based on its generated dependency from the pkg-config
+# file (wireshark.pc), which has our original version with dashes.
+%global _wrong_version_format_terminate_build 0
+
+%global package_version @PROJECT_VERSION@
+
+
+Summary: The world's foremost protocol analyzer
+Name: wireshark
+Version: @RPM_VERSION@
+Release: 1%{?dist}
+License: GPLv2+
+Group: Applications/Internet
+Source: https://www.wireshark.org/download/src/%{name}-%{package_version}.tar.xz
+# Or this URL for automated builds:
+#Source: https://www.wireshark.org/download/automated/src/%%{name}-%%{package_version}.tar.xz
+URL: https://www.wireshark.org/
+Packager: Gerald Combs <gerald[AT]wireshark.org>
+
+# 4.13 introduces Boolean dependencies
+BuildRequires: rpm-build >= 4.13.0
+
+BuildRequires: cmake >= 3.13
+BuildRequires: python3
+%if %{with toolchain_clang}
+BuildRequires: clang
+%else
+BuildRequires: gcc
+BuildRequires: gcc-c++
+%endif
+BuildRequires: flex
+%if %{with ninja}
+BuildRequires: (ninja or ninja-build)
+%endif
+# We always require Asciidoctor for packaging builds as of 84ab55cf75,
+# unfortunately it's not evenly distributed across distros.
+# Fedora & CentOS: rubygem-asciidoctor
+# CentOS 8: <added in - https://bugzilla.redhat.com/show_bug.cgi?id=1820896>
+# openSUSE 15.3: ruby2.5-rubygem-asciidoctor
+# All of the packages provide this, so we can rely on it:
+BuildRequires: /usr/bin/asciidoctor
+
+# For the HTML guides, we need xsltproc, and the docbook stylesheets
+%if %{with guides}
+BuildRequires: /usr/bin/xsltproc
+BuildRequires: (docbook-style-xsl or docbook-xsl-stylesheets)
+%endif
+
+BuildRequires: glib2-devel >= 2.54.0
+BuildRequires: libpcap-devel
+BuildRequires: zlib-devel
+BuildRequires: libgcrypt-devel
+BuildRequires: pcre2-devel
+
+%if %{with lz4_and_snappy}
+BuildRequires: (lz4-devel or liblz4-devel)
+BuildRequires: snappy-devel
+%endif
+
+BuildRequires: (c-ares-devel or libcares-devel)
+# On SUSE speex-devel requires speexdsp-devel, but that
+# is not the case on RH/Fedora. I believe we only need
+# SpeexDSP
+BuildRequires: speexdsp-devel
+
+%if %{with lua}
+# We only support Lua before 5.3 (#10881)
+BuildRequires: (compat-lua-devel < 5.3 or lua51-devel)
+%endif
+
+%if %{with nghttp2}
+BuildRequires: libnghttp2-devel
+%endif
+
+%if %{with sdjournal}
+BuildRequires: systemd-devel
+%endif
+
+%if %{with brotli}
+BuildRequires: (brotli-devel or libbrotli-devel)
+%endif
+
+%if %{with zstd}
+BuildRequires: libzstd-devel
+%endif
+
+# Uncomment these if you want to be sure you get them...
+#BuildRequires: krb5-devel
+#BuildRequires: libsmi-devel
+#BuildRequires: pcre-devel
+#BuildRequires: libselinux
+#BuildRequires: gnutls-devel
+#BuildRequires: libcap-devel
+
+%if %{with mmdbresolve}
+BuildRequires: libmaxminddb-devel
+%endif
+
+%if %{use_wireshark_group}
+%if 0%{?suse_version}
+# SUSE's groupadd is in this package:
+Requires(pre): pwdutils
+%else
+# ... while Red Hat's is in this one:
+Requires(pre): shadow-utils
+%endif
+%endif
+
+# NOTE: the below description has been copied to org.wireshark.Wireshark.metainfo.xml (in the
+# top-level directory).
+%description
+Wireshark allows you to examine protocol data stored in files or as it is
+captured from wired or wireless (WiFi or Bluetooth) networks, USB devices,
+and many other sources. It supports dozens of protocol capture file formats
+and understands more than a thousand protocols.
+
+It has many powerful features including a rich display filter language
+and the ability to reassemble multiple protocol packets in order to, for
+example, view a complete TCP stream, save the contents of a file which was
+transferred over HTTP or CIFS, or play back an RTP audio stream.
+
+This package contains command-line utilities, plugins, and documentation for
+Wireshark. A Qt graphical user interface is packaged separately.
+
+%if %{with qt5} || %{with qt6}
+%package qt
+Summary: Wireshark's Qt-based GUI
+Group: Applications/Internet
+Obsoletes: wireshark-gnome < %{version} wireshark-gtk < %{version}
+Requires: %{name} = %{version}-%{release}
+%if %{with qt5}
+%if 0%{?suse_version}
+BuildRequires: libQt5Core-devel
+BuildRequires: libQt5Gui-devel
+BuildRequires: libQt5Widgets-devel
+BuildRequires: libQt5PrintSupport-devel
+BuildRequires: libQt5Concurrent-devel
+BuildRequires: libqt5-qtmultimedia-devel
+BuildRequires: libqt5-linguist-devel
+Requires: libQt5Svg5
+# Need this for SUSE's suse_update_desktop_file macro
+BuildRequires: update-desktop-files
+%else
+BuildRequires: qt5-qtbase-devel
+BuildRequires: qt5-qtmultimedia-devel
+BuildRequires: qt5-linguist
+Requires: qt5-qtsvg
+%endif
+%endif
+%if %{with qt6}
+BuildRequires: qt6-qtbase-devel
+BuildRequires: qt6-qtmultimedia-devel
+BuildRequires: qt6-qttools-devel
+BuildRequires: qt6-qt5compat-devel
+BuildRequires: libxkbcommon-devel
+%endif
+Requires: xdg-utils
+Requires: hicolor-icon-theme
+BuildRequires: desktop-file-utils
+Requires(post): desktop-file-utils
+# Add this for more readable fonts on some distributions/versions
+#Requires: dejavu-sans-mono-fonts
+
+%description qt
+This package contains the Qt Wireshark GUI and desktop integration files.
+%endif
+
+%package devel
+Summary: Development headers for Wireshark
+Group: Applications/Internet
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+The wireshark-devel package contains the header and other files required for
+development of Wireshark scripts and plugins.
+
+
+%prep
+%setup -q -n %{name}-%{package_version}
+
+%build
+# The SUSE macros for cmake and ninja depend upon _bindir, which depends
+# on _prefix (and is thus wrong if _prefix is anything other than /usr).
+# Set _bindir to the correct value regardless of _prefix.
+%if 0%{?suse_version}
+%define _bindir /usr/bin
+%if %{with ninja}
+%define __builder %{_bindir}/ninja
+%endif
+%endif
+
+%if 0%{?rhel}
+%define __ninja /usr/bin/ninja-build
+%endif
+
+# How do we reliably run CMake for all of CentOS, Fedora, RHEL, and openSUSE?
+# https://docs.fedoraproject.org/en-US/packaging-guidelines/CMake/
+# https://fedoraproject.org/wiki/Changes/CMake_to_do_out-of-source_builds
+# https://en.opensuse.org/openSUSE:Build_system_recipes#cmake
+# Fedora's new RPATH hardening means we need to enable $ORIGIN if the
+# prefix is anything other than /usr:
+# https://fedoraproject.org/wiki/Changes/Broken_RPATH_will_fail_rpmbuild
+%cmake \
+%if 0%{?fedora} && ( "%{_prefix}" != "/usr" )
+ -DENABLE_RPATH_ORIGIN=ON \
+%endif
+%if %{with ccache}
+ -DENABLE_CCACHE=ON \
+%endif
+%if %{with qt5} || %{with qt6}
+ -DBUILD_wireshark=ON \
+%if %{with qt5}
+ -DUSE_qt6=OFF \
+%endif
+%else
+ -DBUILD_wireshark=OFF \
+%endif
+%if %{with lua}
+ -DENABLE_LUA=ON \
+%else
+ -DENABLE_LUA=OFF \
+%endif
+%if %{with mmdbresolve}
+ -DBUILD_mmdbresolve=ON \
+%else
+ -DBUILD_mmdbresolve=OFF \
+%endif
+%if %{with lz4_and_snappy}
+ -DENABLE_LZ4=ON \
+ -DENABLE_SNAPPY=ON \
+%else
+ -DENABLE_LZ4=OFF \
+ -DENABLE_SNAPPY=OFF \
+%endif
+%if %{with spandsp}
+ -DENABLE_SPANDSP=ON \
+%else
+ -DENABLE_SPANDSP=OFF \
+%endif
+%if %{with bcg729}
+ -DENABLE_BCG729=ON \
+%else
+ -DENABLE_BCG729=OFF \
+%endif
+%if %{with libxml2}
+ -DENABLE_LIBXML2=ON \
+%else
+ -DENABLE_LIBXML2=OFF \
+%endif
+%if %{with nghttp2}
+ -DENABLE_NGHTTP2=ON \
+%else
+ -DENABLE_NGHTTP2=OFF \
+%endif
+%if %{with nghttp3}
+ -DENABLE_NGHTTP3=ON \
+%else
+ -DENABLE_NGHTTP3=OFF \
+%endif
+%if %{with sdjournal}
+ -DBUILD_sdjournal=ON \
+%else
+ -DBUILD_sdjournal=OFF \
+%endif
+%if %{with brotli}
+ -DENABLE_BROTLI=ON \
+%else
+ -DENABLE_BROTLI=OFF \
+%endif
+ -DENABLE_WERROR=OFF \
+%if %{with ninja}
+ -G Ninja \
+%endif
+%if %{with ilbc}
+ -DENABLE_ILBC=ON \
+%else
+ -DENABLE_ILBC=OFF \
+%endif
+%if %{with opus}
+ -DENABLE_OPUS=ON \
+%else
+ -DENABLE_OPUS=OFF \
+%endif
+
+# Fedora and SUSE 15 do out of source builds by default, but they store
+# the build directory in different macros. Older distributions don't define
+# that macro at all. Let's make it so that one macro contains the build
+# directory (which will be "." for any distribution that doesn't define
+# either macro, and thus presumably does in-source builds.)
+%{?!__cmake_builddir: %global __cmake_builddir %{?__builddir}%{!?__builddir:.}}
+
+%cmake_build
+
+%install
+
+%if 0%{?suse_version}
+%define cmake_install DESTDIR=%{buildroot} %__cmake --install %{__cmake_builddir}
+%endif
+
+%cmake_install
+%cmake_install --component Development
+%if %{with guides}
+%cmake_install --component UserGuide
+%endif
+
+# If we're being installed in an unusual prefix tell the loader where
+# to find our libraries.
+%if "%{_prefix}" != "/usr"
+ %define install_ld_so_conf 1
+ mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d
+ echo %{_libdir} > $RPM_BUILD_ROOT/etc/ld.so.conf.d/wireshark.conf
+%endif
+
+%if %{with qt5} || %{with qt6}
+%if 0%{?suse_version}
+# SUSE's packaging conventions
+# (https://en.opensuse.org/openSUSE:Packaging_Conventions_RPM_Macros#.25suse_update_desktop_file)
+# require this:
+%if "%{_prefix}" != "/usr"
+install -Dm 0644 %{buildroot}%{_prefix}/share/applications/org.wireshark.Wireshark.desktop %{buildroot}/usr/share/applications/org.wireshark.Wireshark.desktop
+%endif
+%suse_update_desktop_file org.wireshark.Wireshark
+%else
+# Fedora's packaging guidelines (https://fedoraproject.org/wiki/Packaging:Guidelines)
+# require this (at least if desktop-file-install was not used to install it).
+desktop-file-validate %{buildroot}%{_datadir}/applications/org.wireshark.Wireshark.desktop
+%endif
+%endif
+
+%if %{use_wireshark_group}
+%pre
+getent group wireshark >/dev/null || groupadd -r wireshark
+%endif
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%if %{with qt5} || %{with qt6}
+%post qt
+update-desktop-database %{_datadir}/applications &> /dev/null || :
+update-mime-database %{_datadir}/mime &> /dev/null || :
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+
+%postun qt
+update-desktop-database %{_datadir}/applications &> /dev/null ||:
+update-mime-database %{_datadir}/mime &> /dev/null || :
+%endif
+
+%files
+
+%if 0%{?suse_version}
+# Before packing, we need to restore the bindir to the wireshark one
+%define _bindir %{_prefix}/bin
+%endif
+
+%defattr(-,root,root)
+%doc AUTHORS COPYING NEWS README.md
+%{_datadir}/doc/wireshark
+%docdir %{_datadir}/doc/wireshark
+
+# Don't pick up any of the wireshark (GUI) binaries here
+%exclude %{_bindir}/wireshark*
+%{_bindir}/*
+
+# This generates a warning because dumpcap is listed twice. That's
+# probably preferable to listing each program (and keeping the list up to
+# date)...
+%if %{use_wireshark_group} && %{setuid_dumpcap}
+# Setuid but only executable by members of the 'wireshark' group
+%attr(4750, root, wireshark) %{_bindir}/dumpcap
+%else
+%if %{use_wireshark_group} && %{setcap_dumpcap}
+# Setcap but only executable by members of the 'wireshark' group
+%attr(0750, root, wireshark) %caps(cap_net_raw,cap_net_admin=ep) %{_bindir}/dumpcap
+%else
+%if %{setuid_dumpcap}
+# Setuid and executable by all
+%attr(4755, root, root) %{_bindir}/dumpcap
+%else
+%if %{setcap_dumpcap}
+# Setcap and executable by all
+%attr(0755, root, root) %caps(cap_net_raw,cap_net_admin=ep) %{_bindir}/dumpcap
+%else
+# Executable by all but with no special permissions
+%attr(0755, root, root) %{_bindir}/dumpcap
+%endif
+%endif
+%endif
+%endif
+
+%{_libdir}/lib*.so*
+%{_libdir}/wireshark
+# Don't pick up the wireshark (GUI) man page here
+%exclude %{_mandir}/man1/wireshark.*
+%{_mandir}/man1/*
+%{_mandir}/man4/*
+
+%config(noreplace) %{_datadir}/wireshark/diameter/Custom.xml
+%{_datadir}/wireshark
+
+%if 0%{?install_ld_so_conf}
+/etc/ld.so.conf.d/wireshark.conf
+%endif
+
+%if %{with qt5} || %{with qt6}
+%files qt
+%defattr(-,root,root)
+%{_datadir}/applications/org.wireshark.Wireshark.desktop
+%if 0%{?suse_version}
+%if "%{_prefix}" != "/usr"
+/usr/share/applications/org.wireshark.Wireshark.desktop
+%endif
+%endif
+%{_datadir}/metainfo/org.wireshark.Wireshark.metainfo.xml
+%{_datadir}/icons/hicolor/*/apps/*
+%{_datadir}/icons/hicolor/*/mimetypes/*
+%{_datadir}/mime/packages/org.wireshark.Wireshark.xml
+%{_bindir}/wireshark
+%{_mandir}/man1/wireshark.*
+%endif
+
+%files devel
+%{_includedir}/wireshark
+%{_libdir}/cmake/wireshark
+%{_libdir}/pkgconfig/wireshark.pc
+
+%changelog
+* Wed Jun 14 2023 Joao Valverde
+- Update CMake devel files path
+
+* Wed Aug 24 2022 Joao Valverde
+- Add Qt6 support with Fedora build dependencies
+
+* Mon Apr 25 2022 John Thacker
+- Cleanup specfile to remove obsolete and deprecated syntax
+
+* Wed Jan 5 2022 John Thacker
+- pcre2 is required now (most distros will get this as part of a dependency
+ chain glib2-devel->libselinux-devel->pcre2-devel anyway)
+- Remove Requires that automatic dependency handling picks up
+
+* Mon Mar 29 2021 Joao Valverde
+- Update HTML documentation location
+
+* Thu Nov 26 2020 Gerald Combs
+- Bison is no longer required
+
+* Tue Sep 29 2020 Lin Sun
+- Added opus codec as an option
+
+* Sun Jan 19 2020 Jiri Novak
+- Added ilbc codec as an option
+
+* Fri Nov 22 2019 Gerald Combs
+- c-ares is a required package
+
+* Thu Aug 15 2019 Gerald Combs
+- Add zstd
+
+* Mon Apr 22 2019 Daniel Bakai
+- Added brotli (as an option, defaulting to not required).
+
+* Fri Sep 28 2018 Gerald Combs
+- Add sdjournal
+
+* Thu Sep 27 2018 Jeff Morriss
+- Have the qt package obsolute the old gnome and gtk packages. This allows
+ clean upgrades to the Qt version.
+- Set install prefix based on original cmake call's prefix.
+- Update capitalization of SUSE.
+
+* Wed Sep 26 2018 Jeff Morriss
+- Put development-related files in a new -devel RPM.
+
+* Mon Sep 24 2018 Jeff Morriss
+- Allow using ccache to (greatly) speed up rebuilds.
+
+* Mon Sep 24 2018 Jeff Morriss
+- Make the (optional) maxminddb dependencies actually work.
+
+* Wed Apr 11 2018 Gerald Combs
+- Make documentation installation conditional.
+
+* Tue Mar 20 2018 Gerald Combs
+- Migrate from Autotools to CMake.
+- Remove Qt4, GTK+ 2, and GTK+ 3 sections.
+- Require flex, bison, and libgcrypt.
+- Optionally build with Ninja.
+
+* Sat Dec 2 2017 Jeff Morriss
+- Include the User Guide (now installed by default by autotools).
+
+* Wed Jul 26 2017 Pascal Quantin
+- Added bcg729 (as an option, defaulting to not required).
+
+* Tue Apr 4 2017 Ahmad Fatoum
+- Added libxml2 (as an option, defaulting to required).
+
+* Tue Dec 20 2016 Anders Broman
+- Add with extcap (as an option, defaulting to yes).
+
+* Mon Dec 5 2016 Jeff Morriss
+- Add spandsp (as an option, defaulting to not required).
+
+* Tue Oct 18 2016 Benoit Canet
+- Add LZ4 and snappy compression support.
+
+* Mon Aug 29 2016 Jeff Morriss
+- Add libnghttp2 (as an option, defaulting to required).
+
+* Wed Aug 17 2016 Jeff Morriss
+- wireshark.pc is now installed with Wireshark, include it in the RPM.
+
+* Mon May 9 2016 Jeff Morriss
+- Make autoconf, automake, flex, and bison optional: most users (who aren't
+ patching Wireshark) don't need them to build an RPM.
+
+* Tue Nov 10 2015 Jeff Morriss
+- Rename the gnome package to gtk: Wireshark uses Gtk+ but isn't part of GNOME.
+
+* Mon Sep 14 2015 Jeff Morriss
+- Follow ./configure's decision on whether to configure Lua or not rather than
+ forcing it to be enabled (and thus failing on some distros which don't ship
+ a compatible version of Lua any more).
+
+* Sat Sep 12 2015 Jeffrey Smith
+- Begin support for Qt5
+
+* Thu Jan 22 2015 Jeff Morriss
+- Add appdata file.
+
+* Tue Jan 20 2015 Jeff Morriss
+- Make the license tag more specific: Wireshark is GPLv2+.
+
+* Mon Jan 12 2015 Jeff Morriss
+- Modernize the (base package) %%description.
+
+* Wed Dec 3 2014 Jeff Morriss
+- Don't run gtk-update-icon-cache when uninstalling the Qt package. But do run
+ it when installing the gnome package.
+- Tell the loader where to find our libraries if we're being installed
+ someplace other than /usr .
+- Attempt to get RPMs working with a prefix other than /usr (now that the
+ (free)desktop files are no longer always installed /usr). Desktop
+ integration doesn't work for prefixes other than "/usr" or "/usr/local".
+
+* Fri Aug 29 2014 Gerald Combs
+- The Qt UI is now the default. Update logic and prioritization to
+ reflect this.
+
+* Mon Aug 4 2014 Jeff Morriss
+- Fix RPM builds with a prefix other than /usr: The location of
+ update-alternatives does not depend on Wireshark's installation prefix:
+ it's always in /usr/sbin/.
+
+* Fri Aug 1 2014 Jeff Morriss
+- Remove the old wireshark binary during RPM upgrades: this is needed because
+ we now declare wireshark to be %%ghost so it doesn't get overwritten during an
+ upgrade (but in older RPMs it was the real program).
+
+* Tue Jul 1 2014 Jeff Morriss
+- Get rid of rpath when we're building RPMs: Fedora prohibits it, we don't
+ need it, and it gets in the way some times.
+
+* Tue Nov 26 2013 Jeff Morriss
+- Overhaul options handling to pull in the UI choice from ./configure.
+- Make it possible to not build the GNOME package.
+
+* Tue Nov 12 2013 Jeff Morriss
+- Add a qt package using 'alternatives' to allow the administrator to choose
+ which one they actually use.
+
+* Fri Sep 20 2013 Jeff Morriss
+- If we're not using gtk3 add --with-gtk2 (since Wireshark now defaults to gtk3)
+
+* Thu Mar 28 2013 Jeff Morriss
+- Simplify check for rpmbuild's version.
+
+* Fri Mar 8 2013 Jeff Morriss
+- Put all icons in hicolor
+- Use SuSE's desktop-update macro.
+- Actually update MIME database when Wireshark's prefix is not /usr .
+
+* Thu Mar 7 2013 Jeff Morriss
+- List more build dependencies.
+- Update to work on SuSE too: some of their package names are different.
+
+* Wed Mar 6 2013 Gerald Combs
+- Enable c-ares by default
+
+* Thu Feb 7 2013 Jeff Morriss
+- Overhaul to make this file more useful/up to date. Many changes are based
+ on Fedora's .spec file. Changes include:
+ - Create a separate wireshark-gnome package (like Red Hat).
+ - Control some things with variables set at the top of the file.
+ - Allow the user to configure how dumpcap is installed.
+ - Allow the user to choose some options including GTK2 or GTK3.
+ - Greatly expand the BuildRequires entries; get the minimum versions of some
+ things from 'configure'.
+ - Install freedesktop files for better (free)desktop integration.
+
+* Thu Aug 10 2006 Joerg Mayer
+- Starting with X.org 7.x X11R6 is being phased out. Install wireshark
+ and manpage into the standard path.
+
+* Mon Aug 01 2005 Gerald Combs
+- Add a desktop file and icon for future use
+
+- Take over the role of packager
+
+- Update descriptions and source locations
+
+* Thu Oct 28 2004 Joerg Mayer
+- Add openssl requirement (heimdal and net-snmp are still automatic)
+
+* Tue Jul 20 2004 Joerg Mayer
+- Redo install and files section to actually work with normal builds
+
+* Sat Feb 07 2004 Joerg Mayer
+- in case there are shared libs: include them
+
+* Tue Aug 24 1999 Gilbert Ramirez
+- changed to ethereal.spec.in so that 'configure' can update
+ the version automatically
+
+* Tue Aug 03 1999 Gilbert Ramirez <gram@xiexie.org>
+- updated to 0.7.0 and changed gtk+ requirement
+
+* Sun Jan 03 1999 Gerald Combs <gerald@zing.org>
+- updated to 0.5.1
+
+* Fri Nov 20 1998 FastJack <fastjack@i-s-o.net>
+- updated to 0.5.0
+
+* Sun Nov 15 1998 FastJack <fastjack@i-s-o.net>
+- created .spec file
diff --git a/packaging/source/git-export-release.sh.in b/packaging/source/git-export-release.sh.in
new file mode 100755
index 0000000..854af25
--- /dev/null
+++ b/packaging/source/git-export-release.sh.in
@@ -0,0 +1,100 @@
+#!/bin/bash
+#
+# Creates a release tarball directly from git
+
+# Note that the tarball contents might not exactly match
+# a particular git commit, particularly for untagged
+# commits.
+#
+# An alternative approach would be to generate source tarballs
+# using CPack. That would remove our dependency on git, but if
+# Autotools is any indication it would require continuous
+# maintenance.
+#
+# Copyright 2011 Balint Reczey <balint@balintreczey.hu>
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+set -e -u -o pipefail
+
+DESTDIR=.
+
+while getopts "d:" OPTCHAR ; do
+ case $OPTCHAR in
+ d) DESTDIR=$OPTARG ;;
+ *) printf "Unknown option %s\n" "$OPTCHAR" ;;
+ esac
+done
+shift $(( OPTIND - 1 ))
+
+# The remaining parameter, if set, is a package version such as 3.4.5
+# or 3.4.5-67-gabcd4321
+# By default the version from make-version.py + CMake is used.
+PROJECT_VERSION=@PROJECT_VERSION@
+if test -n "${1-}"; then
+ PROJECT_VERSION="$1"
+fi
+
+TARBALL="${DESTDIR}/wireshark-${PROJECT_VERSION}.tar.xz"
+
+# A tarball produced by 'git archive' will have the $Format string
+# substituted due to the use of 'export-subst' in .gitattributes.
+# shellcheck disable=SC2016
+COMMIT='40459284278611128aac5cef35a563218933f8da'
+
+if [[ $COMMIT != \$F* ]] ; then
+ # This file was extracted from a tarball produced by git archive
+ # and so we are not in a git repository.
+ if [[ -f "$TARBALL" ]] ; then
+ # git get-tar-commit-id works outside a git repo, as it
+ # only reads the first 1024 bytes of the tar extended header.
+ if [[ $(git get-tar-commit-id < <(xzcat "$TARBALL")) == "$COMMIT" ]] ; then
+ echo "$TARBALL commit ID matches $COMMIT."
+ else
+ # Allow people to make changes to a downloaded source tarball
+ # and re-tar it?
+ echo "WARNING: $TARBALL is not the original git archive."
+ fi
+ exit 0
+ fi
+
+ echo ""
+ echo "The build system cannot produce a source tarball outside of a git repository."
+ echo "If you are trying to build an RPM package from source extracted from a tarball,"
+ echo "copy it (i.e., wireshark-${PROJECT_VERSION}.tar.xz) to"
+ echo "$DESTDIR"
+ echo "and run the build command again."
+
+ exit 1
+fi
+
+STASH_ID=$(git stash create || echo "")
+
+if [[ -n "$STASH_ID" ]] ; then
+ echo "Setting commit from stash $STASH_ID"
+ COMMIT="$STASH_ID"
+else
+ echo "Setting commit from HEAD"
+ COMMIT="HEAD"
+fi
+
+if [ -f "$TARBALL" ] ; then
+ printf "Found %s\\n" "$TARBALL"
+ if TARBALL_ID=$(git get-tar-commit-id < <(xzcat "$TARBALL")) && COMMIT_ID=$(git rev-parse --verify "$COMMIT") ; then
+ if [[ $TARBALL_ID == "$COMMIT_ID" ]] ; then
+ echo "$TARBALL commit ID matches $COMMIT."
+ exit 0
+ fi
+ fi
+fi
+
+echo "Creating $TARBALL from $COMMIT"
+
+XZ_OPTS=
+echo . | xz --threads=0 > /dev/null 2>&1 && XZ_OPTS=--threads=0
+
+git archive --prefix="wireshark-${PROJECT_VERSION}/" "$COMMIT" | xz $XZ_OPTS > "$TARBALL"
diff --git a/packaging/wix/CMakeLists.txt b/packaging/wix/CMakeLists.txt
new file mode 100644
index 0000000..eb9079e
--- /dev/null
+++ b/packaging/wix/CMakeLists.txt
@@ -0,0 +1,341 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+# We should use CPack to help generate a .msi using WIX.
+
+set(WIX_GENERATED_FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/DependentComponents.wxs
+ ${CMAKE_CURRENT_BINARY_DIR}/Diameter.wxs
+ ${CMAKE_CURRENT_BINARY_DIR}/QtDependentComponents.wxs
+ ${CMAKE_CURRENT_BINARY_DIR}/QtTranslation.wxs
+ ${CMAKE_CURRENT_BINARY_DIR}/RadiusDict.wxs
+ ${CMAKE_CURRENT_BINARY_DIR}/SNMPMibs.wxs
+ ${CMAKE_CURRENT_BINARY_DIR}/UsersGuide.wxs
+)
+set(WIX_GENERATED_FILES ${WIX_GENERATED_FILES} PARENT_SCOPE)
+
+set(WIX_SOURCE_FILES
+ ${CMAKE_SOURCE_DIR}/packaging/wix/Wireshark.wxs
+ ${CMAKE_SOURCE_DIR}/packaging/wix/WiresharkOptionsDlg.wxs
+ ${CMAKE_SOURCE_DIR}/packaging/wix/WiresharkWixUI.wxs
+ ${WIX_GENERATED_FILES}
+)
+set(WIX_SOURCE_FILES ${WIX_SOURCE_FILES} PARENT_SCOPE)
+
+set(WIX_FILES
+ ComponentGroups.wxi
+ COPYING.rtf
+ DirectoryStructure.wxi
+ Features.wxi
+ InputPaths.wxi
+ Plugins.wxi
+ Prerequisites.wxi
+ UserInterface.wxi
+ ${WIX_SOURCE_FILES}
+ PARENT_SCOPE
+)
+
+set(WIX_OUT_FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/DependentComponents.wixobj
+ ${CMAKE_CURRENT_BINARY_DIR}/Diameter.wixobj
+ ${CMAKE_CURRENT_BINARY_DIR}/QtDependentComponents.wixobj
+ ${CMAKE_CURRENT_BINARY_DIR}/QtTranslation.wixobj
+ ${CMAKE_CURRENT_BINARY_DIR}/RadiusDict.wixobj
+ ${CMAKE_CURRENT_BINARY_DIR}/SNMPMibs.wixobj
+ ${CMAKE_CURRENT_BINARY_DIR}/UsersGuide.wixobj
+ ${CMAKE_CURRENT_BINARY_DIR}/Wireshark.wixobj
+ ${CMAKE_CURRENT_BINARY_DIR}/WiresharkOptionsDlg.wixobj
+ ${CMAKE_CURRENT_BINARY_DIR}/WiresharkWixUI.wixobj
+)
+set(WIX_OUT_FILES ${WIX_OUT_FILES} PARENT_SCOPE)
+
+# Variables required for Wireshark.wxs
+set(PROGRAM_NAME ${CMAKE_PROJECT_NAME})
+file(TO_NATIVE_PATH "${CMAKE_SOURCE_DIR}" TOP_SRC_DIR)
+# STAGING_DIR depends on the build configuration so we pass it
+# on the command line below.
+file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/docbook" DOCBOOK_DIR)
+
+# To do:
+# - Sync the various version names between CMake and Wix.
+# - Set CMakeLists.txt version strings in tools/make-version.py
+# - Add a VERSION_EXTRA cmake option
+set (VERSION "${PROJECT_VERSION}")
+set(PRODUCT_VERSION ${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION}.${PROJECT_BUILD_VERSION})
+
+# Use the merge module that comes with our version of Visual Studio
+if(MSVC_VERSION GREATER_EQUAL 1930)
+ set (MSVC_CRT_VERSION "VC143")
+elseif(MSVC_VERSION GREATER_EQUAL 1920)
+ set (MSVC_CRT_VERSION "VC142")
+elseif(MSVC_VERSION GREATER_EQUAL 1910)
+ set (MSVC_CRT_VERSION "VC141")
+elseif(MSVC_VERSION GREATER_EQUAL 1900)
+ set (MSVC_CRT_VERSION "VC140")
+endif()
+
+# Starting with Visual Studio 2019 merge modules are deprecated but
+# are available as an individual component.
+# https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes#-deprecations
+set(MERGE_MODULE "Microsoft_${MSVC_CRT_VERSION}_CRT_${WIRESHARK_TARGET_PLATFORM}.msm")
+set (PF86_ENV "ProgramFiles(x86)")
+
+set(VC_TOOLS_MERGE_MODULES_DIR)
+if (DEFINED ENV{VCToolsRedistDir})
+ set(VC_TOOLS_MERGE_MODULES_DIR "$ENV{VCToolsRedistDir}/MergeModules")
+endif()
+
+find_path(MERGE_MODULE_DIR ${MERGE_MODULE}
+ PATHS
+ #"$ENV{VCINSTALLDIR}/VC/Redist/MSVC/how-do-we-get-this-version/Merge Modules"
+ ${VC_TOOLS_MERGE_MODULES_DIR}
+ "$ENV{${PF86_ENV}}/Common Files/Merge Modules"
+ "$ENV{PROGRAMFILES}/Common Files/Merge Modules"
+ NO_DEFAULT_PATH
+)
+file(TO_NATIVE_PATH "${MERGE_MODULE_DIR}/Microsoft_${MSVC_CRT_VERSION}_CRT_${WIRESHARK_TARGET_PLATFORM}.msm" MSM_NATIVE_PATH)
+message(STATUS "Using ${MSM_NATIVE_PATH} for the WiX installer")
+
+# DependentComponents.wxi. Can be created at configure time.
+set(_all_manifest_wix "${CMAKE_CURRENT_BINARY_DIR}/DependentComponents.wxs")
+file(WRITE "${_all_manifest_wix}" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
+file(APPEND "${_all_manifest_wix}" "<Wix xmlns=\"http://schemas.microsoft.com/wix/2006/wi\">\n\n")
+file(APPEND "${_all_manifest_wix}" " <!-- Files required for all sections. Generated by CMake. -->\n")
+file(APPEND "${_all_manifest_wix}" "<?include InputPaths.wxi ?>\n")
+file(APPEND "${_all_manifest_wix}" " <Fragment>\n")
+file(APPEND "${_all_manifest_wix}" " <DirectoryRef Id=\"INSTALLFOLDER\">\n")
+file(APPEND "${_all_manifest_wix}" " <?ifdef BUNDLE_DEBUG_DLLS ?>\n")
+foreach(_dll ${GLIB2_DLLS_DEBUG})
+ STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll})
+ file(APPEND "${_all_manifest_wix}" " <Component Id=\"cmp${_wix_name}\" Guid=\"*\">\n")
+ file(APPEND "${_all_manifest_wix}" " <File Id=\"fil${_wix_name}\" KeyPath=\"yes\" Source=\"$(var.Staging.Dir)\\${_dll}\"/>\n")
+ file(APPEND "${_all_manifest_wix}" " </Component>\n")
+endforeach()
+file(APPEND "${_all_manifest_wix}" " <?else?>\n")
+foreach(_dll ${GLIB2_DLLS_RELEASE})
+ STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll})
+ file(APPEND "${_all_manifest_wix}" " <Component Id=\"cmp${_wix_name}\" Guid=\"*\">\n")
+ file(APPEND "${_all_manifest_wix}" " <File Id=\"fil${_wix_name}\" KeyPath=\"yes\" Source=\"$(var.Staging.Dir)\\${_dll}\"/>\n")
+ file(APPEND "${_all_manifest_wix}" " </Component>\n")
+endforeach()
+file(APPEND "${_all_manifest_wix}" " <?endif?>\n")
+SET(unique_component "")
+set (_dll_list ${CARES_DLL} ${PCRE2_RELEASE_DLL} ${GCRYPT_DLLS}
+ ${GNUTLS_DLLS} ${KERBEROS_DLLS} ${LIBSSH_DLLS} ${LUA_DLL}
+ ${LZ4_DLL} ${MINIZIP_DLL} ${NGHTTP2_DLL} ${NGHTTP3_DLL} ${SBC_DLL} ${SMI_DLL}
+ ${SNAPPY_DLL} ${SPANDSP_DLL} ${BCG729_DLL} ${LIBXML2_DLLS} ${WINSPARKLE_DLL}
+ ${ZLIB_DLL} ${BROTLI_DLLS} ${ZSTD_DLL} ${ILBC_DLL} ${OPUS_DLL}
+ ${SPEEXDSP_DLL}
+ # Required for mmdbresolve
+ ${MAXMINDDB_DLL}
+ )
+foreach(_dll ${_dll_list})
+ #ensure uniqueness of files
+ IF(NOT "${unique_component}" MATCHES "(^|;)${_dll}(;|$)")
+ STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll})
+ file(APPEND "${_all_manifest_wix}" " <Component Id=\"cmp${_wix_name}\" Guid=\"*\">\n")
+ file(APPEND "${_all_manifest_wix}" " <File Id=\"fil${_wix_name}\" KeyPath=\"yes\" Source=\"$(var.Staging.Dir)\\${_dll}\"/>\n")
+ file(APPEND "${_all_manifest_wix}" " </Component>\n")
+ SET(unique_component ${unique_component} ${_dll})
+ ENDIF(NOT "${unique_component}" MATCHES "(^|;)${_dll}(;|$)")
+endforeach()
+file(APPEND "${_all_manifest_wix}" " </DirectoryRef>\n")
+file(APPEND "${_all_manifest_wix}" " </Fragment>\n")
+file(APPEND "${_all_manifest_wix}" " <Fragment>\n")
+file(APPEND "${_all_manifest_wix}" " <ComponentGroup Id=\"CG.RequiredDependencies\">\n")
+file(APPEND "${_all_manifest_wix}" " <?ifdef BUNDLE_DEBUG_DLLS ?>\n")
+foreach(_dll ${GLIB2_DLLS_DEBUG})
+ STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll})
+ file(APPEND "${_all_manifest_wix}" " <ComponentRef Id=\"cmp${_wix_name}\" />\n")
+endforeach()
+file(APPEND "${_all_manifest_wix}" " <?else?>\n")
+foreach(_dll ${GLIB2_DLLS_RELEASE})
+ STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll})
+ file(APPEND "${_all_manifest_wix}" " <ComponentRef Id=\"cmp${_wix_name}\" />\n")
+endforeach()
+file(APPEND "${_all_manifest_wix}" " <?endif?>\n")
+SET(unique_file "")
+foreach(_dll ${_dll_list})
+ #ensure uniqueness of files
+ IF(NOT "${unique_file}" MATCHES "(^|;)${_dll}(;|$)")
+ STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll})
+ file(APPEND "${_all_manifest_wix}" " <ComponentRef Id=\"cmp${_wix_name}\" />\n")
+ SET(unique_file ${unique_file} ${_dll})
+ ENDIF(NOT "${unique_file}" MATCHES "(^|;)${_dll}(;|$)")
+endforeach()
+file(APPEND "${_all_manifest_wix}" " </ComponentGroup>\n")
+file(APPEND "${_all_manifest_wix}" " </Fragment>\n")
+file(APPEND "${_all_manifest_wix}" "\n</Wix>\n")
+
+if(SMI_DIR)
+ set(d_smi_dir "-dSMI_DIR")
+endif()
+
+if (MAXMINDDB_FOUND)
+ set(d_mmdbresolve_exe "-dMMDBRESOLVE_EXE")
+endif()
+
+set(WIX_CANDLE_DEFINES
+ -v
+ -sw1076
+ -dPlatform=${WIRESHARK_TARGET_PLATFORM}
+ -dWiresharkName=${CMAKE_PROJECT_NAME}
+ -dWiresharkVersion=${PRODUCT_VERSION}
+ -dWiresharkMajorVersion=${PROJECT_MAJOR_VERSION}
+ -dWiresharkMinorVersion=${PROJECT_MINOR_VERSION}
+ -dAssetDir=${CMAKE_SOURCE_DIR}/packaging/wix
+ -dBuildOutputDir=${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}
+ -dDiameterDir=${ARCHIVE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/diameter
+ -dIconDir=${CMAKE_SOURCE_DIR}/resources/icons
+ -dQtTranslationDir=${ARCHIVE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/translations
+ -dRadiusDictDir=${ARCHIVE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/radius
+ -dSnmpMibDir=${ARCHIVE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/snmp/mibs
+ -dUsersGuideDir=${ARCHIVE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/docbook/wsug_html_chunked
+ -dVCRedistVersion=${MSVC_CRT_VERSION}
+ -dVCRedistDir=${MERGE_MODULE_DIR}
+ ${d_smi_dir}
+ ${d_mmdbresolve_exe}
+ -arch ${WIRESHARK_TARGET_PLATFORM}
+ -ext WixUIExtension
+ -I${CMAKE_SOURCE_DIR}/packaging/wix
+ -out ${CMAKE_CURRENT_BINARY_DIR}/
+ PARENT_SCOPE
+)
+
+# The NSIS CMakeFile sets the program name + version slightly differently.
+set(WIX_LIGHT_DEFINES
+ -v
+ -out ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-${WIRESHARK_TARGET_PLATFORM}.msi
+ -sw1076
+ -ext WixUIExtension
+ -loc ${CMAKE_CURRENT_SOURCE_DIR}/StringOverrides.wxl
+ PARENT_SCOPE
+)
+
+set(WIX_HEAT_FLAGS
+ -v
+ -ag
+ -nologo
+ -srd
+ -sreg
+ PARENT_SCOPE
+)
+
+macro( ADD_WIX_PACKAGE_TARGET )
+ #
+ # XXX - if we're not building Wireshark, we can't build
+ # QtDependentComponents.wxs.. On the other hand, if we're
+ # not building Wireshark, we have no need to include Qt
+ # in the installer, so it's not clear we need that file.
+ #
+ # This should probably be fixed, so that people can produce
+ # command-line-only installer packages.
+ if(BUILD_wireshark)
+ set (_wix_source_dir ${CMAKE_SOURCE_DIR}/packaging/wix )
+ set (_wix_binary_dir ${CMAKE_BINARY_DIR}/packaging/wix )
+
+ # QtDependentComponents.wxs. Created using Wireshark.exe.
+ add_custom_command(OUTPUT ${_wix_binary_dir}/QtDependentComponents.wxs
+ COMMAND set "PATH=${QT_BIN_PATH};%PATH%"
+ COMMAND ${POWERSHELL_COMMAND} "${_wix_source_dir}/windeployqt-to-wix.ps1"
+ -Executable $<TARGET_FILE:wireshark>
+ -FilePath ${_wix_binary_dir}/QtDependentComponents.wxs
+ DEPENDS "${_wix_source_dir}/windeployqt-to-wix.ps1"
+ )
+
+ # UsersGuide.wxs. Collects the contents of wsug_html_chunked.
+ # Generated with heat.exe
+ add_custom_command(OUTPUT ${_wix_binary_dir}/UsersGuide.wxs
+ COMMAND ${WIX_HEAT_EXECUTABLE} dir ${CMAKE_BINARY_DIR}/docbook/wsug_html_chunked
+ ${WIX_HEAT_FLAGS} -cg CG.Documentation -dr dirUsersGuide -var var.UsersGuideDir
+ -out ${_wix_binary_dir}/UsersGuide.wxs
+ )
+
+ # SNMPMibs.wxs. Collects all MIBs in "output" snmp/mibs
+ # directory. Generated with heat.exe
+ add_custom_command(OUTPUT ${_wix_binary_dir}/SNMPMibs.wxs
+ COMMAND ${WIX_HEAT_EXECUTABLE} dir ${ARCHIVE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/snmp/mibs
+ ${WIX_HEAT_FLAGS} -cg CG.Plugins.SNMP -dr dirSnmpMibs -var var.SnmpMibDir
+ -out ${_wix_binary_dir}/SNMPMibs.wxs
+ )
+
+ # RadiusDict.wxs. Collects all Radius dictionary files in
+ # "output" radius directory. Generated with heat.exe
+ add_custom_command(OUTPUT ${_wix_binary_dir}/RadiusDict.wxs
+ COMMAND ${WIX_HEAT_EXECUTABLE} dir ${ARCHIVE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/radius
+ ${WIX_HEAT_FLAGS} -cg CG.RadiusDict -dr dirRadius -var var.RadiusDictDir
+ -out ${_wix_binary_dir}/RadiusDict.wxs
+ )
+
+ # Diameter.wxs. Collects all Diameter XML dictionary files
+ # in "output" diameter directory. Generated with heat.exe
+ add_custom_command(OUTPUT ${_wix_binary_dir}/Diameter.wxs
+ COMMAND ${WIX_HEAT_EXECUTABLE} dir ${ARCHIVE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/diameter
+ ${WIX_HEAT_FLAGS} -cg CG.Diameter -dr dirDiameter -var var.DiameterDir
+ -out ${_wix_binary_dir}/Diameter.wxs
+ )
+
+ # QtTranslation.wxs. Collects all Qt translation files in
+ # "output" translations directory. Generated with heat.exe
+ add_custom_command(OUTPUT ${_wix_binary_dir}/QtTranslation.wxs
+ COMMAND ${WIX_HEAT_EXECUTABLE} dir ${ARCHIVE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/translations
+ ${WIX_HEAT_FLAGS} -cg CG.QtTranslations -dr dirTranslations -var var.QtTranslationDir
+ -out ${_wix_binary_dir}/QtTranslation.wxs
+ )
+
+ # Build WiX package dependencies. We build the package in
+ # two stages so that wireshark_wix below doesn't trigger any
+ # dependencies that might clobber any signed executables.
+ # XXX Rename this to wireshark_wix_prep
+ add_custom_target(wireshark_wix_prep
+ DEPENDS
+ ${WIX_FILES}
+ copy_data_files
+ user_guide_html
+ faq_html
+ )
+ set_target_properties(wireshark_wix_prep PROPERTIES
+ FOLDER "Packaging"
+ EXCLUDE_FROM_DEFAULT_BUILD True
+ )
+
+ # Dump the installer into
+ # ${CMAKE_CURRENT_SOURCE_DIR}/packaging/wix
+ # Note that executables and DLLs *must* be built separately
+ # XXX Rename this to wireshark_wix
+ add_custom_target(wireshark_wix
+ COMMAND ${WIX_CANDLE_EXECUTABLE} ${WIX_CANDLE_DEFINES}
+ $<$<CONFIG:Debug>:-dBUNDLE_DEBUG_DLLS>
+ ${WIX_SOURCE_FILES}
+ WORKING_DIRECTORY ${_wix_source_dir}
+
+ COMMAND ${WIX_LIGHT_EXECUTABLE} ${WIX_LIGHT_DEFINES} ${WIX_OUT_FILES}
+ WORKING_DIRECTORY ${_wix_binary_dir}
+ )
+ set_target_properties(wireshark_wix PROPERTIES
+ FOLDER "Packaging"
+ EXCLUDE_FROM_DEFAULT_BUILD True
+ )
+ else()
+ message(WARNING "The WiX installer cannot be built if the Wireshark program isn't built.")
+ endif()
+endmacro( ADD_WIX_PACKAGE_TARGET )
+
+set(CLEAN_FILES
+ DependentComponents.wxs
+ QtDependentComponents.wxs
+ UsersGuide.wxs
+ SNMPMibs.wxs
+ RadiusDict.wxs
+ Diameter.wxs
+ QtTranslation.wxs
+ #NEWS.txt
+ #user-guide.chm
+ wireshark-${VERSION}-${WIRESHARK_TARGET_PLATFORM}.msi
+)
diff --git a/packaging/wix/COPYING.rtf b/packaging/wix/COPYING.rtf
new file mode 100644
index 0000000..ec2bde5
--- /dev/null
+++ b/packaging/wix/COPYING.rtf
@@ -0,0 +1,524 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}{\f1\froman\fprq2\fcharset0 Times New Roman;}}
+{\colortbl ;\red0\green0\blue255;}
+{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\nowidctlpar\f0\fs20 This text consists of three parts:\par
+\par
+Part I: Some remarks regarding the license given in\par
+Part II: The actual license that covers Wireshark.\par
+Part III: Other applicable licenses.\par
+\par
+When in doubt: Part II/III is the legally binding part, Part I is just\par
+there to make it easier for people that are not familiar with the GPLv2.\par
+\par
+\par
+------------------------------------------------------------------------\par
+Part I:\par
+\par
+Wireshark is distributed under the GNU GPLv2. There are no restrictions\par
+on its use. There are restrictions on its distribution in source or\par
+binary form.\par
+\par
+Most parts of Wireshark are covered by a "GPL version 2 or later" license.\par
+Some files are covered by different licenses that are compatible with\par
+the GPLv2.\par
+\par
+As a notable exception, some utilities distributed with the Wireshark source are\par
+covered by other licenses that are not themselves directly compatible with the\par
+GPLv2. This is OK, as only the tools themselves are licensed this way, the\par
+output of the tools is not considered a derived work, and so can be safely\par
+licensed for Wireshark's use. An incomplete selection of these tools includes:\par
+ - the pidl utility (tools/pidl) is licensed under the GPLv3+.\par
+\par
+Parts of Wireshark can be built and distributed as libraries. These\par
+parts are still covered by the GPL, and NOT by the Lesser General Public\par
+License or any other license.\par
+\par
+If you integrate all or part of Wireshark into your own application, then\par
+that application must be released under a license compatible with the GPL.\par
+\par
+The full text of the GNU GPL and some of the other applicable licenses follows.\par
+\par
+------------------------------------------------------------------------\par
+Part II:\par
+\par
+ GNU GENERAL PUBLIC LICENSE\par
+ Version 2, June 1991\par
+\par
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\par
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\par
+ Everyone is permitted to copy and distribute verbatim copies\par
+ of this license document, but changing it is not allowed.\par
+\par
+ Preamble\par
+\par
+ The licenses for most software are designed to take away your\par
+freedom to share and change it. By contrast, the GNU General Public\par
+License is intended to guarantee your freedom to share and change free\par
+software--to make sure the software is free for all its users. This\par
+General Public License applies to most of the Free Software\par
+Foundation's software and to any other program whose authors commit to\par
+using it. (Some other Free Software Foundation software is covered by\par
+the GNU Lesser General Public License instead.) You can apply it to\par
+your programs, too.\par
+\par
+ When we speak of free software, we are referring to freedom, not\par
+price. Our General Public Licenses are designed to make sure that you\par
+have the freedom to distribute copies of free software (and charge for\par
+this service if you wish), that you receive source code or can get it\par
+if you want it, that you can change the software or use pieces of it\par
+in new free programs; and that you know you can do these things.\par
+\par
+ To protect your rights, we need to make restrictions that forbid\par
+anyone to deny you these rights or to ask you to surrender the rights.\par
+These restrictions translate to certain responsibilities for you if you\par
+distribute copies of the software, or if you modify it.\par
+\par
+ For example, if you distribute copies of such a program, whether\par
+gratis or for a fee, you must give the recipients all the rights that\par
+you have. You must make sure that they, too, receive or can get the\par
+source code. And you must show them these terms so they know their\par
+rights.\par
+\par
+ We protect your rights with two steps: (1) copyright the software, and\par
+(2) offer you this license which gives you legal permission to copy,\par
+distribute and/or modify the software.\par
+\par
+ Also, for each author's protection and ours, we want to make certain\par
+that everyone understands that there is no warranty for this free\par
+software. If the software is modified by someone else and passed on, we\par
+want its recipients to know that what they have is not the original, so\par
+that any problems introduced by others will not reflect on the original\par
+authors' reputations.\par
+\par
+ Finally, any free program is threatened constantly by software\par
+patents. We wish to avoid the danger that redistributors of a free\par
+program will individually obtain patent licenses, in effect making the\par
+program proprietary. To prevent this, we have made it clear that any\par
+patent must be licensed for everyone's free use or not licensed at all.\par
+\par
+ The precise terms and conditions for copying, distribution and\par
+modification follow.\par
+\par
+ GNU GENERAL PUBLIC LICENSE\par
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\par
+\par
+ 0. This License applies to any program or other work which contains\par
+a notice placed by the copyright holder saying it may be distributed\par
+under the terms of this General Public License. The "Program", below,\par
+refers to any such program or work, and a "work based on the Program"\par
+means either the Program or any derivative work under copyright law:\par
+that is to say, a work containing the Program or a portion of it,\par
+either verbatim or with modifications and/or translated into another\par
+language. (Hereinafter, translation is included without limitation in\par
+the term "modification".) Each licensee is addressed as "you".\par
+\par
+Activities other than copying, distribution and modification are not\par
+covered by this License; they are outside its scope. The act of\par
+running the Program is not restricted, and the output from the Program\par
+is covered only if its contents constitute a work based on the\par
+Program (independent of having been made by running the Program).\par
+Whether that is true depends on what the Program does.\par
+\par
+ 1. You may copy and distribute verbatim copies of the Program's\par
+source code as you receive it, in any medium, provided that you\par
+conspicuously and appropriately publish on each copy an appropriate\par
+copyright notice and disclaimer of warranty; keep intact all the\par
+notices that refer to this License and to the absence of any warranty;\par
+and give any other recipients of the Program a copy of this License\par
+along with the Program.\par
+\par
+You may charge a fee for the physical act of transferring a copy, and\par
+you may at your option offer warranty protection in exchange for a fee.\par
+\par
+ 2. You may modify your copy or copies of the Program or any portion\par
+of it, thus forming a work based on the Program, and copy and\par
+distribute such modifications or work under the terms of Section 1\par
+above, provided that you also meet all of these conditions:\par
+\par
+ a) You must cause the modified files to carry prominent notices\par
+ stating that you changed the files and the date of any change.\par
+\par
+ b) You must cause any work that you distribute or publish, that in\par
+ whole or in part contains or is derived from the Program or any\par
+ part thereof, to be licensed as a whole at no charge to all third\par
+ parties under the terms of this License.\par
+\par
+ c) If the modified program normally reads commands interactively\par
+ when run, you must cause it, when started running for such\par
+ interactive use in the most ordinary way, to print or display an\par
+ announcement including an appropriate copyright notice and a\par
+ notice that there is no warranty (or else, saying that you provide\par
+ a warranty) and that users may redistribute the program under\par
+ these conditions, and telling the user how to view a copy of this\par
+ License. (Exception: if the Program itself is interactive but\par
+ does not normally print such an announcement, your work based on\par
+ the Program is not required to print an announcement.)\par
+\par
+These requirements apply to the modified work as a whole. If\par
+identifiable sections of that work are not derived from the Program,\par
+and can be reasonably considered independent and separate works in\par
+themselves, then this License, and its terms, do not apply to those\par
+sections when you distribute them as separate works. But when you\par
+distribute the same sections as part of a whole which is a work based\par
+on the Program, the distribution of the whole must be on the terms of\par
+this License, whose permissions for other licensees extend to the\par
+entire whole, and thus to each and every part regardless of who wrote it.\par
+\par
+Thus, it is not the intent of this section to claim rights or contest\par
+your rights to work written entirely by you; rather, the intent is to\par
+exercise the right to control the distribution of derivative or\par
+collective works based on the Program.\par
+\par
+In addition, mere aggregation of another work not based on the Program\par
+with the Program (or with a work based on the Program) on a volume of\par
+a storage or distribution medium does not bring the other work under\par
+the scope of this License.\par
+\par
+ 3. You may copy and distribute the Program (or a work based on it,\par
+under Section 2) in object code or executable form under the terms of\par
+Sections 1 and 2 above provided that you also do one of the following:\par
+\par
+ a) Accompany it with the complete corresponding machine-readable\par
+ source code, which must be distributed under the terms of Sections\par
+ 1 and 2 above on a medium customarily used for software interchange; or,\par
+\par
+ b) Accompany it with a written offer, valid for at least three\par
+ years, to give any third party, for a charge no more than your\par
+ cost of physically performing source distribution, a complete\par
+ machine-readable copy of the corresponding source code, to be\par
+ distributed under the terms of Sections 1 and 2 above on a medium\par
+ customarily used for software interchange; or,\par
+\par
+ c) Accompany it with the information you received as to the offer\par
+ to distribute corresponding source code. (This alternative is\par
+ allowed only for noncommercial distribution and only if you\par
+ received the program in object code or executable form with such\par
+ an offer, in accord with Subsection b above.)\par
+\par
+The source code for a work means the preferred form of the work for\par
+making modifications to it. For an executable work, complete source\par
+code means all the source code for all modules it contains, plus any\par
+associated interface definition files, plus the scripts used to\par
+control compilation and installation of the executable. However, as a\par
+special exception, the source code distributed need not include\par
+anything that is normally distributed (in either source or binary\par
+form) with the major components (compiler, kernel, and so on) of the\par
+operating system on which the executable runs, unless that component\par
+itself accompanies the executable.\par
+\par
+If distribution of executable or object code is made by offering\par
+access to copy from a designated place, then offering equivalent\par
+access to copy the source code from the same place counts as\par
+distribution of the source code, even though third parties are not\par
+compelled to copy the source along with the object code.\par
+\par
+ 4. You may not copy, modify, sublicense, or distribute the Program\par
+except as expressly provided under this License. Any attempt\par
+otherwise to copy, modify, sublicense or distribute the Program is\par
+void, and will automatically terminate your rights under this License.\par
+However, parties who have received copies, or rights, from you under\par
+this License will not have their licenses terminated so long as such\par
+parties remain in full compliance.\par
+\par
+ 5. You are not required to accept this License, since you have not\par
+signed it. However, nothing else grants you permission to modify or\par
+distribute the Program or its derivative works. These actions are\par
+prohibited by law if you do not accept this License. Therefore, by\par
+modifying or distributing the Program (or any work based on the\par
+Program), you indicate your acceptance of this License to do so, and\par
+all its terms and conditions for copying, distributing or modifying\par
+the Program or works based on it.\par
+\par
+ 6. Each time you redistribute the Program (or any work based on the\par
+Program), the recipient automatically receives a license from the\par
+original licensor to copy, distribute or modify the Program subject to\par
+these terms and conditions. You may not impose any further\par
+restrictions on the recipients' exercise of the rights granted herein.\par
+You are not responsible for enforcing compliance by third parties to\par
+this License.\par
+\par
+ 7. If, as a consequence of a court judgment or allegation of patent\par
+infringement or for any other reason (not limited to patent issues),\par
+conditions are imposed on you (whether by court order, agreement or\par
+otherwise) that contradict the conditions of this License, they do not\par
+excuse you from the conditions of this License. If you cannot\par
+distribute so as to satisfy simultaneously your obligations under this\par
+License and any other pertinent obligations, then as a consequence you\par
+may not distribute the Program at all. For example, if a patent\par
+license would not permit royalty-free redistribution of the Program by\par
+all those who receive copies directly or indirectly through you, then\par
+the only way you could satisfy both it and this License would be to\par
+refrain entirely from distribution of the Program.\par
+\par
+If any portion of this section is held invalid or unenforceable under\par
+any particular circumstance, the balance of the section is intended to\par
+apply and the section as a whole is intended to apply in other\par
+circumstances.\par
+\par
+It is not the purpose of this section to induce you to infringe any\par
+patents or other property right claims or to contest validity of any\par
+such claims; this section has the sole purpose of protecting the\par
+integrity of the free software distribution system, which is\par
+implemented by public license practices. Many people have made\par
+generous contributions to the wide range of software distributed\par
+through that system in reliance on consistent application of that\par
+system; it is up to the author/donor to decide if he or she is willing\par
+to distribute software through any other system and a licensee cannot\par
+impose that choice.\par
+\par
+This section is intended to make thoroughly clear what is believed to\par
+be a consequence of the rest of this License.\par
+\par
+ 8. If the distribution and/or use of the Program is restricted in\par
+certain countries either by patents or by copyrighted interfaces, the\par
+original copyright holder who places the Program under this License\par
+may add an explicit geographical distribution limitation excluding\par
+those countries, so that distribution is permitted only in or among\par
+countries not thus excluded. In such case, this License incorporates\par
+the limitation as if written in the body of this License.\par
+\par
+ 9. The Free Software Foundation may publish revised and/or new versions\par
+of the General Public License from time to time. Such new versions will\par
+be similar in spirit to the present version, but may differ in detail to\par
+address new problems or concerns.\par
+\par
+Each version is given a distinguishing version number. If the Program\par
+specifies a version number of this License which applies to it and "any\par
+later version", you have the option of following the terms and conditions\par
+either of that version or of any later version published by the Free\par
+Software Foundation. If the Program does not specify a version number of\par
+this License, you may choose any version ever published by the Free Software\par
+Foundation.\par
+\par
+ 10. If you wish to incorporate parts of the Program into other free\par
+programs whose distribution conditions are different, write to the author\par
+to ask for permission. For software which is copyrighted by the Free\par
+Software Foundation, write to the Free Software Foundation; we sometimes\par
+make exceptions for this. Our decision will be guided by the two goals\par
+of preserving the free status of all derivatives of our free software and\par
+of promoting the sharing and reuse of software generally.\par
+\par
+ NO WARRANTY\par
+\par
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\par
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN\par
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\par
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\par
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\par
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS\par
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE\par
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\par
+REPAIR OR CORRECTION.\par
+\par
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\par
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\par
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\par
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\par
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\par
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\par
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\par
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\par
+POSSIBILITY OF SUCH DAMAGES.\par
+\par
+ END OF TERMS AND CONDITIONS\par
+\par
+ How to Apply These Terms to Your New Programs\par
+\par
+ If you develop a new program, and you want it to be of the greatest\par
+possible use to the public, the best way to achieve this is to make it\par
+free software which everyone can redistribute and change under these terms.\par
+\par
+ To do so, attach the following notices to the program. It is safest\par
+to attach them to the start of each source file to most effectively\par
+convey the exclusion of warranty; and each file should have at least\par
+the "copyright" line and a pointer to where the full notice is found.\par
+\par
+ <one line to give the program's name and a brief idea of what it does.>\par
+ Copyright (C) <year> <name of author>\par
+\par
+ This program is free software; you can redistribute it and/or modify\par
+ it under the terms of the GNU General Public License as published by\par
+ the Free Software Foundation; either version 2 of the License, or \par
+ (at your option) any later version.\par
+\par
+ This program is distributed in the hope that it will be useful,\par
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\par
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\par
+ GNU General Public License for more details.\par
+\par
+ You should have received a copy of the GNU General Public License along\par
+ with this program; if not, write to the Free Software Foundation, Inc.,\par
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\par
+\par
+Also add information on how to contact you by electronic and paper mail.\par
+\par
+If the program is interactive, make it output a short notice like this\par
+when it starts in an interactive mode:\par
+\par
+ Gnomovision version 69, Copyright (C) year name of author\par
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\par
+ This is free software, and you are welcome to redistribute it\par
+ under certain conditions; type `show c' for details.\par
+\par
+The hypothetical commands `show w' and `show c' should show the appropriate\par
+parts of the General Public License. Of course, the commands you use may\par
+be called something other than `show w' and `show c'; they could even be\par
+mouse-clicks or menu items--whatever suits your program.\par
+\par
+You should also get your employer (if you work as a programmer) or your\par
+school, if any, to sign a "copyright disclaimer" for the program, if\par
+necessary. Here is a sample; alter the names:\par
+\par
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program\par
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.\par
+\par
+ <signature of Ty Coon>, 1 April 1989\par
+ Ty Coon, President of Vice\par
+\par
+This General Public License does not permit incorporating your program into\par
+proprietary programs. If your program is a subroutine library, you may\par
+consider it more useful to permit linking proprietary applications with the\par
+library. If this is what you want to do, use the GNU Lesser General\par
+Public License instead of this License.\par
+\par
+------------------------------------------------------------------------\par
+Part III:\par
+\par
+Parts of this software are licensed as follows\par
+\par
+ Copyright (c) 1988, 1992, 1993\par
+ The Regents of the University of California. All rights reserved.\par
+ \par
+ Redistribution and use in source and binary forms, with or without\par
+ modification, are permitted provided that the following conditions\par
+ are met:\par
+ 1. Redistributions of source code must retain the above copyright\par
+ notice, this list of conditions and the following disclaimer.\par
+ 2. Redistributions in binary form must reproduce the above copyright\par
+ notice, this list of conditions and the following disclaimer in the\par
+ documentation and/or other materials provided with the distribution.\par
+ 3. Neither the name of the University nor the names of its contributors\par
+ may be used to endorse or promote products derived from this software\par
+ without specific prior written permission.\par
+ \par
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\par
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\par
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\par
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\par
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\par
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\par
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\par
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\par
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\par
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\par
+ SUCH DAMAGE.\par
+\par
+\par
+ Copyright (c) 2003 Markus Friedl. All rights reserved.\par
+ \par
+ Redistribution and use in source and binary forms, with or without\par
+ modification, are permitted provided that the following conditions\par
+ are met:\par
+ 1. Redistributions of source code must retain the above copyright\par
+ notice, this list of conditions and the following disclaimer.\par
+ 2. Redistributions in binary form must reproduce the above copyright\par
+ notice, this list of conditions and the following disclaimer in the\par
+ documentation and/or other materials provided with the distribution.\par
+ \par
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\par
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\par
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\par
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\par
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\par
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\par
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\par
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\par
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\par
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\par
+\par
+\par
+ Copyright (c) 2003 Endace Technology Ltd, Hamilton, New Zealand.\par
+ All rights reserved.\par
+ \par
+ This software and documentation has been developed by Endace Technology Ltd.\par
+ along with the DAG PCI network capture cards. For further information please\par
+ visit {\field{\*\fldinst{HYPERLINK "http://www.endace.com/"}}{\fldrslt{\ul\cf1 http://www.endace.com/}}}\f0\fs20 .\par
+ \par
+ Redistribution and use in source and binary forms, with or without\par
+ modification, are permitted provided that the following conditions are met:\par
+ \par
+ 1. Redistributions of source code must retain the above copyright notice,\par
+ this list of conditions and the following disclaimer.\par
+ \par
+ 2. Redistributions in binary form must reproduce the above copyright\par
+ notice, this list of conditions and the following disclaimer in the\par
+ documentation and/or other materials provided with the distribution.\par
+ \par
+ 3. The name of Endace Technology Ltd may not be used to endorse or promote\par
+ products derived from this software without specific prior written\par
+ permission.\par
+ \par
+ THIS SOFTWARE IS PROVIDED BY ENDACE TECHNOLOGY LTD ``AS IS'' AND ANY EXPRESS\par
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\par
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\par
+ EVENT SHALL ENDACE TECHNOLOGY LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\par
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\par
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\par
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\par
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\par
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\par
+ POSSIBILITY OF SUCH DAMAGE.\par
+\par
+\par
+ Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.\par
+ All rights reserved.\par
+ \par
+ Redistribution and use in source and binary forms, with or without\par
+ modification, are permitted provided that the following conditions\par
+ are met:\par
+ 1. Redistributions of source code must retain the above copyright\par
+ notice, this list of conditions and the following disclaimer.\par
+ 2. Redistributions in binary form must reproduce the above copyright\par
+ notice, this list of conditions and the following disclaimer in the\par
+ documentation and/or other materials provided with the distribution.\par
+ 3. Neither the name of the project nor the names of its contributors\par
+ may be used to endorse or promote products derived from this software\par
+ without specific prior written permission.\par
+ \par
+ THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND\par
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\par
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\par
+ ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE\par
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\par
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\par
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\par
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\par
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\par
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\par
+ SUCH DAMAGE.\par
+\par
+\par
+ Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.\par
+ \par
+ Redistribution and use in source and binary forms, with or without\par
+ modification, are permitted provided that the following conditions\par
+ are met:\par
+ 1. Redistributions of source code must retain the above copyright\par
+ notice, this list of conditions and the following disclaimer.\par
+ 2. Redistributions in binary form must reproduce the above copyright\par
+ notice, this list of conditions and the following disclaimer in the\par
+ documentation and/or other materials provided with the distribution.\par
+ \par
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\par
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\par
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\par
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\par
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\par
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\par
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\par
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\par
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\par
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\par
+ SUCH DAMAGE.\par
+\f1\par
+}
+
diff --git a/packaging/wix/ComponentGroups.wxi b/packaging/wix/ComponentGroups.wxi
new file mode 100644
index 0000000..8a64973
--- /dev/null
+++ b/packaging/wix/ComponentGroups.wxi
@@ -0,0 +1,913 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Include>
+
+ <!-- Wireshark -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpWireshark_exe" Guid="*">
+ <File Id="filWireshark_exe" KeyPath="yes" Source="$(var.WiresharkQt.Dir)\Wireshark.exe" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Wireshark">
+ <ComponentRef Id="cmpWireshark_exe" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Install for every user -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpWiretap_dll" Guid="*">
+ <File Id="filWiretap_dll" KeyPath="yes" Source="$(var.Staging.Dir)\libwiretap.dll" />
+ </Component>
+ <Component Id="cmpLibwireshark_dll" Guid="*">
+ <File Id="filLibwireshark_dll" KeyPath="yes" Source="$(var.Staging.Dir)\libwireshark.dll" />
+ </Component>
+ <Component Id="cmpLibwsutil_dll" Guid="*">
+ <File Id="filLibwsutil_dll" KeyPath="yes" Source="$(var.Staging.Dir)\libwsutil.dll" />
+ </Component>
+ <Component Id="cmpCOPYING_txt" Guid="*">
+ <File Id="filCOPYING_txt" KeyPath="yes" Source="$(var.Staging.Dir)\COPYING.txt" />
+ </Component>
+ <Component Id="cmpNEWS_txt" Guid="*">
+ <File Id="filNEWS_txt" KeyPath="yes" Source="$(var.Staging.Dir)\NEWS.txt" />
+ </Component>
+ <Component Id="cmpREADME_txt" Guid="*">
+ <File Id="filREADME_txt" KeyPath="yes" Source="$(var.Staging.Dir)\README.txt" />
+ </Component>
+ <Component Id="cmpREADME_windows_txt" Guid="*">
+ <File Id="filREADME_windows_txt" KeyPath="yes" Source="$(var.Staging.Dir)\README.windows.txt" />
+ </Component>
+ <Component Id="cmpWka" Guid="*">
+ <File Id="filWka" KeyPath="yes" Source="$(var.Staging.Dir)\wka" />
+ </Component>
+ <Component Id="cmpPdml2html_xsl" Guid="*">
+ <File Id="filPdml2html_xsl" KeyPath="yes" Source="$(var.Staging.Dir)\pdml2html.xsl" />
+ </Component>
+ <Component Id="cmpWs_css" Guid="*">
+ <File Id="filWs_css" KeyPath="yes" Source="$(var.Staging.Dir)\ws.css" />
+ </Component>
+ <Component Id="cmpWireshark_html" Guid="*">
+ <File Id="filWireshark_html" KeyPath="yes" Source="$(var.Staging.Dir)\wireshark.html" />
+ </Component>
+ <Component Id="cmpWireshark_filter_html" Guid="*">
+ <File Id="filWireshark_filter_html" KeyPath="yes" Source="$(var.Staging.Dir)\wireshark-filter.html" />
+ </Component>
+ <Component Id="cmpDumpcap_exe" Guid="*">
+ <File Id="filDumpcap_exe" KeyPath="yes" Source="$(var.Staging.Dir)\dumpcap.exe" />
+ </Component>
+ <Component Id="cmpDumpcap_html" Guid="*">
+ <File Id="filDumpcap_html" KeyPath="yes" Source="$(var.Staging.Dir)\dumpcap.html" />
+ </Component>
+ <Component Id="cmpExtcap_html" Guid="*">
+ <File Id="filExtcap_html" KeyPath="yes" Source="$(var.Staging.Dir)\extcap.html" />
+ </Component>
+ <Component Id="cmpIpmap_html" Guid="*">
+ <File Id="filIpmap_html" KeyPath="yes" Source="$(var.Staging.Dir)\ipmap.html" />
+ </Component>
+ <Component Id="cmpReleaseNotes_html" Guid="*">
+ <File Id="filReleaseNotes_html" KeyPath="yes" Source="$(var.Staging.Dir)\release-notes.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.WiresharkRequired">
+ <ComponentRef Id="cmpWiretap_dll" />
+ <ComponentRef Id="cmpLibwireshark_dll" />
+ <ComponentRef Id="cmpLibwsutil_dll" />
+ <ComponentRef Id="cmpCOPYING_txt" />
+ <ComponentRef Id="cmpNEWS_txt" />
+ <ComponentRef Id="cmpREADME_txt" />
+ <ComponentRef Id="cmpREADME_windows_txt" />
+ <ComponentRef Id="cmpWka" />
+ <ComponentRef Id="cmpPdml2html_xsl" />
+ <ComponentRef Id="cmpWs_css" />
+ <ComponentRef Id="cmpWireshark_html" />
+ <ComponentRef Id="cmpWireshark_filter_html" />
+ <ComponentRef Id="cmpDumpcap_exe" />
+ <ComponentRef Id="cmpDumpcap_html" />
+ <ComponentRef Id="cmpExtcap_html" />
+ <ComponentRef Id="cmpIpmap_html" />
+ <ComponentRef Id="cmpReleaseNotes_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- global config files By design these shouldn't be overwritten if they already exist -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpCfilters" Guid="*">
+ <File Id="filCfilters" KeyPath="yes" Source="$(var.Staging.Dir)\cfilters" />
+ </Component>
+ <Component Id="cmpColorfilters" Guid="*">
+ <File Id="filColorfilters" KeyPath="yes" Source="$(var.Staging.Dir)\colorfilters" />
+ </Component>
+ <Component Id="cmpDfilters" Guid="*">
+ <File Id="filDfilters" KeyPath="yes" Source="$(var.Staging.Dir)\dfilters" />
+ </Component>
+ <Component Id="cmpSmi_modules" Guid="*">
+ <File Id="filSmi_modules" KeyPath="yes" Source="$(var.Staging.Dir)\smi_modules" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.ColorFilters">
+ <ComponentRef Id="cmpCfilters" />
+ <ComponentRef Id="cmpColorfilters" />
+ <ComponentRef Id="cmpDfilters" />
+ <ComponentRef Id="cmpSmi_modules" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- dtds -->
+ <Fragment>
+ <DirectoryRef Id="dirDtds">
+ <Component Id="cmpDc_dtd" Guid="*">
+ <File Id="filDc_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\dc.dtd" />
+ </Component>
+ <Component Id="cmpItunes_dtd" Guid="*">
+ <File Id="filItunes_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\itunes.dtd" />
+ </Component>
+ <Component Id="cmpMscml_dtd" Guid="*">
+ <File Id="filMscml_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\mscml.dtd" />
+ </Component>
+ <Component Id="cmpPocsettings_dtd" Guid="*">
+ <File Id="filPocsettings_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\pocsettings.dtd" />
+ </Component>
+ <Component Id="cmpPresence_dtd" Guid="*">
+ <File Id="filPresence_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\presence.dtd" />
+ </Component>
+ <Component Id="cmpReginfo_dtd" Guid="*">
+ <File Id="filReginfo_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\reginfo.dtd" />
+ </Component>
+ <Component Id="cmpRlmi_dtd" Guid="*">
+ <File Id="filRlmi_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\rlmi.dtd" />
+ </Component>
+ <Component Id="cmpRss_dtd" Guid="*">
+ <File Id="filRss_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\rss.dtd" />
+ </Component>
+ <Component Id="cmpSmil_dtd" Guid="*">
+ <File Id="filSmil_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\smil.dtd" />
+ </Component>
+ <Component Id="cmpXcap_caps_dtd" Guid="*">
+ <File Id="filXcap_caps_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\xcap-caps.dtd" />
+ </Component>
+ <Component Id="cmpXcap_error_dtd" Guid="*">
+ <File Id="filXcap_error_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\xcap-error.dtd" />
+ </Component>
+ <Component Id="cmpWatcherinfo_dtd" Guid="*">
+ <File Id="filWatcherinfo_dtd" KeyPath="yes" Source="$(var.Dtds.Dir)\watcherinfo.dtd" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Dtds">
+ <ComponentRef Id="cmpDc_dtd" />
+ <ComponentRef Id="cmpItunes_dtd" />
+ <ComponentRef Id="cmpMscml_dtd" />
+ <ComponentRef Id="cmpPocsettings_dtd" />
+ <ComponentRef Id="cmpPresence_dtd" />
+ <ComponentRef Id="cmpReginfo_dtd" />
+ <ComponentRef Id="cmpRlmi_dtd" />
+ <ComponentRef Id="cmpRss_dtd" />
+ <ComponentRef Id="cmpSmil_dtd" />
+ <ComponentRef Id="cmpXcap_caps_dtd" />
+ <ComponentRef Id="cmpXcap_error_dtd" />
+ <ComponentRef Id="cmpWatcherinfo_dtd" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- TPNCP DAT file -->
+ <Fragment>
+ <DirectoryRef Id="dirTpncp">
+ <Component Id="cmpTpncp_dat" Guid="*">
+ <File Id="filTpncp_dat" KeyPath="yes" Source="$(var.Tpncp.Dir)\tpncp.dat" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tpncp">
+ <ComponentRef Id="cmpTpncp_dat" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- wimaxasncp TLV definitions -->
+ <Fragment>
+ <DirectoryRef Id="dirWimaxasncp">
+ <Component Id="cmpWimaxasncp_dictionary_xml" Guid="*">
+ <File Id="filWimaxasncp_dictionary_xml" KeyPath="yes" Source="$(var.Wimaxasncp.Dir)\dictionary.xml" />
+ </Component>
+ <Component Id="cmpWimaxasncp_dictionary_dtd" Guid="*">
+ <File Id="filWimaxasncp_dictionary_dtd" KeyPath="yes" Source="$(var.Wimaxasncp.Dir)\dictionary.dtd" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Wimaxasncp">
+ <ComponentRef Id="cmpWimaxasncp_dictionary_xml" />
+ <ComponentRef Id="cmpWimaxasncp_dictionary_dtd" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- protobuf TLV definitions -->
+ <Fragment>
+ <DirectoryRef Id="dirProtobuf">
+ <Component Id="cmpProtobuf_sparkplug_b_proto" Guid="*">
+ <File Id="filProtobuf_sparkplug_b_proto" KeyPath="yes" Source="$(var.Protobuf.Dir)\sparkplug_b.proto" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Protobuf">
+ <ComponentRef Id="cmpProtobuf_sparkplug_b_proto" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- TShark -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpTShark_exe" Guid="*">
+ <File Id="filTShark_exe" KeyPath="yes" Source="$(var.Staging.Dir)\tshark.exe" />
+ </Component>
+ <Component Id="cmpTShark_html" Guid="*">
+ <File Id="filTShark_html" KeyPath="yes" Source="$(var.Staging.Dir)\tshark.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.TShark">
+ <ComponentRef Id="cmpTShark_exe" />
+ <ComponentRef Id="cmpTShark_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Configuration Profiles -->
+ <Fragment>
+ <DirectoryRef Id="dirProfiles">
+ <Directory Id="dirBluetooth" Name="Bluetooth">
+ <Component Id="cmpBluetooth_colorfilters" Guid="*">
+ <File Id="filBluetooth_colorfilters" KeyPath="yes" Source="$(var.Profiles.Dir)\Bluetooth\colorfilters" />
+ </Component>
+ <Component Id="cmpBluetooth_preferences" Guid="*">
+ <File Id="filBluetooth_preferences" KeyPath="yes" Source="$(var.Profiles.Dir)\Bluetooth\preferences" />
+ </Component>
+ </Directory>
+ <Directory Id="dirClassic" Name="Classic">
+ <Component Id="cmpClassic_colorfilters" Guid="*">
+ <File Id="filClassic_colorfilters" KeyPath="yes" Source="$(var.Profiles.Dir)\Classic\colorfilters" />
+ </Component>
+ </Directory>
+ <Directory Id="dirNoReassembly" Name="No Reassembly">
+ <Component Id="cmpNoReassembly_preferences" Guid="*">
+ <File Id="filNoReassembly_preferences" KeyPath="yes" Source="$(var.Profiles.Dir)\No Reassembly\preferences" />
+ </Component>
+ </Directory>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Plugins.ConfigurationProfiles">
+ <ComponentRef Id="cmpBluetooth_colorfilters" />
+ <ComponentRef Id="cmpBluetooth_preferences" />
+ <ComponentRef Id="cmpClassic_colorfilters" />
+ <ComponentRef Id="cmpNoReassembly_preferences" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Editcap -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpEditcap_exe" Guid="*">
+ <File Id="filEditcap_exe" KeyPath="yes" Source="$(var.Staging.Dir)\editcap.exe" />
+ </Component>
+ <Component Id="cmpEditcap_html" Guid="*">
+ <File Id="filEditcap_html" KeyPath="yes" Source="$(var.Staging.Dir)\editcap.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Editcap">
+ <ComponentRef Id="cmpEditcap_exe" />
+ <ComponentRef Id="cmpEditcap_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Text2Pcap -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpText2pcap_exe" Guid="*">
+ <File Id="filText2pcap_exe" KeyPath="yes" Source="$(var.Staging.Dir)\text2pcap.exe" />
+ </Component>
+ <Component Id="cmpText2pcap_html" Guid="*">
+ <File Id="filText2pcap_html" KeyPath="yes" Source="$(var.Staging.Dir)\text2pcap.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Text2Pcap">
+ <ComponentRef Id="cmpText2pcap_exe" />
+ <ComponentRef Id="cmpText2pcap_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Mergecap -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpMergecap_exe" Guid="*">
+ <File Id="filMergecap_exe" KeyPath="yes" Source="$(var.Staging.Dir)\mergecap.exe" />
+ </Component>
+ <Component Id="cmpMergecap_html" Guid="*">
+ <File Id="filMergecap_html" KeyPath="yes" Source="$(var.Staging.Dir)\mergecap.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Mergecap">
+ <ComponentRef Id="cmpMergecap_exe" />
+ <ComponentRef Id="cmpMergecap_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Reordercap -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpReordercap_exe" Guid="*">
+ <File Id="filReordercap_exe" KeyPath="yes" Source="$(var.Staging.Dir)\reordercap.exe" />
+ </Component>
+ <Component Id="cmpReordercap_html" Guid="*">
+ <File Id="filReordercap_html" KeyPath="yes" Source="$(var.Staging.Dir)\reordercap.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Reordercap">
+ <ComponentRef Id="cmpReordercap_exe" />
+ <ComponentRef Id="cmpReordercap_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Capinfos -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpCapinfos_exe" Guid="*">
+ <File Id="filCapinfos_exe" KeyPath="yes" Source="$(var.Staging.Dir)\capinfos.exe" />
+ </Component>
+ <Component Id="cmpCapinfos_html" Guid="*">
+ <File Id="filCapinfos_html" KeyPath="yes" Source="$(var.Staging.Dir)\capinfos.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Capinfos">
+ <ComponentRef Id="cmpCapinfos_exe" />
+ <ComponentRef Id="cmpCapinfos_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Captype -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpCaptype_exe" Guid="*">
+ <File Id="filCaptype_exe" KeyPath="yes" Source="$(var.Staging.Dir)\captype.exe" />
+ </Component>
+ <Component Id="cmpCaptype_html" Guid="*">
+ <File Id="filCaptype_html" KeyPath="yes" Source="$(var.Staging.Dir)\captype.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Captype">
+ <ComponentRef Id="cmpCaptype_exe" />
+ <ComponentRef Id="cmpCaptype_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Rawshark -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpRawshark_exe" Guid="*">
+ <File Id="filRawshark_exe" KeyPath="yes" Source="$(var.Staging.Dir)\rawshark.exe" />
+ </Component>
+ <Component Id="cmpRawshark_html" Guid="*">
+ <File Id="filRawshark_html" KeyPath="yes" Source="$(var.Staging.Dir)\rawshark.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Rawshark">
+ <ComponentRef Id="cmpRawshark_exe" />
+ <ComponentRef Id="cmpRawshark_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Randpkt -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpRandpkt_exe" Guid="*">
+ <File Id="filRandpkt_exe" KeyPath="yes" Source="$(var.Staging.Dir)\randpkt.exe" />
+ </Component>
+ <Component Id="cmpRandpkt_html" Guid="*">
+ <File Id="filRandpkt_html" KeyPath="yes" Source="$(var.Staging.Dir)\randpkt.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Randpkt">
+ <ComponentRef Id="cmpRandpkt_exe" />
+ <ComponentRef Id="cmpRandpkt_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Sharkd -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpSharkd_exe" Guid="*">
+ <File Id="filSharkd_exe" KeyPath="yes" Source="$(var.Staging.Dir)\sharkd.exe" />
+ </Component>
+ <!--
+ <Component Id="cmpSharkd_html" Guid="*">
+ <File Id="filSharkd_html" KeyPath="yes" Source="$(var.Staging.Dir)\sharkd.html" />
+ </Component>
+ -->
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Sharkd">
+ <ComponentRef Id="cmpSharkd_exe" />
+ <!--
+ <ComponentRef Id="cmpSharkd_html" />
+ -->
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- MMDBResolve -->
+ <?ifdef MMDBRESOLVE_EXE?>
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpMmdbresolve_exe" Guid="*">
+ <File Id="filMmdbresolve_exe" KeyPath="yes" Source="$(var.Staging.Dir)\mmdbresolve.exe" />
+ </Component>
+ <Component Id="cmpMmdbresolve_html" Guid="*">
+ <File Id="filMmdbresolve_html" KeyPath="yes" Source="$(var.Staging.Dir)\mmdbresolve.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.MMDBResolve">
+ <ComponentRef Id="cmpMmdbresolve_exe" />
+ <ComponentRef Id="cmpMmdbresolve_html" />
+ </ComponentGroup>
+ </Fragment>
+ <?endif?>
+
+ <!-- Androiddump -->
+ <Fragment>
+ <DirectoryRef Id="dirExtcap">
+ <Component Id="cmpAndroiddump_exe" Guid="*">
+ <File Id="filAndroiddump_exe" KeyPath="yes" Source="$(var.Extcap.Dir)\androiddump.exe" />
+ </Component>
+ </DirectoryRef>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpAndroiddump_html" Guid="*">
+ <File Id="filAndroiddump_html" KeyPath="yes" Source="$(var.Staging.Dir)\androiddump.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Androiddump">
+ <ComponentRef Id="cmpAndroiddump_exe" />
+ <ComponentRef Id="cmpAndroiddump_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Randpktdump -->
+ <Fragment>
+ <DirectoryRef Id="dirExtcap">
+ <Component Id="cmpRandpktdump_exe" Guid="*">
+ <File Id="filRandpktdump_exe" KeyPath="yes" Source="$(var.Extcap.Dir)\randpktdump.exe" />
+ </Component>
+ </DirectoryRef>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpRandpktdump_html" Guid="*">
+ <File Id="filRandpktdump_html" KeyPath="yes" Source="$(var.Staging.Dir)\randpktdump.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Randpktdump">
+ <ComponentRef Id="cmpRandpktdump_exe" />
+ <ComponentRef Id="cmpRandpktdump_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Etwdump -->
+ <Fragment>
+ <DirectoryRef Id="dirExtcap">
+ <Component Id="cmpEtwdump_exe" Guid="*">
+ <File Id="filEtwdump_exe" KeyPath="yes" Source="$(var.Extcap.Dir)\etwdump.exe" />
+ </Component>
+ </DirectoryRef>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpEtwdump_html" Guid="*">
+ <File Id="filEtwdump_html" KeyPath="yes" Source="$(var.Staging.Dir)\etwdump.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Etwdump">
+ <ComponentRef Id="cmpEtwdump_exe" />
+ <ComponentRef Id="cmpEtwdump_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Sshdump -->
+ <Fragment>
+ <DirectoryRef Id="dirExtcap">
+ <Component Id="cmpSshdump_exe" Guid="*">
+ <File Id="filSshdump_exe" KeyPath="yes" Source="$(var.Extcap.Dir)\sshdump.exe" />
+ </Component>
+ </DirectoryRef>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpSshdump_html" Guid="*">
+ <File Id="filSshdump_html" KeyPath="yes" Source="$(var.Staging.Dir)\sshdump.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Sshdump">
+ <ComponentRef Id="cmpSshdump_exe" />
+ <ComponentRef Id="cmpSshdump_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Ciscodump -->
+ <Fragment>
+ <DirectoryRef Id="dirExtcap">
+ <Component Id="cmpCiscodump_exe" Guid="*">
+ <File Id="filCiscodump_exe" KeyPath="yes" Source="$(var.Extcap.Dir)\Ciscodump.exe" />
+ </Component>
+ </DirectoryRef>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpCiscodump_html" Guid="*">
+ <File Id="filCiscodump_html" KeyPath="yes" Source="$(var.Staging.Dir)\Ciscodump.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Ciscodump">
+ <ComponentRef Id="cmpCiscodump_exe" />
+ <ComponentRef Id="cmpCiscodump_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Wifidump -->
+ <Fragment>
+ <DirectoryRef Id="dirExtcap">
+ <Component Id="cmpWifidump_exe" Guid="*">
+ <File Id="filWifidump_exe" KeyPath="yes" Source="$(var.Extcap.Dir)\wifidump.exe" />
+ </Component>
+ </DirectoryRef>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpWifidump_html" Guid="*">
+ <File Id="filWifidump_html" KeyPath="yes" Source="$(var.Staging.Dir)\wifidump.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Wifidump">
+ <ComponentRef Id="cmpWifidump_exe" />
+ <ComponentRef Id="cmpWifidump_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Udpdump -->
+ <Fragment>
+ <DirectoryRef Id="dirExtcap">
+ <Component Id="cmpUdpdump_exe" Guid="*">
+ <File Id="filUdpdump_exe" KeyPath="yes" Source="$(var.Extcap.Dir)\Udpdump.exe" />
+ </Component>
+ </DirectoryRef>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpUdpdump_html" Guid="*">
+ <File Id="filUdpdump_html" KeyPath="yes" Source="$(var.Staging.Dir)\Udpdump.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Tools.Udpdump">
+ <ComponentRef Id="cmpUdpdump_exe" />
+ <ComponentRef Id="cmpUdpdump_html" />
+ </ComponentGroup>
+ </Fragment>
+
+ <?ifdef DOCBOOK_DIR?>
+ <!-- User Guide is created by heat -->
+ <!-- FAQ -->
+ <Fragment>
+ <DirectoryRef Id="INSTALLFOLDER">
+ <Component Id="cmpFAQ_html" Guid="*">
+ <File Id="filFAQ_html" KeyPath="yes" Source="$(var.DOCBOOK_DIR)\faq.html" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Documentation">
+ <ComponentRef Id="cmpFAQ_html" />
+ </ComponentGroup>
+ </Fragment>
+ <?endif?>
+
+ <!-- Shortcuts -->
+ <Fragment>
+ <ComponentGroup Id="CG.WiresharkStartMenu" Directory="ProgramMenuFolder">
+ <Component Id="cmpWiresharkShortcut">
+ <Shortcut Id="scWireshark" Name="$(var.WiresharkName)" Description="The $(var.WiresharkName) Network Protocol Analyzer" Target="[#filWireshark_exe]" WorkingDirectory="INSTALLFOLDER" />
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="StartMenuShortcut" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_START_MENU = "1"</Condition>
+ </Component>
+ </ComponentGroup>
+ <ComponentGroup Id="CG.WiresharkDesktopIcon" Directory="DesktopFolder">
+ <Component Id="cmpWiresharkDesktopIcon">
+ <Shortcut Id="scWiresharkDesktop" Name="$(var.WiresharkName)" Description="The $(var.WiresharkName) Network Protocol Analyzer" Target="[#filWireshark_exe]" WorkingDirectory="INSTALLFOLDER" />
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="DesktopIcon" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_DESKTOP_ICON = "1"</Condition>
+ </Component>
+ </ComponentGroup>
+ <ComponentGroup Id="CG.WiresharkQuickLaunchIcon" Directory="QuickLaunchFolder">
+ <Component Id="cmpWiresharkQuickLaunchIcon">
+ <Shortcut Id="scWiresharkQuickLaunch" Name="$(var.WiresharkName)" Description="The $(var.WiresharkName) Network Protocol Analyzer" Target="[#filWireshark_exe]" WorkingDirectory="INSTALLFOLDER" />
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="QuickLaunchIcon" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_QUICK_LAUNCH_ICON = "1"</Condition>
+ <!-- Done to keep ICE64 happy -->
+ <RemoveFolder Id="RemoveMicrosoftFolder" Directory="MicrosoftFolder" On="uninstall" />
+ <RemoveFolder Id="RemoveInternetExplorerFolder" Directory="InternetExplorerFolder" On="uninstall" />
+ <RemoveFolder Id="RemoveQuickLaunchFolder" Directory="QuickLaunchFolder" On="uninstall" />
+ </Component>
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- File Associations -->
+ <Fragment>
+ <ComponentGroup Id="CG.WiresharkFileAssociations" Directory="INSTALLFOLDER">
+ <Component Id="cmpFA5vw">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="5vw">
+ <Extension Id="5vw">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="5vw" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAacp">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="acp">
+ <Extension Id="acp">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="acp" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAapc">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="apc">
+ <Extension Id="apc">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="apc" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAatc">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="atc">
+ <Extension Id="atc">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="atc" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAbfr">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="bfr">
+ <Extension Id="bfr">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="bfr" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAcap">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="cap">
+ <Extension Id="cap">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="cap" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAenc">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="enc">
+ <Extension Id="enc">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="enc" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAerf">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="erf">
+ <Extension Id="erf">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="erf" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAfdc">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="fdc">
+ <Extension Id="fdc">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="fdc" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAipfix">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="ipfix">
+ <Extension Id="ipfix">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="ipfix" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAlcap">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="lcap">
+ <Extension Id="lcap">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="lcap" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAmplog">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="mplog">
+ <Extension Id="mplog">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="mplog" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAntar">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="ntar">
+ <Extension Id="ntar">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="ntar" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAout">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="out">
+ <Extension Id="out">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="out" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFApcap">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="pcap">
+ <Extension Id="pcap">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="pcap" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFApcapng">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="pcapng">
+ <Extension Id="pcapng">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="pcapng" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFApklg">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="pklg">
+ <Extension Id="pklg">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="pklg" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFApkt">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="pkt">
+ <Extension Id="pkt">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="pkt" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFArf5">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="rf5">
+ <Extension Id="rf5">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="rf5" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAsnoop">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="snoop">
+ <Extension Id="snoop">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="snoop" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAsyc">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="syc">
+ <Extension Id="syc">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="syc" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAtpc">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="tpc">
+ <Extension Id="tpc">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="tpc" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAtr1">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="tr1">
+ <Extension Id="tr1">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="tr1" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAtrace">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="trace">
+ <Extension Id="trace">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="trace" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAtrc">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="trc">
+ <Extension Id="trc">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="trc" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAvwr">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="vwr">
+ <Extension Id="vwr">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="vwr" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAwpc">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="wpc">
+ <Extension Id="wpc">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="wpc" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ <Component Id="cmpFAwpz">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="wpz">
+ <Extension Id="wpz">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="wpz" Type="integer" Value="1" KeyPath="yes"/>
+ <Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
+ </Component>
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- C-runtime redistributable -->
+ <Fragment>
+ <DirectoryRef Id="TARGETDIR">
+ <Merge Id="VCRedist" SourceFile="$(var.VCRedistDir)\Microsoft_$(var.VCRedistVersion)_CRT_$(var.Platform).msm" DiskId="1" Language="0"/>
+ </DirectoryRef>
+ </Fragment>
+
+</Include>
diff --git a/packaging/wix/DirectoryStructure.wxi b/packaging/wix/DirectoryStructure.wxi
new file mode 100644
index 0000000..f06297e
--- /dev/null
+++ b/packaging/wix/DirectoryStructure.wxi
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Include>
+
+ <!-- Basic directory structure -->
+ <Fragment>
+ <!-- "Special" directory, required for the root drive -->
+ <Directory Id="TARGETDIR" Name="SourceDir">
+ <!-- "Special" directory for desktop -->
+ <Directory Id="DesktopFolder" Name="Desktop"/>
+ <!-- "Special" directory, required for the Program Files folder -->
+ <Directory Id="$(var.PlatformProgramFilesFolder)">
+ <!-- These directories follow the typical hierarchical structure -->
+ <Directory Id="INSTALLFOLDER" Name="$(var.WiresharkName)">
+ <Directory Id="dirDtds" Name="dtds"/>
+ <Directory Id="dirDiameter" Name="diameter"/>
+ <Directory Id="dirExtcap" Name="extcap"/>
+ <Directory Id="dirHelp" Name="help"/>
+ <Directory Id="dirRadius" Name="radius"/>
+ <Directory Id="dirPlugins" Name="plugins">
+ <Directory Id="dirPluginsVersion" Name="$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)">
+ <Directory Id="dirPluginsVersionEpan" Name="epan"/>
+ <Directory Id="dirPluginsVersionWtap" Name="wiretap"/>
+ <Directory Id="dirPluginsVersionCodecs" Name="codecs"/>
+ </Directory>
+ </Directory>
+ <Directory Id="dirUsersGuide" Name="Wireshark User's Guide"/>
+ <Directory Id="dirProfiles" Name="profiles"/>
+ <Directory Id="dirSnmp" Name="snmp">
+ <Directory Id="dirSnmpMibs" Name="mibs"/>
+ </Directory>
+ <Directory Id="dirTpncp" Name="tpncp"/>
+ <Directory Id="dirTranslations" Name="translations"/>
+ <Directory Id="dirWimaxasncp" Name="wimaxasncp"/>
+ <Directory Id="dirProtobuf" Name="protobuf"/>
+ </Directory>
+ </Directory>
+
+ <!-- "Special" directory for the Start Menu -->
+ <Directory Id="ProgramMenuFolder">
+ <!-- Shortcuts directly in menu -->
+ </Directory>
+ <!-- "Special" directory for Quick Launch -->
+ <Directory Id="AppDataFolder">
+ <Directory Id="MicrosoftFolder" Name="Microsoft">
+ <Directory Id="InternetExplorerFolder" Name="Internet Explorer">
+ <Directory Id="QuickLaunchFolder" Name="Quick Launch" />
+ </Directory>
+ </Directory>
+ </Directory>
+ </Directory>
+
+ </Fragment>
+</Include>
diff --git a/packaging/wix/Features.wxi b/packaging/wix/Features.wxi
new file mode 100644
index 0000000..ffaa4d6
--- /dev/null
+++ b/packaging/wix/Features.wxi
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Include>
+
+ <!-- User-selectable features -->
+ <Fragment>
+ <Feature Id="Fe.Wireshark" Title="$(var.WiresharkName)" Level="1" AllowAdvertise="yes" Display="expand" Description="The main network protocol analyzer application.">
+ <ComponentGroupRef Id="CG.Wireshark" />
+ <ComponentGroupRef Id="CG.QtDependencies" />
+ <ComponentGroupRef Id="CG.QtTranslations" />
+ <ComponentGroupRef Id="CG.WiresharkStartMenu" />
+ <ComponentGroupRef Id="CG.WiresharkDesktopIcon" />
+ <ComponentGroupRef Id="CG.WiresharkQuickLaunchIcon" />
+ <ComponentGroupRef Id="CG.WiresharkFileAssociations" />
+ </Feature>
+ <Feature Id="Fe.WiresharkRequired" Title="Required" Level="1" AllowAdvertise="yes" Display="hidden" Description="Install for every user">
+ <ComponentGroupRef Id="CG.WiresharkRequired" />
+ <ComponentGroupRef Id="CG.ColorFilters" />
+ <ComponentGroupRef Id="CG.Diameter" />
+ <ComponentGroupRef Id="CG.RadiusDict" />
+ <ComponentGroupRef Id="CG.Dtds" />
+ <ComponentGroupRef Id="CG.Tpncp" />
+ <ComponentGroupRef Id="CG.Wimaxasncp" />
+ <ComponentGroupRef Id="CG.Protobuf" />
+ <ComponentGroupRef Id="CG.RequiredDependencies" />
+
+ </Feature>
+ <Feature Id="Fe.TShark" Title="TShark" Level="1" AllowAdvertise="yes" Display="expand" Description="Text based network protocol analyzer.">
+ <ComponentGroupRef Id="CG.TShark" />
+ </Feature>
+ <Feature Id="Fe.Plugins" Title="Plugins &amp; Extensions" Level="1" AllowAdvertise="yes" Display="expand" Description="Plugins and extensions for both $(var.WiresharkName) and TShark.">
+ <!-- XXX - Cleanup plugins directory on uninstall -->
+ <Feature Id="Fe.Plugins.Dissector" Title="Dissector Plugins" Level="1" AllowAdvertise="yes" Display="expand" Description="Additional protocol dissectors.">
+ <ComponentGroupRef Id="CG.Plugins.Dissector" />
+ </Feature>
+ <Feature Id="Fe.Plugins.TreeStat" Title="Tree Statistics Plugin" Level="1" AllowAdvertise="yes" Display="expand" Description="Extended statistics.">
+ <ComponentGroupRef Id="CG.Plugins.TreeStat" />
+ </Feature>
+ <Feature Id="Fe.Plugins.Mate" Title="Mate - Meta Analysis and Tracing Engine" Level="1" AllowAdvertise="yes" Display="expand" Description="Plugin - Meta Analysis and Tracing Engine (Experimental).">
+ <ComponentGroupRef Id="CG.Plugins.Mate" />
+ </Feature>
+ <Feature Id="Fe.Plugins.Transum" Title="TRANSUM - Network and application performance analysis" Level="1" AllowAdvertise="yes" Display="expand" Description="Plugin - Network and application performance analysis (Experimental).">
+ <ComponentGroupRef Id="CG.Plugins.Transum" />
+ </Feature>
+ <Feature Id="Fe.Plugins.Wiretap" Title="Wiretap Plugins" Level="1" AllowAdvertise="yes" Display="expand" Description="Additional file formats support.">
+ <ComponentGroupRef Id="CG.Plugins.Wiretap" />
+ </Feature>
+ <Feature Id="Fe.Plugins.Codecs" Title="Codec Plugins" Level="1" AllowAdvertise="yes" Display="expand" Description="Codecs playback support.">
+ <ComponentGroupRef Id="CG.Plugins.Codecs" />
+ </Feature>
+ <Feature Id="Fe.Plugins.ConfigurationProfiles" Title="Configuration Profiles" Level="1" AllowAdvertise="yes" Display="expand" Description="Configuration Profiles">
+ <!-- XXX - Cleanup configuration profiles directory on uninstall -->
+ <ComponentGroupRef Id="CG.Plugins.ConfigurationProfiles" />
+ </Feature>
+ <?ifdef SMI_DIR?>
+ <Feature Id="Fe.Plugins.SNMP" Title="SNMP MIBs" Level="1" AllowAdvertise="yes" Display="expand" Description="SNMP MIBs for better SNMP dissection.">
+ <ComponentGroupRef Id="CG.Plugins.SNMP" />
+ </Feature>
+ <?endif?>
+ </Feature>
+ <Feature Id="Fe.Tools" Title="Tools" Level="1" AllowAdvertise="yes" Display="expand" Description="Additional command line based tools.">
+ <Feature Id="Fe.Tools.Editcap" Title="Editcap" Level="1" AllowAdvertise="yes" Display="expand" Description="Copy packets to a new file, optionally trimmming packets, omitting them, or saving to a different format.">
+ <ComponentGroupRef Id="CG.Tools.Editcap" />
+ </Feature>
+ <Feature Id="Fe.Tools.Text2Pcap" Title="Text2Pcap" Level="1" AllowAdvertise="yes" Display="expand" Description="Read an ASCII hex dump and write the data into a libpcap-style capture file.">
+ <ComponentGroupRef Id="CG.Tools.Text2Pcap" />
+ </Feature>
+ <Feature Id="Fe.Tools.Mergecap" Title="Mergecap" Level="1" AllowAdvertise="yes" Display="expand" Description="Combine multiple saved capture files into a single output file.">
+ <ComponentGroupRef Id="CG.Tools.Mergecap" />
+ </Feature>
+ <Feature Id="Fe.Tools.Reordercap" Title="Reordercap" Level="1" AllowAdvertise="yes" Display="expand" Description="Copy packets to a new file, sorted by time.">
+ <ComponentGroupRef Id="CG.Tools.Reordercap" />
+ </Feature>
+ <Feature Id="Fe.Tools.Capinfos" Title="Capinfos" Level="1" AllowAdvertise="yes" Display="expand" Description="Print information about capture files.">
+ <ComponentGroupRef Id="CG.Tools.Capinfos" />
+ </Feature>
+ <Feature Id="Fe.Tools.Captype" Title="Captype" Level="1" AllowAdvertise="yes" Display="expand" Description="Print the types of capture files.">
+ <ComponentGroupRef Id="CG.Tools.Captype" />
+ </Feature>
+ <Feature Id="Fe.Tools.Rawshark" Title="Rawshark" Level="1" AllowAdvertise="yes" Display="expand" Description="Raw packet filter.">
+ <ComponentGroupRef Id="CG.Tools.Rawshark" />
+ </Feature>
+ <Feature Id="Fe.Tools.Sharkd" Title="Sharkd" Level="1" AllowAdvertise="yes" Display="expand" Description="Packet dissection daemon.">
+ <ComponentGroupRef Id="CG.Tools.Sharkd" />
+ </Feature>
+ <?ifdef MMDBRESOLVE_EXE?>
+ <Feature Id="Fe.Tools.MMDBResolve" Title="MMDBResolve" Level="1" AllowAdvertise="yes" Display="expand" Description="IP geolocation database resolution.">
+ <ComponentGroupRef Id="CG.Tools.MMDBResolve" />
+ </Feature>
+ <?endif?>
+ <Feature Id="Fe.Tools.Androiddump" Title="Androiddump" Level="2" AllowAdvertise="yes" Display="expand" Description="Provide capture interfaces from Android devices.">
+ <ComponentGroupRef Id="CG.Tools.Androiddump" />
+ </Feature>
+ <Feature Id="Fe.Tools.Randpktdump" Title="Randpktdump" Level="2" AllowAdvertise="yes" Display="expand" Description="Provide random packet generator.">
+ <ComponentGroupRef Id="CG.Tools.Randpktdump" />
+ </Feature>
+ <Feature Id="Fe.Tools.Etwdump" Title="Etwdump" Level="2" AllowAdvertise="yes" Display="expand" Description="Provide ETW reader.">
+ <ComponentGroupRef Id="CG.Tools.Etwdump" />
+ </Feature>
+ <Feature Id="Fe.Tools.Sshdump" Title="Sshdump" Level="1" AllowAdvertise="yes" Display="expand" Description="Provide remote capture through SSH.">
+ <ComponentGroupRef Id="CG.Tools.Sshdump" />
+ </Feature>
+ <Feature Id="Fe.Tools.Ciscodump" Title="Ciscodump" Level="1" AllowAdvertise="yes" Display="expand" Description="Provide capture interface from a remote Cisco router through SSH.">
+ <ComponentGroupRef Id="CG.Tools.Ciscodump" />
+ </Feature>
+ <Feature Id="Fe.Tools.Udpdump" Title="Udpdump" Level="1" AllowAdvertise="yes" Display="expand" Description="Provide capture interface that gets UDP packets from network devices.">
+ <ComponentGroupRef Id="CG.Tools.Udpdump" />
+ </Feature>
+ <Feature Id="Fe.Tools.Wifidump" Title="Wifidump" Level="1" AllowAdvertise="yes" Display="expand" Description="Provide remote capture of Wi-Fi frames through SSH.">
+ <ComponentGroupRef Id="CG.Tools.Wifidump" />
+ </Feature>
+ </Feature>
+ <?ifdef DOCBOOK_DIR?>
+ <Feature Id="Fe.Documentation" Title="Documentation" Level="1" AllowAdvertise="yes" Display="expand" Description="Install an offline copy of the User's Guide and FAQ.">
+ <ComponentGroupRef Id="CG.Documentation" />
+ </Feature>
+ <?endif?>
+ <Feature Id="VCRedist" Title="Visual C++ Runtime" AllowAdvertise="no" Display="hidden" Level="1">
+ <MergeRef Id="VCRedist"/>
+ </Feature>
+ </Fragment>
+</Include>
diff --git a/packaging/wix/InputPaths.wxi b/packaging/wix/InputPaths.wxi
new file mode 100644
index 0000000..5ff6235
--- /dev/null
+++ b/packaging/wix/InputPaths.wxi
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Include>
+
+ <?if $(var.Platform) = x64 ?>
+ <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
+ <?else?>
+ <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
+ <?endif?>
+
+ <?define Staging.Dir ="$(var.BuildOutputDir)" ?>
+ <?define Plugins.Dir ="$(var.Staging.Dir)\plugins" ?>
+ <?define Profiles.Dir ="$(var.Staging.Dir)\profiles" ?>
+ <?define Extcap.Dir ="$(var.Staging.Dir)\extcap" ?>
+ <?define WiresharkQt.Dir ="$(var.Staging.Dir)" ?>
+ <?define Dtds.Dir ="$(var.Staging.Dir)\dtds" ?>
+ <?define Tpncp.Dir ="$(var.Staging.Dir)\tpncp" ?>
+ <?define Wimaxasncp.Dir ="$(var.Staging.Dir)\wimaxasncp" ?>
+ <?define Protobuf.Dir ="$(var.Staging.Dir)\protobuf" ?>
+ <?define Help.Dir ="$(var.Staging.Dir)\help" ?>
+ <?define Epan.Lua.Dir ="..\..\epan\wslua" ?>
+
+</Include>
diff --git a/packaging/wix/Plugins.wxi b/packaging/wix/Plugins.wxi
new file mode 100644
index 0000000..0b53cf4
--- /dev/null
+++ b/packaging/wix/Plugins.wxi
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Include>
+
+ <!-- Plugins -->
+ <Fragment>
+ <DirectoryRef Id="dirPluginsVersionEpan">
+ <Component Id="cmpEthercat_dll" Guid="*">
+ <File Id="filEthercat_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\ethercat.dll" />
+ </Component>
+ <Component Id="cmpGryphon_dll" Guid="*">
+ <File Id="filGryphon_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\gryphon.dll" />
+ </Component>
+ <Component Id="cmpIrda_dll" Guid="*">
+ <File Id="filIrda_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\irda.dll" />
+ </Component>
+ <Component Id="cmpOpcua_dll" Guid="*">
+ <File Id="filOpcua_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\opcua.dll" />
+ </Component>
+ <Component Id="cmpProfinet_dll" Guid="*">
+ <File Id="filProfinet_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\profinet.dll" />
+ </Component>
+ <Component Id="cmpUnistim_dll" Guid="*">
+ <File Id="filUnistim_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\unistim.dll" />
+ </Component>
+ <Component Id="cmpWimax_dll" Guid="*">
+ <File Id="filWimax_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\wimax.dll" />
+ </Component>
+ <Component Id="cmpWimaxasmcp_dll" Guid="*">
+ <File Id="filWimaxasmcp_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\wimaxasncp.dll" />
+ </Component>
+ <Component Id="cmpWimaxmacphy_dll" Guid="*">
+ <File Id="filWimaxmacphy_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\wimaxmacphy.dll" />
+ </Component>
+ <!-- Add custom plugin Components here -->
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Plugins.Dissector">
+ <ComponentRef Id="cmpEthercat_dll" />
+ <ComponentRef Id="cmpGryphon_dll" />
+ <ComponentRef Id="cmpIrda_dll" />
+ <ComponentRef Id="cmpOpcua_dll" />
+ <ComponentRef Id="cmpProfinet_dll" />
+ <ComponentRef Id="cmpUnistim_dll" />
+ <ComponentRef Id="cmpWimax_dll" />
+ <ComponentRef Id="cmpWimaxasmcp_dll" />
+ <ComponentRef Id="cmpWimaxmacphy_dll" />
+ <!-- Add custom plugin ComponentRefs here -->
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- Stats Tree -->
+ <Fragment>
+ <DirectoryRef Id="dirPluginsVersionEpan">
+ <Component Id="cmpStatsTree_dll" Guid="*">
+ <File Id="filStatsTree_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\stats_tree.dll" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Plugins.TreeStat">
+ <ComponentRef Id="cmpStatsTree_dll" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- MATE -->
+ <Fragment>
+ <DirectoryRef Id="dirPluginsVersionEpan">
+ <Component Id="cmpMate_dll" Guid="*">
+ <File Id="filMate_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\mate.dll" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Plugins.Mate">
+ <ComponentRef Id="cmpMate_dll" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- TRANSUM -->
+ <Fragment>
+ <DirectoryRef Id="dirPluginsVersionEpan">
+ <Component Id="cmpTransum_dll" Guid="*">
+ <File Id="filTransum_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\transum.dll" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Plugins.Transum">
+ <ComponentRef Id="cmpTransum_dll" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- wiretap -->
+ <Fragment>
+ <DirectoryRef Id="dirPluginsVersionWtap">
+ <Component Id="cmpUsbdump_dll" Guid="*">
+ <File Id="filUsbdump_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\wiretap\usbdump.dll" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Plugins.Wiretap">
+ <ComponentRef Id="cmpUsbdump_dll" />
+ </ComponentGroup>
+ </Fragment>
+
+ <!-- codecs -->
+ <Fragment>
+ <DirectoryRef Id="dirPluginsVersionCodecs">
+ <Component Id="cmpG711_dll" Guid="*">
+ <File Id="filG711_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\g711.dll" />
+ </Component>
+ <Component Id="cmpG722_dll" Guid="*">
+ <File Id="filG722_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\g722.dll" />
+ </Component>
+ <Component Id="cmpG726_dll" Guid="*">
+ <File Id="filG726_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\g726.dll" />
+ </Component>
+ <Component Id="cmpG729_dll" Guid="*">
+ <File Id="filG729_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\g729.dll" />
+ </Component>
+ <Component Id="cmpL16mono_dll" Guid="*">
+ <File Id="filL16mono_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\l16mono.dll" />
+ </Component>
+ <Component Id="cmpSBC_dll" Guid="*">
+ <File Id="filSBC_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\sbc.dll" />
+ </Component>
+ <Component Id="cmpILBC_dll" Guid="*">
+ <File Id="filILBC_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\ilbc.dll" />
+ </Component>
+ <Component Id="cmpOPUS_dll" Guid="*">
+ <File Id="filOPUS_dec_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\opus_dec.dll" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="CG.Plugins.Codecs">
+ <ComponentRef Id="cmpG711_dll" />
+ <ComponentRef Id="cmpG722_dll" />
+ <ComponentRef Id="cmpG726_dll" />
+ <ComponentRef Id="cmpG729_dll" />
+ <ComponentRef Id="cmpL16mono_dll" />
+ <ComponentRef Id="cmpSBC_dll" />
+ <ComponentRef Id="cmpILBC_dll" />
+ <ComponentRef Id="cmpOPUS_dll" />
+ </ComponentGroup>
+ </Fragment>
+
+</Include>
diff --git a/packaging/wix/Prerequisites.wxi b/packaging/wix/Prerequisites.wxi
new file mode 100644
index 0000000..54e8416
--- /dev/null
+++ b/packaging/wix/Prerequisites.wxi
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Include xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
+
+ <!-- Check for required dependencies here -->
+ <!--
+ You can debug the logic below (and lots of other things) by running
+ msiexec /i packaging\wix\Wireshark-xxx.msi /l*v msilog.txt
+ -->
+ <Fragment>
+
+ <!-- Do not remove: The contents of this "fragment" will not be included in the project,
+ unless we reference at least one item defined within it.
+ This "IncludePrerequisites" property is referenced in the "Product" element,
+ to ensure the entire fragment is included. -->
+ <Property Id="IncludePrerequisites">1</Property>
+
+ <!-- This should match the following:
+ - The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in
+ - The <compatibility><application> section in image\wireshark.exe.manifest.in
+ - The GetWindowsVersion parts of packaging\nsis\wireshark.nsi
+ -->
+ <Condition Message="Windows 2000 is no longer supported. Please install $(var.WiresharkName) 1.2 or 1.0 instead.">
+ <![CDATA[Installed OR (VersionNT < 500) OR (VersionNT > 500)]]>
+ </Condition>
+
+ <Condition Message="WindowsXP is no longer supported. Please install $(var.WiresharkName) 1.12 or 1.10 instead.">
+ <![CDATA[Installed OR (VersionNT < 501) OR (VersionNT > 501)]]>
+ </Condition>
+
+ <Condition Message="Windows Server 2003 is no longer supported. Please install $(var.WiresharkName) 1.12 or 1.10 instead.">
+ <![CDATA[Installed OR (VersionNT < 502) OR (VersionNT > 502)]]>
+ </Condition>
+
+ <Condition Message="Windows Vista and Server 2008 are no longer supported. Please install $(var.WiresharkName) 2.2 instead.">
+ <![CDATA[Installed OR (VersionNT < 600) OR (VersionNT > 600)]]>
+ </Condition>
+
+ <Condition Message="$(var.WiresharkName)$(var.WiresharkVersion) is only supported on Windows 7, Windows Server 2008R2, or higher.">
+ <![CDATA[Installed OR (VersionNT >= 601)]]>
+ </Condition>
+
+<!--
+ NSIS package uninstallation. The NSIS installer writes a bunch of keys to
+ 'HKEY_LOCAL_MACHINE\SOFTWARE\{Wow6432Node\,}Microsoft\Windows\CurrentVersion\Uninstall\Wireshark'.
+ See the 'WriteRegStr HKEY_LOCAL_MACHINE "${UNINSTALL_PATH}"' statements
+ starting at around line 780 in nsis\wireshark.nsi for a complete list.
+
+ For now look for 'InstallLocation' and cancel the installation if
+ it's defined and exists. Next steps:
+ - look for 'QuietUninstallString' and offer to run it.
+ - Show properties in condition messages as described below.
+-->
+
+ <Property Id="NSIS_INSTALL_LOCATION_32" Secure="yes">
+ <RegistrySearch Id='NsisInstallRegistrySearch32'
+ Type='raw'
+ Root='HKLM'
+ Key='SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark'
+ Name='InstallLocation'
+ Win64='no'>
+ <DirectorySearch Id='NsisInstallDirectorySearch32' AssignToProperty='yes'/>
+ </RegistrySearch>
+ </Property>
+
+ <Property Id="NSIS_DISPLAY_NAME_32" Value="Wireshark" Secure="yes">
+ <RegistrySearch Id='NsisDisplayNameRegistrySearch32'
+ Type='raw'
+ Root='HKLM'
+ Key='SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark'
+ Name='DisplayName'
+ Win64='no'/>
+ </Property>
+
+ <Condition Message="[NSIS_DISPLAY_NAME_32] was installed in [NSIS_INSTALL_LOCATION_32] using the .exe installer. Please uninstall it using Programs and Features.">
+ <![CDATA[Installed OR NOT NSIS_INSTALL_LOCATION_32]]>
+ </Condition>
+
+ <Property Id="NSIS_INSTALL_LOCATION_64" Secure="yes">
+ <RegistrySearch Id='NsisInstallRegistrySearch64'
+ Type='raw'
+ Root='HKLM'
+ Key='SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark'
+ Name='InstallLocation'
+ Win64='yes'>
+ <DirectorySearch Id='NsisInstallDirectorySearch64' AssignToProperty='yes'/>
+ </RegistrySearch>
+ </Property>
+
+ <Property Id="NSIS_DISPLAY_NAME_64" Value="Wireshark" Secure="yes">
+ <RegistrySearch Id='NsisDisplayNameRegistrySearch64'
+ Type='raw'
+ Root='HKLM'
+ Key='SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark'
+ Name='DisplayName'
+ Win64='yes'/>
+ </Property>
+
+ <Condition Message="[NSIS_DISPLAY_NAME_64] was installed in [NSIS_INSTALL_LOCATION_64] using the .exe installer. Please uninstall it using Programs and Features.">
+ <![CDATA[Installed OR NOT NSIS_INSTALL_LOCATION_64]]>
+ </Condition>
+
+ </Fragment>
+</Include>
diff --git a/packaging/wix/README.adoc b/packaging/wix/README.adoc
new file mode 100644
index 0000000..78af64c
--- /dev/null
+++ b/packaging/wix/README.adoc
@@ -0,0 +1,47 @@
+= WiX (.msi) Installer For Wireshark
+
+This is an experimental feature to provide Wireshark with an .msi installer as requested in https://gitlab.com/wireshark/wireshark/-/issues/8814[issue 8814].
+It might one day replace the NSIS installer, but needs to be a little more complete before doing so.
+
+== Differences/Notes Compared To The NSIS Installer
+
+. You need the https://wixtoolset.org/[WiX toolset] to build the .msi installer.
+Version 3.10 or later is recommended.
+
+. The User's Guide, SNMP, Radius, Diameter, and Qt translations files are harvested to
+be included in the installer. Any custom/additional files just need to be written to the
+appropriate build output directory and the installer will pick them up. NSIS required
+modifying a file (custom_mibs.txt, etc) for inclusion
+
+. Plugin DLLs are not automatically harvested. To include your DLL, modify Plugins.wxi.
+
+. To build the WiX installer run:
+----
+> msbuild /m /p:Configuration=RelWithDebInfo wireshark_wix_prep.vcxproj
+> msbuild /m /p:Configuration=RelWithDebInfo wireshark_wix.vcxproj
+----
+
+== Known Issues
+
+. The .msi installer does not include and install Npcap or USBPcap like the NSIS installer does.
+These currently come as NSIS-generated .exe installers.
+We might be able to bundle them as https://wixtoolset.org/documentation/manual/v3/xsd/wix/exepackage.html[ExePackage elements].
+
+// This appears to be fixed in the MERGE_MODULE_DIR code in CMakeLists.txt?
+// . Needs more flexible handling of VC CRT Merge module (need build script to provide appropriate macros).
+// Something like (or modifying existing) FindMSVC_REDIST.cmake.
+// Currently only VS2013 / CRT120 and VS 2015 / CRT140 are supported.
+
+. Transitioning, upgrading, downgrading, and reinstalling is more tricky.
+The NSIS-based installer handles previously-installed versions by running any existing uninstaller prior to installation, which empties the installation directory and removes registry entries.
+These are subsequently filled back in by the installer.
+The Windows Installer architecture keeps track of installed items in a https://docs.microsoft.com/en-us/windows/win32/msi/installer-database[database] and uses the https://docs.microsoft.com/en-us/windows/win32/msi/upgradecode[UpgradeCode property] to identify installed products and the https://wixtoolset.org/documentation/manual/v3/xsd/wix/majorupgrade.html[MajorUpgrade property] to control upgrade behavior.
+As a result,
+ * We can't easily upgrade from an NSIS-based installation to a .msi installation, and vice versa.
+ * We have to be careful about setting things like UpgradeCode, MajorUpgrade, and REINSTALLMODE in our WiX configuration.
+
+. The lax behavior of the NSIS-based installer lets you install more than one copy of Wireshark if you specify different installation directories.
+(The most recently installed version "wins" as far as registry entries and file associations go).
+The .msi installer doesn't allow this.
+
+Patches welcome to address any of the issues above or improvements you think can be made.
diff --git a/packaging/wix/StringOverrides.wxl b/packaging/wix/StringOverrides.wxl
new file mode 100644
index 0000000..d0930c8
--- /dev/null
+++ b/packaging/wix/StringOverrides.wxl
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-US" Codepage="1252" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="WelcomeDlgDescription" Overridable="yes">This will install [ProductName] [ProductVersion] on your computer. If you installed [ProductName] using the .exe installer please uninstall it first.</String>
+</WixLocalization>
diff --git a/packaging/wix/UserInterface.wxi b/packaging/wix/UserInterface.wxi
new file mode 100644
index 0000000..e572666
--- /dev/null
+++ b/packaging/wix/UserInterface.wxi
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Include>
+ <!-- Define the appearance, sequence, and available options in the user interface -->
+ <Fragment>
+ <WixVariable Id="WixUILicenseRtf" Value="$(var.EulaPath)" />
+ <WixVariable Id="WixUIBannerBmp" Value="$(var.BannerImagePath)" />
+ <WixVariable Id="WixUIDialogBmp" Value="$(var.DialogImagePath)" />
+ <Icon Id="ProgramsFeaturesIcon" SourceFile="$(var.ProgramsFeaturesIconPath)"/>
+ <Property Id="ARPPRODUCTICON" Value="ProgramsFeaturesIcon" />
+
+ <!-- This UI identifier will be used in the product definition-->
+ <UI Id="UI.Wireshark">
+
+ <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" ></Property>
+ <UIRef Id="WiresharkWixUI" />
+ </UI>
+ </Fragment>
+</Include>
diff --git a/packaging/wix/Wireshark.wxs b/packaging/wix/Wireshark.wxs
new file mode 100644
index 0000000..8421bf0
--- /dev/null
+++ b/packaging/wix/Wireshark.wxs
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+
+ <?define WiresharkFileAssociation = "wireshark-capture-file" ?>
+
+ <!-- The path to the installer's End-User License Agreement, displayed during installation -->
+ <?define EulaPath="$(var.AssetDir)\COPYING.rtf"?>
+ <!-- Windows 8 and later supports PNG. Until then we use cave paintings^W^W BMP. -->
+ <?define BannerImagePath="$(var.AssetDir)\banner.bmp"?>
+ <?define DialogImagePath="$(var.AssetDir)\dialog.bmp"?>
+ <!-- Use the application icon in "Programs and Features"
+ This is apparently stored uncompressed, i.e. we should use a dedicated
+ .ico file instead of pointing to wireshark.exe.
+ -->
+ <?define ProgramsFeaturesIconPath="$(var.IconDir)\wireshark.ico"?>
+ <Product Id="*" Name="$(var.WiresharkName)" Language="1033" Version="$(var.WiresharkVersion)" Manufacturer="The Wireshark developer community, https://www.wireshark.org/" UpgradeCode="0d67aace-269a-4264-81a3-da8055c1c79c">
+ <Package InstallerVersion="500" Compressed="yes" InstallScope="perMachine" />
+ <!-- Values for Additional Tasks -->
+ <Property Id="WIRESHARK_START_MENU" Value="1" Secure="yes"/>
+ <Property Id="WIRESHARK_DESKTOP_ICON" Secure="yes"/>
+ <Property Id="WIRESHARK_QUICK_LAUNCH_ICON" Value="1" Secure="yes" />
+ <Property Id="WIRESHARK_LEGACY_START_MENU" Value="1" Secure="yes" />
+ <Property Id="WIRESHARK_LEGACY_DESKTOP_ICON" Secure="yes"/>
+ <Property Id="WIRESHARK_LEGACY_QUICK_LAUNCH_ICON" Value="1" Secure="yes" />
+ <Property Id="WIRESHARK_FILE_EXTENSIONS" Value="1"/>
+
+ <!-- We set AllowSameVersionUpgrade so that automated builds (which
+ only differ by micro version numbers) won't get installed side
+ by side. The WiX documentation seems to warn against this, so we
+ might want to find a better fix, e.g. REINSTALLMODE + AllowDowngrades:
+ https://stackoverflow.com/questions/1544990/wix-major-upgrade-doesnt-completely-install-app-on-downgrade
+ -->
+ <MajorUpgrade
+ DowngradeErrorMessage="A newer version of $(var.WiresharkName) is already installed."
+ AllowSameVersionUpgrades="yes"
+ />
+
+
+ <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
+
+ <!-- Include the prerequisites, by referencing the placeholder property -->
+ <PropertyRef Id="IncludePrerequisites" />
+
+ <!-- Include the top-most parent feature -->
+ <FeatureRef Id="Fe.Wireshark" />
+
+ <!-- Include the installer UI definition -->
+ <UIRef Id="UI.Wireshark"/>
+ </Product>
+
+ <?include InputPaths.wxi ?>
+ <?include DirectoryStructure.wxi ?>
+ <?include Prerequisites.wxi ?>
+ <?include ComponentGroups.wxi ?>
+ <?include Plugins.wxi ?>
+ <?include Features.wxi ?>
+ <?include UserInterface.wxi ?>
+</Wix>
diff --git a/packaging/wix/WiresharkOptionsDlg.wxs b/packaging/wix/WiresharkOptionsDlg.wxs
new file mode 100644
index 0000000..0790ccd
--- /dev/null
+++ b/packaging/wix/WiresharkOptionsDlg.wxs
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+ <Fragment>
+ <UI>
+ <!--
+ Recommended control sizing and spacing:
+ https://docs.microsoft.com/en-us/windows/win32/uxguide/vis-layout#control-sizing
+ https://docs.microsoft.com/en-us/windows/win32/uxguide/vis-layout#spacing
+ The recommended spacing between unrelated controls is 7, but 10 looks better.
+ -->
+ <Dialog Id="WiresharkOptionsDlg" Width="370" Height="270" Title="!(loc.LicenseAgreementDlg_Title)">
+ <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.LicenseAgreementDlgBannerBitmap)"/>
+ <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0"/>
+ <Control Id="Title" Type="Text" X="14" Y="7" Width="350" Height="15" Transparent="yes" NoPrefix="yes" Text="Packet capture, shortcuts, and file extensions"/>
+ <Control Id="Description" Type="Text" X="20" Y="26" Width="350" Height="15" Transparent="yes" NoPrefix="yes" Text="You must install Npcap or WinPcap in order to capture packets."/>
+
+ <!-- BannerLine y = 44, 44 + 7 = 51 -->
+ <Control Id="NetworkCapture" Type="Text" X="14" Y="51" Width="350" Height="12" Text="{\WixUI_Font_Bold}Wireshark requires Npcap or WinPcap to capture network packets"/>
+ <Control Id="NetworkCaptureNpcap" Type="Hyperlink" X="20" Y="63" Width="350" Height="11">
+ <Text><![CDATA[<a href="https://npcap.org">Download Npcap</a> (recommended)]]></Text>
+ </Control>
+ <!-- It looks Hyperlink controls only support one hyperlink, per control. -->
+ <Control Id="NetworkCaptureWinPcap" Type="Hyperlink" X="20" Y="74" Width="350" Height="11">
+ <Text><![CDATA[…or <a href="https://www.winpcap.org">download WinPcap</a>]]></Text>
+ </Control>
+
+ <!-- NetworkCaptureWinPcap y = 74, 74 + 8 + 10 = 92 -->
+ <Control Id="UsbCapture" Type="Text" X="14" Y="92" Width="350" Height="12" Text="{\WixUI_Font_Bold}Wireshark requires USBPcap to capture USB Packets"/>
+ <Control Id="UsbCaptureUsbPcap" Type="Hyperlink" X="20" Y="104" Width="350" Height="11">
+ <Text><![CDATA[<a href="https://desowin.org/usbpcap/">Download USBPcap</a> (experimental)]]></Text>
+ </Control>
+
+ <!-- UsbCaptureUsbPcap y = 104, 104 + 8 + 10 = 122 -->
+ <Control Id="Shortcuts" Type="Text" X="14" Y="122" Width="350" Height="11" Text="{\WixUI_Font_Bold}Create Shortcuts"/><!-- h = static text + label spacing = 8 + 3 -->
+ <Control Id="WiresharkStartMenuCB" Type="CheckBox" X="20" Y="133" Width="350" Height="14" CheckBoxValue="1" Property="WIRESHARK_START_MENU" Text="Wireshark Start Menu Item"><!-- h = 10 + 4 -->
+ <Condition Action="enable"><![CDATA[&Fe.Wireshark = 3]]></Condition>
+ <Condition Action="disable"><![CDATA[&Fe.Wireshark <> 3]]></Condition>
+ </Control>
+ <Control Id="WiresharkDesktopIconCB" Type="CheckBox" X="20" Y="147" Width="350" Height="14" CheckBoxValue="1" Property="WIRESHARK_DESKTOP_ICON" Text="Wireshark Desktop Icon">
+ <Condition Action="enable"><![CDATA[&Fe.Wireshark = 3]]></Condition>
+ <Condition Action="disable"><![CDATA[&Fe.Wireshark <> 3]]></Condition>
+ </Control>
+ <Control Id="WiresharkQuickLaunchIconCB" Type="CheckBox" X="20" Y="161" Width="350" Height="14" CheckBoxValue="1" Property="WIRESHARK_QUICK_LAUNCH_ICON" Text="Wireshark Quick Launch Icon">
+ <Condition Action="enable"><![CDATA[&Fe.Wireshark = 3]]></Condition>
+ <Condition Action="disable"><![CDATA[&Fe.Wireshark <> 3]]></Condition>
+ </Control>
+
+ <!-- WiresharkQuickLaunchIconCB y = 161, 161 + 10 + 10 = 181 -->
+ <Control Id="FileExtensions" Type="Text" X="14" Y="181" Width="350" Height="11" Text="{\WixUI_Font_Bold}Associate File Extensions"/><!-- h = static text + label spacing = 8 + 3 -->
+ <Control Id="FileExtensionsCB" Type="CheckBox" X="20" Y="192" Width="350" Height="14" CheckBoxValue="1" Property="WIRESHARK_FILE_EXTENSIONS" Text="Associate trace file extensions with Wireshark">
+ <Condition Action="enable"><![CDATA[&Fe.Wireshark = 3]]></Condition>
+ <Condition Action="disable"><![CDATA[&Fe.Wireshark <> 3]]></Condition>
+ </Control>
+ <Control Id="FileExtensionsText1" Type="Text" X="20" Y="206" Width="350" Height="11" Transparent="yes" NoPrefix="yes" Text="Extensions include 5vw, acp, apc, atc, bfr, cap, enc, erf, fdc, lcap, mplog, ntar, out,"/>
+ <Control Id="FileExtensionsText2" Type="Text" X="20" Y="217" Width="350" Height="11" Transparent="yes" NoPrefix="yes" Text="pcap, pcapng, pkt, rf5, snoop, syc, tpc, tr1, trace, trc, vwr, wpc, and wpz."/>
+
+ <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0"/>
+ <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)"/>
+ <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)"/>
+ <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
+ <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
+ </Control>
+ </Dialog>
+ </UI>
+ </Fragment>
+</Wix>
diff --git a/packaging/wix/WiresharkWixUI.wxs b/packaging/wix/WiresharkWixUI.wxs
new file mode 100644
index 0000000..e066d19
--- /dev/null
+++ b/packaging/wix/WiresharkWixUI.wxs
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ <copyright file="WixUI_FeatureTree.wxs" company="Outercurve Foundation">
+ Copyright (c) 2004, Outercurve Foundation.
+ This software is released under Microsoft Reciprocal License (MS-RL).
+ The license and further copyright text can be found in the file
+ LICENSE.TXT at the root directory of the distribution.
+ </copyright>
+-->
+
+<!--
+First-time install dialog sequence:
+ - WixUI_WelcomeDlg
+ - WixUI_LicenseAgreementDlg
+ - WixUI_CustomizeDlg
+ - WixUI_VerifyReadyDlg
+ - WixUI_DiskCostDlg
+
+Maintenance dialog sequence:
+ - WixUI_MaintenanceWelcomeDlg
+ - WixUI_MaintenanceTypeDlg
+ - WixUI_CustomizeDlg
+ - WixUI_VerifyReadyDlg
+
+Patch dialog sequence:
+ - WixUI_WelcomeDlg
+ - WixUI_VerifyReadyDlg
+-->
+
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+ <Fragment>
+ <UI Id="WiresharkWixUI">
+ <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
+ <TextStyle Id="WixUI_Font_Bold" FaceName="Tahoma" Size="8" Bold="yes"/>
+ <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
+ <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
+
+ <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
+ <Property Id="WixUI_Mode" Value="FeatureTree" />
+
+ <DialogRef Id="ErrorDlg" />
+ <DialogRef Id="FatalError" />
+ <DialogRef Id="FilesInUse" />
+ <DialogRef Id="MsiRMFilesInUse" />
+ <DialogRef Id="PrepareDlg" />
+ <DialogRef Id="ProgressDlg" />
+ <DialogRef Id="ResumeDlg" />
+ <DialogRef Id="UserExit" />
+
+ <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
+
+ <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="LicenseAgreementDlg">NOT Installed</Publish>
+ <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish>
+
+ <Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
+ <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg">LicenseAccepted = "1"</Publish>
+
+ <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">Installed</Publish>
+ <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg" Order="2">NOT Installed</Publish>
+ <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="WiresharkOptionsDlg">1</Publish>
+
+ <Publish Dialog="WiresharkOptionsDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg">1</Publish>
+ <Publish Dialog="WiresharkOptionsDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg">1</Publish>
+
+ <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WiresharkOptionsDlg">1</Publish>
+ <Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
+ <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish>
+ <Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
+ <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4">WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish>
+ <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
+ <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>
+
+ <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">NOT Installed OR WixUI_InstallMode = "Change"</Publish>
+ <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish>
+ <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">Installed AND PATCH</Publish>
+
+ <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
+
+ <Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
+ <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
+ <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
+ <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
+ </UI>
+
+ <UIRef Id="WixUI_Common" />
+ </Fragment>
+</Wix>
diff --git a/packaging/wix/banner.bmp b/packaging/wix/banner.bmp
new file mode 100644
index 0000000..10ab9e6
--- /dev/null
+++ b/packaging/wix/banner.bmp
Binary files differ
diff --git a/packaging/wix/banner.svg b/packaging/wix/banner.svg
new file mode 100644
index 0000000..4bacfe5
--- /dev/null
+++ b/packaging/wix/banner.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="493"
+ height="58"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="banner.svg"
+ viewBox="0 0 493 58"
+ inkscape:export-filename="/tmp/banner.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.8356998"
+ inkscape:cx="246.5"
+ inkscape:cy="29"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="931"
+ inkscape:window-height="683"
+ inkscape:window-x="398"
+ inkscape:window-y="899"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-994.36218)">
+ <image
+ xlink:href="../../image/wsiconinst48.png"
+ width="48"
+ height="48"
+ preserveAspectRatio="none"
+ id="image4971"
+ x="440"
+ y="999.36218" />
+ </g>
+</svg>
diff --git a/packaging/wix/dialog.bmp b/packaging/wix/dialog.bmp
new file mode 100644
index 0000000..f6a704a
--- /dev/null
+++ b/packaging/wix/dialog.bmp
Binary files differ
diff --git a/packaging/wix/dialog.svg b/packaging/wix/dialog.svg
new file mode 100644
index 0000000..1754c80
--- /dev/null
+++ b/packaging/wix/dialog.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="500"
+ height="314"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="dialog.svg"
+ viewBox="0 0 500 314"
+ inkscape:export-filename="/tmp/dialog.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.824"
+ inkscape:cx="248.78641"
+ inkscape:cy="157"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="931"
+ inkscape:window-height="683"
+ inkscape:window-x="251"
+ inkscape:window-y="882"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-738.36218)">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#eeeeec;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect4907"
+ width="163"
+ height="313"
+ x="0.5"
+ y="738.86218" />
+ <image
+ xlink:href="../../image/wsiconinst128.png"
+ width="128"
+ height="128"
+ preserveAspectRatio="none"
+ id="image4904"
+ x="18"
+ y="756.36218" />
+ <rect
+ y="738.86218"
+ x="0.5"
+ height="313"
+ width="163"
+ id="rect4690"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#babdb6;fill-opacity:0.49723756;fill-rule:nonzero;stroke:#eeeeec;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ </g>
+</svg>
diff --git a/packaging/wix/windeployqt-to-wix.ps1 b/packaging/wix/windeployqt-to-wix.ps1
new file mode 100644
index 0000000..a169643
--- /dev/null
+++ b/packaging/wix/windeployqt-to-wix.ps1
@@ -0,0 +1,165 @@
+# windeployqt-to-wix
+#
+# Windeployqt-to-wix - Convert the output of windeployqt to an equivalent set of
+# Wix file and component statements.
+#
+# Copyright 2016 Michael Mann
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+#requires -version 2
+
+<#
+.SYNOPSIS
+Creates Wix components required for Qt packaging.
+
+.DESCRIPTION
+This script creates n Wix-compatible include file based on the output of
+windeployqt. If Qt is present, version 5.3 or later is required.
+Otherwise a dummy file will be created.
+
+If building with Qt, QMake must be in your PATH.
+
+.PARAMETER Executable
+The path to a Qt application. It will be examined for dependent DLLs.
+
+.PARAMETER FilePath
+Output filename.
+
+.INPUTS
+-Executable Path to the Qt application.
+-FilePath Output Wix include file.
+
+.OUTPUTS
+Wix file required to package supporting DLLs.
+
+.EXAMPLE
+C:\PS> .\windeployqt-to-wix.ps1 windeployqt.exe ..\..\staging\wireshark.exe qt-dll-manifest.wxs
+#>
+
+Param(
+ [Parameter(Mandatory=$true, Position=0)]
+ [String] $Executable,
+
+ [Parameter(Position=1)]
+ [String] $FilePath = "qt-dll-manifest.wxs"
+)
+
+
+try {
+ $qtVersion = [version](qmake -query QT_VERSION)
+ $wixComponents = "<Wix xmlns=`"http://schemas.microsoft.com/wix/2006/wi`">
+<?include InputPaths.wxi ?>
+"
+ $wixComponents += @("<!-- Qt version " + $qtVersion ; "-->
+")
+
+ if ($qtVersion -lt "5.3") {
+ Throw "Qt " + $qtVersion + " found. 5.3 or later is required."
+ }
+
+ # windeployqt lists translation files that it don't exist (e.g.
+ # qtbase_ar.qm), so we handle those by hand.
+ # https://bugreports.qt.io/browse/QTBUG-65974
+ $wdqtList = windeployqt `
+ --release `
+ --no-compiler-runtime `
+ --no-translations `
+ --list relative `
+ $Executable
+
+ $dllPath = Split-Path -Parent $Executable
+
+ $dllList = " <Fragment>
+ <DirectoryRef Id=`"INSTALLFOLDER`">
+"
+ $dirList = ""
+ $currentDir = ""
+ $startDirList = " <Fragment>
+ <DirectoryRef Id=`"INSTALLFOLDER`">
+"
+ $endDirList = " </Directory>
+ </DirectoryRef>
+ </Fragment>
+"
+ $currentDirList = $startDirList
+
+ $componentGroup = " <Fragment>
+ <ComponentGroup Id=`"CG.QtDependencies`">
+"
+ foreach ($entry in $wdqtList) {
+ $dir = Split-Path -Parent $entry
+ if ($dir) {
+ if ($dir -ne $currentDir) {
+ if ($currentDir -ne "") { # for everything but first directory found
+ $currentDirList += $endDirList
+
+ # Previous directory complete, add to list
+ $dirList += $currentDirList
+ }
+
+ $currentDirList = $startDirList + " <Directory Id=`"dir$dir`" Name=`"$dir`">
+ "
+
+ $currentDir = $dir
+ }
+
+ $wix_name = $entry -replace "[\\|\.]", "_"
+ $currentDirList += " <Component Id=`"cmp$wix_name`" Guid=`"*`">
+ <File Id=`"fil$wix_name`" KeyPath=`"yes`" Source=`"`$(var.Staging.Dir)\$entry`" />
+ </Component>
+"
+ $componentGroup += " <ComponentRef Id=`"cmp$wix_name`" />
+"
+ } else {
+
+ $dllList += " <Component Id=`"cmp$entry`" Guid=`"*`">
+ <File Id=`"fil$entry`" KeyPath=`"yes`" Source=`"`$(var.Staging.Dir)\$entry`" />
+ </Component>
+"
+ $componentGroup += " <ComponentRef Id=`"cmp$entry`" />
+"
+ }
+ }
+
+ #finish up the last directory
+ $currentDirList += $endDirList
+ $dirList += $currentDirList
+
+ $dllList += " </DirectoryRef>
+ </Fragment>
+"
+ $componentGroup += " </ComponentGroup>
+ </Fragment>
+"
+
+ $wixComponents += $dllList + $dirList + $componentGroup
+
+ $wixComponents += @"
+</Wix>
+"@
+
+}
+
+catch {
+
+ $wixComponents = "<?xml version=`"1.0`" encoding=`"utf-8`"?>
+<Include>
+<!--- Qt not configured -->
+</Include>
+"
+
+}
+
+Set-Content $FilePath @"
+<?xml version=`"1.0`" encoding=`"utf-8`"?>
+<!--
+ Automatically generated by $($MyInvocation.MyCommand.Name)
+-->
+"@
+
+Add-Content $FilePath $wixComponents