From e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 22:34:10 +0200 Subject: Adding upstream version 4.2.2. Signed-off-by: Daniel Baumann --- packaging/wix/CMakeLists.txt | 341 +++++++++++++ packaging/wix/COPYING.rtf | 524 +++++++++++++++++++ packaging/wix/ComponentGroups.wxi | 913 ++++++++++++++++++++++++++++++++++ packaging/wix/DirectoryStructure.wxi | 53 ++ packaging/wix/Features.wxi | 121 +++++ packaging/wix/InputPaths.wxi | 22 + packaging/wix/Plugins.wxi | 150 ++++++ packaging/wix/Prerequisites.wxi | 103 ++++ packaging/wix/README.adoc | 47 ++ packaging/wix/StringOverrides.wxl | 4 + packaging/wix/UserInterface.wxi | 18 + packaging/wix/Wireshark.wxs | 58 +++ packaging/wix/WiresharkOptionsDlg.wxs | 66 +++ packaging/wix/WiresharkWixUI.wxs | 87 ++++ packaging/wix/banner.bmp | Bin 0 -> 29846 bytes packaging/wix/banner.svg | 69 +++ packaging/wix/dialog.bmp | Bin 0 -> 158078 bytes packaging/wix/dialog.svg | 83 ++++ packaging/wix/windeployqt-to-wix.ps1 | 165 ++++++ 19 files changed, 2824 insertions(+) create mode 100644 packaging/wix/CMakeLists.txt create mode 100644 packaging/wix/COPYING.rtf create mode 100644 packaging/wix/ComponentGroups.wxi create mode 100644 packaging/wix/DirectoryStructure.wxi create mode 100644 packaging/wix/Features.wxi create mode 100644 packaging/wix/InputPaths.wxi create mode 100644 packaging/wix/Plugins.wxi create mode 100644 packaging/wix/Prerequisites.wxi create mode 100644 packaging/wix/README.adoc create mode 100644 packaging/wix/StringOverrides.wxl create mode 100644 packaging/wix/UserInterface.wxi create mode 100644 packaging/wix/Wireshark.wxs create mode 100644 packaging/wix/WiresharkOptionsDlg.wxs create mode 100644 packaging/wix/WiresharkWixUI.wxs create mode 100644 packaging/wix/banner.bmp create mode 100644 packaging/wix/banner.svg create mode 100644 packaging/wix/dialog.bmp create mode 100644 packaging/wix/dialog.svg create mode 100644 packaging/wix/windeployqt-to-wix.ps1 (limited to 'packaging/wix') diff --git a/packaging/wix/CMakeLists.txt b/packaging/wix/CMakeLists.txt new file mode 100644 index 00000000..eb9079e7 --- /dev/null +++ b/packaging/wix/CMakeLists.txt @@ -0,0 +1,341 @@ +# CMakeLists.txt +# +# Wireshark - Network traffic analyzer +# By Gerald Combs +# 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}" "\n") +file(APPEND "${_all_manifest_wix}" "\n\n") +file(APPEND "${_all_manifest_wix}" " \n") +file(APPEND "${_all_manifest_wix}" "\n") +file(APPEND "${_all_manifest_wix}" " \n") +file(APPEND "${_all_manifest_wix}" " \n") +file(APPEND "${_all_manifest_wix}" " \n") +foreach(_dll ${GLIB2_DLLS_DEBUG}) + STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll}) + file(APPEND "${_all_manifest_wix}" " \n") + file(APPEND "${_all_manifest_wix}" " \n") + file(APPEND "${_all_manifest_wix}" " \n") +endforeach() +file(APPEND "${_all_manifest_wix}" " \n") +foreach(_dll ${GLIB2_DLLS_RELEASE}) + STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll}) + file(APPEND "${_all_manifest_wix}" " \n") + file(APPEND "${_all_manifest_wix}" " \n") + file(APPEND "${_all_manifest_wix}" " \n") +endforeach() +file(APPEND "${_all_manifest_wix}" " \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}" " \n") + file(APPEND "${_all_manifest_wix}" " \n") + file(APPEND "${_all_manifest_wix}" " \n") + SET(unique_component ${unique_component} ${_dll}) + ENDIF(NOT "${unique_component}" MATCHES "(^|;)${_dll}(;|$)") +endforeach() +file(APPEND "${_all_manifest_wix}" " \n") +file(APPEND "${_all_manifest_wix}" " \n") +file(APPEND "${_all_manifest_wix}" " \n") +file(APPEND "${_all_manifest_wix}" " \n") +file(APPEND "${_all_manifest_wix}" " \n") +foreach(_dll ${GLIB2_DLLS_DEBUG}) + STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll}) + file(APPEND "${_all_manifest_wix}" " \n") +endforeach() +file(APPEND "${_all_manifest_wix}" " \n") +foreach(_dll ${GLIB2_DLLS_RELEASE}) + STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll}) + file(APPEND "${_all_manifest_wix}" " \n") +endforeach() +file(APPEND "${_all_manifest_wix}" " \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}" " \n") + SET(unique_file ${unique_file} ${_dll}) + ENDIF(NOT "${unique_file}" MATCHES "(^|;)${_dll}(;|$)") +endforeach() +file(APPEND "${_all_manifest_wix}" " \n") +file(APPEND "${_all_manifest_wix}" " \n") +file(APPEND "${_all_manifest_wix}" "\n\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 $ + -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} + $<$:-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 00000000..ec2bde5e --- /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 + \par + Copyright (C) \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 + , 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 +} + \ No newline at end of file diff --git a/packaging/wix/ComponentGroups.wxi b/packaging/wix/ComponentGroups.wxi new file mode 100644 index 00000000..8a649732 --- /dev/null +++ b/packaging/wix/ComponentGroups.wxi @@ -0,0 +1,913 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WIRESHARK_START_MENU = "1" + + + + + + + WIRESHARK_DESKTOP_ICON = "1" + + + + + + + WIRESHARK_QUICK_LAUNCH_ICON = "1" + + + + + + + + + + + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + WIRESHARK_FILE_EXTENSIONS = "1" + + + + + + + + + + + + diff --git a/packaging/wix/DirectoryStructure.wxi b/packaging/wix/DirectoryStructure.wxi new file mode 100644 index 00000000..f06297ed --- /dev/null +++ b/packaging/wix/DirectoryStructure.wxi @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/wix/Features.wxi b/packaging/wix/Features.wxi new file mode 100644 index 00000000..ffaa4d60 --- /dev/null +++ b/packaging/wix/Features.wxi @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/wix/InputPaths.wxi b/packaging/wix/InputPaths.wxi new file mode 100644 index 00000000..5ff62355 --- /dev/null +++ b/packaging/wix/InputPaths.wxi @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/wix/Plugins.wxi b/packaging/wix/Plugins.wxi new file mode 100644 index 00000000..0b53cf48 --- /dev/null +++ b/packaging/wix/Plugins.wxi @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/wix/Prerequisites.wxi b/packaging/wix/Prerequisites.wxi new file mode 100644 index 00000000..54e8416a --- /dev/null +++ b/packaging/wix/Prerequisites.wxi @@ -0,0 +1,103 @@ + + + + + + + + + 1 + + + + 500)]]> + + + + 501)]]> + + + + 502)]]> + + + + 600)]]> + + + + = 601)]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/wix/README.adoc b/packaging/wix/README.adoc new file mode 100644 index 00000000..78af64c1 --- /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 00000000..d0930c84 --- /dev/null +++ b/packaging/wix/StringOverrides.wxl @@ -0,0 +1,4 @@ + + + This will install [ProductName] [ProductVersion] on your computer. If you installed [ProductName] using the .exe installer please uninstall it first. + diff --git a/packaging/wix/UserInterface.wxi b/packaging/wix/UserInterface.wxi new file mode 100644 index 00000000..e5726664 --- /dev/null +++ b/packaging/wix/UserInterface.wxi @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/packaging/wix/Wireshark.wxs b/packaging/wix/Wireshark.wxs new file mode 100644 index 00000000..8421bf0d --- /dev/null +++ b/packaging/wix/Wireshark.wxs @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/wix/WiresharkOptionsDlg.wxs b/packaging/wix/WiresharkOptionsDlg.wxs new file mode 100644 index 00000000..0790ccd2 --- /dev/null +++ b/packaging/wix/WiresharkOptionsDlg.wxs @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + Download Npcap (recommended)]]> + + + + download WinPcap]]> + + + + + + Download USBPcap (experimental)]]> + + + + + + + 3]]> + + + + 3]]> + + + + 3]]> + + + + + + + 3]]> + + + + + + + + + 1 + + + + + diff --git a/packaging/wix/WiresharkWixUI.wxs b/packaging/wix/WiresharkWixUI.wxs new file mode 100644 index 00000000..e066d198 --- /dev/null +++ b/packaging/wix/WiresharkWixUI.wxs @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + NOT Installed + Installed AND PATCH + + 1 + LicenseAccepted = "1" + + Installed + NOT Installed + 1 + + 1 + 1 + + 1 + 1 + NOT WIXUI_DONTVALIDATEPATH + "1"]]> + WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1" + 1 + 1 + + NOT Installed OR WixUI_InstallMode = "Change" + Installed AND NOT PATCH + Installed AND PATCH + + 1 + + 1 + 1 + 1 + 1 + + + + + diff --git a/packaging/wix/banner.bmp b/packaging/wix/banner.bmp new file mode 100644 index 00000000..10ab9e60 Binary files /dev/null and b/packaging/wix/banner.bmp differ diff --git a/packaging/wix/banner.svg b/packaging/wix/banner.svg new file mode 100644 index 00000000..4bacfe5a --- /dev/null +++ b/packaging/wix/banner.svg @@ -0,0 +1,69 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/packaging/wix/dialog.bmp b/packaging/wix/dialog.bmp new file mode 100644 index 00000000..f6a704a3 Binary files /dev/null and b/packaging/wix/dialog.bmp differ diff --git a/packaging/wix/dialog.svg b/packaging/wix/dialog.svg new file mode 100644 index 00000000..1754c805 --- /dev/null +++ b/packaging/wix/dialog.svg @@ -0,0 +1,83 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/packaging/wix/windeployqt-to-wix.ps1 b/packaging/wix/windeployqt-to-wix.ps1 new file mode 100644 index 00000000..a1696434 --- /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 +# 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 = " + +" + $wixComponents += @(" +") + + 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 = " + +" + $dirList = "" + $currentDir = "" + $startDirList = " + +" + $endDirList = " + + +" + $currentDirList = $startDirList + + $componentGroup = " + +" + 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 + " + " + + $currentDir = $dir + } + + $wix_name = $entry -replace "[\\|\.]", "_" + $currentDirList += " + + +" + $componentGroup += " +" + } else { + + $dllList += " + + +" + $componentGroup += " +" + } + } + + #finish up the last directory + $currentDirList += $endDirList + $dirList += $currentDirList + + $dllList += " + +" + $componentGroup += " + +" + + $wixComponents += $dllList + $dirList + $componentGroup + + $wixComponents += @" + +"@ + +} + +catch { + + $wixComponents = " + + + +" + +} + +Set-Content $FilePath @" + + +"@ + +Add-Content $FilePath $wixComponents -- cgit v1.2.3