MS Access DB Engine (32 bits) con Office 64 bits


Actualmente tenemos un problema importante usando Microsoft Access Database Engine 2010. El motor viene en formas de 64 bits y 32 bits, lo cual es bueno. Sin embargo, aparentemente necesita instalar siempre la versión de 32 bits si el proceso host es siempre de 32 bits. Bien, podemos hacerlo.

Nuestro software se ocupa de una gran cantidad de componentes heredados que son de 32 bits, y gran parte de ellos está en código VB6, que genera ensamblaje de 32 bits. Por lo tanto, estamos bajo la suposición de que el controlador también debe instalarse como 32 bits. De hecho, cuando instalamos controladores de 32 bits en una máquina de 64 bits y ejecutamos nuestras aplicaciones de 32 bits, funciona correctamente.

Sin embargo, el problema comienza cuando Office 2010 64-bit está instalado en el sistema. Confía en mí, hemos tratado de educar a los usuarios que la oficina de 64 bits es en gran medida innecesaria, en vano. A medida que las computadoras salen de la línea de montaje con versiones de 64 bits instaladas, no podemos seguir el ritmo de las solicitudes de soporte cuando nuestro software rompe algo. O la Oficina de 64 bits rompe nuestro instalación, o nuestra instalación rompe su versión de Office, pero no es bonito de cualquier manera. Otro problema es que el software no heredado a veces instalará los controladores de 64 bits (como deberían), y las dos versiones simplemente no coexisten de manera razonable. O nuestro software se rompe, o su software se rompe.

Entonces, ¿alguien ha logrado encontrar una manera de hacer que los controladores de 32 bits coexistan con las instalaciones de 64 bits? He visto que la instalación con la bandera /passive permite que los dos sean instalado, y nuestro instalador utiliza pasivo. Ambos se están instalando, pero una vez en el sistema, nuestro software ya no funciona, o Office repara constantemente su instalación. ¿Hay alguna manera razonable de hacer que esto funcione?

Author: drharris, 2012-09-04

6 answers

Aquí hay una solución para instalar la versión de 64 bits del Motor de base de datos de Microsoft Access 2010 redistribuible en un sistema con una versión de MS Office de 32 bits instalada:

  • Compruebe la clave de registro de 64 bits "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths" antes de instalar la versión de 64 bits de Microsoft Access Database Engine 2010 redistributable.
  • Si no contiene el "mso.dll " valor del registro, entonces usted tendrá que cambiar el nombre o eliminar el valor después de instalar la versión de 64 bits de Microsoft Access Database Engine 2010 redistribuible en un sistema con una versión de 32 bits de MS Office instalada.
  • Utilice el parámetro de línea de comandos "/ passive " para instalar el redistributable, p. ej. "C:\directory path\AccessDatabaseEngine_x64.exe " / pasivo
  • Elimine o cambie el nombre de "mso.dll " valor de registro, que contiene la ruta a la versión de 64 bits de MSO.DLL (y no debe ser utilizado por las versiones de MS Office de 32 bits).

Ahora puede iniciar una aplicación de MS Office de 32 bits sin el problema de" reconfiguración". Tenga en cuenta que el "mso.dll " el valor del registro ya estará presente si se instala una versión de 64 bits de MS Office. En este caso, el valor no debe ser eliminado o renombrado.

También si no desea utilizar el parámetro de línea de comandos "/passive" puede editar el AceRedist.archivo msi para eliminar la comprobación de la arquitectura de MS Office:

Ahora puede usar este archivo para instalar Microsoft Access Database Engine 2010 redistributable en un sistema donde está instalada una versión "conflictiva" de MS Office (por ejemplo, versión de 64 bits en el sistema con versión de MS Office de 32 bits) Asegúrese de cambiar el nombre de la "mso.dll " valor de registro como se explicó anteriormente (si es necesario).

 25
Author: Peter Coppens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-20 15:35:13

Odio responder a mis propias preguntas, pero finalmente encontré una solución que realmente funciona (usar la comunicación de socket entre servicios puede solucionar el problema, pero crea aún más problemas). Dado que nuestra base de datos es heredada, simplemente requiere Microsoft.ACE.OLEDB.12.0 en la cadena de conexión. Resulta que esto también se incluyó en Office 2007 (y MSDE 2007), donde solo hay una versión de 32 bits disponible. Entonces, en lugar de instalar MSDE 2010 de 32 bits, instalamos MSDE 2007, y funciona fino. Otras aplicaciones pueden instalar MSDE 2010 de 64 bits (o Office 2010 de 64 bits), y no entra en conflicto con nuestra aplicación.

Hasta ahora, parece que esta es una solución aceptable para todos los entornos del sistema operativo Windows.

 17
Author: drharris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-17 14:14:45

Instale la versión 2007, parece que si instala la versión opuesta a la versión de Office que está utilizando puede hacer que funcione.

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

 1
Author: Matthew Dolman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-16 06:42:44

Un enfoque similar a la respuesta de @Peter Coppins. Esto, creo, es un poco más fácil y no requiere el uso de la utilidad Orca:

  1. Compruebe la clave de registro " HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Office \ 14.0 \ Common \ FilesPaths "y asegúrese de que el valor" mso.dll " NO está presente. Si está presente, entonces Office 64-bit parece estar instalado y no debería necesitar esta solución.

  2. Descargar el Microsoft Access Database Engine 2010 Redistributable .

  3. Desde la línea de comandos, ejecute: AccessDatabaseEngine_x64.exe / pasivo

(Nota: este instalador se bloqueó o falló silenciosamente para mí, así que descomprimí los componentes y corrí: AceRedist.msi / pasivo y que se instala bien. Tal vez una cosa de Windows 10.)

  1. Elimine o cambie el nombre de "mso.dll "valor en la clave" HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Office \ 14.0 \ Common \ FilesPaths".

Fuente: Cómo instalar 64 bits Controladores de base de datos de Microsoft junto con Microsoft Office de 32 bits

 1
Author: Jahmic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-26 13:24:01

Tenía un mensaje de error más específico que indicaba eliminar 'Office 16 Haga clic para ejecutar el componente de Extensibilidad'

Lo arreglé siguiendo los pasos en https://www.tecklyfe.com/fix-for-microsoft-office-setup-error-please-uninstall-all-32-bit-office-programs-office-15-click-to-run-extensibility-component/

  • Vaya a Inicio > Ejecutar (o Winkey + R)
  • Escriba "installer" (que abre la carpeta%windir % installer), asegúrese de que todos los archivos estén visibles en Windows (Carpeta Ajustes)
  • Agregue la columna "Asunto" (y hágala de al menos 400 píxeles de ancho): Haga clic con el botón derecho en los encabezados de las columnas, haga clic en Más, luego busque Asunto
  • Ordene en la columna Asunto y desplácese hacia abajo hasta que encuentre el nombre mencionado en la pantalla de error ("Office 16 Haga clic para ejecutar el componente de extensibilidad")
  • Haga clic derecho en el MSI y elija desinstalar
 1
Author: kloarubeek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-27 09:58:45

Si ambas versiones de Microsoft Access Database Engine 2010 no pueden coexistir, entonces su única solución es quejarse a Microsoft, con respecto a cargar versiones de 64 bits de esto en su aplicación de 32 bits es imposible directamente, lo que puede hacer es un servicio que se ejecuta en 64 bits que se comunica con otro servicio de 32 bits o su aplicación a través de tuberías o sockets de redes, pero puede requerir un esfuerzo significativo.

 0
Author: Rafael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-14 19:52:54