【问题标题】:WiX/MSI: Where is the feature action value 5 documented?WiX/MSI:功能操作值 5 记录在哪里?
【发布时间】:2014-12-20 13:25:56
【问题描述】:

我在 2 年前创建了一个 WiX 文件,其中包含对功能操作值 5 的检查。

值 5 应该表示重新安装/修复,但我找不到任何关于它的 WiX/msi 文档。我发现的页面多达 4 个,例如 MSDN

  <!-- always install if feature will be installed/reinstalled local -->
  <Custom  Action="MyInstallAction" After="InstallFiles">
    <![CDATA[(&ca_feature=3) OR (&ca_feature=5)]]> <!--  <<< HERE  -->
  </Custom>

  <!-- remove if feature is going from local to absent -->
  <Custom  Action="MyUninstallAction" After="RemoveRegistryValues">
    <![CDATA[(&ca_feature=2) AND (!ca_feature=3)]]> 
  </Custom>
  <Custom  Action="UninstallUsbBusDriver" After="RemoveRegistryValues">
    <![CDATA[(&ca_feature=2) AND (!ca_feature=3)]]>
  </Custom>

我开始怀疑是否曾经使用过值 5,但我又一次发现我很难相信我无缘无故地把它放在那里。

【问题讨论】:

  • 我怀疑当可以添加或删除功能时,它可能在维护模式下具有 INSTALLSTATE_DEFAULT 值,并且当功能不会发生任何事情时,功能操作被设置为默认值。这当然是一种猜测,但将其设置为任何其他值都会误导,因为它表明该功能将会发生什么。

标签: wix windows-installer wix3.6


【解决方案1】:

有趣。这是我能找到的最接近的文档。就像您提到的,在Conditional Statement Syntax 上,记录了值-11234。相关的Examples of Conditional Statement Syntax 没有任何 5 的实例。

MsiGetFeatureState 的文档有一个来自msi.h 的常量列表。如果你有这个,最好看看那里,但是a third party copy 列出了值为 5 的INSTALLSTATE_DEFAULT。这个值在KB 884468 上得到证实,但只显示在MsiQueryProductState 上;同样,MsiConfigureProduct 上也提到了这个常量。

因此,简而言之,值 5 听起来很可能仅在产品的上下文中有效,而在功能或组件的上下文中无效。

【讨论】:

  • 感谢您提供更多信息,很可能是 INSTALLSTATE_DEFAULT。在示例中,ca_feature1 是我的主应用程序的子功能,但我没有显示功能树。也许真正的问题是安装状态未设置为本地。这可能导致我目前的设置出现问题。如果您对此有任何信息,将非常受欢迎,在为此发布新的 SO 问题之前,我会自己尝试更长的时间:)
【解决方案2】:

在 Microsoft 文档页面上留下了一条评论,指出 INSTALLSTATE 为 5 是“即将重新安装/修复该功能时”。见:https://msdn.microsoft.com/en-us/library/aa368012(v=vs.85).aspx

【讨论】:

    猜你喜欢
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多