Я переношу надстройку VSTO OUTLOOK с 32-разрядной на 64-разрядную. Он хорошо работает в 32-разрядной версии Office 2007. Наша цель - запустить его в 64-разрядной версии Office 365.
Я перекомпилировал надстройку для 64-битной платформы и обновил проект installshield.
Когда я устанавливаю надстройку на новый компьютер с Windows 10, используя свою учетную запись (у меня есть права администратора), она работает нормально. Я вижу это в Outlook и могу им пользоваться.
Однако, если я выхожу из системы и попрошу кого-то еще войти в систему на машине сохранения (этот кто-то другой также имеет права администратора), надстройка отображается в Outlook, но эта ошибка отображается, когда пользователь ее использует:
System.Runtime.InteropServices.COMException (0x80040154): получение фабрики классов COM для компонента с CLSID {29AB7A12-B531-450E-8F7A-EA94C2F3C05F} не удалось из-за следующей ошибки: 80040154 Класс не зарегистрирован ( Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Любая идея?
Подробности:
- Эта надстройка использует только одну внешнюю DLL: 64-битную DLL от Redemption.
- Решение было скомпилировано в Visual Studio 2015. Целевая платформа: x64.
- Чтобы установить его на компьютер, я использую MSI, созданный с помощью InstallShield Express в Visual Studio 2015.
- В InstallShield я указал ALLUSERS-1 (установка на компьютере).
DLL регистрируется с использованием следующего кода:
Тусклый WshShell
Установите WshShell = CreateObject ("Wscript.Shell")
WshShell.run "regsvr32 / s" "C: \ Program Files (x86) \ MyCompany \ AddInName \ Redemption64.dll"
Установите WshShell = ничего
regsvr32.exe
через VBScriptregsvr32.exe
регистрировать каждого пользователя. Я не думаю, чтоregsvr32.exe
может делать это нормально. Странный. Вы уверены, что Извлечение COM при сборке не было постоянно и этотregsvr32.exe
вызов никогда не выполнялся, поскольку вы, возможно, настроили настраиваемое действие для игнорирования ошибок? - person Stein Åsmul   schedule 14.05.2019