Создание установщика с помощью CMake + CPack + Wix

Резюме:

Как сгенерировать установщик Wix с помощью CMake/CPack?

Подробности:

Я пытаюсь сгенерировать установщик из проекта, использующего Wix, но, видимо, cmake/cpack настаивают на использовании nsis, например, из репозитория 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\basic\MY_BUILD\PACKAGE.vcxproj]

Так что похоже, что он настаивает на использовании генератора NSIS.


person Fernando Gonzalez Sanchez    schedule 20.04.2015    source источник


Ответы (3)


Просто добавьте следующую строку перед включением (CPack)

установить (CPACK_GENERATOR WIX)

person TingQian LI    schedule 21.02.2018

Вы также можете сделать это:

cmake ..
cpack -G WIX

По умолчанию CPack использует генератор NSIS в Windows.

person Andrey G.A    schedule 13.07.2015

Хорошо, я нашел, как

Указав генератор CPack, например

cmake -DCPACK_GENERATOR=WIX ..

Затем работает

msbuild package.vcxproj 

Вызывает wix, как этот отрывок из журнала (и кучу .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.

Я узнал об этом аргументе (CPACK_GENERATOR), проверив CPackConfig.cmake, сгенерированный исходным cmake.

person Fernando Gonzalez Sanchez    schedule 20.04.2015