MS Access DB Engine (32-bit) with Office 64-bit
Asked Answered
A

7

47

We currently have a major issue using Microsoft Access Database Engine 2010. The engine comes in 64-bit and 32-bit forms, which is good. However, apparently you need to always install the 32-bit version if the host process is always 32-bit. Fine, we can do this.

Our software deals with a lot of legacy components that are 32-bit, and much of it is in VB6 code, which generates 32-bit assembly. So, we are under the assumption that the driver must also be installed as 32-bit. Indeed, when we install 32-bit drivers on a 64-bit machine, and run our 32-bit applications, it works correctly.

However, the problem begins when Office 2010 64-bit is installed on the system. Trust me, we've tried to educate users that 64-bit Office is largely unnecessary, to no avail. As computers come off the assembly line with 64-bit versions installed, we're unable to keep up with support requests when our software breaks something. Either the 64-bit Office breaks our installation, or our installation breaks their Office version, but it's not pretty either way. A further issue is that non-legacy software will sometimes install the 64-bit drivers (as they should), and the two versions simply do not coexist in any reasonable manner. Either our software breaks, or their software breaks.

So, has anybody managed to find a way to make the 32-bit drivers coexist with 64-bit installations? I have seen that installing with /passive flag allows the two to be installed, and our installer does use passive. Both are being installed, but once on the system either our software no longer works, or Office constantly repairs its installation. Is there any reasonable way to make this work?

Atrioventricular answered 4/9, 2012 at 19:54 Comment(2)
@ghoti It may go without saying, but the closed-source vendor is also my company! Yes, we no longer have source to some of the legacy DLLs being used by mission-critical software. Painful, to say the least. Thanks for the tip about ServerFault, will hopefully go there next. The main reason I started here is that we believe there might be a programming-related solution over a system config issue. Most sysadmins are happy once you can get both to install, which doesn't fix the actual problem. We're hoping that other programmers have dealt with the incompatibility already, but it seems nobody hasAtrioventricular
I don't think it's off topic.Recess
A
20

I hate to answer my own questions, but I did finally find a solution that actually works (using socket communication between services may fix the problem, but it creates even more problems). Since our database is legacy, it merely required Microsoft.ACE.OLEDB.12.0 in the connection string. It turns out that this was also included in Office 2007 (and MSDE 2007), where there is only a 32-bit version available. So, instead of installing MSDE 2010 32-bit, we install MSDE 2007, and it works just fine. Other applications can then install 64-bit MSDE 2010 (or 64-bit Office 2010), and it does not conflict with our application.

Thus far, it appears this is an acceptable solution for all Windows OS environments.

Atrioventricular answered 17/9, 2012 at 14:14 Comment(7)
I needed 32-bit drivers for a PHP app and this worked like a charm. (Funny thing is that I can't run 64-bit PHP because Microsoft SQLSRV extension does not support it.)Feliks
I am trying to create a system DSN for MS Access. I have 32 bit office on a win 7 64 bit system. This method did not work for m. I simply used the 32 bit version of ODBC manager - c:\windows\sysWOW64\odbcad32.exeSunnysunproof
Your approach work with Office 2007. But I am experiencing issue with office 2013, where using access 2007 engine don't work. We had to install access 2010 32bit run time to make application working with office 2013 x64Dysphoria
@Exatex, that works, but be aware it will eventually break if another application installs the proper 64bit version, and you'll get all kinds of random errors from it. There are only two real solutions - upgrade all the components to be properly matched to system (32bit vs 64bit), or reduce your database needs to a legacy driver that was only released for 32 bit (like ours). Eventually, some other component is going to clash with your setup otherwise.Atrioventricular
After 3 years your solution still saves lives :). Have EXACTLY the same problem with legacy code and stuff!Evenings
@Atrioventricular I TOTALLY agree with @Nostradamus! Thank you very much for posting your answer and thank you to StackOverflow for preserving this! :-DEstevez
@Estevez No problem! I will report that 4 years later, this solution still works fine, even on modern platforms like Windows 10. Still using old legacy 32-bit DLLs compiled a decade ago to access the legacy database, using this connection string with the 2007 drivers. The day MSDE 2007 won't work on Windows [whatever] will be a sad one indeed.Atrioventricular
P
33

Here's a workaround for installing the 64-bit version of the Microsoft Access Database Engine 2010 redistributable on a system with a 32-bit MS Office version installed:

  • Check the 64-bit registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths" before installing the 64-bit version of the Microsoft Access Database Engine 2010 redistributable.
  • If it does not contain the "mso.dll" registry value, then you will need to rename or delete the value after installing the 64-bit version of the Microsoft Access Database Engine 2010 redistributable on a system with a 32-bit version of MS Office installed.
  • Use the "/passive" command line parameter to install the redistributable, e.g. "C:\directory path\AccessDatabaseEngine_x64.exe" /passive
  • Delete or rename the "mso.dll" registry value, which contains the path to the 64-bit version of MSO.DLL (and should not be used by 32-bit MS Office versions).

Now you can start a 32-bit MS Office application without the "re-configuring" issue. Note that the "mso.dll" registry value will already be present if a 64-bit version of MS Office is installed. In this case the value should not be deleted or renamed.

Also if you do not want to use the "/passive" command line parameter you can edit the AceRedist.msi file to remove the MS Office architecture check:

You can now use this file to install the Microsoft Access Database Engine 2010 redistributable on a system where a "conflicting" version of MS Office is installed (e.g. 64-bit version on system with 32-bit MS Office version) Make sure that you rename the "mso.dll" registry value as explained above (if needed).

Peppery answered 20/2, 2013 at 14:33 Comment(5)
Interesting. Some blog posts that might be relevant.Foremast
Related MSDN thread: social.msdn.microsoft.com/Forums/en-US/…Financial
Thank you so much! I'd run the 64 bit engine with the /passive switch, and it looked like I'd solved a problem I was having loading data from Access or Excel in Analysis Services (tabular model) ... right up until I tried loading Access 2010, at which point it crashed. This solved the problem!Lalise
to "unzip" the .exe call it with /extract:c:\temp\accx and in Orca you can also drop the line(s) in section "LaunchConditions"Hilbert
This is of course, exactly the opposite to the question asked.Impeachment
A
20

I hate to answer my own questions, but I did finally find a solution that actually works (using socket communication between services may fix the problem, but it creates even more problems). Since our database is legacy, it merely required Microsoft.ACE.OLEDB.12.0 in the connection string. It turns out that this was also included in Office 2007 (and MSDE 2007), where there is only a 32-bit version available. So, instead of installing MSDE 2010 32-bit, we install MSDE 2007, and it works just fine. Other applications can then install 64-bit MSDE 2010 (or 64-bit Office 2010), and it does not conflict with our application.

Thus far, it appears this is an acceptable solution for all Windows OS environments.

Atrioventricular answered 17/9, 2012 at 14:14 Comment(7)
I needed 32-bit drivers for a PHP app and this worked like a charm. (Funny thing is that I can't run 64-bit PHP because Microsoft SQLSRV extension does not support it.)Feliks
I am trying to create a system DSN for MS Access. I have 32 bit office on a win 7 64 bit system. This method did not work for m. I simply used the 32 bit version of ODBC manager - c:\windows\sysWOW64\odbcad32.exeSunnysunproof
Your approach work with Office 2007. But I am experiencing issue with office 2013, where using access 2007 engine don't work. We had to install access 2010 32bit run time to make application working with office 2013 x64Dysphoria
@Exatex, that works, but be aware it will eventually break if another application installs the proper 64bit version, and you'll get all kinds of random errors from it. There are only two real solutions - upgrade all the components to be properly matched to system (32bit vs 64bit), or reduce your database needs to a legacy driver that was only released for 32 bit (like ours). Eventually, some other component is going to clash with your setup otherwise.Atrioventricular
After 3 years your solution still saves lives :). Have EXACTLY the same problem with legacy code and stuff!Evenings
@Atrioventricular I TOTALLY agree with @Nostradamus! Thank you very much for posting your answer and thank you to StackOverflow for preserving this! :-DEstevez
@Estevez No problem! I will report that 4 years later, this solution still works fine, even on modern platforms like Windows 10. Still using old legacy 32-bit DLLs compiled a decade ago to access the legacy database, using this connection string with the 2007 drivers. The day MSDE 2007 won't work on Windows [whatever] will be a sad one indeed.Atrioventricular
N
3

A similar approach to @Peter Coppins answer. This, I think, is a bit easier and doesn't require the use of the Orca utility:

  1. Check the "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths" registry key and make sure the value "mso.dll" is NOT present. If it is present, then Office 64-bit seems to be installed and you should not need this workaround.

  2. Download the Microsoft Access Database Engine 2010 Redistributable.

  3. From the command line, run: AccessDatabaseEngine_x64.exe /passive

(Note: this installer silently crashed or failed for me, so I unzipped the components and ran: AceRedist.msi /passive and that installed fine. Maybe a Windows 10 thing.)

  1. Delete or rename the "mso.dll" value in the "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths" key.

Source: How to install 64-bit Microsoft Database Drivers alongside 32-bit Microsoft Office

Novak answered 26/6, 2016 at 13:24 Comment(0)
N
2

I had a more specifc error message that stated to remove 'Office 16 Click-to-Run Extensibility Component'

I fixed it by following the steps in https://www.tecklyfe.com/fix-for-microsoft-office-setup-error-please-uninstall-all-32-bit-office-programs-office-15-click-to-run-extensibility-component/

  • Go to Start > Run (or Winkey + R)
  • Type “installer” (that opens the %windir%installer folder), make sure all files are visible in Windows (Folder Settings)
  • Add the column “Subject” (and make it at least 400 pixels wide) – Right click on the column headers, click More, then find Subject
  • Sort on the Subject column and scroll down until you locate the name mentioned in your error screen (“Office 16 Click-to-Run Extensibility Component”)
  • Right click the MSI and choose uninstall
Nurmi answered 27/6, 2017 at 9:58 Comment(0)
T
2

Even tried all suggestions, in my case (Office x64 - Visual Studio 2017), the only way to have both access engines on a Office 64x installation so you can use it on Visual Studio and using a 2016+ version of Office, is to install the 2010 version of the Engine.

First install the x64 from this page

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

and then the x86 version from this one

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

as from this blog: 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

Thigmotropism answered 3/3, 2020 at 12:9 Comment(1)
Nothing else worked. This is what fixed it for me. Thanks!Bass
K
1

Install the 2007 version, it seems that if you install the version opposite to the version of Office you are using you can make it work.

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

Kalk answered 16/8, 2015 at 6:42 Comment(0)
P
0

If both versions of Microsoft Access Database Engine 2010 can't coexists, then your only solution is to complain to Microsoft, regarding loading 64 bits versions of this in your 32 bits app is impossible directly, what you can do is a service that runs in 64 bits that comunicates with another 32 bits service or your application via pipes or networks sockets, but it may require a significant effort.

Pskov answered 14/9, 2012 at 19:52 Comment(2)
If he'd do such thing of having a separate process to interface between his app and DB file, he'd just Postgres.Herb
they can coexist without any problems detected so far. do it the way peter said: https://mcmap.net/q/362173/-ms-access-db-engine-32-bit-with-office-64-bit - remove the option "CheckOfficeArchitecture" from both msi installersHilbert

© 2022 - 2024 — McMap. All rights reserved.