通过CMake管理NSIS CreateShortCut方法的快捷方式参数

时间:2014-11-07 15:14:49

标签: batch-file cmake nsis

首先,大家好!

我想创建一个不提示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”之间的空间没有像我预期的那样被解析(即作为空格......)。任何人都可以帮我这个吗?非常感谢每一条评论(方法或代码提示)!

3 个答案:

答案 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 来实现结果。这里使用的示例有两个命令行参数,因此您应该能够使用简单修改的​​代码。它还显示了如何自行清理并让卸载程序为您删除快捷方式。