0

我有一个特定于安装我的产品的帮助方法的 .NET 库 (dll),它以 .NET 4 为目标。

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

运行生成的 MSI 时,当 WIX 运行时(在 2.0 运行时上运行)尝试加载我的 4.0 dll 时,出现“BadImageFormat”异常。

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

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

有人对我如何让它运行有建议吗?

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

4

2 回答 2

1

我不知道您如何在 wixsharp 中进行此设置,但在 Visual Studio WiX 中有一个用于 C#/DTF 自定义操作的项目模板。它自动包含一个 CustomAction.config,您可以使用它来放入 SupportedRuntime 元素以实现您想要做的事情。

看看WIX 和自定义操作

于 2015-09-11T12:37:08.750 回答
0

BadImageFormat 异常意味着您正在尝试在调用序列中的某处进行跨架构调用,从 32 位到 64 位,反之亦然。这可能是获得不正确框架的结果,但不一定!

于 2015-09-11T19:10:01.723 回答