如何在Wix中有条件地设置安装权限

时间:2017-08-02 09:20:57

标签: wix wix3.11

我正在使用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的时间。

0 个答案:

没有答案