Installation 在使用UAC的系统中进行维修时,WiX安装条件失败

Installation 在使用UAC的系统中进行维修时,WiX安装条件失败,installation,wix,uac,Installation,Wix,Uac,我在维护模式下的安装条件方面遇到问题,这种情况只发生在带有UAC的系统中。我正在进行注册表搜索,以设置安装条件中使用的两个属性。这在初始安装期间有效,但当我尝试进行修复或修改功能选择时,安装条件失败,并且我收到失败安装条件的消息 这就是我的wix源代码的样子: <Product Id="MyProduct" ... > <Package InstallPrivileges="elevated" ... /> <Condition Message="This

我在维护模式下的安装条件方面遇到问题,这种情况只发生在带有UAC的系统中。我正在进行注册表搜索,以设置安装条件中使用的两个属性。这在初始安装期间有效,但当我尝试进行修复或修改功能选择时,安装条件失败,并且我收到失败安装条件的消息

这就是我的wix源代码的样子:

<Product Id="MyProduct" ... >
  <Package InstallPrivileges="elevated" ... />
  <Condition Message="This installtion requires product X or Y. 
                      Setup will now quit.">
    <![CDATA[(MYPROPERTY1 OR MYPROPERTY2)]]>
  </Condition>

  <Property Id="MYPROPERTY1">
    <RegistrySearch Id="MySearch1"
                    Root="HKLM"
                    Key="Software\Company\ProductX"
                    Name="Installed"
                    Type="raw"
                    Win64="no"/>
  </Property>
  <Property Id="MYPROPERTY2">
    <RegistrySearch Id="MySearch2"
                    Root="HKLM"
                    Key="Software\Company\ProductY"
                    Name="Installed"
                    Type="raw"
                    Win64="no"/>
  </Property>

  <!-- ... Features and components and stuff ... -->
</Product>

我假设UAC阻止了我的注册表搜索,但我认为将InstallPrivileges设置为“提升”会在修复过程中导致UAC提示。我从来没有收到UAC提示,只是维修失败了。如果我禁用UAC,那么修复工作将按预期进行。我是不是还遗漏了什么


编辑:我应该指出,只有当我从ARP中选择“更改”,然后选择“修复”时,故障才会发生。如果我直接从ARP中选择“修复”,它将按预期工作。

记录修复以查看AppSearch设置的属性。还可以考虑将“安装”或“安装”在您的条件,以便条件只适用于最初的安装。没有比这更烦人的了,因为产品A是先卸载的,所以无法安装产品B

更新:好日志和坏日志中的AppSearch的行为完全相同。问题是您没有将@Secure属性放在属性元素上,因此这些元素没有列在SecureCustomProperties属性中。如果你查看日志,你会发现一行写着“忽略不允许的属性”。欲了解更多信息,请阅读:


克里斯托弗,谢谢你的建议。我可以通过在安装条件中添加“或已安装”来消除这个bug,尽管我仍然想知道当UAC处于活动状态时是什么导致了不同的行为。我比较了无UAC和无UAC的日志,并且在这两个实例中都设置了所有属性,但是,当UAC处于活动状态时,LaunchConditions返回3,并且没有解释差异。日志显示正在使用的属性具有正确的值,因此故障完全是个谜。查找您的地址@deploymentengineering.com。如果你有什么发现,请告诉我,我将不胜感激。今晚我会试着看一看。