我正在使用Wix 3.11并尝试有条件地设置我的软件包的安装权限。
我想做的是:
<?if Privileged = 0 ?>
<Package InstallerVersion="405" Compressed="yes" InstallScope="perUser" InstallPrivileges="limited" />
<?else ?>
<Package InstallerVersion="405" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" />
<?endif ?>
然而,这不起作用。安装时,总是选择具有提升权限的人 此外,我尝试在.wxi文件中创建一个变量并将其设置为:
.wxi文件:
<?if Privileged = 0 ?>
<?define myScope = "perUser" ?>
<?define myPrivileges = "limited" ?>
<?else?>
<?define myScope = "perMachine" ?>
<?define myPrivileges = "elevated" ?>
<?endif?>
.wxs文件:
<Package InstallerVersion="405" Compressed="yes" InstallScope="$(var.myScope)" InstallPrivileges="$(var.myPrivileges)" />
但同样的情况再次发生:总是选择提升的特权 我在2台不同的机器上进行了测试,非管理员用户。
我没有在互联网上找到任何解决方案,所以我想知道:是否可以有条件地设置套餐?
感谢您的时间。
编辑:
我找到了AdminUser属性,这似乎正是我所需要的。 我相应地更改了我的wxs文件以设置AdminUser:
<Package InstallerVersion="500" Compressed="yes" />
<SetProperty Id="MSIUSEREALADMINDETECTION" Value="1" Sequence="first"/>
<SetProperty Id="ALLUSERS" Value="2" Sequence="first"/>
<SetProperty Id="MSIINSTALLPERUSER" Value="1" Sequence="first"> <![CDATA[NOT AdminUser]]> </SetProperty>
在阅读安装的log file时,我注意到在MSIUSEREALADMINDETECTION之前设置了AdminUser,并且设置MSIUSEREALADMINDETECTION不会触发AdminUser的重置。
我将我的SetProperties安排到我能找到的最先前的操作,这是&#34; FindRelatedProducts&#34;,但是在此之前甚至设置了AdminUser(实际上在installExecuteSequence和installUISequence之前),我无法获得MSIUSEREALADMINDETECTION设置第一
我认为无法确定您是在管理员还是标准会话下运行安装 如果有人知道解决方案,请随时提出建议。
感谢Michael和Brian的时间。