带有Office 64位的MS Access数据库引擎(32位)

drh*_*ris 35 legacy installshield msde 32bit-64bit

我们目前使用Microsoft Access数据库引擎2010有一个主要问题.引擎有64位和32位形式,这很好.但是,如果主机进程始终是32位,显然您需要始终安装32位版本.好的,我们可以做到这一点.

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

但是,问题在系统上安装Office 2010 64位时开始.相信我,我们试图教育用户64位Office在很大程度上是不必要的,但无济于事.随着安装了64位版本的计算机下线,当我们的软件出现故障时,我们无法跟上支持请求.64位Office破坏了我们的安装,或者我们的安装破坏了他们的Office版本,但它不是两种方式.另一个问题是非传统软件有时会安装64位驱动程序(正如他们应该的那样),并且这两个版本根本不以任何合理的方式共存.要么我们的软件中断,要么他们的软件中断.

那么,有没有人设法找到一种方法使32位驱动程序与64位安装共存?我已经看到使用/passiveflag 安装允许安装两个,我们的安装程序确实使用被动.两者都在安装,但一旦在系统上,我们的软件不再工作,或Office不断修复其安装.有没有合理的方法来完成这项工作?

Pet*_*ens 29

以下是在安装了32位MS Office版本的系统上安装64位版本的Microsoft Access数据库引擎2010可重新分发的解决方法:

  • 在安装64位版本的Microsoft Access数据库引擎2010可再发行组件之前,请检查64位注册表项"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths".
  • 如果它不包含"mso.dll"注册表值,那么在具有32位版本的MS的系统上安装64位版本的Microsoft Access数据库引擎2010可重新分发后,您将需要重命名或删除该值办公室安装.
  • 使用"/ passive"命令行参数安装可再发行组件,例如"C:\ directory path\AccessDatabaseEngine_x64.exe"/被动
  • 删除或重命名"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"注册表值(如果需要).


drh*_*ris 18

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

到目前为止,它似乎是适用于所有Windows操作系统环境的可接受解决方案.

  • 3年后,您的解决方案仍能挽救生命:).对遗留代码和东西有完全相同的问题! (3认同)