首先,大家好!
我想创建一个不提示DOS窗口的批处理文件的快捷方式。为此,我看到以下命令非常有效:
wscript.exe invisible.vbs my_batch_file.bat
我的问题是我想通过CMake和NSIS使用此命令创建快捷方式。我的问题是,似乎我不能在CMakeLists.txt文件中的以下命令中的“wscript.exe”之后给出多个参数:
list(APPEND CPACK_NSIS_CREATE_ICONS "
CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\link.lnk' 'wscript.exe' 'invisible.vbs my_batch_file.bat' icon.ico 0 SW_SHOWMINIMIZED
")
并且“invisible.vbs”和“my_batch_file.bat”之间的空间没有像我预期的那样被解析(即作为空格......)。任何人都可以帮我这个吗?非常感谢每一条评论(方法或代码提示)!
答案 0 :(得分:0)
我现在对NSIS一无所知,但这可能是正确方向的暗示:
list(APPEND CPACK_NSIS_CREATE_ICONS "
CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\link.lnk' 'wscript.exe' 'invisible.vbs my_batch_file.bat' icon.ico 0 SW_SHOWMINIMIZED
")
也许,那是' invisible.vbs my_batch_file.bat'必须是' invisible.vbs my_batch_file.bat' - 从'之后的空格开始。
编辑:
您是否尝试过使用"
代替'
?
答案 1 :(得分:0)
我使用“NSIS.template.in”文件解决了我的问题,我在其中创建了以下宏
!macro CreateShortcutBat link bat_file
CreateShortCut '$SMPROGRAMS\\$STARTMENU_FOLDER\\${link}' 'wscript.exe' 'invisible.vbs ${bat_file}' icon.ico 0 SW_SHOWMINIMIZED
!macroend
然后在我的CMakeLists.txt文件中,我只需要以这种方式调用宏:
list(APPEND CPACK_NSIS_CREATE_ICONS "
!insertmacro CreateShortcutBat 'Shortcut.lnk' 'my_batch_file.bat'
")
答案 2 :(得分:0)
This short article显示了如何做你想做的事情。它使用 CPACK_NSIS_CREATE_ICONS_EXTRA 和 CPACK_NSIS_DELETE_ICONS_EXTRA 来实现结果。这里使用的示例有两个命令行参数,因此您应该能够使用简单修改的代码。它还显示了如何自行清理并让卸载程序为您删除快捷方式。