36

これは素朴な質問かもしれません。コマンド ラインから選択した機能をサポートするように、.WXS ファイルを手動で編集する必要があります。

たとえば、.WXS ファイルには 3 つの機能があります。

<Feature Id="AllFeature" Level='1'>

    <Feature Id="Feature1" Level='1'> </Feature>

    <Feature Id="Feature2" Level='1'> </Feature>

    <Feature Id="Feature3" Level='1'> </Feature>

</Feature>

今、コマンドラインから機能を選択したいと思います。たとえば、「msiexec /i install.msi FEATURE=A」と入力すると、「Feature1」と「Feature2」がインストールされます。「msiexec/i install.msi FEATURE=B」と入力すると、「Feature1」と「Feature3」がインストールされます。この場合、「A」は機能 1 と 2 に対応します。「B」は機能 1 と 3 に対応します。

WIXでこれを達成する方法は?

4

3 に答える 3

58

受け入れられた回答では、ADDLOCAL プロパティについて既に言及されていますが、選択できる機能は 1 つだけであることを暗示しているようです。次のようにカンマで区切ることで、実際に複数の機能を選択できます。

msiexec /i install.msi ADDLOCAL=Feature1,Feature2

また

msiexec /i install.msi ADDLOCAL=Feature2,Feature3

もう 1 つのヒント: orcaで msi を開くと、これらの機能名を見つけることができます。これは、これらのトリックを使用して、サードパーティの msi パッケージの特定の機能をインストールするブートストラップを作成する場合に非常に便利です。

于 2009-01-21T01:52:51.373 に答える
32

Feature1、Feature2、Feature3をComponentsに変更してから、次のように宣言します。

<Feature Id="FEATUREA" Title="Super" Level="1" >
  <ComponentRef Id="Component1" />
  <ComponentRef Id="Component2" />
</Feature>

<Feature Id="FEATUREB" Title="Super1" Level="1" >
  <ComponentRef Id="Component1" />
  <ComponentRef Id="Component3"/>
</Feature>

次に、FeatureAまたはFeatureBのいずれかをインストールします

msiexec /i install.msi ADDLOCAL=[FEATUREA | FEATUREB]
于 2008-10-29T14:06:49.257 に答える
11

機能のインストール状態を制御できるプロパティがいくつかあります。この MSI SDK ドキュメントとそこからのリンクを確認してください: http://msdn.microsoft.com/en-us/library/aa367536(VS.85).aspx

于 2008-10-29T15:37:39.293 に答える