bakaid commented on a change in pull request #692: MINIFICPP-1099 - Fix Windows
MSI build
URL: https://github.com/apache/nifi-minifi-cpp/pull/692#discussion_r356199056
##########
File path: CMakeLists.txt
##########
@@ -661,27 +661,54 @@ endif()
# Generate source assembly
set(ASSEMBLY_BASE_NAME
"${CMAKE_PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
if(WIN32)
-set(CPACK_ALL_INSTALL_TYPES Full Developer)
-set(CPACK_COMPONENT_LIBRARIES_INSTALL_TYPES Developer Full)
-set(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer Full)
-set(CPACK_COMPONENT_APPLICATIONS_INSTALL_TYPES Full)
-set(CPACK_WIX_UI_BANNER
"${CMAKE_CURRENT_SOURCE_DIR}/msi/minifi-logo-png-banner.png")
-set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/msi/bgr.png")
-
-file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/conf/" DESTINATION
"${CMAKE_CURRENT_BINARY_DIR}/conf/")
-file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" DESTINATION
"${CMAKE_CURRENT_BINARY_DIR}")
-file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/README.md" DESTINATION
"${CMAKE_CURRENT_BINARY_DIR}")
-file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/NOTICE" DESTINATION
"${CMAKE_CURRENT_BINARY_DIR}")
-
-if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(CPACK_WIX_EXTRA_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/msi/x64.wsi")
-elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
-set(CPACK_WIX_EXTRA_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/msi/x86.wsi")
-endif()
- set(CPACK_WIX_TEMPLATE "${CMAKE_CURRENT_SOURCE_DIR}/msi/WixWin.wsi")
+ set(CPACK_ALL_INSTALL_TYPES Full Developer)
+ set(CPACK_COMPONENT_LIBRARIES_INSTALL_TYPES Developer Full)
+ set(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer Full)
+ set(CPACK_COMPONENT_APPLICATIONS_INSTALL_TYPES Full)
+ set(CPACK_WIX_UI_BANNER
"${CMAKE_CURRENT_SOURCE_DIR}/msi/minifi-logo-png-banner.png")
+ set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/msi/bgr.png")
+
+ file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/conf/" DESTINATION
"${CMAKE_CURRENT_BINARY_DIR}/conf/")
+ file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" DESTINATION
"${CMAKE_CURRENT_BINARY_DIR}")
+ file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/README.md" DESTINATION
"${CMAKE_CURRENT_BINARY_DIR}")
+ file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/NOTICE" DESTINATION
"${CMAKE_CURRENT_BINARY_DIR}")
+
+ # Determine the path of the VC Redistributable Merge Modules
+ if (DEFINED ENV{VCToolsRedistDir})
+ # Just get the redist dir that has been set by the build
environment
+ set(VCRUNTIME_REDIST_DIR $ENV{VCToolsRedistDir})
+ else()
+ # Try to fall back to a redist dir relative to the MSVC compiler
+ string(REGEX REPLACE "/VC/Tools/.*" "/VC/Redist/MSVC/"
VCRUNTIME_REDIST_BASE_DIR ${CMAKE_C_COMPILER})
+ file(GLOB VCRUNTIME_REDIST_VERSIONS
"${VCRUNTIME_REDIST_BASE_DIR}/*")
+ if (NOT VCRUNTIME_REDIST_VERSIONS)
+ message(FATAL_ERROR "Could not find the VC
Redistributable Merge Modules. Please set VCRUNTIME_X86_MERGEMODULE_PATH and
VCRUNTIME_X64_MERGEMODULE_PATH manually!")
+ endif()
+ list(SORT VCRUNTIME_REDIST_VERSIONS)
+ list(REVERSE VCRUNTIME_REDIST_VERSIONS)
+ list(GET VCRUNTIME_REDIST_VERSIONS 0 VCRUNTIME_REDIST_DIR)
+ endif()
+ file(GLOB VCRUNTIME_X86_MERGEMODULES
"${VCRUNTIME_REDIST_DIR}/MergeModules/Microsoft_VC*_CRT_x86.msm")
+ file(GLOB VCRUNTIME_X64_MERGEMODULES
"${VCRUNTIME_REDIST_DIR}/MergeModules/Microsoft_VC*_CRT_x64.msm")
+ if (NOT VCRUNTIME_X86_MERGEMODULES OR NOT VCRUNTIME_X64_MERGEMODULES)
+ message(FATAL_ERROR "Could not find the VC Redistributable
Merge Modules. Please set VCRUNTIME_X86_MERGEMODULE_PATH and
VCRUNTIME_X64_MERGEMODULE_PATH manually!")
+ else()
+ list(GET VCRUNTIME_X86_MERGEMODULES 0
VCRUNTIME_X86_MERGEMODULE_PATH)
+ list(GET VCRUNTIME_X64_MERGEMODULES 0
VCRUNTIME_X64_MERGEMODULE_PATH)
+ endif()
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ message("Using ${VCRUNTIME_X64_MERGEMODULE_PATH} VC
Redistributable Merge Module")
+ configure_file("msi/x64.wsi" "msi/x64.wsi" @ONLY)
+ set(CPACK_WIX_EXTRA_SOURCES
"${CMAKE_CURRENT_BINARY_DIR}/msi/x64.wsi")
+ elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
Review comment:
This isn't new code, but I agree. Even though sizeof(void*) not being 8 or 4
would surprise me quite a lot.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services