Skip to content

Commit f7680e9

Browse files
kboortzmsprajap
authored andcommitted
Bug#35613791 - Upgrade from Wix 3.11 to 4.0.1 for Server/Cluster MSI builds
WiX Toolset v3 is no longer actively maintained. Change-Id: I4b2e94ed51708a74ee3bbd82ffe97dcc4e7338d8 (cherry picked from commit 4c13451d68768d8989a5ce3752b66ecb23460cda)
1 parent 3ff055b commit f7680e9

File tree

8 files changed

+162
-308
lines changed

8 files changed

+162
-308
lines changed

packaging/WiX/CMakeLists.txt

Lines changed: 23 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -20,59 +20,28 @@
2020
# along with this program; if not, write to the Free Software
2121
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2222

23-
IF(NOT WIN32)
24-
RETURN()
25-
ENDIF()
26-
27-
# Need an extra indirection to access ENV(ProgramFiles(x86))
28-
SET(MYENV "ProgramFiles(x86)")
29-
30-
# Look in various paths for 'heat.exe'
31-
# Different installations have different layouts.
32-
# Not really necessary to use V3.8 but keep backward compatibility just in case.
33-
IF(MSVC_VERSION LESS 1900)
34-
FOREACH(path
35-
"$ENV{ProgramFiles}/WiX Toolset V3.8"
36-
"$ENV{ProgramFiles}/WiX Toolset V3.8/bin"
37-
"$ENV{${MYENV}}/WiX Toolset V3.8"
38-
"$ENV{${MYENV}}/WiX Toolset V3.8/bin")
39-
FIND_PATH(WIX_DIR heat.exe "${path}")
40-
MESSAGE(STATUS "WIX_DIR ${WIX_DIR} path ${path}")
41-
IF(WIX_DIR)
42-
BREAK()
43-
ENDIF()
44-
ENDFOREACH()
45-
ELSE()
46-
FOREACH(path
47-
"$ENV{ProgramFiles}/WiX Toolset V3.10"
48-
"$ENV{ProgramFiles}/WiX Toolset V3.10/bin"
49-
"$ENV{${MYENV}}/WiX Toolset V3.10"
50-
"$ENV{${MYENV}}/WiX Toolset V3.10/bin")
51-
FIND_PATH(WIX_DIR heat.exe "${path}")
52-
MESSAGE(STATUS "WIX_DIR ${WIX_DIR} path ${path}")
53-
IF(WIX_DIR)
54-
BREAK()
55-
ENDIF()
56-
ENDFOREACH()
23+
# First we look for "wix.exe" using the CMake variable WIX_DIR, second using the
24+
# environment variable WIX, and then we add "$ENV{USERPROFILE}\\.dotnet\\tools"
25+
# to the PATH before searching the other default locations
26+
IF(NOT WIX_DIR AND "$ENV{WIX}")
27+
SET(WIX_DIR "$ENV{WIX}")
5728
ENDIF()
58-
59-
# Finally, look in environment
60-
IF(NOT WIX_DIR)
61-
FIND_PATH(WIX_DIR heat.exe "$ENV{WIX}")
62-
MESSAGE(STATUS "WIX_DIR ${WIX_DIR} looked at $ENV{WIX}")
29+
FIND_PATH(WIX_DIR wix.exe "$ENV{USERPROFILE}\\.dotnet\\tools")
30+
31+
IF(NOT _WIX_DIR_CHECKED)
32+
SET(_WIX_DIR_CHECKED 1 CACHE INTERNAL "")
33+
IF(WIX_DIR)
34+
MESSAGE(STATUS "WIX_DIR ${WIX_DIR}")
35+
ELSE()
36+
MESSAGE(STATUS "Cannot find \"wix.exe\", installer project will not be generated")
37+
ENDIF()
6338
ENDIF()
6439

6540
IF(NOT WIX_DIR)
66-
IF(NOT _WIX_DIR_CHECKED)
67-
SET(_WIX_DIR_CHECKED 1 CACHE INTERNAL "")
68-
MESSAGE(STATUS "Cannot find wix 3, installer project will not be generated")
69-
ENDIF()
7041
RETURN()
7142
ENDIF()
7243

73-
FIND_PROGRAM(HEAT_EXECUTABLE heat ${WIX_DIR})
74-
FIND_PROGRAM(CANDLE_EXECUTABLE candle ${WIX_DIR})
75-
FIND_PROGRAM(LIGHT_EXECUTABLE light ${WIX_DIR})
44+
FIND_PROGRAM(WIX_EXECUTABLE wix ${WIX_DIR})
7645

7746
# WiX wants the license text as rtf; if there is no rtf license,
7847
# we create a fake one from the plain text LICENSE file.
@@ -92,9 +61,9 @@ SET(CPACK_WIX_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake)
9261
SET(CPACK_WIX_INCLUDE "${CMAKE_CURRENT_BINARY_DIR}/mysql_server_extra.wxs;${CMAKE_CURRENT_SOURCE_DIR}/custom_ui.wxs")
9362

9463
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
95-
SET(WixWin64 " Win64='yes'")
64+
SET(WixWin64 " Bitness='always64'")
9665
ELSE()
97-
SET(WixWin64 " Win64='no'")
66+
SET(WixWin64 " Bitness='always32'")
9867
ENDIF()
9968

10069
IF("${VERSION}" MATCHES "-ndb-")
@@ -111,21 +80,13 @@ IF("${VERSION}" MATCHES "-ndb-")
11180
MESSAGE(STATUS "DISPLAY_PATCH_VERSION: ${DISPLAY_PATCH_VERSION}")
11281
ENDIF()
11382

114-
#CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server_extra.wxs.in
115-
# ${CMAKE_CURRENT_BINARY_DIR}/mysql_server_extra.wxs)
116-
117-
ADD_CUSTOM_TARGET(
118-
configure_mysql_server_extra
119-
COMMAND ${CMAKE_COMMAND}
120-
-DINPUT_FILE=${CMAKE_CURRENT_SOURCE_DIR}/mysql_server_extra.wxs.in
121-
-DOUTPUT_FILE=${CMAKE_CURRENT_BINARY_DIR}/mysql_server_extra.wxs
122-
-DMAJOR_VERSION=${MAJOR_VERSION}
123-
-DMINOR_VERSION=${MINOR_VERSION}
124-
-DWixWin64=${WixWin64}
125-
-P ${CMAKE_CURRENT_SOURCE_DIR}/configure_file.cmake
126-
)
83+
CONFIGURE_FILE(
84+
${CMAKE_CURRENT_SOURCE_DIR}/mysql_server_extra.wxs.in
85+
${CMAKE_CURRENT_BINARY_DIR}/mysql_server_extra.wxs
86+
@ONLY)
12787

128-
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/create_msi.cmake.in
88+
CONFIGURE_FILE(
89+
${CMAKE_CURRENT_SOURCE_DIR}/create_msi.cmake.in
12990
${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake
13091
@ONLY)
13192

@@ -151,7 +112,6 @@ ADD_CUSTOM_TARGET(
151112
${CONFIG_PARAM}
152113
-P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake
153114
)
154-
ADD_DEPENDENCIES(MSI configure_mysql_server_extra)
155115

156116
IF(TARGET remove_INFO_SRC_from_bs)
157117
ADD_DEPENDENCIES(MSI remove_INFO_SRC_from_bs)

packaging/WiX/CPackWixConfig.cmake

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ IF("${VERSION}" MATCHES "-ndb-")
4141
ClusterManagementServer
4242
ClusterManagementClient
4343
ClusterJ
44-
nodejs
4544
)
4645
ENDIF()
4746

@@ -156,9 +155,4 @@ IF("${VERSION}" MATCHES "-ndb-")
156155
SET(CPACK_COMPONENT_CLUSTERJ_GROUP "Devel")
157156
SET(CPACK_COMPONENT_CLUSTERJ_DISPLAY_NAME "ClusterJ Java Connector for Cluster")
158157
SET(CPACK_COMPONENT_CLUSTERJ_DESCRIPTION "Installs ClusterJ")
159-
160-
#Subfeature "nodejs"
161-
SET(CPACK_COMPONENT_NODEJS_GROUP "Devel")
162-
SET(CPACK_COMPONENT_NODEJS_DISPLAY_NAME "nodejs Connector for Cluster")
163-
SET(CPACK_COMPONENT_NODEJS_DESCRIPTION "Installs nodejs connector")
164158
ENDIF()

packaging/WiX/configure_file.cmake

Lines changed: 0 additions & 23 deletions
This file was deleted.

packaging/WiX/create_msi.cmake.in

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
SET(LINK_STATIC_RUNTIME_LIBRARIES "@LINK_STATIC_RUNTIME_LIBRARIES@")
2424
SET(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@")
2525
SET(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
26-
SET(CANDLE_EXECUTABLE "@CANDLE_EXECUTABLE@")
27-
SET(LIGHT_EXECUTABLE "@LIGHT_EXECUTABLE@")
26+
SET(WIX_EXECUTABLE "@WIX_EXECUTABLE@")
2827
SET(CMAKE_COMMAND "@CMAKE_COMMAND@")
2928
SET(CMAKE_CFG_INTDIR "@CMAKE_CFG_INTDIR@")
3029
SET(VERSION "@VERSION@")
@@ -90,13 +89,11 @@ LIST(APPEND EXCLUDE_FILES
9089
)
9190

9291
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
93-
SET(Win64 " Win64='yes'")
92+
SET(Win64 " Bitness='always64'")
9493
SET(Platform x64)
95-
SET(PlatformProgramFilesFolder ProgramFiles64Folder)
9694
ELSE()
9795
SET(Platform x86)
98-
SET(PlatformProgramFilesFolder ProgramFilesFolder)
99-
SET(Win64 " Win64='no'")
96+
SET(Win64 " Bitness='always32'")
10097
ENDIF()
10198

10299
SET(ENV{VS_UNICODE_OUTPUT})
@@ -399,36 +396,27 @@ SET(CPACK_WIX_INCLUDES
399396
ENDFOREACH()
400397

401398

402-
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in
403-
${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs)
399+
CONFIGURE_FILE(
400+
${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in
401+
${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs
402+
@ONLY)
404403

405-
SET(EXTRA_CANDLE_ARGS)
406-
IF("$ENV{EXTRA_CANDLE_ARGS}")
407-
SET(EXTRA_CANDLE_ARGS "$ENV{EXTRA_CANDLE_ARGS}")
408-
ENDIF()
409-
410-
SET(EXTRA_LIGHT_ARGS)
411-
IF("$ENV{EXTRA_LIGHT_ARGS}")
412-
SET(EXTRA_LIGHT_ARGS "$ENV{EXTRA_LIGHT_ARGS}")
413-
ENDIF()
414-
415-
FILE(REMOVE mysql_server.wixobj)
416-
EXECUTE_PROCESS(
417-
COMMAND ${CANDLE_EXECUTABLE} -ext WixUtilExtension mysql_server.wxs ${EXTRA_CANDLE_ARGS}
418-
RESULT_VARIABLE CANDLE_RESULT
419-
)
420-
421-
IF(CANDLE_RESULT)
422-
MESSAGE(FATAL_ERROR "ERROR: can't run candle")
404+
SET(EXTRA_WIX_ARGS)
405+
IF("$ENV{EXTRA_WIX_ARGS}")
406+
SET(EXTRA_WIX_ARGS "$ENV{EXTRA_WIX_ARGS}")
423407
ENDIF()
424408

425409
EXECUTE_PROCESS(
426-
COMMAND ${LIGHT_EXECUTABLE} -ext WixUIExtension -ext WixUtilExtension
427-
mysql_server.wixobj -out ${CMAKE_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME}.msi
428-
${EXTRA_LIGHT_ARGS}
429-
RESULT_VARIABLE LIGHT_RESULT
410+
COMMAND ${WIX_EXECUTABLE} build
411+
-arch ${Platform}
412+
-ext WixToolset.UI.wixext -ext WixToolset.Util.wixext ${EXTRA_WIX_ARGS}
413+
-out ${CMAKE_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME}.msi
414+
mysql_server.wxs
415+
RESULT_VARIABLE WIX_RESULT
416+
OUTPUT_VARIABLE WIX_OUTPUT
417+
ERROR_VARIABLE WIX_OUTPUT
430418
)
431419

432-
IF(LIGHT_RESULT)
433-
MESSAGE(FATAL_ERROR "ERROR: can't run light")
420+
IF(WIX_RESULT)
421+
MESSAGE(FATAL_ERROR "ERROR: can't run WiX: ${WIX_RESULT} ${WIX_OUTPUT}")
434422
ENDIF()

0 commit comments

Comments
 (0)