我在维护模式下遇到安装条件问题,只有在具有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选择“修复”,它会按预期工作。
答案 0 :(得分:4)
记录修复以查看AppSearch正在设置的属性。还要考虑在您的条件中加上“或已安装”,以便条件仅适用于初始安装期间。没有什么比无法安装产品B更令人讨厌的了,因为产品A首先被卸载了。
更新:好日志和坏日志中的AppSearch表现完全相同。问题是您没有在属性元素上放置@Secure属性,因此未在SecureCustomProperties属性中列出。如果你查看日志,你会发现一行“忽略不允许的财产”。欲了解更多信息,请阅读: