2017-01-15 12 views
2

与えられた.cfg(テキスト)ファイル内にある内容に応じて、条件付きファイルのコピー/インストールを行いたいと考えています。{app}の場所です。そのファイルにはURLが含まれており、そのURLは「update.website.eu」、または「update.website.com」または「update.worldoftanks.kr」ですが、「update.worldoftanks.kr/」でもかまいません"など、いくつかの可能性があります。だから私は、URLを検出し、検出されたURLごとに異なるファイルをインストールさせるメカニズムが必要です。Innoセットアップ条件付きファイルコピー

現在、私はこのようなことを例として挙げていますが、私は高度なプログラマーではないので(私はいくつかの基本を多かれ少なかれ知っています)、良い例が必要です。 file.cfg

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; 

例:

とにかく
<?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、それは単なる例です、私はそのような何も表示されません。私はファイルだけをコピーする必要があります。

答えて

2

Check parameterを使用します。

[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; 
+0

ありがとうございました。私はこれを実装しようとしましたが、コンパイルを渡すことはできません。この場合、関数IsUrl1である、列1の 'Identifier expected'エラーが表示されます。 問題がある場合は、私はユニコード版を使用しています。私はまた、文字列をansistringに変更しようとしましたが、エラーはまだそこにあります。 –

+0

「列1」とはどういう意味ですか?どの行にエラーが表示されますか? –

+0

私の答えのコードをそのまま使用しても、私はエラーは発生しません(もちろん、私のコードの前に 'LoadValueFromXML'関数が定義されていると仮定します)。 Inno Setupを使用する5.5.9 Unicode。 –