【问题标题】:Manage shortcuts arguments for NSIS CreateShortCut method via CMake通过 CMake 管理 NSIS CreateShortCut 方法的快捷方式参数
【发布时间】:2014-11-07 15:14:48
【问题描述】:

首先向大家问好!

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

【问题讨论】:

    标签: batch-file cmake nsis


    【解决方案1】:

    我现在对 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' - 在 '.

    编辑: 你试过用"代替'吗?

    【讨论】:

    • 感谢您的尝试,但不幸的是,这两种可能性都没有产生正确的 nsis 代码行...我会继续搜索
    【解决方案2】:

    我使用“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'
        ")
    

    【讨论】:

    • 当然可以。我只是省略了完整路径,因为这条线已经足够长了。不过感谢您的关注。
    【解决方案3】:

    This short article 准确地展示了如何做你想做的事。它使用 CPACK_NSIS_CREATE_ICONS_EXTRA 和 CPACK_NSIS_DELETE_ICONS_EXTRA 来实现结果。那里使用的示例有两个命令行参数,因此您应该能够通过简单的修改来使用那里的代码。它还展示了如何自行清理并让卸载程序也为您删除快捷方式。

    【讨论】:

      猜你喜欢
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 2019-10-02
      • 2020-01-27
      • 1970-01-01
      相关资源
      最近更新 更多