2015-09-11 68 views
0

但是,“主”WIX项目的目标是针对.NET Framework 4(dll)。 NET 3.5(如文档中所述)(意味着它运行在2.0运行时)。它具有调用上述4.0 dll的自定义操作。调用.NET 4程序集的自定义动作

运行生成的MSI时,当WIX运行时(运行于2.0运行时)试图加载我的4.0 dll时,我得到“BadImageFormat”异常。

如果我可以直接访问.NET 3.5 .exe,我可以说服它通过在其app.config中使用该技巧来加载4.0 dll。

但是,WIX运行时加载(通过msiexec),据我可以通过Interop从堆栈跟踪中知道。

有没有人有我如何得到这个运行的建议?

PS。我也试着直接将“主要”Wix项目的目标设为4.0,而不是3.5,但那时我的设置对话框将无法显示。

+0

C#的关键......可爱:) –

回答

1

我不知道如何在wixsharp中安装此设置,但在Visual Studio中,WiX拥有用于C#/ DTF自定义操作的项目模板。它会自动包含一个CustomAction.config,您可以使用它来放置SupportedRuntime元素以实现您正在尝试执行的操作。

看看WIX and Custom Actions

+0

伟大的资源,我会研究它。谢谢! –

0

的BadImageFormat例外意味着你在你的调用序列的某个地方尝试跨架构的呼叫,32位到64位,反之亦然。这可能是获得错误框架的结果,但不一定!

+0

这也意味着您正在尝试混合使用CLR版本。我以前一直在用InstallUtil CA来看这个,其中一些编译为1.1,一些编译为2.0。 –