我想进行条件文件复制/安装,具体取决于{app}
位置内给定.cfg(文本)文件的内容。该文件包含一个URL,该URL如下所示:“update.website.eu”,或“update.website.com”,或“update.worldoftanks.kr”,但也可以是“update.worldoftanks.kr/” “等等,有一些可能性。所以我需要一种能够检测网址的机制,让我为每个检测到的网址安装不同的文件。
目前我有这样的例子,但是因为我不是高级程序员(我只知道一些基础知识或多或少),我需要有一个很好的例子。
if (CurPageID = wpPreparing) then
begin
client_ver :=
LoadValueFromXML(ExpandConstant('{app}\file.cfg'), '//info/patch_info_urls/item');
if client_ver = 'http://update.website.eu/' then
if MsgBox(ExpandConstant('{cm:AreYouSure}'),mbConfirmation,MB_OKCANCEL) = IDCANCEL then
Result:=False;
end;
file.cfg
的示例:
<?xml version="1.0" encoding="UTF-8"?>
<info version="3.1">
<!-- ... -->
<patch_info_urls>
<item>http://update.website.eu/</item>
</patch_info_urls>
</info>
无论如何,我想在[Files]
部分使用它,是否有可能从那里触发它,在[Files]
中调用某个程序?
我做了很少的尝试,但它总是在编译过程中给我一些不匹配的错误。
PS。忽略MsgBox
,这只是一个例子,我不会显示那样的东西。我只需要复制文件。
答案 0 :(得分:2)
[Files]
Source: "file_for_url1"; DestDir: "{app}"; Check: IsURl1
Source: "file_for_url2"; DestDir: "{app}"; Check: IsURl2
[Code]
var
ClientVer: string;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
ClientVer :=
LoadValueFromXML(ExpandConstant('{app}\file.cfg'), '//info/patch_info_urls/item');
Log(Format('Client version is %s', [ClientVer]));
end;
end;
function IsUrl1: Boolean;
begin
Result := (ClientVer = 'http://update.website.eu/');
end;
function IsUrl2: Boolean;
begin
Result := (ClientVer = 'http://update.website.com/');
end;