2015-04-20 2 views
1

Résumé:Génération d'un programme d'installation en utilisant CMake + cpack + Wix

Comment générer installateur Wix avec CMake/cpack?

Détails:

Je suis en train de générer un programme d'installation à partir d'un projet qui utilise Wix, mais apparemment, CMake/cpack insiste utiliser nsis, par exemple, de la mise en pension https://github.com/ngladitz/cmake-wix-testsuite j'ai choisi le premier exemple " dossier de base » avec le contenu suivant pour 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) 

Après avoir généré le cMake:

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

J'ai essayé d'exécuter le package.vcxproj généré avec

msbuild package.vcxproj 

et a obtenu l'erreur

« C: \ src \ Samples \ cpack \ cmake-Wix-testsuite maître \ base \ MY_BUILD \ PAQUET. vcxproj "(cible par défaut) (1) -> (Cible PostBuildEvent) -> EXEC: Erreur CPack: Impossible de trouver le compilateur NSIS makensis: probablement il n'est pas ins agrandi, ou pas dans votre PATH [C: \ src \ Exemples \ CPack \ cmake-wix-testsuite-master \ ba sic \ MY_BUILD \ PACKAGE.vcxproj]

On dirait qu'il insiste pour utiliser le générateur NSIS.

Répondre

1

Ok, j'ai trouvé comment

En spécifiant le générateur de cpack comme

cmake -DCPACK_GENERATOR=WIX .. 

ensuite en cours d'exécution

msbuild package.vcxproj 

Invoque Wix comme cet extrait du journal (et un tas de .wixobj fichiers)

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) 

également les fichiers source de .wix sont générés dans C: \ src \ Samples \ cpack \ cmake-Wix-testsuite maître \ base \ MY_BUILD.wix \ _CPack_Packages \ win32 \ WIX

j'ai découvert cette arg (CPACK_GENERATOR) en inspectant CPackConfig.cmake généré par le cmake d'origine.

1

Vous pouvez aussi le faire:

cmake .. 
cpack -G WIX 

Par défaut, cpack utilise le générateur NSIS sous Windows.

1

Il suffit d'ajouter la ligne suivante avant de l'inclure (cpack)

set (CPACK_GENERATOR WIX)