diff options
Diffstat (limited to 'packaging/wix/CMakeLists.txt')
-rw-r--r-- | packaging/wix/CMakeLists.txt | 103 |
1 files changed, 43 insertions, 60 deletions
diff --git a/packaging/wix/CMakeLists.txt b/packaging/wix/CMakeLists.txt index 5988b279af..25f5dbc967 100644 --- a/packaging/wix/CMakeLists.txt +++ b/packaging/wix/CMakeLists.txt @@ -61,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") @@ -90,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) @@ -106,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. @@ -133,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_DLLS} ${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} ${ILBC_DLL} ${OPUS_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}) @@ -150,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") @@ -172,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_DLLS} ${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} ${ILBC_DLL} ${OPUS_DLL} - # mmdbresolve - ${MAXMINDDB_DLL} - ) +foreach(_dll ${_dll_list}) #ensure uniqueness of files IF(NOT "${unique_file}" MATCHES "(^|;)${_dll}(;|$)") STRING(REGEX REPLACE "[-|\\.]" "_" _wix_name ${_dll}) @@ -187,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() @@ -207,24 +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 - -dUsersGuideDir=${ARCHIVE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/docbook/wsug_html_chunked + -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}/ @@ -234,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 @@ -283,7 +264,7 @@ macro( ADD_WIX_PACKAGE_TARGET ) # 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 ) @@ -291,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 ) @@ -299,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 ) @@ -307,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_html faq_html ) - set_target_properties(wix_package_prep PROPERTIES + set_target_properties(wireshark_wix_prep PROPERTIES FOLDER "Packaging" EXCLUDE_FROM_DEFAULT_BUILD True ) @@ -330,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} @@ -339,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 ) @@ -358,5 +341,5 @@ set(CLEAN_FILES QtTranslation.wxs #NEWS.txt #user-guide.chm - wireshark-$(WIRESHARK_TARGET_PLATFORM)-$(VERSION).exe + wireshark-${VERSION}-${WIRESHARK_TARGET_PLATFORM}.msi ) |