对于管理员和普通用户(不同的安装目录等),我的安装应该有不同的行为。同时它适用于XP,Vista和Windows 7.
安装程序正如我对XP和Vista所期望的那样工作,但它无法在Windows 7上检测到管理员用户。
我将MSIUSEREALADMINDETECTION设置为1以确保仅为管理员用户设置了Privileged。
<Property Id="MSIUSEREALADMINDETECTION" Value="1" />
作为管理员用户,以下条件在Vista上不会失败,但在Vista上失败
<Condition Message="Not Privileged">Privileged</Condition>
这是测试项目(我知道它不完整:)
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="0b241708-eb30-4bd9-9906-983f228ee2a6" Name="wixTest01" Language="1033" Version="1.0.0.0" Manufacturer="wixTest01" UpgradeCode="1093efb2-75d0-499a-8050-99adfc8ae7c2">
<Package InstallerVersion="200" Compressed="yes" />
<UI>
<UIRef Id="WixUI_InstallDir" />
</UI>
<Property Id="MSIUSEREALADMINDETECTION" Value="1" />
<Condition Message="Privileged">Privileged</Condition>
</Product>
</Wix>
更新:
我刚刚发现了这个:
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Admin-check-in-Win-2008-td4557002.html
我在Vista上使用了内置管理员帐户,在Windows 7上使用了创建的管理员(管理员组成员)。我认为这些帐户是相同的,但它们不是。
内置管理员将其属性Privileged设置为1,而Administrators组的成员则不会。
似乎无法检测管理员组的成员?
答案 0 :(得分:3)
如您链接到的主题中所述,这是启用UAC时的标准行为。在UAC同意提示下,Administrators组的成员仅按需获得提升的权限;在其他时候,他们几乎是标准用户(或多或少)。
答案 1 :(得分:2)
不要担心设置MSIUSEREALADMINDETECTION
属于AdminUser
属性。
我使用以下代码:
<Condition Message="Privileged">
<![CDATA[Installed OR Privileged]]>
</Condition>
但是,由于Vista和Windows 7具有“肩负”身份验证(请参阅Using Windows Installer with UAC MSDN文档),因此用户在InstallUISequence期间没有提升权限,您将遇到问题。
例如,标准用户运行安装程序,只有当他们点击“安装”按钮(带有UAC防护罩)时,系统会提示他们输入管理凭据,因此如果管理员没有知道将在安装过程中提供或不提供它们。