我在 CMake 2.8.1 中使用 NSIS 包生成器来分发 Qt 应用程序。一切正常...除了使用 CPACK_CREATE_DESKTOP_LINKS
创建应用程序的桌面链接。
我浏览了CMake source (包括它自己的Windows“引导”安装定义),据我所知,我正在做同样的事情。
这是我的 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}")
感谢任何想法或调试技巧!
最佳答案
我正在使用以下宏将程序文件菜单的链接添加到桌面
macro(prepareNSIS_Link linkName appName params)
#prepare start menu links
LIST(APPEND CPACK_NSIS_CREATE_ICONS_EXTRA " CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${linkName}.lnk' '$INSTDIR\\\\bin\\\\${appName}.exe' '${params}'")
LIST(APPEND CPACK_NSIS_DELETE_ICONS_EXTRA " Delete '$SMPROGRAMS\\\\$START_MENU\\\\${linkName}.lnk'")
#prepare desktop links
LIST(APPEND CPACK_NSIS_CREATE_ICONS_EXTRA " CreateShortCut '$DESKTOP\\\\${linkName}.lnk' '$INSTDIR\\\\bin\\\\${appName}.exe' '${params}'")
LIST(APPEND CPACK_NSIS_DELETE_ICONS_EXTRA " Delete '$DESKTOP\\\\${linkName}.lnk'")
endmacro()
为
[installFolder]/bin/app.exe -some -parameters
创建链接称之为:prepareNSIS_Link("My application" "app" "-some -parameters")
设置好所有链接后,用新行替换分号:
string (REPLACE ";" "\n" CPACK_NSIS_CREATE_ICONS_EXTRA "${CPACK_NSIS_CREATE_ICONS_EXTRA}")
string (REPLACE ";" "\n" CPACK_NSIS_DELETE_ICONS_EXTRA "${CPACK_NSIS_DELETE_ICONS_EXTRA}")
关于windows-installer - 在 CMake + CPack + NSIS 中创建 Windows 桌面图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2640760/