Мы используем MAGE из консоли автоматизировать генерацию приложений и развертывания menifests. К сожалению, его API не позволяет нам делать то, что вы просите. Таким образом, мы автоматизировали создание манифеста с использованием Powershell. Сначала он запускает мага для создания манифеста. Затем он открывает файл генерации xml и немного его модифицирует, затем он подписывает его.
Цель этого манифеста массирования, чтобы сделать тег выглядеть следующим образом:
<deployment install="true" trustURLParameters="true" mapFileExtensions="true" minimumRequiredVersion="1.0.0.1140">
<subscription>
<update>
<beforeApplicationStartup />
</update>
</subscription>
Давайте идти через него.
- install = true: это означает, что приложение будет установлено. После установки приложение может запускаться с локального жесткого диска без необходимости загружать себя из Интернета.
- trustURLParameters = истина: есть код, который улавливает строки запроса и использует параметры для изменения поведения приложения
- mapFileExtensions = истина: Мы изменяем все непроявленные имена файлов, добавляя .deploy в конце их имена, чтобы обеспечить клиент веб-фильтры, которые обычно блокируют исполняемые файлы и другие известные двоичные файлы, передают эти файлы. Установка этого атрибута говорит clickonce переименовывать файлы обратно
- minimumRequiredVersion = "1.0.0.1140". Это важно. Перед тем, как приложение запустится, обновление будет происходить, каждый раз, когда вы запускаете приложение, даже с локального ПК, он будет проверять наличие обновлений в Интернете. Если манифест был обновлен до более новой версии, приложение обновится, а затем запустится.
Внутренние элементы элемента сообщают приложению обновлять себя каждый раз, когда он запускается. Если сервер не работает, обновление завершится неудачно, но приложение будет запущено с локального ПК, потому что оно установлено.
Подробнее об этом элементе: http://msdn.microsoft.com/en-us/library/t7050f3w.aspx
Слово предостережения. Никогда не возвращайтесь к версии. Номер версии имеет смысл. Как только вы достигнете определенного числа, например 5, никогда не вернетесь к 4, или приложение не будет работать. Это важно, если вы планируете развертывать приложения на веб-сервере с помощью символических ссылок. Вы можете подумать, что создание ссылки «prod» и указание ее на версию 5 позволит вам быстро откат к версии 4, если версия 5 глючит. Не тот случай. Вам нужно будет создать версию 6 с исправлением ошибки или с тем же кодом, что и версия 4.
После того, как вы получите развертывание на работу, использовать API, ClickOnce в вашем приложении, чтобы проверить наличие обновлений:
http://msdn.microsoft.com/en-us/library/ms404263.aspx
Примечание: этот вызов
Application.Restart();
Вы должны будете тянуть в библиотеке WinForms, чтобы это работало, но оно работает хорошо.
https://github.com/Squirrel/Squirrel.Windows – SLaks
Вы пытались вызвать программу обновления ClickOnce в своем коде где-нибудь? Просто поставьте этот вызов в таймер с интервалом в 24 часа, и вам нужно сделать это. – Herdo