我发现WiX 3.8和Windows Installer存在一个奇怪的问题。
我创建了一个Outlook插件,我希望没有管理员权限的最终用户能够在他们的计算机上安装。
因此,我仔细确认了
C:\program files
等)HKEY_LOCAL_MACHINE
)在我的WiX脚本中,我确保设置ALLUSERS=0
并将我找到的所有其他相关属性设置为perUser
或limited
:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
<Product Id="*" Name="MyAddin" Language="1033" Version="1.0.0"
Manufacturer="Me" UpgradeCode="-some-guid-" Codepage="1252">
<Package InstallerVersion="200" Compressed="yes"
InstallScope="perUser"
Description="yada yada" Manufacturer="Me" Languages="1033" SummaryCodepage="1252"
InstallPrivileges="limited"
Comments="yada yada" />
<Property Id="ALLUSERS" Value="0"/>
我曾经想过会有用 - 但是在我的测试系统上,使用普通的标准用户帐户(没有管理员权限),我的安装失败了 - 有一个消息对话框告诉我没有足够的权限为所有用户安装。 ...
WTF?我特意想为这个*用户安装这个 - 而不是机器上的所有用户!
查看MSI日志,我看到了令人惊讶的事情:
MSI(c)(B0:B4)[18:08:08:543]:注意:1:2262 2:AdminProperties 3:-2147287038
MSI(c)(B0:B4)[18:08:08:543]:机器策略值'AlwaysInstallElevated'为0
MSI(c)(B0:B4)[18:08:08:543]:用户政策值'AlwaysInstallElevated'为0
MSI(c)(B0:B4)[18:08:08:543]:使用用户权限运行产品'........':未分配。
...
MSI(c)(B0:B4)[18:08:08:543]:物业变更:修改ALLUSERS属性。其当前值为“0”。它的新价值:'1'。
*为什么在地球上是Windows安装程序决定只将ALLUSERS
属性更改为1
?!?!?我从来没有告诉它!啧.......
有什么想法吗?思考?指针?
答案 0 :(得分:11)
根据ALLUSERS的MSI SDK文档,创建每用户安装的正确方法是将ALLUSERS设置为“”(下面加粗的第二个子弹):
值“0”未定义,因此您可以获得Windows Installer选择的任何未定义行为(选择以下其中一项):周/月/年/操作系统/ Service Pack。
有关此故事背后的详细信息,请参阅this blog entry。
答案 1 :(得分:1)
您的InstallScope(和InstallPrivileges)应该足以强制每个用户安装。所以我取出你的显式ALLUSERS = 0,看看你是否得到了每用户安装。如果安装尝试访问受限制的项目,您仍会收到安全错误,但这是一个单独的问题。