diff options
Diffstat (limited to 'packaging/wix')
-rw-r--r-- | packaging/wix/CMakeLists.txt | 115 | ||||
-rw-r--r-- | packaging/wix/ComponentGroups.wxi | 161 | ||||
-rw-r--r-- | packaging/wix/DirectoryStructure.wxi | 2 | ||||
-rw-r--r-- | packaging/wix/Features.wxi | 16 | ||||
-rw-r--r-- | packaging/wix/InputPaths.wxi | 1 | ||||
-rw-r--r-- | packaging/wix/Plugins.wxi | 48 | ||||
-rw-r--r-- | packaging/wix/Prerequisites.wxi | 10 | ||||
-rw-r--r-- | packaging/wix/README | 35 | ||||
-rw-r--r-- | packaging/wix/README.adoc | 47 | ||||
-rw-r--r-- | packaging/wix/Wireshark.wxs | 3 |
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=""%1""/> + </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." |