web-dev-qa-db-ja.com

コマンドラインから機能を選択する方法

これは素朴な質問かもしれません。コマンドラインからの機能の選択をサポートするように、.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/iinstall.msi FEATURE = B」と入力すると、「Feature1」と「Feature3」がインストールされます。この場合、「A」は機能1と2にマップされます。 「B」は機能1および3にマップされます。

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

31
Morgan Cheng

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]
31
CheGueVerra

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

msiexec /i install.msi ADDLOCAL=Feature1,Feature2

または

msiexec /i install.msi ADDLOCAL=Feature2,Feature3

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

51
Wim Coenen

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

10
Rob Mensching