46

我们目前在使用 Microsoft Access Database Engine 2010 时遇到了一个重大问题。该引擎有 64 位和 32 位两种形式,这很好。但是,如果主机进程始终是 32 位,显然您需要始终安装 32 位版本。好吧,我们可以做到这一点。

我们的软件处理许多 32 位的遗留组件,其中大部分是 VB6 代码,生成 32 位汇编。因此,我们假设驱动程序也必须安装为 32 位。事实上,当我们在 64 位机器上安装 32 位驱动程序并运行我们的 32 位应用程序时,它可以正常工作。

但是,当系统上安装了 Office 2010 64 位时,问题就开始了。相信我,我们试图让用户知道 64 位 Office 在很大程度上是不必要的,但无济于事。随着安装了 64 位版本的计算机下线,当我们的软件出现问题时,我们无法跟上支持请求。要么是 64 位 Office 破坏了我们的安装,要么我们的安装破坏了他们的 Office 版本,但这两种方式都不是很好。另一个问题是,非旧版软件有时会安装 64 位驱动程序(它们应该安装),而这两个版本根本无法以任何合理的方式共存。要么我们的软件坏了,要么他们的软件坏了。

那么,有没有人设法让 32 位驱动程序与 64 位安装共存?我已经看到使用/passive标志安装允许安装两者,而我们的安装程序确实使用被动。两者都在安装,但一旦进入系统,要么我们的软件不再工作,要么 Office 不断修复其安装。有什么合理的方法可以完成这项工作吗?

4

7 回答 7

33

以下是在安装了 32 位 MS Office 版本的系统上安装 64 位版本的 Microsoft Access Database Engine 2010 可再发行组件的解决方法:

  • 在安装 64 位版本的 Microsoft Access Database Engine 2010 可再发行组件之前,请检查 64 位注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths”。
  • 如果它不包含“mso.dll”注册表值,那么在具有 32 位版本 MS 的系统上安装 64 位版本的 Microsoft Access Database Engine 2010 可再发行组件后,您将需要重命名或删除该值办公室安装。
  • 使用“/passive”命令行参数安装可再发行组件,例如“C:\directory path\AccessDatabaseEngine_x64.exe”/passive
  • 删除或重命名“mso.dll”注册表值,该值包含 64 位版本的 MSO.DLL 的路径(不应由 32 位 MS Office 版本使用)。

现在您可以启动 32 位 MS Office 应用程序,而不会出现“重新配置”问题。请注意,如果安装了 64 位版本的 MS Office,则“mso.dll”注册表值已经存在。在这种情况下,不应删除或重​​命名该值。

此外,如果您不想使用“/passive”命令行参数,您可以编辑 AceRedist.msi 文件以删除 MS Office 体系结构检查:

您现在可以使用此文件在安装了“冲突”版本的 MS Office 的系统上安装 Microsoft Access 数据库引擎 2010 可再发行组件(例如,在具有 32 位 MS Office 版本的系统上安装 64 位版本)确保重命名如上所述的“mso.dll”注册表值(如果需要)。

于 2013-02-20T14:33:02.033 回答
20

我讨厌回答自己的问题,但我终于找到了一个实际可行的解决方案(使用服务之间的套接字通信可能会解决问题,但它会产生更多问题)。由于我们的数据库是遗留的,它只需要Microsoft.ACE.OLEDB.12.0在连接字符串中。事实证明,这也包含在 Office 2007(和 MSDE 2007)中,其中只有 32 位版本可用。因此,我们不安装 MSDE 2010 32 位,而是安装 MSDE 2007,它工作得很好。然后其他应用程序可以安装 64 位 MSDE 2010(或 64 位 Office 2010),并且与我们的应用程序不冲突。

到目前为止,这似乎是所有 Windows 操作系统环境都可以接受的解决方案。

于 2012-09-17T14:14:45.900 回答
3

与@Peter Coppins 回答类似的方法。我认为这更容易一些,并且不需要使用 Orca 实用程序:

  1. 检查“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths”注册表项并确保值“mso.dll”不存在。如果存在,则似乎已安装 Office 64 位,您不需要此解决方法。

  2. 下载Microsoft Access 数据库引擎 2010 Redistributable

  3. 从命令行运行:AccessDatabaseEngine_x64.exe /passive

(注意:这个安装程序对我来说默默地崩溃或失败,所以我解压缩了组件并运行:AceRedist.msi /passive 并且安装得很好。也许是 Windows 10 的东西。)

  1. 删除或重命名“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths”项中的“mso.dll”值。

资料来源:如何在 32 位 Microsoft Office 的同时安装 64 位 Microsoft 数据库驱动程序

于 2016-06-26T13:24:01.687 回答
2

我有一条更具体的错误消息,指出要删除“Office 16 Click-to-Run Extensibility Component”

我按照https://www.tecklyfe.com/fix-for-microsoft-office-setup-error-please-uninstall-all-32-bit-office-programs-office-15-click-中的步骤修复了它运行可扩展性组件/

  • 转到开始 > 运行(或 Winkey + R)
  • 键入“installer”(打开 %windir%installer 文件夹),确保所有文件在 Windows 中可见(文件夹设置)
  • 添加“主题”列(并使其至少 400 像素宽)– 右键单击​​列标题,单击更多,然后找到主题
  • 在主题列上排序并向下滚动,直到找到错误屏幕中提到的名称(“Office 16 Click-to-Run Extensibility Component”)
  • 右键单击 MSI 并选择卸载
于 2017-06-27T09:58:45.730 回答
1

安装2007版本,看来如果你安装与你正在使用的Office版本相反的版本就可以让它工作了。

http://www.microsoft.com/en-us/download/details.aspx?id=23734

于 2015-08-16T06:42:44.717 回答
1

甚至尝试了所有建议,就我而言(Office x64 - Visual Studio 2017),在 Office 64x 安装上同时拥有两个访问引擎以便您可以在 Visual Studio 上使用它并使用 2016+ 版本的 Office 的唯一方法是安装2010 版引擎。

首先从这个页面安装 x64

https://www.microsoft.com/en-us/download/details.aspx?id=54920

然后是这个的 x86 版本

https://www.microsoft.com/en-us/download/details.aspx?id=13255

从这个博客:http ://dinesql.blogspot.com/2017/10/microsoft-access-database-engine-2016-Redistributable-Setup-you-cannot-install-the-32-bit-version-You-cannot -install-the-64-bit-version.html

于 2020-03-03T12:09:33.897 回答
0

如果 Microsoft Access Database Engine 2010 的两个版本不能共存,那么您唯一的解决方案就是向 Microsoft 投诉,关于在您的 32 位应用程序中直接加载 64 位版本是不可能的,您可以做的是运行在64 位通过管道或网络套接字与另一个 32 位服务或您的应用程序通信,但这可能需要付出很大的努力。

于 2012-09-14T19:52:54.530 回答