2017-05-28 28 views
1

は、私が持っていると仮定します。Inno Setup - 同じファイルをカバーするワイルドカードと特定の "Source" - どの命令が優先されますか?

[Files] 
Source: *.*; DestDir: {app}; Flags: recursesubdirs 
Source: address.txt; DestDir: {app}; Flags: onlyifdoesntexist 

優先され、動作が定義されていますか?私は、内部ロジックに応じて2つのオーバーライドの特定または最後のどちらかがリストされていると思いますが、彼の動作が定義されていればいいと思います。


、それらの両方が実行されます場合は(答えが示すように)、私の代わりのようなものを使用する必要があります:

[Files] 
Source: *.*; DestDir: {app}; Flags: recursesubdirs; Excludes: "address.txt" 
Source: address.txt; DestDir: {app}; Flags: onlyifdoesntexist 

答えて

1

(ほとんど)何も特別な出来事があります。

両方のルールは、他のルールと同様に定義順に処理されます。

  • 最初にaddress.txtが最初のマスクルールによってインストールされます。

  • 次に、2番目の特定のルールが処理されます(ただし、この具体的なケースでは、onlyifdoesntexistフラグのため何もしません)。

2017-05-28 15:39:52.678 -- File entry -- 
2017-05-28 15:39:52.678 Dest filename: C:\Program Files\My Program\address.txt 
2017-05-28 15:39:52.678 Time stamp of our file: 2017-05-28 15:39:20.000 
2017-05-28 15:39:52.678 Installing the file. 
2017-05-28 15:39:52.678 Successfully installed the file. 
2017-05-28 15:39:52.678 -- File entry -- 
2017-05-28 15:39:52.678 Dest filename: C:\Program Files\My Program\address.txt 
2017-05-28 15:39:52.678 Time stamp of our file: 2017-05-28 15:39:20.000 
2017-05-28 15:39:52.678 Dest file exists. 
2017-05-28 15:39:52.678 Skipping due to "onlyifdoesntexist" flag. 

だけ特別なことは、これら2つのルールで起こっては、Inno Setupのは、それが一度だけファイルを保存するので、同じファイル(address.txt)は、二回と呼ばれていることを認識していることですインストーラ。

Compressing: C:\source\address.txt 

をしかし、それは、同じファイルを参照するすべてのルール(でも、2つの特定の規則)で起こる:

あなたは、コンパイラの出力にaddress.txtための1つのレコードのみが表示されます。したがって、ワイルドカード対特定のルールではありません。あなたdecompile the installer、ワイルドカードルールは、実際にコンパイラによって個別のルールに展開されていることがわかります


は、だから、これを効果的に取得する:

[Files] 
Source: "???\address.txt"; DestDir: "{app}"; MinVersion: 0.0,5.0; 
Source: "???\address.txt"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: onlyifdoesntexist 
+0

をありがとう - 私は、除外を用いた実験を試してみて、正しいと答えをマークします後で – Tom

+0

あなたのために特別な処理を必要とする場合は、[はい、 'Excludes'パラメータは、必要とされています特定のファイル。私は私の答えにいくつかの情報を追加しました。 –

+0

ありがとうございます - 私は今それを働かせようとしています。現在、Inno Seup Compilerは、Excludesを "Excludes"に置き換えないと報告しています。 ソース:.. .. \ compiled \ data \ quick-lists \ *。*; DestDir:{アプリ} \データ\クイックリスト。フラグ:recursesubdirs; "address.txt"は除外されます。 ソース:.. \ .. \ compiled \ data \ quick-lists \ address.txt; DestDir:{アプリ} \データ\クイックリスト。フラグ:onlyifdoesntexist; – Tom

関連する問題