首页 > 解决方案 > Wix 64 位应用程序中的 32 位 COM

问题描述

我正在使用 Wix 为应用程序创建安装程序,虽然它是 64 位,但使用一些较旧的 32 位 COM。我发现我必须将组件标记为 Win64="no" 才能使该 COM 的注册反映在 Wow6432Node 中。

但是,如果我这样做,我将无法再将该组件安装在与我的应用程序的其余部分相同的目录中,因为我在构建时收到以下错误消息:

Light0204:ICE80:这个 32BitComponent MyCom.dll 使用 64BitDirectory APPLICATIONFOLDER

我不想将我的 COM 安装在 32 位文件夹中;我宁愿把我的应用程序放在一起。但是,如果我删除组件上的 Win64="no" 标记,则该组件无法正确注册并且我无法使用它。那么,我可以将我的 32 位 COM 与我的 64 位应用程序的其余部分一起安装,并且仍然让 Wix 进行注册而不诉诸自我注册吗?

标签: comwix32bit-64bit

解决方案


处理此问题的典型方法是创建 32 位 MSI 和 64 位 MSI,然后使用引导程序(例如 WiX Burn)封装它们。

我倾向于主要进行 .NET 开发,通常我只会为 32 位而不是 AnyCPU 编译应用程序。具有 64 位进程的 AFAIK 使用 32 位 COM 服务器很棘手。

从 64 位进程调用 32 位代码


推荐阅读