2013-12-16 5 views
0

Я пытаюсь получить мою голову вокруг, как сохранить приложение, которое работает, до настоящего времени с версии ClickOnce ...ClickOnce Update Запуск приложения

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

Я не могу разобраться, если это возможно?

Любые подсказки/советы были бы очень оценены.

Благодаря

+0

https://github.com/Squirrel/Squirrel.Windows – SLaks

+0

Вы пытались вызвать программу обновления ClickOnce в своем коде где-нибудь? Просто поставьте этот вызов в таймер с интервалом в 24 часа, и вам нужно сделать это. – Herdo

ответ

1

Мы используем MAGE из консоли автоматизировать генерацию приложений и развертывания menifests. К сожалению, его API не позволяет нам делать то, что вы просите. Таким образом, мы автоматизировали создание манифеста с использованием Powershell. Сначала он запускает мага для создания манифеста. Затем он открывает файл генерации xml и немного его модифицирует, затем он подписывает его.

Цель этого манифеста массирования, чтобы сделать тег выглядеть следующим образом:

<deployment install="true" trustURLParameters="true" mapFileExtensions="true" minimumRequiredVersion="1.0.0.1140"> 
<subscription> 
    <update> 
     <beforeApplicationStartup /> 
    </update> 
</subscription> 

Давайте идти через него.

  1. install = true: это означает, что приложение будет установлено. После установки приложение может запускаться с локального жесткого диска без необходимости загружать себя из Интернета.
  2. trustURLParameters = истина: есть код, который улавливает строки запроса и использует параметры для изменения поведения приложения
  3. mapFileExtensions = истина: Мы изменяем все непроявленные имена файлов, добавляя .deploy в конце их имена, чтобы обеспечить клиент веб-фильтры, которые обычно блокируют исполняемые файлы и другие известные двоичные файлы, передают эти файлы. Установка этого атрибута говорит clickonce переименовывать файлы обратно
  4. 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, чтобы это работало, но оно работает хорошо.

Смежные вопросы