为什么我的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安装为perUser
或perMachine
。根据用户的选择,我这样做:
<MsiProperty Name='MSIINSTALLPERUSER' Value='1' /> <!--perUser-->
<MsiProperty Name='MSIINSTALLPERUSER' Value='' /> <!--perMachine-->
该软件包总是被安装perUser
(我通过添加一个我设置了InstallScope="perUser"
的虚拟msi软件包强制这个。这使得软件包perUser
在编译时。
如果用户选择perUser
安装,则会安装一个已安装的软件包(ClientMSI)perUser
,并且软件包也会安装perUser
。没有理由升高!
我的猜测是,刻录假设,ClientMSI是perMachine
个包,因为ALLUSERS
设置为2
,这会导致烧录。有人可以证实吗?
提前感谢您的帮助!
答案 0 :(得分:2)
编译捆绑包时,您应该收到类似的警告:
捆绑包需要每个计算机或每个用户的程序包。 MSI“{0}”ALLUSERS属性设置为“2”,在安装时可能会从每个用户更改为每台计算机。 Bundle将假定包是per- {1}并且如果更改将无法正常工作。如果可能,请删除具有Id ='ALLUSERS'的Property并改为使用Package / @ InstallScope属性。
WiX目前在编译时决定MSI的范围,因此WiX可能决定它是每台机器。