5

概括:

如何使用 CMake/CPack 生成 Wix 安装程序?

细节:

我正在尝试从使用 Wix 的项目中生成安装程序,但显然,cmake/cpack 坚持使用 nsis,例如,从 repo https://github.com/ngladitz/cmake-wix-testsuite 我选择了第一个示例“基本”文件夹,其中包含 CMakeLists.txt 的以下内容

add_executable(hw hw.cpp)
install(TARGETS hw DESTINATION bin)

install(FILES hw.cpp DESTINATION src)

set(CPACK_WIX_UPGRADE_GUID "F9AAAAE2-D6AF-4EA4-BF46-B3E265400CC7")

include(CPack)

生成cmake后:

cd <basic-root-folder>
mkdir MY_BUILD
cd MY_BUILD
cmake ..

我试图运行生成的 package.vcxproj

msbuild package.vcxproj

并得到了错误

“C:\src\Samples\CPack\cmake-wix-testsuite-master\basic\MY_BUILD\PACKAGE.vcxproj”(默认目标)(1)->(PostBuildEvent 目标)-> EXEC:CPack 错误:找不到 NSIS 编译器makensis:可能没有安装,或者不在您的 PATH [C:\src\Samples\CPack\cmake-wix-testsuite-master\ba sic\MY_BUILD\PACKAGE.vcxproj]

所以看起来它坚持使用 NSIS 生成器。

4

3 回答 3

5

只需在 include(CPack) 之前添加以下行

设置(CPACK_GENERATOR WIX)

于 2018-02-21T09:17:22.123 回答
4

你也可以这样做:

cmake ..
cpack -G WIX

默认情况下,CPack 在 Windows 上使用 NSIS 生成器。

于 2015-07-13T12:35:31.467 回答
3

好的,我找到了方法

通过指定 CPack 生成器,如

cmake -DCPACK_GENERATOR=WIX ..

然后运行

msbuild package.vcxproj 

像这样从日志中提取(和一堆.wixobj文件)调用 wix

PostBuildEvent:
  setlocal
  cd C:\src\Samples\CPack\cmake-wix-testsuite-master\basic\MY_BUILD.wix
  if %errorlevel% neq 0 goto :cmEnd
  C:
  if %errorlevel% neq 0 goto :cmEnd
  "C:\Program Files (x86)\CMake 3.1.3\bin\cpack.exe" -C Debug --config ./CPackC
  onfig.cmake
  if %errorlevel% neq 0 goto :cmEnd
  :cmEnd
  endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
  :cmErrorLevel
  exit /b %1
  :cmDone
  if %errorlevel% neq 0 goto :VCEnd
  :VCEnd
  CPack: Create package using WIX
  CPack: Install projects
  CPack: - Install project: Project
  CPack: Create package
  CPack: - package: C:/src/Samples/CPack/cmake-wix-testsuite-master/basic/MY_BU
  ILD.wix/Project-0.1.1-win32.msi generated.
FinalizeBuildStatus:
  Deleting file "Win32\Debug\PACKAGE\PACKAGE.tlog\unsuccessfulbuild".
  Touching "Win32\Debug\PACKAGE\PACKAGE.tlog\PACKAGE.lastbuildstate".
Done Building Project "C:\src\Samples\CPack\cmake-wix-testsuite-master\basic\MY
_BUILD.wix\PACKAGE.vcxproj" (default targets).


Build succeeded.
    0 Warning(s)
    0 Error(s)

.wix 源文件也生成在C:\src\Samples\CPack\cmake-wix-testsuite-master\basic\MY_BUILD.wix\\_CPack_Packages\win32\WIX

CPACK_GENERATOR通过检查CPackConfig.cmake原始 cmake 生成的,我发现了这个 arg ( )。

于 2015-04-20T20:20:40.547 回答