[cpack_installer] windows installer product GUID handling
This commit is contained in:
@@ -28,4 +28,65 @@ endif()
|
||||
|
||||
set(CPACK_GENERATOR "WIX")
|
||||
|
||||
# CPack will generate the WiX product/upgrade GUIDs further down the chain if they weren't supplied
|
||||
# however, they are unique for each run. instead, let's do the auto generation here and add it to
|
||||
# the cache for run persistence. an additional cache file will be used to store the information on
|
||||
# the original generation so we still have the ability to detect if they are still being used.
|
||||
set(_guid_cache_file "${CMAKE_BINARY_DIR}/installer/wix_guid_cache.cmake")
|
||||
if(NOT EXISTS ${_guid_cache_file})
|
||||
set(_wix_guid_namespace "6D43F57A-2917-4AD9-B758-1F13CDB08593")
|
||||
|
||||
# based the ISO-8601 standard (YYYY-MM-DDTHH-mm-ssTZD) e.g., 20210506145533
|
||||
string(TIMESTAMP _guid_gen_timestamp "%Y%m%d%H%M%S")
|
||||
|
||||
file(WRITE ${_guid_cache_file} "set(_wix_guid_gen_timestamp ${_guid_gen_timestamp})\n")
|
||||
|
||||
string(UUID _default_product_guid
|
||||
NAMESPACE ${_wix_guid_namespace}
|
||||
NAME "ProductID_${_guid_gen_timestamp}"
|
||||
TYPE SHA1
|
||||
UPPER
|
||||
)
|
||||
file(APPEND ${_guid_cache_file} "set(_wix_default_product_guid ${_default_product_guid})\n")
|
||||
|
||||
string(UUID _default_upgrade_guid
|
||||
NAMESPACE ${_wix_guid_namespace}
|
||||
NAME "UpgradeCode_${_guid_gen_timestamp}"
|
||||
TYPE SHA1
|
||||
UPPER
|
||||
)
|
||||
file(APPEND ${_guid_cache_file} "set(_wix_default_upgrade_guid ${_default_upgrade_guid})\n")
|
||||
endif()
|
||||
include(${_guid_cache_file})
|
||||
|
||||
set(LY_WIX_PRODUCT_GUID "${_wix_default_product_guid}" CACHE STRING "GUID for the Product ID field. Format: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")
|
||||
set(LY_WIX_UPGRADE_GUID "${_wix_default_upgrade_guid}" CACHE STRING "GUID for the Upgrade Code field. Format: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")
|
||||
|
||||
set(_uses_default_product_guid FALSE)
|
||||
if(NOT LY_WIX_PRODUCT_GUID OR LY_WIX_PRODUCT_GUID STREQUAL ${_wix_default_product_guid})
|
||||
set(_uses_default_product_guid TRUE)
|
||||
set(LY_WIX_PRODUCT_GUID ${_wix_default_product_guid})
|
||||
endif()
|
||||
|
||||
set(_uses_default_upgrade_guid FALSE)
|
||||
if(NOT LY_WIX_UPGRADE_GUID OR LY_WIX_UPGRADE_GUID STREQUAL ${_wix_default_upgrade_guid})
|
||||
set(_uses_default_upgrade_guid TRUE)
|
||||
set(LY_WIX_UPGRADE_GUID ${_wix_default_upgrade_guid})
|
||||
endif()
|
||||
|
||||
if(_uses_default_product_guid OR _uses_default_upgrade_guid)
|
||||
message(STATUS "One or both WiX GUIDs were auto generated. It is recommended you supply your own GUIDs through LY_WIX_PRODUCT_GUID and LY_WIX_UPGRADE_GUID.")
|
||||
|
||||
if(_uses_default_product_guid)
|
||||
message(STATUS "-> Default LY_WIX_PRODUCT_GUID = ${LY_WIX_PRODUCT_GUID}")
|
||||
endif()
|
||||
|
||||
if(_uses_default_upgrade_guid)
|
||||
message(STATUS "-> Default LY_WIX_UPGRADE_GUID = ${LY_WIX_UPGRADE_GUID}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(CPACK_WIX_PRODUCT_GUID ${LY_WIX_PRODUCT_GUID})
|
||||
set(CPACK_WIX_UPGRADE_GUID ${LY_WIX_UPGRADE_GUID})
|
||||
|
||||
set(CPACK_WIX_TEMPLATE "${CMAKE_SOURCE_DIR}/cmake/Platform/Windows/PackagingTemplate.wxs.in")
|
||||
|
||||
Reference in New Issue
Block a user