在Inno Setup中创建cmd快捷方式以执行批处理文件



我使用批处理脚本start.bat运行我的程序。我为此创建了一个快捷方式,如下所示:

[Icons]
Name: "{group}{#MyAppName}"; Filename: "{app}start.bat"; 
IconFilename: "{app}{#MyAppIcoName}"; Tasks: desktopicon
Name: "{userdesktop}{#MyAppName}"; Filename: "{app}start.bat"; 
IconFilename: "{app}{#MyAppIcoName}"; Tasks: desktopicon

为了允许用户将批处理文件的快捷方式拖到任务栏(Windows 10),我必须将快捷路径从E:SoftMyProgramstart.bat修改为cmd /c E:SoftMyProgramstart.bat。但是我不能改变路径到Filename: "cmd /c {app}start.bat";,它不起作用。什么好主意吗?

cmd /c E:SoftMyProgramstart.bat

以上命令以/c E:SoftMyProgramstart.bat为参数执行cmd.exe程序。

在Inno SetupIcons部分中,使用Parametersparameter指定参数:

[Icons]
Name: "{userdesktop}{#MyAppName}"; Filename: "cmd"; 
Parameters: "/c E:SoftMyProgramstart.bat"; 
IconFilename: "{app}{#MyAppIcoName}"; Tasks: desktopicon
  • 虽然不是硬编码cmd,你应该使用{cmd}常数。
  • 同样,我假设你应该使用{app}而不是E:SoftMyProgram
  • 将路径用双引号括起来,以防包含空格。
  • 在某些情况下,批处理文件可能被设计为仅在从其目录执行时才工作。添加WorkingDir参数
[Icons]
Name: "{userdesktop}{#MyAppName}"; Filename: "{cmd}"; 
Parameters: "/c ""{app}start.bat"""; WorkingDir: "{app}" 
IconFilename: "{app}{#MyAppIcoName}"; Tasks: desktopicon

Martin建议https://stackoverflow.com/a/69083021/13116250以下是修改脚本的解决方案:

Name: "{group}{#MyAppName}"; Filename: {cmd}; Parameters: "/c cd /d ""{app}"" && launch.bat"; IconFilename: "{app}{#MyAppIcoName}"; Tasks: desktopicon
Name: "{userdesktop}{#MyAppName}"; Filename: {cmd}; Parameters: "/c cd /d ""{app}"" && launch.bat"; IconFilename: "{app}{#MyAppIcoName}"; Tasks: desktopicon

你应该先cd到app目录,然后运行批处理文件。