2011-10-25 34 views
2

ご協力いただければ幸いです。WIX MSI - 財産優先優先度

私はこのWIXインストーラを書いて、私たちのサーバーにWebアプリケーションをインストールするためのMSIを取得しています。

私のアプリでは、私はこのPROPERTY - "WEBDIR"を持っています。このプロパティは後で自分のコードでDirectory Idとして使用します。

私は3つの方法でこのプロパティを設定しました。あなたが静かなモードでのmsiexecを呼び出す際に渡されたプロパティとして

  1. (メソッド 'A')。 IniFileSearchから

    msiexec /quiet /i My.msi WEBDIR="C:\Path1" /l*v InstallationLog.log 
    
  2. (メソッド 'B'):これと同様:[\パス1 Cとしてここに設定]。 MySetup.iniと呼ばれるC:\ Windowsのiniファイルがあります。ここでキーWebsitesDirは値C:\ Path2を解決します。 [C:\ Path2としてここに設定]:

    <Property Id="WEBDIR"> 
        <IniFileSearch Id="WebsitesDirIni" Name="MySetup.ini" Section="InstallLocations" Key="WebsitesDir" Type="raw"/> 
    </Property> 
    
  3. (方法 'C')デフォルトのディレクトリ構造を使用します。次のように:

    <Directory Id="TARGETDIR" Name="SourceDir"> 
        <Directory Id="WEBDIR" Name="Path3"> 
        </Directory> 
    </Directory> 
    

を次のように、それが現在動作する方法がある: - すべてが設定されている場合メソッド 'A'、 'B' と 'C' :[\ PATH3 Cとしてここでそれを設定します]プロパティ値、Bが優先されます。 - メソッド 'A'と 'C'だけがプロパティ値を設定すると、 'C'が優先されます。

私が望むのは、優先順位を 'A'に設定できることです。 'A'ならば 'B'、それ以外なら 'C'。

これは可能ですか?

答えて

0

いいえ、これはできません。順序を制御したい場合は、immediate custom actionが最適です。インストーラプロパティを設定する必要があるため、カスタムアクションはインストールハンドルを受け取る必要があります(Win32 DLLが推奨されます)。

通常の状況下では、インストーラがこの順に使用する:

  1. をコマンドライン値はプロパティ
  2. を初期化するディレクトリ列がコマンドライン値を上書きし、最初のフォルダパスを設定します。このパスは、後で原価計算アクション(CostFinalize)によって変更することができます。
  3. 検索は最初のフォルダパスを上書きしますが、原価計算アクションによって上書きされる可能性があります。