Skip to content

Commit c3c7f41

Browse files
author
Tor Didriksen
committed
Bug#26680491 BUILD ON WINDOWS: ADAPT WIX SEARCH TO 32/64BIT VERSIONS OF CMAKE
When upgrading to cmake3.8 bulding of MSI packages failed because the WiX toolkit is not found. Solution: Search in ProgramFiles(x86) in addition to existing search paths.
1 parent 98c4346 commit c3c7f41

File tree

2 files changed

+54
-14
lines changed

2 files changed

+54
-14
lines changed

packaging/WiX/CMakeLists.txt

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
1+
# Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
22
#
33
# This program is free software; you can redistribute it and/or modify
44
# it under the terms of the GNU General Public License as published by
@@ -17,14 +17,42 @@ IF(NOT WIN32)
1717
RETURN()
1818
ENDIF()
1919

20-
FIND_PATH(WIX_DIR heat.exe
21-
"$ENV{ProgramFiles}/WiX Toolset V3.8/bin"
22-
)
20+
# Need an extra indirection to access ENV(ProgramFiles(x86))
21+
SET(MYENV "ProgramFiles(x86)")
22+
23+
# Look in various paths for 'heat.exe'
24+
# Different installations have different layouts.
25+
# Not really necessary to use V3.8 but keep backward compatibility just in case.
26+
IF(MSVC_VERSION LESS 1900)
27+
FOREACH(path
28+
"$ENV{ProgramFiles}/WiX Toolset V3.8"
29+
"$ENV{ProgramFiles}/WiX Toolset V3.8/bin"
30+
"$ENV{${MYENV}}/WiX Toolset V3.8"
31+
"$ENV{${MYENV}}/WiX Toolset V3.8/bin")
32+
FIND_PATH(WIX_DIR heat.exe "${path}")
33+
MESSAGE(STATUS "WIX_DIR ${WIX_DIR} path ${path}")
34+
IF(WIX_DIR)
35+
BREAK()
36+
ENDIF()
37+
ENDFOREACH()
38+
ELSE()
39+
FOREACH(path
40+
"$ENV{ProgramFiles}/WiX Toolset V3.10"
41+
"$ENV{ProgramFiles}/WiX Toolset V3.10/bin"
42+
"$ENV{${MYENV}}/WiX Toolset V3.10"
43+
"$ENV{${MYENV}}/WiX Toolset V3.10/bin")
44+
FIND_PATH(WIX_DIR heat.exe "${path}")
45+
MESSAGE(STATUS "WIX_DIR ${WIX_DIR} path ${path}")
46+
IF(WIX_DIR)
47+
BREAK()
48+
ENDIF()
49+
ENDFOREACH()
50+
ENDIF()
2351

52+
# Finally, look in environment
2453
IF(NOT WIX_DIR)
25-
FIND_PATH(WIX_DIR heat.exe
26-
"$ENV{ProgramFiles}/WiX Toolset V3.10/bin"
27-
)
54+
FIND_PATH(WIX_DIR heat.exe "$ENV{WIX}")
55+
MESSAGE(STATUS "WIX_DIR ${WIX_DIR} looked at $ENV{WIX}")
2856
ENDIF()
2957

3058
IF(NOT WIX_DIR)

packaging/WiX/ca/CMakeLists.txt

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
1+
# Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
22
#
33
# This program is free software; you can redistribute it and/or modify
44
# it under the terms of the GNU General Public License as published by
@@ -30,21 +30,33 @@ ELSE()
3030
MESSAGE(FATAL_ERROR "Unknown VS version")
3131
ENDIF()
3232

33-
INCLUDE_DIRECTORIES(${WIX_DIR}/../SDK/${WIX_MSVC_DIR}/inc)
34-
LINK_DIRECTORIES(${WIX_DIR}/../SDK/${WIX_MSVC_DIR}/lib/${WIX_ARCH})
33+
# Installed directory layout
34+
IF(IS_DIRECTORY ${WIX_DIR}/../SDK/${WIX_MSVC_DIR})
35+
SET(WIX_MSVC_DIR "${WIX_DIR}/../SDK/${WIX_MSVC_DIR}")
36+
INCLUDE_DIRECTORIES(${WIX_MSVC_DIR}/inc)
37+
# Unzipped directory layout
38+
ELSEIF(IS_DIRECTORY ${WIX_DIR}/SDK/${WIX_MSVC_DIR})
39+
SET(WIX_MSVC_DIR "${WIX_DIR}/SDK/${WIX_MSVC_DIR}")
40+
INCLUDE_DIRECTORIES(${WIX_DIR}/SDK/inc)
41+
ELSE()
42+
MESSAGE(FATAL_ERROR "Cannot find ${WIX_MSVC_DIR} directory")
43+
ENDIF()
44+
45+
# INCLUDE_DIRECTORIES(${WIX_DIR}/../SDK/${WIX_MSVC_DIR}/inc)
46+
LINK_DIRECTORIES(${WIX_MSVC_DIR}/lib/${WIX_ARCH})
3547

3648
SET(WIXCA_SOURCES CustomAction.cpp CustomAction.def)
3749

38-
MESSAGE(STATUS "Searching for wcautil in ${WIX_DIR}/../SDK/${WIX_MSVC_DIR}/lib/${WIX_ARCH}")
39-
MESSAGE(STATUS "Searching for dutil in ${WIX_DIR}/../SDK/${WIX_MSVC_DIR}/lib/${WIX_ARCH}")
50+
MESSAGE(STATUS "Searching for wcautil in ${WIX_MSVC_DIR}/lib/${WIX_ARCH}")
51+
MESSAGE(STATUS "Searching for dutil in ${WIX_MSVC_DIR}/lib/${WIX_ARCH}")
4052

4153
FIND_LIBRARY(WIX_WCAUTIL_LIBRARY
4254
NAMES wcautil
43-
PATHS ${WIX_DIR}/../SDK/${WIX_MSVC_DIR}/lib/${WIX_ARCH})
55+
PATHS ${WIX_MSVC_DIR}/lib/${WIX_ARCH})
4456

4557
FIND_LIBRARY(WIX_DUTIL_LIBRARY
4658
NAMES dutil
47-
PATHS ${WIX_DIR}/../SDK/${WIX_MSVC_DIR}/lib/${WIX_ARCH})
59+
PATHS ${WIX_MSVC_DIR}/lib/${WIX_ARCH})
4860

4961
MESSAGE(STATUS "Found: ${WIX_WCAUTIL_LIBRARY}")
5062
MESSAGE(STATUS "Found: ${WIX_DUTIL_LIBRARY}")

0 commit comments

Comments
 (0)