@@ -41,105 +41,110 @@ public bool Check(bool debug = false) {
4141 Properties . Settings . Default . Save ( ) ;
4242 }
4343
44- if ( RemoteFileExists ( releaseJsonUrl ) ) {
45- using ( WebClient client = new WebClient ( ) ) {
46- latestReleaseJson = client . DownloadString ( releaseJsonUrl ) ;
47- }
48- if ( latestReleaseJson == string . Empty ) {
49- latestReleaseJson = null ;
44+ try {
45+ if ( RemoteFileExists ( releaseJsonUrl ) ) {
46+ using ( WebClient client = new WebClient ( ) ) {
47+ latestReleaseJson = client . DownloadString ( releaseJsonUrl ) ;
48+ }
49+ if ( latestReleaseJson == string . Empty ) {
50+ latestReleaseJson = null ;
51+ }
5052 }
51- }
5253
53- //Check and get beta
54- if ( Properties . Settings . Default . BetaProgram && RemoteFileExists ( betaJsonUrl ) ) {
55- using ( WebClient client = new WebClient ( ) ) {
56- latestBetaJson = client . DownloadString ( betaJsonUrl ) ;
54+ //Check and get beta
55+ if ( Properties . Settings . Default . BetaProgram && RemoteFileExists ( betaJsonUrl ) ) {
56+ using ( WebClient client = new WebClient ( ) ) {
57+ latestBetaJson = client . DownloadString ( betaJsonUrl ) ;
58+ }
59+ if ( latestBetaJson == string . Empty )
60+ latestBetaJson = null ;
5761 }
58- if ( latestBetaJson == string . Empty )
59- latestBetaJson = null ;
60- }
6162
62- if ( latestReleaseJson != null || latestBetaJson != null ) {
63- Version newVersion = null
64- , latestRelease
65- , latestBeta ;
66-
67- if ( latestReleaseJson != null && latestBetaJson != null ) {
68- //Beta program enabled; check both release and beta for newest update
69- latestRelease = JsonConvert . DeserializeObject < Version > ( latestReleaseJson ) ;
70- latestBeta = JsonConvert . DeserializeObject < Version > ( latestBetaJson ) ;
71-
72- if ( DateTime . Parse ( latestRelease . datetime ) > DateTime . Parse ( MainProgram . releaseDate ) ||
73- DateTime . Parse ( latestBeta . datetime ) > DateTime . Parse ( MainProgram . releaseDate ) ) {
74- //Both latest release and beta is ahead of this current build
75- if ( DateTime . Parse ( latestRelease . datetime ) > DateTime . Parse ( latestBeta . datetime ) ) {
76- //Release is newest
77- newVersion = latestRelease ;
63+ if ( latestReleaseJson != null || latestBetaJson != null ) {
64+ Version newVersion = null
65+ , latestRelease
66+ , latestBeta ;
67+
68+ if ( latestReleaseJson != null && latestBetaJson != null ) {
69+ //Beta program enabled; check both release and beta for newest update
70+ latestRelease = JsonConvert . DeserializeObject < Version > ( latestReleaseJson ) ;
71+ latestBeta = JsonConvert . DeserializeObject < Version > ( latestBetaJson ) ;
72+
73+ if ( DateTime . Parse ( latestRelease . datetime ) > DateTime . Parse ( MainProgram . releaseDate ) ||
74+ DateTime . Parse ( latestBeta . datetime ) > DateTime . Parse ( MainProgram . releaseDate ) ) {
75+ //Both latest release and beta is ahead of this current build
76+ if ( DateTime . Parse ( latestRelease . datetime ) > DateTime . Parse ( latestBeta . datetime ) ) {
77+ //Release is newest
78+ newVersion = latestRelease ;
79+ } else {
80+ //Beta is newest
81+ newVersion = latestBeta ;
82+ }
7883 } else {
79- //Beta is newest
80- newVersion = latestBeta ;
81- }
82- } else {
83- //None of them are newer. Nothing new
84- MainProgram . DoDebug ( "Software up to date (beta program enabled)" ) ;
85-
86- MainProgram . isCheckingForUpdate = false ;
87- return false ;
88- }
89- } else if ( latestReleaseJson != null && latestBetaJson == null ) {
90- //Only check latest
91- latestRelease = JsonConvert . DeserializeObject < Version > ( latestReleaseJson ) ;
84+ //None of them are newer. Nothing new
85+ MainProgram . DoDebug ( "Software up to date (beta program enabled)" ) ;
9286
93- if ( DateTime . Parse ( latestRelease . datetime ) > DateTime . Parse ( MainProgram . releaseDate ) && latestRelease . version != MainProgram . softwareVersion ) {
94- //Newer build
95- newVersion = latestRelease ;
96- } else {
97- //Not new, move on
98- MainProgram . DoDebug ( "Software up to date" ) ;
99- MainProgram . isCheckingForUpdate = false ;
100- return false ;
101- }
102- } else if ( latestReleaseJson == null && latestBetaJson != null ) {
103- //Couldn't reach "latest" update, but beta-updates are enabled
104- latestBeta = JsonConvert . DeserializeObject < Version > ( latestBetaJson ) ;
87+ MainProgram . isCheckingForUpdate = false ;
88+ return false ;
89+ }
90+ } else if ( latestReleaseJson != null && latestBetaJson == null ) {
91+ //Only check latest
92+ latestRelease = JsonConvert . DeserializeObject < Version > ( latestReleaseJson ) ;
10593
106- if ( latestBeta != null ) {
107- if ( DateTime . Parse ( latestBeta . datetime ) > DateTime . Parse ( MainProgram . releaseDate ) ) {
94+ if ( DateTime . Parse ( latestRelease . datetime ) > DateTime . Parse ( MainProgram . releaseDate ) && latestRelease . version != MainProgram . softwareVersion ) {
10895 //Newer build
109- newVersion = latestBeta ;
96+ newVersion = latestRelease ;
11097 } else {
11198 //Not new, move on
112- MainProgram . DoDebug ( "Software up to date (beta program enabled) " ) ;
99+ MainProgram . DoDebug ( "Software up to date" ) ;
113100 MainProgram . isCheckingForUpdate = false ;
114101 return false ;
115102 }
103+ } else if ( latestReleaseJson == null && latestBetaJson != null ) {
104+ //Couldn't reach "latest" update, but beta-updates are enabled
105+ latestBeta = JsonConvert . DeserializeObject < Version > ( latestBetaJson ) ;
106+
107+ if ( latestBeta != null ) {
108+ if ( DateTime . Parse ( latestBeta . datetime ) > DateTime . Parse ( MainProgram . releaseDate ) ) {
109+ //Newer build
110+ newVersion = latestBeta ;
111+ } else {
112+ //Not new, move on
113+ MainProgram . DoDebug ( "Software up to date (beta program enabled)" ) ;
114+ MainProgram . isCheckingForUpdate = false ;
115+ return false ;
116+ }
117+ }
118+ } else {
119+ MainProgram . DoDebug ( "Both release and beta is NULL, no new updates, or no contact to the server." ) ;
116120 }
117- } else {
118- MainProgram . DoDebug ( "Both release and beta is NULL, no new updates, or no contact to the server." ) ;
119- }
120121
121- if ( newVersion != null && newVersion . version != MainProgram . softwareVersion ) {
122- //New version available
123- MainProgram . DoDebug ( "New software version found (" + newVersion . version + ") [" + newVersion . type + "], current; " + MainProgram . softwareVersion ) ;
124- DialogResult dialogResult = MessageBox . Show ( Translator . __ ( "new_version_found" , "check_for_update" ) . Replace ( "{version_num}" , newVersion . version ) . Replace ( "{version_type}" , newVersion . type ) , Translator . __ ( "new_version_found_title" , "check_for_update" ) + " | " + MainProgram . messageBoxTitle , MessageBoxButtons . YesNo ) ;
125- if ( dialogResult == DialogResult . Yes ) {
126- MainProgram . DoDebug ( "User chose \" yes\" to install update" ) ;
127- DownloadFile ( newVersion . installpath + "&upgrade=true" ) ;
128- } else if ( dialogResult == DialogResult . No ) {
129- MainProgram . DoDebug ( "User did not want to install update" ) ;
122+ if ( newVersion != null && newVersion . version != MainProgram . softwareVersion ) {
123+ //New version available
124+ MainProgram . DoDebug ( "New software version found (" + newVersion . version + ") [" + newVersion . type + "], current; " + MainProgram . softwareVersion ) ;
125+ DialogResult dialogResult = MessageBox . Show ( Translator . __ ( "new_version_found" , "check_for_update" ) . Replace ( "{version_num}" , newVersion . version ) . Replace ( "{version_type}" , newVersion . type ) , Translator . __ ( "new_version_found_title" , "check_for_update" ) + " | " + MainProgram . messageBoxTitle , MessageBoxButtons . YesNo ) ;
126+ if ( dialogResult == DialogResult . Yes ) {
127+ MainProgram . DoDebug ( "User chose \" yes\" to install update" ) ;
128+ DownloadFile ( newVersion . installpath + "&upgrade=true" ) ;
129+ } else if ( dialogResult == DialogResult . No ) {
130+ MainProgram . DoDebug ( "User did not want to install update" ) ;
131+ }
132+ MainProgram . isCheckingForUpdate = false ;
133+ return true ;
134+ } else {
135+ MainProgram . DoDebug ( "Software up to date" ) ;
136+ if ( debug )
137+ MessageBox . Show ( Translator . __ ( "no_new_update" , "check_for_update" ) , Translator . __ ( "check_for_update_title" , "check_for_update" ) + " | " + MainProgram . messageBoxTitle ) ;
130138 }
131- MainProgram . isCheckingForUpdate = false ;
132- return true ;
133139 } else {
134- MainProgram . DoDebug ( "Software up to date " ) ;
140+ MainProgram . DoDebug ( "Could not reach the webserver (both 'release' and 'beta' json files couldn't be reached) " ) ;
135141 if ( debug )
136- MessageBox . Show ( Translator . __ ( "no_new_update " , "check_for_update" ) , Translator . __ ( "check_for_update_title" , "check_for_update" ) + " | " + MainProgram . messageBoxTitle ) ;
142+ MessageBox . Show ( Translator . __ ( "webservers_offline " , "check_for_update" ) , Translator . __ ( "check_for_update_title" , "check_for_update" ) + " | " + MainProgram . messageBoxTitle ) ;
137143 }
138- } else {
139- MainProgram . DoDebug ( "Could not reach the webserver (both 'release' and 'beta' json files couldn't be reached)" ) ;
140- if ( debug )
141- MessageBox . Show ( Translator . __ ( "webservers_offline" , "check_for_update" ) , Translator . __ ( "check_for_update_title" , "check_for_update" ) + " | " + MainProgram . messageBoxTitle ) ;
144+ } catch ( Exception e ) {
145+ MainProgram . DoDebug ( "Failed to check for update (exception); " + e . Message ) ;
142146 }
147+
143148 MainProgram . isCheckingForUpdate = false ;
144149 return false ;
145150 }
0 commit comments