【发布时间】:2013-04-11 16:27:07
【问题描述】:
我有一个带有目标 x86 安装程序的 32 位 C# 应用程序。这个应用程序可以安装在 x64 机器上运行没问题。然而,当我们在 x64 系统上安装时,来自供应商的第三方硬件(集成到软件中)现在需要使用 64 位 DLL。
目前我已经在我的项目中放置了 32 位 DLL 和 64 位 DLL。然而,目标 x86 安装程序显然不喜欢 64 位 DLL。
我是否可以创建一个解决方案,让我可以部署 64 位 DLL 和/或 32 位 DLL 并且仍然只有一个安装程序项目? (我查看了名为 Advanced Installer 的第三方软件,但我不确定这是否能帮助我实现所需的解决方案)
或者是否可以创建一个通用的安装程序项目?
注意:两个安装程序(x86 与 x64)部署是不可行的,因为我们有一个自动更新的过程,我不想重新定义。维护一个 MSI 文件对我来说很重要。
非常感谢您的建议。
【问题讨论】:
-
您可以在 NSIS 中执行此操作。
-
真正的问题是您将无法从您的 x86 应用程序中使用 x64 DLL。
-
您不能在 32 位进程中使用 64 位 DLL(反之亦然)。这部分是因为没有办法在地址空间之间进行转换。见this post on Raymond Chen's blog for details。如果要混合使用 64 位和 32 位,则必须有两个进程,以及某种进程间通信。
-
@Encryption:你测试过一次吗?编译在这里并不是一个真正的指标,特别是如果有问题的 DLL 是非托管的。
-
我可以编译很多不值得的东西。
标签: c# 32bit-64bit