2015-03-05 2 views
0

Я видел, что есть много технологий, которые делают автоматическое обновление простым для пользователя (например, winsparkle). Проблема заключается в том, что мы хотим иметь возможность автоматического обновления нашего рабочего стола (C#/C++) без подсказки.Как автоматически обновлять мое приложение Windows БЕЗ запроса пользователю сделать это?

Если пользователи имеют возможность НЕ обновлять, это делает нашу жизнь адом (10 000+ инсталляций все нужно обновлять примерно раз в месяц).

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

Я посмотрел на clickonce, но поскольку наше приложение - это приложение для значков в виде лотка/окон и Windows Service, похоже, что установка сервиса через ClickOnce несколько неосуществима.

Любые предложения?

+0

Непонятно - если вы не хотите запрашивать пользователя - чем нет ... Или есть фактические причины, чтобы сделать это, не охваченные в сообщении? –

+0

Вы ищете продукт, который уже делает это, или для разработки методологии построения собственного? Также неясно, «в настоящее время мы устанавливаем наше приложение через WIX и переустановка новой версии полностью перезаписывает то, что было до этого» - это проблема для вас. Если вы устанавливаете пакет MSI, вы должны обновить обновление MSI, патч (файл MSP) или другое обновление. Похоже, вы используете основное обновление. Патч может быть тем, что вам нужно. – PhilDW

+0

[ClickOnce] (https://msdn.microsoft.com/en-us/library/s22azw1e.aspx) может помочь вам в этом случае. – Kurubaran

ответ

2

Чтобы сделать это поведение обновления вам нужно две вещи:

1) Приложение обновления, которая проверяет наличие обновлений на регулярной основе. Если обновление найдено, оно должно установить его автоматически. Большинство коммерческих инструментов для создания настроек включают хорошие приложения для обновления. Вы можете попробовать написать программу обновления самостоятельно, но это не так просто, как кажется.

2) Индивидуальные установки для каждой версии вашего продукта. Установка для каждого пользователя записывает данные только в папку профиля пользователя (AppData, Роуминг и т. Д.) И HKEY_CURRENT_USER. Нет файлов программы или HKEY_LOCAL_MACHINE.

Требуется установка на пользователя, чтобы вы могли выполнить обновление без проблем. Если установка выполняется на машине, в новой версии Windows будет отображаться запрос на повышение, и пользователь не будет знать, что происходит.

Модуль обновления

Некоторые пользуются услугами обновлении приложений. Для автоматических обновлений это не настоящее решение, потому что для установки службы требуются привилегии администратора. Таким образом, ваш процесс установки и последующие обновления отображают подсказки о высоте.

Другим подходом является использование приложения-получателя для каждого пользователя. Он не требует какого-либо повышения, и его можно установить в папку приложения. Этот тип обновления может запускаться либо как запланированное задание, либо из вашего приложения (выполнить его при запуске приложения).

В обоих сценариях необходимо учитывать, что Updater, возможно, потребуется обновить себя. Таким образом, процесс, который выполняет обновление, должен быть временным процессом (например, временной копией приложения для обновления). Он также должен работать без повышения. Вот почему услуга не такая хорошая идея. Он должен остановиться перед обновлением, использовать временный процесс, который обрабатывает обновление и запускается снова по завершении.