我正在使用Wix Bootstrapper
Enum LaunchAction
:
Microsoft.Tools.WindowsInstallerXml.Bootstrapper.LaunchAction
在我的机器上,当我这样做时,使用不同的笔记本电脑和虚拟机:
var m_state = LaunchAction.Install;
然后是:
if(m_state == LaunchAction.Install)
它过去了。查看调试器m_state的值为Install。但是在我的同事机器上,if语句没有通过。查看调试器中的值完全相同。我的想法是他可能有WixBootstrapper
DLL的过时/更新版本,但实际上不应该有任何效果,因为它会在编译时使用该DLL。
编辑:
将它们作为int
值进行比较,在我的机器和笔记本电脑上,这两个值均为5
。我的同事机器m_state
为5
,LaunchAction.Install
为4
。
编辑2:
所以我们认为正在发生的事情是他在他的机器上的DLL来自Wix工具集3.9,而其他机器使用的是3.10。在3.9中LaunchAction.Install
是4,而在3.10中它是5。
自定义引导程序将此DLL作为有效内容文件。我们认为发生的是,添加的有效负载文件是3.10版本,但最初编译时使用的是3.9。导致比较:
if(m_state == 4)
答案是假的,因为m_state的值使用3.10版本,所以它读取为5.
答案 0 :(得分:0)
切换WiX版本时,必须重建引导程序应用程序和软件包。它们与源兼容的但是BA不能保证二进制兼容。