WiX/MSI: Where is the feature action value 5 documented?

1.2k Views Asked by At

I have created a WiX file over 2 years ago which contains a check for a feature action value of 5.

The value 5 should indicate reinstall/repair, but I can't find any WiX/msi documentation on it. The pages I've found go up to 4, like on 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>

I'm starting to wonder if the value 5 is ever used, but then again I find it hard to believe that I put it in there without a reason.

2

There are 2 best solutions below

1
On BEST ANSWER

Interesting. Here's the closest documentation I can find. Like you mention, on Conditional Statement Syntax, the values -1, 1, 2, 3, and ,4 are documented. The related Examples of Conditional Statement Syntax doesn't have any instances of 5.

The documentation for MsiGetFeatureState has a list of constants from msi.h. If you have that around, it would be better to look there, but a third party copy lists INSTALLSTATE_DEFAULT with the value of 5. This value is corroborated on KB 884468, but only shown with MsiQueryProductState; similarly the constant is mentioned on MsiConfigureProduct.

So, in short, it sounds likely that the value 5 is only valid in the context of a product, and is not valid in the context of a feature or component.

0
On

There was a comment left on a Microsoft documentation page indicating that an INSTALLSTATE of 5 is "when the feature is about to be reinstalled/repaired". See: https://msdn.microsoft.com/en-us/library/aa368012(v=vs.85).aspx