2013-09-25 6 views
2

У меня есть проект VSTO Excel Template, который устанавливается/обновляется ClickOnce. Если я запускаю автоматическое обновление, оно прекрасно обновляется, но я хотел бы дать пользователю возможность обновления вручную.Руководство пользователя ClickOnce Обновление завершено, но не обновляется

Проблема заключается в том, что выполнение ApplicationDeployment.CurrentDeployment.UpdateAsync (или .Update) не приводит к каким-либо ошибкам, но развертывание просто просто не обновляется. Номер версии в программах «Установка и удаление программ» остается прежним, и даже более необычно флаг ApplicationDeployment.IsNetworkDeployed переключается на «false».

Таким образом, кажется, что единственный эффект от работы .Update - установить IsNetworkDeployed в false. Полный код немного долго, но в основном она сводится к:

Private Sub ThisWorkbook_Startup() Handles Me.Startup 
    Dim info As UpdateCheckInfo 

    If ApplicationDeployment.IsNetworkDeployed Then 
     Dim AD As ApplicationDeployment = ApplicationDeployment.CurrentDeployment 
     info = AD.CheckForDetailedUpdate 
     If info.UpdateAvailable Then 
      AD.UpdateAsync() 
     End If 
    End If 

End Sub 
+0

У Криса Маки есть блог, где он [обсуждает работу] (http://blogs.msdn.com/b/krimakey/archive/2008/04/18/click-once-forced-updates-in-vsto- ii-a-fuller-solution.aspx) для этой проблемы, но на самом деле она не затрагивает вопрос о том, почему .Update не работает. Я бы предпочел решение, в котором мне не нужно перезапускать Excel. – QuinRiva

ответ

0

Извините, но Вы должны перезапустить Excel, если вы устанавливаете новую версию VSTO надстройки и хотите использовать его. Причина этого в том, что при запуске Excel он проверяет и находит надстройку VSTO и копирует сборку в теневое местоположение. Он не запускает его из кеша ClickOnce. Это так, если вы сделаете обновление, это не повлияет на Office - он продолжит выполнение сборки в теневом местоположении, и вы сможете обновить версию. Но новая версия не будет загружаться, пока вы не выйдете из Excel и не запустите ее снова, после чего она скопирует новую версию сборки в теневое местоположение и загрузит ее.

+0

Это, по-видимому, так. Работа заключается в том, чтобы написать отдельный инструмент, который перезагружает Excel после обновления и открывает соответствующий документ. – QuinRiva