在 Inno Setup 中运行 schtask.exe 之前使用安装路径创建 XML 任务文件

Posted

技术标签:

【中文标题】在 Inno Setup 中运行 schtask.exe 之前使用安装路径创建 XML 任务文件【英文标题】:Create XML task file with installation path before running schtask.exe in Inno Setup 【发布时间】:2017-01-24 01:26:11 【问题描述】:

我正在尝试使用 XML 文件中的计划任务创建 Inno Setup。计划任务是:我的应用程序需要以用户登录开始。

在 Inno 设置脚本中:

[Run]
Filename: "schtasks.exe"; 
    \Parameters: "/create /XML ""app\Schedule.xml"" /TN AppStart"

Schedule.xml 文件中:

<Actions Context="Author">
    <Exec>
        <Command>"C:\Program Files\MyApp\MyApp.exe"</Command>
    </Exec>
</Actions>

这可以正常工作。但我想将 XML 文件中的应用程序路径设置为app\MyApp.exe,因为用户可以将它安装在任何位置。如何在安装程序的运行时更改 XML 文件中的此路径?

【问题讨论】:

【参考方案1】:

使用/TR 开关,而不是使用XML 来指定要运行的路径。

[Run]
Filename: "schtasks.exe"; \
    Parameters: "/Create /TR ""app\MyApp.exe"" /TN AppStart"

如果您出于某种原因坚持使用 XML,则必须动态创建文件。

[Run]
Filename: "schtasks.exe"; \
    Parameters: "/Create /XML ""tmp\Schedule.xml"""; \
    BeforeInstall: CreateScheduleXML
[Code]

procedure CreateScheduleXML;
var
  FileName: string;
  AppPath: string;
begin
  FileName := ExpandConstant('tmp\Schedule.xml');
  AppPath := ExpandConstant('app\MyApp.exe');
   Create file here 
end;

您可以使用SaveStringsToUTF8File 等简单函数或使用MSXML2.DOMDocument COM 对象(请参阅Edit installed XML file according to user preferences in Inno Setup)创建文件。

【讨论】:

以上是关于在 Inno Setup 中运行 schtask.exe 之前使用安装路径创建 XML 任务文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 Inno Setup 设置之前运行文件

在 Inno Setup 安装中运行另一个安装程序

Inno Setup

Inno Setup 安装程序运行时命名检查问题

inno setup里在[run]中如何使用install实现静默安装?

Inno Setup安装程序单例运行