2017-06-08 5 views
0

Ist es möglich, einen NSIS-Skript von CMake enthalten, den CPack zusammen mit NSIS verwendet? Es scheint, dass ich nur ein paar Befehle begrenzt bin (doc), aber einig Befehle lassen vermuten, dass es eine Möglichkeit ist, den ganzen NSIS-Skript, besonders umfassen:Einschließlich NSIS Skript in CMake

CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS, 
CPACK_NSIS_EXTRA_INSTALL_COMMANDS, 
CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS 

Allerdings, wenn ich versuche, diese Befehle zu nennen :

SET(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "!include extra_preinstall.nsh") 

Nichts passiert. (Ohne /NONFATAL wirft einen Fehler, so vermutlich das Skript nicht gefunden werden kann.)

grundlegende Funktionalität prüfen:

SET(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "MessageBox MB_OK \\\"Hello world!\\\"") 

tut nichts mit dem Installer.

Warum scheint keine Hallo Welt-Taste? Warum wird die Skriptdatei nicht gefunden (obwohl ich sie auf jede Ebene der CMake-Hierarchie gesetzt habe)?

+0

Vor Jahren geändert ich nur den NSIS-Skript, das die Funktionen, die ich benötigen, um hinzuzufügen mit CMake kommt. – drescherjm

+0

Ich schaute mir das an, was mein Gefühl bestätigte, dass es einen Weg geben sollte, ein externes NSIS-Skript einzuschließen. – ViliX64

+0

Ich nenne mein Ersatz NSIS-Skript als 'NSIS.template.in' und steckte es in die lokalen Module Ordner, über den Befehl' Liste (APPEND CMAKE_MODULE_PATH $ {PROJECT_SOURCE_DIR}/CMake/extern/Module) ' – drescherjm

Antwort

0

Preinstall bedeutet nicht, dass es vor dem Abschnitt installiert ausgeführt ist, so dass Sie tatsächlich „installieren“ klicken müssen, dann wird der Befehl ausgeführt wird. Das Gleiche gilt für die Installation und Deinstallation.

Was einschließlich externe Skripte: mit absolutem Pfad einschließlich löst alles. Wenn der absolute Pfad nicht verfügbar ist, kann er leicht mit CMake-Tools abgerufen werden.

Verwandte Themen