Подтвердить что ты не робот

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

В настоящее время у нас есть основная проблема с использованием 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 постоянно ремонтирует свою установку. Есть ли разумный способ сделать эту работу?

4b9b3361

Ответ 1

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

До сих пор оказалось, что это приемлемое решение для всех сред ОС Windows.

Ответ 2

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

  • Перед установкой 64-разрядной версии распространяемого Microsoft Access Database Engine 2010 проверьте 64-разрядный раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths".
  • Если он не содержит значение реестра "mso.dll", вам нужно будет переименовать или удалить значение после установки 64-разрядной версии Microsoft Access Database Engine 2010, распространяемой в системе с 32-разрядной версии MS Office.
  • Используйте параметр командной строки "/passive" для установки распространяемого, например, "C:\путь каталога \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=vs.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", как описано выше (если необходимо).

Ответ 3

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

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

Ответ 4

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

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

  • Загрузите Распространяемый Microsoft Access Database Engine 2010.

  • В командной строке запустите: AccessDatabaseEngine_x64.exe/passive

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

  1. Удалить или переименовать значение "mso.dll" в разделе "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths".

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

Ответ 5

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

Ответ 6

У меня появилось более подробное сообщение об ошибке, в котором говорилось об удалении компонента "Компонент расширяемости для Office 16 Click-to-Run"

Я исправил его, выполнив шаги в 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" )
  • Введите "установщик" (который открывает папку установщика% windir%), убедитесь, что все файлы видны в Windows (Настройки папки)
  • Добавьте столбец "Тема" (и сделайте его шириной не менее 400 пикселей). Щелкните правой кнопкой мыши на заголовках столбцов, нажмите "Дополнительно", затем найдите "Тема"
  • Сортировка в столбце Тема и прокрутка вниз до тех пор, пока вы не найдете имя, указанное на экране ошибки ( "Компонент расширяемости Office 16 для запуска" )
  • Щелкните правой кнопкой мыши MSI и выберите uninstall