2017-02-01 2 views
-1

値を持っていない場合:ウィックスてSetPropertyプロパティは私のWiXインストーラに次のコードを持って

<Property Id="CONFIGPATH" /> 
<SetProperty Id="CONFIGPATH" After="AppSearch" Value="[INSTALLFOLDER]servers.cfg">NOT CONFIGPATH</SetProperty> 

意図は、ユーザーがインストーラにカスタムCONFIGPATHを渡すことです。それらがカスタムパスを渡さない場合、インストールフォルダをターゲットとするデフォルトパスが使用されます。ただし、このコードは機能しません。 SetPropertyは決して発火しません。

の場合は、代わりに私が書く:

<Property Id="CONFIGPATH" /> 
<SetProperty Id="CONFIGPATH" After="AppSearch" Value="[INSTALLFOLDER]servers.cfg"></SetProperty> 

プロパティが正しく[INSTALLFOLDER]servers.cfg(計算値)に更新されます。

これはなぜですか?

答えて

0

何らかの理由でAppSearchがインストール順序が早すぎます。シーケンス中の後の時点にコードを変更する必要があった:

<Property Id="CONFIGPATH" /> 
<SetProperty Id="CONFIGPATH" Sequence="execute" 
      Before="InstallFiles" 
      Value="[INSTALLFOLDER]servers.cfg">NOT CONFIGPATH</SetProperty> 
+2

理由はRemoveFolderExためノートに説明されて(http://wixtoolset.org/documentation/manual/v3/xsd/util/removefolderex .html)。 'MSIは、後でCostFinalizeアクションで、あなたのパッケージのディレクトリ階層のプロパティを作成しません。 'したがって、CostFinalize(AppSearchがこれより前です)の前にプロパティを設定しようとすると、INSTALLFOLDERは実際に値を持ちません。なぜなら 'servers.cfg'だけでなく' [INSTALLFOLDER] servers.cfg'になぜ更新するのですか? –

+0

@BrianSutherland 'After =" AppSearch "に設定すると、プロパティは' INSTALLFOLDER] servers.cfg'なので、 'c:/ install/servers.cfg'のようなものです。 'NOT CONFIGPATH'条件が存在するときに' SetProperty'が起動しないことだけです。これは、あなたが書いたときには驚くべきことです。ディレクトリ階層が存在する前にプロパティが設定されていても、 '[INSTALLFOLDER]'トークンは後でその値に解決されるでしょうか? – Oliver

関連する問題