Я использую генератор пакета NSIS в CMake 2.8.1 для распределения спокойного приложения. Все хорошо работает... кроме использования CPACK_CREATE_DESKTOP_LINKS
создать настольную ссылку на приложение.
Я просмотрел источник CMake (включая свое собственное определение типа инсталляции "начальной загрузки" для окон), и насколько я могу сказать, что делаю то же самое.
Вот соответствующий раздел моего CMakeLists.txt
файл.
set(CPACK_GENERATOR NSIS)
set(CPACK_NSIS_PACKAGE_NAME "${EWS_APP_NAME}")
set(CPACK_NSIS_DISPLAY_NAME "${EWS_APP_NAME}")
set(CPACK_NSIS_CONTACT "${EWS_EMAIL}")
set(CPACK_PACKAGE_EXECUTABLES "${EXE_TARGET_NAME}" "${EWS_APP_NAME}")
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CMAKE_PROJECT_NAME}-${EWS_VERSION}")
# this works
set(CPACK_NSIS_MENU_LINKS "${EWS_WEBSITE}" "Homepage for ${EWS_APP_NAME}")
# this doesn't
set(CPACK_CREATE_DESKTOP_LINKS "${EXE_TARGET_NAME}")
# Icon in the add/remove control panel. Must be an .exe file
set(CPACK_NSIS_INSTALLED_ICON_NAME bin\\\\${EXE_TARGET_NAME}.exe)
set(CPACK_NSIS_URL_INFO_ABOUT "${EWS_WEBSITE}")
set(CPACK_NSIS_HELP_LINK "${EWS_WEBSITE}")
Любые идеи или отладка подсказок ценятся!
попробуйте добавить это в свой CMakeLists.txt
]:
set (CPACK_NSIS_MODIFY_PATH "ON")
Я думаю, что после лицензии следует добавить страницу, которая дает возможность добавить каталог установки к пути, и добавить возможность создания ссылок на рабочий стол.
Один из обходных путей, который я нашел, заключается в использовании CPACK_NSIS_EXTRA_INSTALL_COMMANDS
и CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS
для вставки команд создания/удаления ссылок напрямую.
set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
CreateShortCut \\\"$DESKTOP\\\\${EWS_APP_NAME}.lnk\\\" \\\"$INSTDIR\\\\bin\\\\${EXE_TARGET_NAME}.exe\\\"
")
set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
Delete \\\"$DESKTOP\\\\${EWS_APP_NAME}.lnk\\\"
")
Я бы предпочел использовать более общую (и кроссплатформенную?) настройку CPACK_CREATE_DESKTOP_LINKS
, так что любые последующие идеи будут приняты с благодарностью. Но это работает в крайнем случае.
Скорее всего, вам не нужно указывать $ {EXE_TARGET_NAME} в кавычках, поскольку это строка.