Добавление в реестр без манифеста в MS Office AddIn
Я делаю надстройку Outlook 2007 в C#. Поэтому при создании установочного файла мне нужно изменить записи реестра. Одной из них является строка "Manifest", которая содержит ссылку на файл манифеста AddIn. При загрузке этого офисное приложение загружает AddIn. Но когда я посмотрел на записи реестра WebEx, у него нет ссылки на манифест.
Почему это так? Как WebEx удалось обойтись без ссылки на Manifest?
3 ответа
Чтобы ответить на ваш вопрос, надстройки COM, которые реализуют интерфейс ID2Extensibility, должны использовать другой метод регистрации. В частности, они должны зарегистрироваться как COM-сервер, поэтому их регистрация связана с ключами InProcServer32 в реестре. По сути, машина уже знает, где найти объект по имени в реестре классов, и таким образом загружает соответствующую DLL.
Существуют (2) типы надстроек Outlook - надстройки COM и клиентские расширения Exchange. Расположение раздела реестра зависит от того, используете ли вы платформу x86 или x64.
Для x86:
Клиентские расширения Exchange: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\Client\Extensions
Outlook COM Надстройки: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Outlook\Addins
Для х64:
Клиентские расширения Exchange: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Exchange\Client\Extensions
Outlook COM Надстройки: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins
Чтобы ответить на ваш вопрос, очевидно, существует несколько способов регистрации надстройки для приложения Office. Одним из них является манифест, сгенерированный VSTO, как вы уже показали. Я предполагаю, что это "современный" способ разработки надстроек на C#.
Но помните, что надстройка Office - это просто старый компонент COM+. Таким образом, вы можете создавать надстройки на C, C++ и других языках с поддержкой COM+:). Чтобы зарегистрировать их, вам нужно добавить определенные ключи в реестр Windows.
Используя C# и Visual Studio, вы можете зарегистрировать свою сборку C# как компонент COM, выбрав опцию "Зарегистрироваться для взаимодействия COM" в настройках проекта на вкладке "Сборка". Это эквивалентно запуску утилиты Regasm, которая поставляется с установкой.NET вручную в вашей сборке (DLL).
Теперь, если у вас есть зарегистрированный компонент, все, что вам нужно сделать, чтобы приложение Office загрузило вашу надстройку, - это сослаться на этот компонент, используя ключ реестра в формате "namespace.class_extending_ptable_interface".