Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 通过CMake管理NSIS CreateShortCut方法的快捷方式参数_Batch File_Cmake_Nsis - Fatal编程技术网

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

Batch file 通过CMake管理NSIS CreateShortCut方法的快捷方式参数,batch-file,cmake,nsis,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 '$

首先,大家好

我想创建一个不提示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”之间的空格未按我的预期进行解析(即作为空格…)。有人能帮我吗?非常感谢您的每一条评论(方法或代码提示)

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

它使用CPACK_NSIS_CREATE_ICONS_EXTRA和CPACK_NSIS_DELETE_ICONS_EXTRA来实现结果。这里使用的示例有两个命令行参数,因此您应该能够通过简单的修改来使用那里的代码。它还显示了如何在您完成后进行清理,并让卸载程序删除短代码谢谢你的尝试,但不幸的是,这两种可能性都没有产生正确的nsis代码行…我会继续搜索是的,当然。我只是省略了完整的路径,因为行已经足够长了。但是谢谢你的注意。