MS Access DB Engine (32-разрядная версия) с 64-разрядной версией Office

в настоящее время у нас есть серьезная проблема с использованием Microsoft Access Database Engine 2010. Двигатель поставляется в 64-битной и 32-битной формах, что хорошо. Однако, по-видимому, вам нужно всегда устанавливать 32-разрядную версию, если хост-процесс всегда 32-разрядный. Хорошо, мы можем это сделать.

наше программное обеспечение имеет дело с большим количеством устаревших компонентов, которые являются 32-разрядными, и большая часть из них находится в коде VB6, который генерирует 32-разрядную сборку. Таким образом, мы исходим из предположения, что драйвер также должен быть установлен как 32-битный. Действительно, когда мы устанавливаем 32-разрядные драйверы на 64-разрядной машине и запускаем наши 32-разрядные приложения, он работает правильно.

однако проблема начинается, когда в системе установлен 64-разрядный Office 2010. Поверьте мне, мы пытались обучить пользователей, что 64-битный Office в значительной степени не нужен, но безрезультатно. Поскольку компьютеры выходят из сборочной линии с 64-разрядными версиями, мы не можем идти в ногу с запросами поддержки, когда наше программное обеспечение что-то ломает. Либо 64-разрядные перерывы Office наша установка или наша установка нарушает их версию Office, но это не очень красиво в любом случае. Еще одна проблема заключается в том, что не устаревшее программное обеспечение иногда устанавливает 64-разрядные драйверы (как и должно), и две версии просто не сосуществуют каким-либо разумным образом. Либо наше программное обеспечение ломается, либо их программное обеспечение ломается.

Итак, кому-нибудь удалось найти способ заставить 32-разрядные драйверы сосуществовать с 64-разрядными установками? Я видел, что установка с /passive флаг позволяет двух должны быть установлены, и наш установщик использует пассивный. Оба устанавливаются, но как только в системе либо наше программное обеспечение больше не работает, либо Office постоянно ремонтирует его установку. Есть ли разумный способ заставить это работать?

6 ответов


вот обходной путь для установки 64-разрядной версии Microsoft Access Database Engine 2010, распространяемой в системе с установленной 32-разрядной версией MS Office:

  • Проверьте 64-разрядный раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths" перед установкой 64-разрядной версии распространяемого компонента Microsoft Access Database Engine 2010.
  • если он не содержит "mso.dll " значение реестра, тогда вам нужно будет переименуйте или удалите значение после установки 64-разрядной версии распространяемого компонента Microsoft Access Database Engine 2010 в системе с установленной 32-разрядной версией MS Office.
  • используйте параметр командной строки" / passive " для установки распространяемого файла, например "C:\directory путь\AccessDatabaseEngine_x64.exe-файла" /пассивный
  • удалить или переименовать "mso.dll " значение реестра, которое содержит путь к 64-разрядной версии MSO.DLL (и не должен использоваться 32-битным MS Office версии.)

теперь вы можете запустить 32-разрядное приложение MS Office без проблемы "повторной настройки". Обратите внимание, что "mso.dll " значение реестра уже будет присутствовать, если установлена 64-разрядная версия MS Office. В этом случае значение не следует удалять или переименовывать.

также, если вы не хотите использовать параметр командной строки "/passive", вы можете отредактировать AceRedist.msi-файл для удаления проверки архитектуры MS Office:

  • скачать и установка Microsoft Orca: http://msdn.microsoft.com/en-us/library/windows/desktop/aa370557 (v=против 85).aspx
  • распакуйте AccessDatabaseEngine.exe или AccessDatabaseEngine_x64.exe файл
  • откройте AceRedist.msi-файл в Orca
  • найдите две строки таблицы, содержащие действие "CheckOfficeArchitecture", и удалите эти строки
  • сохранить обновленный AceRedist.msi-файл

теперь вы можете использовать этот файл для установки Microsoft Access Database Engine 2010 распространяется в системе, где установлена" конфликтующая " версия MS Office (например, 64-разрядная версия в системе с 32-разрядной версией MS Office) Убедитесь, что вы переименовали " mso.dll " значение реестра, как описано выше (при необходимости).


Я ненавижу отвечать на мои собственные вопросы, но я, наконец, нашел решение, которое действительно работает (использование связи сокетов между службами может решить проблему, но это создает еще больше проблем). Поскольку наша база данных является legacy, это просто требуется Microsoft.ACE.OLEDB.12.0 в строке подключения. Оказывается, это также было включено в Office 2007 (и MSDE 2007), где доступна только 32-разрядная версия. Таким образом, вместо установки MSDE 2010 32-бит, мы установить MSDE 2007, и это прекрасно работать. Другие приложения могут установить 64-разрядный MSDE 2010 (или 64-разрядный Office 2010), и это не конфликтует с нашим приложением.

до сих пор, похоже, это приемлемое решение для всех сред ОС Windows.


установите версию 2007, кажется, что если вы установите версию, противоположную используемой версии Office, вы можете заставить ее работать.

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


аналогичный подход к ответу @Peter Coppins. Это, я думаю, немного проще и не требует использования утилиты Orca:

  1. проверьте раздел реестра" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths "и убедитесь, что значение" mso.dll " нет. Если он присутствует, то Office 64-бит, похоже, установлен, и вам не нужно это обходное решение.

  2. скачать База Данных Microsoft Access Двигатель Распространяемый 2010.

  3. из командной строки, выполните команду: AccessDatabaseEngine_x64.ехе /пассивный

(Примечание: этот установщик молча разбился или не удался для меня, поэтому я распаковал компоненты и запустил: AceRedist.msi / passive и это установлено нормально. Может быть, Windows 10.)

  1. удалить или переименовать "mso.dll файлы" значение "реестре: HKEY_LOCAL_MACHINE\программное обеспечение\Майкрософт\Офис\14.0\общие\FilesPaths" ключ.

источник: Как установить 64-разрядные драйверы базы данных Microsoft вместе с 32-разрядной Microsoft Office


У меня было более конкретное сообщение об ошибке, в котором говорилось, чтобы удалить "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-to-run-extensibility-component/

  • перейти к Пуск > Выполнить (или Winkey + R)
  • введите "installer" (который открывает папку%windir % installer), убедитесь, что все файлы видны в Windows (настройки папки)
  • добавить столбец "тема" (и сделать его не менее 400 пикселей в ширину) – щелкните правой кнопкой мыши на заголовках столбцов, нажмите больше, а затем найти тему
  • сортировка в столбце тема и прокрутите вниз, пока не найдете имя, указанное на экране ошибки ("Office 16 Click-To-Run Extensibility Component")
  • щелкните правой кнопкой мыши MSI и выберите Удалить

Если обе версии Microsoft Access Database Engine 2010 не могут сосуществовать, тогда ваше единственное решение-пожаловаться Microsoft, что загрузка 64-битных версий этого в вашем 32-битном приложении невозможна напрямую, вы можете сделать службу, которая работает в 64 битах, которая взаимодействует с другой 32-битной службой или вашим приложением через каналы или сетевые сокеты, но это может потребовать значительных усилий.