我使用InnoSetup进行了安装任务,我不太确定如何正确使用。
情况如下: 1个innosetup自定义页面,包含一些文本框和复选框。基本上包含targeturl和windows servicename。可能会更晚。 需要将此自定义信息传递给两个不同的app.config文件。
现在问题,怎么办? 我的第一个目的是使用[Run]段和一堆参数,例如: [跑] 文件名:{app} \ MyApp.exe;参数:/ install;标志:runminimized
但我不知道如何将自定义数据传递给应用程序。
也许可以创建一些环境变量并以这种方式传递数据? 也许可以创建一个具有必要值的临时文件? 也许应该在安装期间在加载的dll中执行此操作而不是安装后?
非常感谢任何建议。
答案 0 :(得分:2)
并且谢谢。对于“@ DenverCoder9”:
基本上我最终做了什么,这在Inno-setup的捆绑示例中几乎是一致的。错过了Inno-setup允许XML操作(通过MSXML)的事实,这允许我: 包括一个示例配置文件(app.config.sample)。 加载示例配置文件 使用自定义表单中收集的数据修改它。 将它保存到正确的位置。
[Files]
...
Source: ..\UpdateService\UpdateService\Server\bin\Release\UpdateService.exe.config; DestDir: {app}; Permissions: users-modify; Flags: comparetimestamp onlyifdoesntexist; AfterInstall: MyAfterInstall;
[Code]
procedure MyAfterInstall();
var XMLDoc : Variant;
var RootNode : Variant;
begin
// if(FLAG_UPDATE_SERVICE_CONFIG) then begin
XMLDoc := CreateOleObject('MSXML2.DOMDocument');
XMLDoc.async := False;
XMLDoc.resolveExternals := False;
XMLDoc.load(ExpandConstant(CurrentFilename));
RootNode := XMLDoc.documentElement;
...
end;
end;
这样做的另一个好处是,我有一个示例文件可供需要手动修改应用程序的人员使用。
答案 1 :(得分:1)
您是否可以使用命令行参数将Inno Setup安装程序中输入的值传递给外部应用程序?
外部应用程序(我假设是.NET)可以处理从命令行到配置文件(即“App.config”)的值。 .NET应用程序的Main(string[] args)
方法可以检查命令行参数值。按照建议使用[Run]
部分,并将这些值作为参数传递(使用Parameters
)。