创建 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 到应用程序目录,然后 运行 一个批处理文件。
我使用批处理脚本 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. 而不是硬编码 - 同样,我假设您应该使用
{app}
. 而不是 - 将路径用双引号括起来,以防包含空格。
- 在某些情况下,批处理文件可能设计为仅在从其目录执行时才有效。为此添加
WorkingDir
parameter.
cmd
E:\Soft\MyProgram
[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 到应用程序目录,然后 运行 一个批处理文件。