Настройки обновления ClickOnce для надстройки Outlook - PullRequest
5 голосов
/ 18 августа 2011

Я пытаюсь развернуть надстройку Outlook с помощью ClickOnce. При настройке параметров обновления я заметил, что для добавления Outlook в проекте доступно меньше параметров, чем для проекта Win Forms. Например, я не могу указать минимально необходимую версию. Это почему? Также хотелось бы:

  1. для включения ручного обновления
  2. чтобы спросить пользователя, хочет ли он обновления (если оно не требуется).

1) Я пытался использовать System.Deployment.Application и CheckForDetailedUpdate (), но даже если обновление прошло успешно, возникают проблемы при его установке: если я перезагружаю свой плагин, он исчезает из Outlook, если я этого не делаю старая версия застревает в Outlook (и ведет себя странно), хотя дальнейшие обновления по пути UNC предполагают, что обновление было успешно выполнено.

2) Регулярная публикация без специальных опций, добавляемых с помощью Mage или MageUI, работает сама по себе, но надстройка, похоже, обновляется без запроса пользователя. Гугление немного показывает, что люди пытаются поступить противоположным образом, поэтому я немного озадачен, почему он не запрашивает обновление по умолчанию.

Я пытался редактировать манифесты, сгенерированные из Visual Studio, с помощью MageUI, но он генерирует недопустимый XML для манифеста приложения (?! - он пропускает узел "assemblyIdentity" в узле "зависимой сборки"), и когда я добавляю недостающие узлы из исходного манифеста, созданного VS (а затем обновите и подпишите его), программа установки жалуется на недопустимость хэшей сборки.

Как развернуть надстройку Outlook с указанными требованиями?

1 Ответ

6 голосов
/ 20 августа 2011

Приложения VSTO (надстройки Office) поддерживают только определенные биты ClickOnce.Вы можете попробовать добавить код и выполнить программные обновления, но руководитель ClickOnce в Microsoft сказал, что он на самом деле не предназначен для использования, и его части могут не работать.(Нет, нет подробностей о том, какие именно части - вы должны сделать немного проб и ошибок).

Также обратите внимание, что способ развертывания vsto работает и работает следующим образом: Outlook извлекает приложение vsto, копирует dll (и) в теневое местоположение и загружает его с Outlook.Когда вы обновляете приложение vsto, оно обновляется в кеше за один клик, но не в outlook.Когда вы закрываете внешний вид и снова открываете его, он находит новую версию, копирует ее в теневое местоположение и загружает ее.Вы не можете перезапустить бит vsto и заставить его что-либо делать.Пользователь должен перезапустить Outlook.

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

Сказав это, еще один способ выполнить то, что вы хотите, - это написать приложение для Windows Form, которое обновит вашу надстройку.В основном разверните приложение winforms, которое в первый раз просто ничего не показывает, кроме вызова приложения vsto с помощью clickonce (process.start - ваш друг).Затем можно было бы, чтобы надстройка outlook вызывала приложение winforms, чтобы увидеть, есть ли обновление, и если оно есть, оно может запросить обновление приложения winforms, а затем удалить и переустановить надстройку Office или обновить ее..

...