2010-11-12 17 views
2

我在维护模式下遇到安装条件问题,这种情况只发生在使用UAC的系统中。我正在执行注册表搜索以设置安装条件中使用的一些属性。这在初始安装过程中起作用,但是当我尝试修复或修改特征选择时,安装条件失败,并且我收到失败安装条件的消息。在UAC系统的维修过程中,WiX安装条件失败

这是我的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中选择“修复”,它会按预期工作。

回答

4

记录修复以查看AppSearch设置的属性。同时考虑在您的条件下放置“或已安装”,以便条件仅适用于初始安装期间。没有更烦人的不能安装产品B,因为产品A首先被卸载。

更新:在良好的日志和错误日志中的AppSearch行为完全一样。问题是您没有将@Secure属性放在您的属性元素上,因此未列在SecureCustomProperties属性中。如果您查看日志,您会发现一行显示“忽略不允许的财产”。欲了解更多信息,请参阅:

Reasons why your setup may fail on Windows Vista

+0

克里斯托弗,感谢您的建议。我能够通过在安装条件中添加“OR Installed”来摆脱该错误,但我仍然想知道当UAC处于活动状态时导致不同行为的原因。我比较无-UAC VS UAC的日志,以及所有性质在这两种情况下被设置,然而,当UAC是活性LaunchConditions没有解释为差异返回3。日志显示正在使用的属性具有正确的值,所以失败是一个完全谜。 – 2010-11-13 00:46:21

+0

如果你想将日志发送给我,我可以看它了。 – 2010-11-13 01:18:44

+0

追查你的地址@deploymentengineering.com。如果您发现任何问题,请告诉我,我将不胜感激。 – 2010-11-16 16:34:38

相关问题