为什么Burn会升高?

时间:2016-10-06 13:48:39

标签: wix burn

为什么我的perUser捆绑包会提升?

我的链中有3个包。这是一个日志片段:

[0BD8:0324][2016-10-06T15:23:57]i201: Planned package: NetFx461Web, state: Present, default requested: Present, ba requested: Present, execute: None, rollback: None, cache: No, uncache: No, dependency: None
[0BD8:0324][2016-10-06T15:23:57]i201: Planned package: ClientMSI, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: Uninstall, cache: Yes, uncache: No, dependency: None
[0BD8:0324][2016-10-06T15:23:57]i201: Planned package: Dummy, state: Absent, default requested: Present, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: None
[0BD8:0324][2016-10-06T15:23:57]i299: Plan complete, result: 0x0
[0BD8:0324][2016-10-06T15:23:57]i300: Apply begin
[0BD8:0324][2016-10-06T15:23:57]i010: Launching elevated engine process.
[0BD8:0324][2016-10-06T15:24:03]i011: Launched elevated engine process.
[0BD8:0324][2016-10-06T15:24:04]i012: Connected to elevated engine.
[00B4:0B98][2016-10-06T15:24:04]i358: Pausing automatic updates.

正如您在日志中看到的那样,只应安装ClientMSI包。它是dual purpose package

<Property Id="ALLUSERS" Value="2" />
<Property Id="MSIINSTALLPERUSER" Value="1" />

用户可以在我的自定义刻录UI(WPF)中进行选择如果他希望msi安装为perUserperMachine。根据用户的选择,我这样做:

<MsiProperty Name='MSIINSTALLPERUSER' Value='1' />  <!--perUser-->
<MsiProperty Name='MSIINSTALLPERUSER' Value='' />   <!--perMachine-->

该软件包总是被安装perUser(我通过添加一个我设置了InstallScope="perUser"的虚拟msi软件包强制这个。这使得软件包perUser在编译时。

如果用户选择perUser安装,则会安装一个已安装的软件包(ClientMSI)perUser,并且软件包也会安装perUser。没有理由升高!

我的猜测是,刻录假设,ClientMSI是perMachine个包,因为ALLUSERS设置为2,这会导致烧录。有人可以证实吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

编译捆绑包时,您应该收到类似的警告:

  

捆绑包需要每个计算机或每个用户的程序包。 MSI“{0}”ALLUSERS属性设置为“2”,在安装时可能会从每个用户更改为每台计算机。 Bundle将假定包是per- {1}并且如果更改将无法正常工作。如果可能,请删除具有Id ='ALLUSERS'的Property并改为使用Package / @ InstallScope属性。

WiX目前在编译时决定MSI的范围,因此WiX可能决定它是每台机器。