Подтвердить что ты не робот

Как лучше всего реализовать обновления программного обеспечения в Windows?

Я хочу внедрить систему "автоматического обновления" для приложения Windows. Сейчас я полу-вручную создаю "appcast" , который проверяет моя программа, и уведомляет пользователя о доступности новой версии. (Я использую  NSIS для моих установщиков).

Есть ли программное обеспечение, которое я могу использовать, которое будет обрабатывать "автоматическую" часть обновлений, возможно, похоже на Sparkle на mac? Любые проблемы/ошибки, о которых я должен знать?

4b9b3361

Ответ 1

Нет решения, столь же гладкого, как Sparkle (что я знаю).

Если вам нужны простые средства для развертывания и обновления приложений, ClickOnce является опцией. К сожалению, он негибкий (например, без установки на компьютере вместо пользователя), непрозрачный (у вас очень мало влияния и ясности и контроль над тем, как его развертывание фактически работает) и нестандартным (пути, в которых он хранит установленное приложение в в отличие от других в Windows).

Гораздо ближе к тому, что вы просите, будет ClickThrough, побочный проект WiX, но я не уверен, что он все еще находится в разработке (если это так, они должны быть яснее об этом...) - и он будет использовать MSI в любом случае, а не NSIS.

Скорее всего, вам лучше всего что-то сделать. Мне бы очень хотелось увидеть проект, похожий на Sparkle, для Windows, но никто, кажется, пока не сделал этого выстрела.

Ответ 3

Автообновление Google Chrome основано на Omaha:

http://code.google.com/p/omaha/

В их overview есть отличный раздел о том, зачем он нужен:

Браузер обычно запрашивал у пользователя длинную серию технических, путаных и страшных диалогов, которые пытались убедить пользователя не устанавливать. Затем пользователю было предложено мастер, заполненный вариантами, которые им не нужны или не знали, как их решить. Эти факторы объединены, чтобы сформировать плохой пользовательский опыт и значительное снижение во время процесса установки приложения.

Ответ 4

Хорошая идея использовать стороннее решение, потому что autoupdates может быть больно, особенно с Windows Vista/7 (UAC). Для того, что стоит, продукт, который использует моя компания, AutoUpdate + и, похоже, работает достаточно хорошо.

Ответ 5

Для .NET некоторое время назад Microsoft Patterns + Practices опубликовали Блок обновления приложений. Это было (на мой взгляд) довольно раздутым и чрезмерно спроектированным, но хорошо справлялось с работой.

По сути, он использовал "загрузчик-заглушку" для проверки манифеста и веб-службы, чтобы узнать, доступна ли более поздняя версия программы, чем установленная, затем использовала технологию загрузки фонового загрузчика BITS для загрузки новой версии, если одна был доступен на сервере.

Как только новая версия была загружена и установлена ​​(с .NET это так же просто, как xcopy в соответствующую папку), приложение обновит манифест. В следующий раз, когда программа будет загружена, будет запущена новая версия.

В то время как код Patterns + Practices специфичен для .NET, там ничего не может быть скопировано для приложения не .NET, особенно если у вас есть возможность тихо запустить процесс установки в фоновом режиме.

Ответ 6

Я задал аналогичный вопрос. Перейдите по ссылке, чтобы увидеть ответы. Самообновление

Ответ 7

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

Ответ 9

Для приложений .NET вы можете посмотреть NetSparkle, вариант Sparkle для .NET-программ. Это довольно новый (с 2011 года) и активно развивается.

Ответ 10

Только что пришел из ответа на мой собственный вопрос по тому же вопросу - я упоминаю еще один обновление решения в своем question. Он использует загрузчик заглушек и файл xml, чтобы указать на последний исполняемый файл.