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

Create shortcut to cmd to execute a batch file in Inno Setup

我使用批处理脚本 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:\Soft\MyProgram\start.bat修改为cmd /c E:\Soft\MyProgram\start.bat.但我不能只将路径更改为 Filename: "cmd /c {app}\start.bat"; 它不起作用。有什么想法吗?

cmd /c E:\Soft\MyProgram\start.bat

以上命令以/c E:\Soft\MyProgram\start.bat作为参数执行cmd.exe程序。

在 Inno Setup Icons 部分,您使用 Parameters parameter:

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

正如 Martin 所建议的那样这里有一个修改脚本的解决方案:

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 到应用程序目录,然后 运行 一个批处理文件。