Автоматическое обновление для приложения WinForms

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

19
задан Tom Mayfield 20 September 2012 в 14:21
поделиться

4 ответа

У меня есть отдельное приложение 'средства запуска', которое проверяет на обновления через веб-сервис. Если существуют обновления, это загружает их и затем выполняет мое приложение, которое находится в отдельном блоке.

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

быть предупрежденным о ClickOnce, хотя - это не столь гибко, как это звучит. И если Вы развертываетесь к системе, которая требует, чтобы подъем Вашей программы к более высокому уровню безопасности работал, Вы могли бы столкнуться с проблемами, если у Вас нет сертификата для Вашего приложения установленным. Я нашел очень трудным получить прямые ответы в Интернете к вещам как управление сертификатом когда дело доходит до ClickOnce. Если у Вас есть сложное приложение, можно хотеть только к самокрутке updater, который является тем, что я закончил тем, что имел необходимость сделать.

5
ответ дан 30 November 2019 в 03:53
поделиться

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

ClickOnce является хорошей технологией от Microsoft, которая делает это для Вас, и можно использовать его непосредственно из Visual Studio 2008.

17
ответ дан 30 November 2019 в 03:53
поделиться

Если Вы публикуете через ClickOnce, все это имеет тенденцию быть обработанным для Вас. Это имеет свое собственное за и против, но обычно легче, чем попытка кодировать все это самостоятельно.

И Википедия и 15 секунд имеют достойную информацию об использовании ClickOnce, как это работает, и т.д.

, Как другие заявили, ClickOnce не так гибок как прокрутка Вашего собственного решения, но это НАМНОГО менее сложно. Это имеет небольшую кривую обучения сначала, но с в значительной степени всем связанным в Visual Studio и использование Мастеров, обычно не занимает много времени спотыкаться на рабочее решение.

, Поскольку развертывание становится более сложным (т.е. вне, чем просто наличие предпосылок или кода приложения, для которого нужно обновление), и необходимо сделать большую постустановку или предварительно установить задачи, существуют вещи как WiX, которые дают Вам своего рода гибридное решение между Windows Installer и ClickOnce со стоимостью гибкости, являющейся намного более крутой кривой обучения.

единственная причина я стараюсь избегать пользовательских установщиков, то, что Вы заканчиваете тем, что провели слишком много времени, пытаясь заставить ее просто право обрабатывать набор различных "Что Если" сценарии...

4
ответ дан 30 November 2019 в 03:53
поделиться

Вам нужно будет закрыть приложение и перезапустить его, как уже прокомментировали другие люди.

Я написал код с открытым исходным кодом, чтобы сделать это в прозрачном режиме, включая приложение внешнего обновления для фактического холодного обновления. См. http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/

Код находится по адресу http: // github. com / synhershko / NAppUpdate (под лицензией Apache 2.0)

7
ответ дан 30 November 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: