[英]Generating an installer using CMake + CPack + Wix
摘要:
如何使用CMake / CPack生成Wix安装程序?
细节:
我试图从使用Wix的项目中生成安装程序,但显然,cmake / cpack坚持使用nsis,例如,来自repo https://github.com/ngladitz/cmake-wix-testsuite我选择了第一个示例“basic”文件夹,其中包含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:可能它不是在你的路径中,或者不在你的路径中[C:\\ src \\ Samples \\ CPack \\ cmake-wix-testsuite-master \\ ba sic \\ MY_BUILD \\ PACKAGE.vcxproj]
所以看起来它坚持使用NSIS发生器。
只需在包含之前添加以下行(CPack)
设置(CPACK_GENERATOR WIX)
你也可以这样做:
cmake ..
cpack -G WIX
默认情况下,CPack在Windows上使用NSIS Generator。
好的,我找到了
通过指定CPack生成器
cmake -DCPACK_GENERATOR=WIX ..
然后跑
msbuild package.vcxproj
从日志(以及一堆.wixobj
文件)中调用这个提取的.wixobj
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
我发现了这个ARG( CPACK_GENERATOR
)通过检查CPackConfig.cmake
由原始cmake的生成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.