ClickOnce, VSTO или простое автоматическое обновление для COM DLL, используемой Outlook - PullRequest
3 голосов
/ 06 октября 2010

У меня есть COM-компонент, написанный на C #, который реализует ISmartTagAction для добавления действий в контекстное меню для таких вещей, как получатели и отправители почты.

Это просто библиотека классов .NET, которая предоставляет некоторые классы через COM-взаимодействие. В настоящее время я внедряю это с проектом установки Visual Studio. Этот установщик просто регистрирует DLL для COM и добавляет дополнительный дополнительный раздел реестра, чтобы сообщить Outlook о новом классе смарт-тегов.

Это работает нормально, но я недавно сделал два несвязанных проекта, которые были развернуты одним щелчком мыши в одном случае и как надстройка VSTO Outlook в другом случае, и это было гораздо приятнее для конечных пользователей, в основном из-за автоматического -обновление функций clickonce.

Я провел некоторое исследование, и я не нашел способа распространить эту COM-библиотеку одним щелчком мыши, потому что, похоже, нет способа заставить щелчок один раз зарегистрировать DLL. Это правильно? Есть ли способ заставить эту работу?

Другая идея, которая у меня возникла, состояла в том, чтобы создать проект надстройки Outlook и каким-то образом поместить эти классы в этот проект и использовать функцию публикации VSTO, чтобы вытолкнуть его. Я не знаю, как зарегистрировать смарт-тег на лету.

Может кто-нибудь придумать подход, который бы сделал эту работу? В основном я ищу функцию автообновления, чтобы неопытные люди могли без проблем получать обновления, когда они доступны.

1 Ответ

2 голосов
/ 07 октября 2010

Вы правы - ClickOnce не может зарегистрировать DLL. Он может синхронизировать файлы только между клиентом и сервером. Хорошей новостью является то, что он может синхронизировать файлы любого типа, а не только сборки .Net. Таким образом, вы можете легко передать свою сборку клиенту, добавив ее в установку ClickOnce.

Оттуда любые другие этапы установки должны быть выполнены в вашем собственном коде. Вы можете скопировать файл в логическое расположение, зарегистрировать его с помощью DllRegisterServer и добавить дополнительные ключи реестра. Это должно работать до тех пор, пока у пользователя есть привилегии безопасности для выполнения всех этих действий.

Я предполагаю, что ваш COM dll меняется довольно часто, поскольку вы заинтересованы в функциях автоматического обновления ClickOnce. Если это не так, и часто меняется только часть .Net вашего приложения VSTO, вы можете попробовать загрузчик, который Visual Studio может сгенерировать для вас. Есть много причин, по которым мне не нравится этот подход, поэтому я избавлю вас от подробностей, если вы не заинтересованы.

...