枚举在不同的机器上不相同?

时间:2016-02-02 14:27:33

标签: c# enums wix

我正在使用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_state5LaunchAction.Install4

编辑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.

1 个答案:

答案 0 :(得分:0)

切换WiX版本时,必须重建引导程序应用程序和软件包。它们与源兼容的但是BA不能保证二进制兼容。