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 属性,但似乎暗示您只能选择一个功能。实际上,您可以通过用逗号分隔它们来选择多个功能,如下所示:

msiexec /i install.msi ADDLOCAL=Feature1,Feature2

或者

msiexec /i install.msi ADDLOCAL=Feature2,Feature3

另一个提示:您可以通过使用orca打开 msi 来发现这些功能名称。当您想使用这些技巧创建安装第三方 msi 包的某些功能的引导程序时,这非常有用。

于 2009-01-21T01:52:51.373 回答
32

我会将 Feature1、Feature2 和 Feature3 更改为组件,然后声明如下内容:

<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 回答