枚举在不同的计算机上不相等
本文关键字:计算机 不相等 枚举 | 更新日期: 2023-09-27 18:32:56
我正在使用 Wix Bootstrapper
枚举 LaunchAction
:
Microsoft.Tools.WindowsInstallerXml.Bootstrapper.LaunchAction
在我的机器上,当我这样做时,不同的笔记本电脑和虚拟机:
var m_state = LaunchAction.Install;
然后后来:
if(m_state == LaunchAction.Install)
它过去了。在调试器中查找m_state的值为"安装"。但是在我的同事机器上,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。
切换 WiX 版本时,必须重建引导程序应用程序和捆绑包。它们是源兼容的,但 BA 不能保证二进制兼容。