public static UpdateInfo GetUpdateInfo() { try{ var updateInfo=new UpdateInfo(); var webClient=new WebClient(); string textData=null; foreach(var url in updateInfoUrls){ try{ textData=Encoding.UTF8.GetString(webClient.DownloadData(url)); break; }catch(Exception){ continue; } } if(textData==null) return null; var textInfo=textData.Split(new[]{"\r\n"},StringSplitOptions.RemoveEmptyEntries) .Select(l=>l.Split(new[]{','},StringSplitOptions.RemoveEmptyEntries)); foreach(var info in textInfo){ switch(info[0]){ case "database": updateInfo.LatestDatabasePublishedDate=DateTime.Parse(info[1]); updateInfo.LatestDatabaseUrl=info[2]; break; case "app": updateInfo.LatestAppVersion=Version.Parse(info[1]); updateInfo.LatestAppUrl=info[2]; break; } } return updateInfo; }catch(Exception){ return null; } }
private void CheckUpdate(UpdateInfo updateInfo) { if(updateInfo==null) return; else Settings.Default.LastUpdateCheckDate=DateTime.Today; var updateDatabase=updateInfo.LatestDatabasePublishedDate>publishedDate; var updateApp=UpdateChecker.IsNewerThanCurrentVersion(updateInfo.LatestAppVersion); if(updateDatabase&&updateApp){ var result=MessageBox.Show("新しいデータベースとアプリが利用可能です。\n\nダウンロードしますか?","ベンツ君語録検索",MessageBoxButton.YesNo,MessageBoxImage.Information); if(result==MessageBoxResult.Yes){ Process.Start(updateInfo.LatestDatabaseUrl); Process.Start(updateInfo.LatestAppUrl); App.Current.Dispatcher.Invoke((Action)App.Current.Shutdown,null); } }else if(updateDatabase){ var result=MessageBox.Show("新しいデータベースが利用可能です。\n\nダウンロードしますか?","ベンツ君語録検索",MessageBoxButton.YesNo,MessageBoxImage.Information); if(result==MessageBoxResult.Yes){ Process.Start(updateInfo.LatestDatabaseUrl); App.Current.Dispatcher.Invoke((Action)App.Current.Shutdown,null); } }else if(updateApp){ var result=MessageBox.Show("新しいアプリが利用可能です。\n\nダウンロードしますか?","ベンツ君語録検索",MessageBoxButton.YesNo,MessageBoxImage.Information); if(result==MessageBoxResult.Yes){ Process.Start(updateInfo.LatestAppUrl); App.Current.Dispatcher.Invoke((Action)App.Current.Shutdown,null); } } updating=false; App.Current.Dispatcher.Invoke((Action)System.Windows.Input.CommandManager.InvalidateRequerySuggested,null); }