2013-11-13 3 views
0

Я все еще изучаю VB.net, и теперь я нахожусь на этапе, когда хочу написать функцию автоматического обновления, теперь я сам написал эту простую функцию, ничего необычного, но я бы просто хотел проверить чтобы увидеть, что в моей логике нет серьезных недостатков? Если не считать человеческой ошибки, я думаю, что это хороший простой способ сделать это.Как улучшить мою функцию автоматического обновления? VB.net

Примечание: все это работает безупречно от моего тестирования.

Моя функция

Public Function updateCheck() 
     Dim CurrentVersion As String = My.Settings.currentVersion 
     Dim updateURL As String = My.Settings.updateURL 
     Dim WebRequest As WebClient = New WebClient 
     Dim Version As String = WebRequest.DownloadString(updateURL) 

     If Version = CurrentVersion Then 
      MessageBox.Show("no updates available") 
     Else 
      MessageBox.Show("An new version is available: " & Version) 
     End If 

    End Function 

updatecheck.html файл просто содержит "vx.x.x", какие сайты на веб-сервере и currentVersion строки снова "vx.x.x"

Я не могу видеть этот недостаток не забудьте забыть изменить строку currentVersion при обновлении приложения и зацикливать.

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

Спасибо за любые предложения/комментарии.

+1

Что делать, если веб-сайт не работает? WebRequest не смог получить данные вообще. что, если сетевое соединение отключено? такая же проблема - вы получите необработанное исключение, поэтому ваша программа выйдет из строя. что, если у вас есть проблемы с корпусом между текущей версией и показанной на веб-сайте? он потерпит неудачу. –

+0

Если веб-сайт не работает и не подключен к Интернету, программа не может автоматически обновляться? Может быть, я должен добавить исключение, чтобы проверить подключение к Интернету? Также я предполагаю, что вы имеете в виду кэширование, это возможность, но как я могу избежать этого? –

+0

Точно. вы всегда должны перехватывать исключения, где, вероятно, он будет выброшен в код. –

ответ

2

Вместо того, чтобы закодировать это самому - вы должны взглянуть на ClickOnce deployment.

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

+0

Но разве это не значит, что мне нужно купить сертификат, прежде чем ему доверяют не требовать привилегии администратора? –

+0

Вы можете использовать самоподписанный сертификат - он просто не выглядит таким профессиональным, как платный за один. –

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