aboutsummaryrefslogtreecommitdiffstats
path: root/packaging/wix
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/wix')
-rw-r--r--packaging/wix/CMakeLists.txt115
-rw-r--r--packaging/wix/ComponentGroups.wxi161
-rw-r--r--packaging/wix/DirectoryStructure.wxi2
-rw-r--r--packaging/wix/Features.wxi16
-rw-r--r--packaging/wix/InputPaths.wxi1
-rw-r--r--packaging/wix/Plugins.wxi48
-rw-r--r--packaging/wix/Prerequisites.wxi10
-rw-r--r--packaging/wix/README35
-rw-r--r--packaging/wix/README.adoc47
-rw-r--r--packaging/wix/Wireshark.wxs3
10 files changed, 268 insertions, 170 deletions
diff --git a/packaging/wix/CMakeLists.txt b/packaging/wix/CMakeLists.txt
index ba89480b62..25f5dbc967 100644
--- a/packaging/wix/CMakeLists.txt
+++ b/packaging/wix/CMakeLists.txt
@@ -16,6 +16,7 @@ set(WIX_GENERATED_FILES
${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)
@@ -47,6 +48,7 @@ set(WIX_OUT_FILES
${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
@@ -59,25 +61,19 @@ 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)
-if(WIRESHARK_TARGET_PLATFORM STREQUAL "win32")
- set(TARGET_MACHINE x86)
-elseif(WIRESHARK_TARGET_PLATFORM STREQUAL "win64")
- set(TARGET_MACHINE x64)
-else()
- message(FATAL_ERROR "Your mysterious moon-man architecture \"${WIRESHARK_TARGET_PLATFORM}\" frightens and confuses us.")
-endif()
-
-set(PRODUCT_VERSION ${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION}.${PROJECT_BUILD_VERSION})
+file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/doc" DOC_DIR)
# To do:
# - Sync the various version names between CMake and Wix.
-# - Set CMakeLists.txt version strings in tools/make-version.pl
+# - Set CMakeLists.txt version strings in tools/make-version.py
# - Add a VERSION_EXTRA cmake option
set (VERSION "${PROJECT_VERSION}")
-set (PRODUCT_VERSION=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO}.${VERSION_BUILD})
+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 1920)
+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")
@@ -88,7 +84,7 @@ 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_${TARGET_MACHINE}.msm")
+set(MERGE_MODULE "Microsoft_${MSVC_CRT_VERSION}_CRT_${WIRESHARK_TARGET_PLATFORM}.msm")
set (PF86_ENV "ProgramFiles(x86)")
set(VC_TOOLS_MERGE_MODULES_DIR)
@@ -104,7 +100,7 @@ find_path(MERGE_MODULE_DIR ${MERGE_MODULE}
"$ENV{PROGRAMFILES}/Common Files/Merge Modules"
NO_DEFAULT_PATH
)
-file(TO_NATIVE_PATH "${MERGE_MODULE_DIR}/Microsoft_${MSVC_CRT_VERSION}_CRT_${TARGET_MACHINE}.msm" MSM_NATIVE_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.
@@ -131,14 +127,16 @@ foreach(_dll ${GLIB2_DLLS_RELEASE})
endforeach()
file(APPEND "${_all_manifest_wix}" " <?endif?>\n")
SET(unique_component "")
-foreach(_dll ${CARES_DLL} ${GCRYPT_DLLS}
- ${GNUTLS_DLLS} ${KERBEROS_DLLS} ${LIBSSH_DLL} ${LUA_DLL}
- ${LZ4_DLL} ${NGHTTP2_DLL} ${SBC_DLL} ${SMI_DLL} ${SNAPPY_DLL}
- ${SPANDSP_DLL} ${BCG729_DLL} ${LIBXML2_DLLS} ${WINSPARKLE_DLL}
- ${ZLIB_DLL} ${BROTLI_DLLS} ${ZSTD_DLL}
- # Required for mmdbresolve
- ${MAXMINDDB_DLL}
+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})
@@ -148,12 +146,6 @@ foreach(_dll ${CARES_DLL} ${GCRYPT_DLLS}
SET(unique_component ${unique_component} ${_dll})
ENDIF(NOT "${unique_component}" MATCHES "(^|;)${_dll}(;|$)")
endforeach()
-foreach(_script "init.lua" "console.lua" "dtd_gen.lua")
- STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_script})
- 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)\\${_script}\"/>\n")
- file(APPEND "${_all_manifest_wix}" " </Component>\n")
-endforeach()
file(APPEND "${_all_manifest_wix}" " </DirectoryRef>\n")
file(APPEND "${_all_manifest_wix}" " </Fragment>\n")
file(APPEND "${_all_manifest_wix}" " <Fragment>\n")
@@ -170,14 +162,7 @@ foreach(_dll ${GLIB2_DLLS_RELEASE})
endforeach()
file(APPEND "${_all_manifest_wix}" " <?endif?>\n")
SET(unique_file "")
-foreach(_dll ${CARES_DLL} ${GCRYPT_DLLS}
- ${GNUTLS_DLLS} ${KERBEROS_DLLS} ${LIBSSH_DLL} ${LUA_DLL}
- ${LZ4_DLL} ${NGHTTP2_DLL} ${SBC_DLL} ${SMI_DLL} ${SNAPPY_DLL}
- ${SPANDSP_DLL} ${BCG729_DLL} ${LIBXML2_DLLS} ${WINSPARKLE_DLL}
- ${ZLIB_DLL} ${BROTLI_DLLS} ${ZSTD_DLL}
- # mmdbresolve
- ${MAXMINDDB_DLL}
- )
+foreach(_dll ${_dll_list})
#ensure uniqueness of files
IF(NOT "${unique_file}" MATCHES "(^|;)${_dll}(;|$)")
STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll})
@@ -185,15 +170,10 @@ foreach(_dll ${CARES_DLL} ${GCRYPT_DLLS}
SET(unique_file ${unique_file} ${_dll})
ENDIF(NOT "${unique_file}" MATCHES "(^|;)${_dll}(;|$)")
endforeach()
-foreach(_script "init.lua" "console.lua" "dtd_gen.lua")
- STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_script})
- file(APPEND "${_all_manifest_wix}" " <ComponentRef Id=\"cmp${_wix_name}\" />\n")
-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()
@@ -205,23 +185,27 @@ endif()
set(WIX_CANDLE_DEFINES
-v
-sw1076
- -dPlatform=${TARGET_MACHINE}
+ -dPlatform=${WIRESHARK_TARGET_PLATFORM}
-dWiresharkName=${CMAKE_PROJECT_NAME}
-dWiresharkVersion=${PRODUCT_VERSION}
-dWiresharkMajorVersion=${PROJECT_MAJOR_VERSION}
-dWiresharkMinorVersion=${PROJECT_MINOR_VERSION}
+ -dWiresharkAbiVersionEpan=${PROJECT_ABI_VERSION_EPAN}
+ -dWiresharkAbiVersionWtap=${PROJECT_ABI_VERSION_WIRETAP}
+ -dWiresharkAbiVersionCodec=${PROJECT_ABI_VERSION_CODEC}
-dAssetDir=${CMAKE_SOURCE_DIR}/packaging/wix
- -dBuildOutputDir=${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}
- -dDiameterDir=${ARCHIVE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/diameter
- -dIconDir=${CMAKE_SOURCE_DIR}/image
- -dQtTranslationDir=${ARCHIVE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/translations
- -dRadiusDictDir=${ARCHIVE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/radius
- -dSnmpMibDir=${ARCHIVE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/snmp/mibs
+ -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 ${TARGET_MACHINE}
+ -arch ${WIRESHARK_TARGET_PLATFORM}
-ext WixUIExtension
-I${CMAKE_SOURCE_DIR}/packaging/wix
-out ${CMAKE_CURRENT_BINARY_DIR}/
@@ -231,7 +215,7 @@ set(WIX_CANDLE_DEFINES
# The NSIS CMakeFile sets the program name + version slightly differently.
set(WIX_LIGHT_DEFINES
-v
- -out ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${WIRESHARK_TARGET_PLATFORM}-${PROJECT_VERSION}.msi
+ -out ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-${WIRESHARK_TARGET_PLATFORM}.msi
-sw1076
-ext WixUIExtension
-loc ${CMAKE_CURRENT_SOURCE_DIR}/StringOverrides.wxl
@@ -269,10 +253,18 @@ macro( ADD_WIX_PACKAGE_TARGET )
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_BUILD_TYPE}/snmp/mibs
+ 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
)
@@ -280,7 +272,7 @@ macro( ADD_WIX_PACKAGE_TARGET )
# 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_BUILD_TYPE}/radius
+ 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
)
@@ -288,7 +280,7 @@ macro( ADD_WIX_PACKAGE_TARGET )
# 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_BUILD_TYPE}/diameter
+ 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
)
@@ -296,22 +288,23 @@ macro( ADD_WIX_PACKAGE_TARGET )
# 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_BUILD_TYPE}/translations
+ 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 wix_package below doesn't trigger any
+ # two stages so that wireshark_wix below doesn't trigger any
# dependencies that might clobber any signed executables.
- add_custom_target(wix_package_prep
+ # XXX Rename this to wireshark_wix_prep
+ add_custom_target(wireshark_wix_prep
DEPENDS
${WIX_FILES}
copy_data_files
- user_guide_chm
+ user_guide_html
faq_html
)
- set_target_properties(wix_package_prep PROPERTIES
+ set_target_properties(wireshark_wix_prep PROPERTIES
FOLDER "Packaging"
EXCLUDE_FROM_DEFAULT_BUILD True
)
@@ -319,7 +312,8 @@ macro( ADD_WIX_PACKAGE_TARGET )
# Dump the installer into
# ${CMAKE_CURRENT_SOURCE_DIR}/packaging/wix
# Note that executables and DLLs *must* be built separately
- add_custom_target(wix_package
+ # 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}
@@ -328,7 +322,7 @@ macro( ADD_WIX_PACKAGE_TARGET )
COMMAND ${WIX_LIGHT_EXECUTABLE} ${WIX_LIGHT_DEFINES} ${WIX_OUT_FILES}
WORKING_DIRECTORY ${_wix_binary_dir}
)
- set_target_properties(wix_package PROPERTIES
+ set_target_properties(wireshark_wix PROPERTIES
FOLDER "Packaging"
EXCLUDE_FROM_DEFAULT_BUILD True
)
@@ -340,11 +334,12 @@ 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-$(WIRESHARK_TARGET_PLATFORM)-$(VERSION).exe
+ wireshark-${VERSION}-${WIRESHARK_TARGET_PLATFORM}.msi
)
diff --git a/packaging/wix/ComponentGroups.wxi b/packaging/wix/ComponentGroups.wxi
index 5468978bfd..0b6a6c1e3e 100644
--- a/packaging/wix/ComponentGroups.wxi
+++ b/packaging/wix/ComponentGroups.wxi
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Include>
<!-- Wireshark -->
@@ -36,21 +36,9 @@
<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="cmpAUTHORS_SHORT" Guid="*">
- <File Id="filAUTHORS_SHORT" KeyPath="yes" Source="$(var.Staging.Dir)\AUTHORS-SHORT" />
- </Component>
- <Component Id="cmpManuf" Guid="*">
- <File Id="filManuf" KeyPath="yes" Source="$(var.Staging.Dir)\manuf" />
- </Component>
<Component Id="cmpWka" Guid="*">
<File Id="filWka" KeyPath="yes" Source="$(var.Staging.Dir)\wka" />
</Component>
- <Component Id="cmpServices" Guid="*">
- <File Id="filServices" KeyPath="yes" Source="$(var.Staging.Dir)\services" />
- </Component>
<Component Id="cmpPdml2html_xsl" Guid="*">
<File Id="filPdml2html_xsl" KeyPath="yes" Source="$(var.Staging.Dir)\pdml2html.xsl" />
</Component>
@@ -75,6 +63,9 @@
<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>
@@ -85,11 +76,7 @@
<ComponentRef Id="cmpCOPYING_txt" />
<ComponentRef Id="cmpNEWS_txt" />
<ComponentRef Id="cmpREADME_txt" />
- <ComponentRef Id="cmpREADME_windows_txt" />
- <ComponentRef Id="cmpAUTHORS_SHORT" />
- <ComponentRef Id="cmpManuf" />
<ComponentRef Id="cmpWka" />
- <ComponentRef Id="cmpServices" />
<ComponentRef Id="cmpPdml2html_xsl" />
<ComponentRef Id="cmpWs_css" />
<ComponentRef Id="cmpWireshark_html" />
@@ -98,6 +85,7 @@
<ComponentRef Id="cmpDumpcap_html" />
<ComponentRef Id="cmpExtcap_html" />
<ComponentRef Id="cmpIpmap_html" />
+ <ComponentRef Id="cmpReleaseNotes_html" />
</ComponentGroup>
</Fragment>
@@ -113,9 +101,6 @@
<Component Id="cmpDfilters" Guid="*">
<File Id="filDfilters" KeyPath="yes" Source="$(var.Staging.Dir)\dfilters" />
</Component>
- <Component Id="cmpEnterprisesTsv" Guid="*">
- <File Id="filEnterprisesTsv" KeyPath="yes" Source="$(var.Staging.Dir)\enterprises.tsv" />
- </Component>
<Component Id="cmpSmi_modules" Guid="*">
<File Id="filSmi_modules" KeyPath="yes" Source="$(var.Staging.Dir)\smi_modules" />
</Component>
@@ -126,7 +111,6 @@
<ComponentRef Id="cmpCfilters" />
<ComponentRef Id="cmpColorfilters" />
<ComponentRef Id="cmpDfilters" />
- <ComponentRef Id="cmpEnterprisesTsv" />
<ComponentRef Id="cmpSmi_modules" />
</ComponentGroup>
</Fragment>
@@ -221,6 +205,20 @@
</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">
@@ -246,6 +244,9 @@
<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="*">
@@ -262,6 +263,7 @@
<Fragment>
<ComponentGroup Id="CG.Plugins.ConfigurationProfiles">
<ComponentRef Id="cmpBluetooth_colorfilters" />
+ <ComponentRef Id="cmpBluetooth_preferences" />
<ComponentRef Id="cmpClassic_colorfilters" />
<ComponentRef Id="cmpNoReassembly_preferences" />
</ComponentGroup>
@@ -339,39 +341,39 @@
</ComponentGroup>
</Fragment>
- <!-- DFTest -->
+ <!-- Capinfos -->
<Fragment>
<DirectoryRef Id="INSTALLFOLDER">
- <Component Id="cmpDFTest_exe" Guid="*">
- <File Id="filDFTest_exe" KeyPath="yes" Source="$(var.Staging.Dir)\dftest.exe" />
+ <Component Id="cmpCapinfos_exe" Guid="*">
+ <File Id="filCapinfos_exe" KeyPath="yes" Source="$(var.Staging.Dir)\capinfos.exe" />
</Component>
- <Component Id="cmpDFTest_html" Guid="*">
- <File Id="filDFTest_html" KeyPath="yes" Source="$(var.Staging.Dir)\dftest.html" />
+ <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.DFTest">
- <ComponentRef Id="cmpDFTest_exe" />
- <ComponentRef Id="cmpDFTest_html" />
+ <ComponentGroup Id="CG.Tools.Capinfos">
+ <ComponentRef Id="cmpCapinfos_exe" />
+ <ComponentRef Id="cmpCapinfos_html" />
</ComponentGroup>
</Fragment>
- <!-- Capinfos -->
+ <!-- Captype -->
<Fragment>
<DirectoryRef Id="INSTALLFOLDER">
- <Component Id="cmpCapinfos_exe" Guid="*">
- <File Id="filCapinfos_exe" KeyPath="yes" Source="$(var.Staging.Dir)\capinfos.exe" />
+ <Component Id="cmpCaptype_exe" Guid="*">
+ <File Id="filCaptype_exe" KeyPath="yes" Source="$(var.Staging.Dir)\captype.exe" />
</Component>
- <Component Id="cmpCapinfos_html" Guid="*">
- <File Id="filCapinfos_html" KeyPath="yes" Source="$(var.Staging.Dir)\capinfos.html" />
+ <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.Capinfos">
- <ComponentRef Id="cmpCapinfos_exe" />
- <ComponentRef Id="cmpCapinfos_html" />
+ <ComponentGroup Id="CG.Tools.Captype">
+ <ComponentRef Id="cmpCaptype_exe" />
+ <ComponentRef Id="cmpCaptype_html" />
</ComponentGroup>
</Fragment>
@@ -411,6 +413,28 @@
</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>
@@ -471,6 +495,26 @@
</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">
@@ -511,6 +555,26 @@
</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">
@@ -531,26 +595,18 @@
</ComponentGroup>
</Fragment>
- <?ifdef DOCBOOK_DIR?>
- <!-- User Guide -->
- <Fragment>
- <DirectoryRef Id="INSTALLFOLDER">
- <Component Id="cmpUserGuide_chm" Guid="*">
- <File Id="filUserGuide_chm" KeyPath="yes" Source="$(var.DOCBOOK_DIR)\user-guide.chm" />
- </Component>
- </DirectoryRef>
- </Fragment>
+ <?ifdef DOC_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" />
+ <File Id="filFAQ_html" KeyPath="yes" Source="$(var.DOC_DIR)\faq.html" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="CG.Documentation">
- <ComponentRef Id="cmpUserGuide_chm" />
<ComponentRef Id="cmpFAQ_html" />
</ComponentGroup>
</Fragment>
@@ -642,6 +698,15 @@
<RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="cap" Type="integer" Value="1" KeyPath="yes"/>
<Condition>WIRESHARK_FILE_EXTENSIONS = "1"</Condition>
</Component>
+ <Component Id="cmpFAems">
+ <ProgId Id="$(var.WiresharkFileAssociation)" Description="ems">
+ <Extension Id="ems">
+ <Verb Id="open" Command="open" TargetFile="filWireshark_exe" Argument="&quot;%1&quot;"/>
+ </Extension>
+ </ProgId>
+ <RegistryValue Root="HKCU" Key="Software\$(var.WiresharkName)" Name="ems" 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">
diff --git a/packaging/wix/DirectoryStructure.wxi b/packaging/wix/DirectoryStructure.wxi
index fe70b66393..f06297edfd 100644
--- a/packaging/wix/DirectoryStructure.wxi
+++ b/packaging/wix/DirectoryStructure.wxi
@@ -23,6 +23,7 @@
<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"/>
@@ -30,6 +31,7 @@
<Directory Id="dirTpncp" Name="tpncp"/>
<Directory Id="dirTranslations" Name="translations"/>
<Directory Id="dirWimaxasncp" Name="wimaxasncp"/>
+ <Directory Id="dirProtobuf" Name="protobuf"/>
</Directory>
</Directory>
diff --git a/packaging/wix/Features.wxi b/packaging/wix/Features.wxi
index eb37b11f95..ffaa4d6038 100644
--- a/packaging/wix/Features.wxi
+++ b/packaging/wix/Features.wxi
@@ -20,6 +20,7 @@
<ComponentGroupRef Id="CG.Dtds" />
<ComponentGroupRef Id="CG.Tpncp" />
<ComponentGroupRef Id="CG.Wimaxasncp" />
+ <ComponentGroupRef Id="CG.Protobuf" />
<ComponentGroupRef Id="CG.RequiredDependencies" />
</Feature>
@@ -69,15 +70,18 @@
<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.DFTest" Title="DFTest" Level="1" AllowAdvertise="yes" Display="expand" Description="Shows display filter byte-code, for debugging dfilter routines.">
- <ComponentGroupRef Id="CG.Tools.DFTest" />
- </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" />
@@ -89,6 +93,9 @@
<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>
@@ -98,6 +105,9 @@
<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.">
diff --git a/packaging/wix/InputPaths.wxi b/packaging/wix/InputPaths.wxi
index 0fae77b721..5ff623559a 100644
--- a/packaging/wix/InputPaths.wxi
+++ b/packaging/wix/InputPaths.wxi
@@ -15,6 +15,7 @@
<?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" ?>
diff --git a/packaging/wix/Plugins.wxi b/packaging/wix/Plugins.wxi
index f6f729be2e..594603a777 100644
--- a/packaging/wix/Plugins.wxi
+++ b/packaging/wix/Plugins.wxi
@@ -1,35 +1,35 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?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" />
+ <File Id="filEthercat_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\ethercat.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
<Component Id="cmpGryphon_dll" Guid="*">
- <File Id="filGryphon_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\gryphon.dll" />
+ <File Id="filGryphon_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\gryphon.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
<Component Id="cmpIrda_dll" Guid="*">
- <File Id="filIrda_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\irda.dll" />
+ <File Id="filIrda_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\irda.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
<Component Id="cmpOpcua_dll" Guid="*">
- <File Id="filOpcua_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\opcua.dll" />
+ <File Id="filOpcua_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\opcua.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
<Component Id="cmpProfinet_dll" Guid="*">
- <File Id="filProfinet_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\profinet.dll" />
+ <File Id="filProfinet_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\profinet.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
<Component Id="cmpUnistim_dll" Guid="*">
- <File Id="filUnistim_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\unistim.dll" />
+ <File Id="filUnistim_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\unistim.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
<Component Id="cmpWimax_dll" Guid="*">
- <File Id="filWimax_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\wimax.dll" />
+ <File Id="filWimax_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\wimax.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
<Component Id="cmpWimaxasmcp_dll" Guid="*">
- <File Id="filWimaxasmcp_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\wimaxasncp.dll" />
+ <File Id="filWimaxasmcp_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\wimaxasncp.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
<Component Id="cmpWimaxmacphy_dll" Guid="*">
- <File Id="filWimaxmacphy_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\wimaxmacphy.dll" />
+ <File Id="filWimaxmacphy_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\wimaxmacphy.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
<!-- Add custom plugin Components here -->
</DirectoryRef>
@@ -53,7 +53,7 @@
<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" />
+ <File Id="filStatsTree_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\stats_tree.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
</DirectoryRef>
</Fragment>
@@ -67,7 +67,7 @@
<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" />
+ <File Id="filMate_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\mate.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
</DirectoryRef>
</Fragment>
@@ -81,7 +81,7 @@
<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" />
+ <File Id="filTransum_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\transum.dll.$(var.WiresharkAbiVersionEpan)" />
</Component>
</DirectoryRef>
</Fragment>
@@ -95,7 +95,7 @@
<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" />
+ <File Id="filUsbdump_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\wiretap\usbdump.dll.$(var.WiresharkAbiVersionWtap)" />
</Component>
</DirectoryRef>
</Fragment>
@@ -109,22 +109,28 @@
<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" />
+ <File Id="filG711_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\g711.dll.$(var.WiresharkAbiVersionCodec)" />
</Component>
<Component Id="cmpG722_dll" Guid="*">
- <File Id="filG722_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\g722.dll" />
+ <File Id="filG722_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\g722.dll.$(var.WiresharkAbiVersionCodec)" />
</Component>
<Component Id="cmpG726_dll" Guid="*">
- <File Id="filG726_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\g726.dll" />
+ <File Id="filG726_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\g726.dll.$(var.WiresharkAbiVersionCodec)" />
</Component>
<Component Id="cmpG729_dll" Guid="*">
- <File Id="filG729_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\g729.dll" />
+ <File Id="filG729_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\g729.dll.$(var.WiresharkAbiVersionCodec)" />
</Component>
<Component Id="cmpL16mono_dll" Guid="*">
- <File Id="filL16mono_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\l16mono.dll" />
+ <File Id="filL16mono_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\l16mono.dll.$(var.WiresharkAbiVersionCodec)" />
</Component>
<Component Id="cmpSBC_dll" Guid="*">
- <File Id="filSBC_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\sbc.dll" />
+ <File Id="filSBC_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\sbc.dll.$(var.WiresharkAbiVersionCodec)" />
+ </Component>
+ <Component Id="cmpILBC_dll" Guid="*">
+ <File Id="filILBC_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\ilbc.dll.$(var.WiresharkAbiVersionCodec)" />
+ </Component>
+ <Component Id="cmpOPUS_dll" Guid="*">
+ <File Id="filOPUS_dec_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\opus_dec.dll.$(var.WiresharkAbiVersionCodec)" />
</Component>
</DirectoryRef>
</Fragment>
@@ -136,6 +142,8 @@
<ComponentRef Id="cmpG729_dll" />
<ComponentRef Id="cmpL16mono_dll" />
<ComponentRef Id="cmpSBC_dll" />
+ <ComponentRef Id="cmpILBC_dll" />
+ <ComponentRef Id="cmpOPUS_dll" />
</ComponentGroup>
</Fragment>
diff --git a/packaging/wix/Prerequisites.wxi b/packaging/wix/Prerequisites.wxi
index 54e8416a9c..aa03a45fc5 100644
--- a/packaging/wix/Prerequisites.wxi
+++ b/packaging/wix/Prerequisites.wxi
@@ -17,7 +17,7 @@
<!-- 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
+ - The WinVer 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)]]>
@@ -35,8 +35,12 @@
<![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 Message="Windows 7, 8, 8.1, Server 2008R2, and Server 2012 are no longer supported. Please install $(var.WiresharkName) 4.0 instead.">
+ <![CDATA[Installed OR (VersionNT < 601) OR (VersionNT > 602)]]>
+ </Condition>
+
+ <Condition Message="$(var.WiresharkName)$(var.WiresharkVersion) is only supported on Windows 10, Windows Server 2016, or higher.">
+ <![CDATA[Installed OR (VersionNT >= 603)]]>
</Condition>
<!--
diff --git a/packaging/wix/README b/packaging/wix/README
deleted file mode 100644
index cfd5f187f4..0000000000
--- a/packaging/wix/README
+++ /dev/null
@@ -1,35 +0,0 @@
-WiX installer for Wireshark
-
-This is currently an experimental feature to provide Wireshark with an .msi installer.
-It is intended to replace the NSIS installer, but needs to be a little more complete
-before doing so.
-
-(Developer) Differences/notes compared to NSIS installer:
-1. You need the WiX toolset to build the installer. See http://wixtoolset.org/releases/
-(v3.10 is recommended)
-2. 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
-3. Plugin DLLs are not automatically harvested. To include your DLL, modify Plugins.wxi
-4. To build the WiX installer run:
-> msbuild /m /p:Configuration=RelWithDebInfo wix_package_prep.vcxproj
-> msbuild /m /p:Configuration=RelWithDebInfo wix_package.vcxproj
-
-
-Known issues:
-1. It does not include installing Npcap or USBPcap (the NSIS installer does). These
-currently come as NSIS installers and it seems it would make more sense to "bundle" them
-with WiX rather than include them as part of the Wireshark.msi.
-2. 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.
-3. Uninstalling previous versions. NSIS installer did things more "manually" than Wix does
-by default. Need to merge as best as possible to handle backwards compatibility. The .msi
-architecture uses an "UpgradeCode" help facilitate install/uninstall/upgrade and NSIS
-installer doesn't have that. The NSIS installer also removed whole directories instead of
-just removing what it installed (still not sure if this is better or worse)
-
-
-Patches welcome to address any of the issues above or improvements you think can be
-made.
diff --git a/packaging/wix/README.adoc b/packaging/wix/README.adoc
new file mode 100644
index 0000000000..78af64c13f
--- /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/Wireshark.wxs b/packaging/wix/Wireshark.wxs
index 98e35335d2..8421bf0d09 100644
--- a/packaging/wix/Wireshark.wxs
+++ b/packaging/wix/Wireshark.wxs
@@ -27,7 +27,8 @@
<!-- 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.
+ 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."