2008-08-31 1 views
23

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

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

ответ

6

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

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

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

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

+3

«У ClickThrough есть существенные ошибки, на которых все были прерваны WiX v4, по существу, до тех пор, пока не будет нажата ClickThrough». Источник: https://sourceforge.net/mailarchive/message.php?msg_id=DE33023B477FE44EAA71983F5279F6CE500338B5BD%40NA-EXMSG-C102.redmond.corp.microsoft.com – KevinT 2008-12-30 07:05:07

2

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

3

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

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

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

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

3

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

+0

Вы можете разместить это в качестве комментария к вопросу. Это не реальный ответ. – Dmitriy 2014-02-12 12:10:11

0

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

12

В настоящее время есть порт Windows Sparkle, см. http://winsparkle.org.

+2

Еще один - SparkleDotNet по адресу http://bitbucket.org/ikenndac/sparkledotnet/wiki/Home – 2010-09-05 22:44:22

4

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

5

Google Chrome автоматического обновления основан на Омахе:

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

Их overview имеет большой раздел о том, почему это было необходимо:

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

+0

. Омаха выглядит большой и сложной. – Dmitriy 2014-02-12 12:11:42

1

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