windows-installer - 在 CMake + CPack + NSIS 中创建 Windows 桌面图标

标签 windows-installer cmake nsis

我在 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/

相关文章:

c# - 安装完成后如何运行批处理脚本?

Wix 修改现有的 ini 文件

cmake - 如何将 cmake 指向库的特定目录?

visual-studio-2010 - WiX Burn Bootstrapper 的替代品? (可以使用 InstallShield LE Bootstrap 吗?)

windows - 如何检测静默安装?

deployment - 如何在 NSIS 脚本的文件中保存 DetailPrint 命令消息?

c# - Visual Studio 2010 安装项目中的 "Runtime Implementation from ASSEMBLE NAME"是什么? (vs 2015 中的安装程序扩展设置项目)

mysql - MySQL .zip 和 .msi 下载的区别

CMake 将子目录库构建为静态库

mysql - 如何禁用使用 cmake 的第三方库 (mysql) 的共享对象 (.so) 的生成