2017-03-28 9 views
0

セクションでFileSearch結果を条件として使用する方法。 私はこのような何かを取得したい:私はなぜ知らないが、プロパティのWiXはCONFIG_XML_EXISTSを評価したくないWixプロパティ評価

<Property Id=\"CONFIG_XML_EXISTS\"> 
     <DirectorySearch Id="CheckForConfigXml" Path="[INSTALLDIR]\">' 
      <FileSearch Id="ConfigXmlSearch" Name="config.xml" /> 
     </DirectorySearch> 
    </Property> 
    ... 
    <Component Id="c_DefaultConfig.xml" Guid="{1AAB0AFD-B763-4A55-8585-B0AD4D8CE23C}"> 
     <File Id="f_default_config.xml" 
       Name="default-config.xml" 
       Source="$(var.SourceRoot)\config.xml"/> 
     <Condition>CONFIG_XML_EXISTS</Condition> 
    </Component> 

を。

答えて

0

インストールが非常に早い時期に行われるため、INSTALLDIRに値が設定されていない可能性が最も高いです。新鮮なインストールを行っているのかアップグレードしているのかは言わなかったので、どこから価値が得られるのかは分かりません。

私もそう、そのソースコードの目的は1そこが既に存在する場合、ファイルのインストールを防ぐことは明らかであることを指摘したい:

  1. INSTALLDIRは、アプリケーションであることが判明した場合あなたのファイルがインストールされているフォルダ(通常はプログラムファイル)には、通常、この場所が変更される可能性があるので、ファイルが期待どおりになることは明らかではありません。

  2. ファイルの上書きルールは、受信したファイルが変更されたデータファイルを上書きするのを防ぎます(変更日時の作成日)。その設定ファイルが変更された場合、上書きされず、チェックする必要もありません。あなたは私のインストーラは、ターゲットにはそのようなファイルが存在しない場合にのみ、ディレクトリを(インストール)ファイルのconfig.xmlを作成する必要があります」と言う。そのようなファイルが存在する場合は、私のインストーラは、名前template.xmlを持つファイルを作成する必要がありますあなたのコメントで

"おそらく、これを行う最も簡単な方法は、インストールが完了した後のアプリケーションや、すべてのファイルがインストールされた後のカスタムアクションの可能性があります。 INSTALLDIRは予測できないため、インストール前にこれを行う良い方法はないようです。私はXMLファイルを(例えば)User's Application Dataにインストールすることでこのような問題を解決しました。ファイルがインストールされた後、アプリケーションやカスタムアクションはファイルが存在するかどうかを確認して、ユーザーのアプリケーションデータから取得します。アプリケーションデータ。

+0

1.評価ステージ(ファイルをコピーする直前)を指定するにはどうすればよいですか?2.上のコードは例です。私の現在のプロジェクトは本当に外的なものかを確認する必要があります – Edward

+0

一般的には、それらが存在するかどうかを確認するためにインストールすること - 標準のファイル置換ルールを利用するため、例外についての詳細が役立ちます。また、新規インストールまたはアップグレードを行っているかどうか、またはINSTALLDIRをユーザーが変更できるかどうかはわかりませんので、テストが無意味になります。 – PhilDW

+0

一般的なインストーラでは、私がやろうとしていることはしませんが、とにかく....考え方です:インストール)ディレクトリ。そのようなファイルが存在する場合、インストーラは 'template.xml'という名前のファイルファイルを作成する必要があります。 – Edward