我有一个XML文件,其中包含一些标签,如DLL文件的名称。如何在Inno Setup中仅根据条件(外部配置文件)安装文件
我想要一个Inno Setup脚本代码只安装XML文件中陈述的文件(我可以从XML文件中读取)。
我的问题是:我如何嵌入所有的DLL文件,并根据XML文件,我只安装所需的文件。
这个想法我只需要为每个版本提供一个XML,而且我从不更改DLL文件。
我有一个XML文件,其中包含一些标签,如DLL文件的名称。如何在Inno Setup中仅根据条件(外部配置文件)安装文件
我想要一个Inno Setup脚本代码只安装XML文件中陈述的文件(我可以从XML文件中读取)。
我的问题是:我如何嵌入所有的DLL文件,并根据XML文件,我只安装所需的文件。
这个想法我只需要为每个版本提供一个XML,而且我从不更改DLL文件。
使用Check
parameter以编程方式决定是否应安装特定文件:
[Files]
Source: "Dll1.dll"; DestDir: "{app}"; Check: ShouldInstallDll1
Source: "Dll2.dll"; DestDir: "{app}"; Check: ShouldInstallDll2
[Code]
function ShouldInstallDll1: Boolean;
begin
Result := ???;
end;
function ShouldInstallDll2: Boolean;
begin
Result := ???;
end;
如果能更好地满足你的逻辑,你也可以使用一个“检查”功能,并使用CurrentFileName
魔变,进行测试,如果正在安装的文件,是要真正安装一个:
[Files]
Source: "Dll1.dll"; DestDir: "{app}"; Check: ShouldInstallDll
Source: "Dll2.dll"; DestDir: "{app}"; Check: ShouldInstallDll
[Code]
var
FileToInstall: string;
function InitializeSetup(): Boolean;
begin
FileToInstall := ??? { 'Dll1.dll' or 'Dll2.dll' based on the XML file }
Result := True;
end;
function ShouldInstallDll: Boolean;
var
Name: string;
begin
Name := ExtractFileName(CurrentFileName);
Result := (CompareText(Name, FileToInstall) = 0);
end;
后一种方法可以使用,即使您使用通配符包文件:
[Files]
Source: "*.dll"; DestDir: "{app}"; Check: ShouldInstallDll
这是静态代码! 但如果有超过2个dll文件,我该如何处理它? – user253008
来吧,我问你,如果列表是静态的,或者如果你想嵌入所有* .dll文件。并且你回答说你有两个文件。 –
查看我更新的答案。 –
请一次提出一个问题。这里至少有三个问题1)解析XML文件。 2)基于某些配置以编程方式安装DLL。 3)嵌入所有的dll文件。 –
只有嵌入如何与他们合作 – user253008
那么你有一个嵌入DLL的列表?或者你想从某个目录自动包含所有'* .dll',然后在安装时决定要安装哪些文件? –