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

时间:2016-09-15 21:56:09

标签: xml inno-setup schtasks.exe

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

在Inno安装脚本中

[Run]
Filename: "schtasks.exe"; 
    \Parameters: "/create /XML ""{app}\Schedule.xml"" /TN AppStart"
<{1>}文件中的

Schedule.xml

这可以正常工作。但是我想将XML文件中的应用程序路径设置为<Actions Context="Author"> <Exec> <Command>"C:\Program Files\MyApp\MyApp.exe"</Command> </Exec> </Actions> ,因为用户可以在任何位置安装它。如何在设置的运行时更改XML文件中的此路径?

1 个答案:

答案 0 :(得分: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对象(参见How to read and write XML document node values?)。