OpenTweenのfork
修订版 | 537b4bf05629b5ddcb1fb7f50ecaee5581811111 (tree) |
---|---|
时间 | 2012-05-19 06:38:40 |
作者 | Kimura Youichi <kim.upsilon@bucy...> |
Commiter | Kimura Youichi |
アップデート確認機能を追加
自動アップデートではない
@@ -65,6 +65,17 @@ namespace OpenTween | ||
65 | 65 | public const string ShortcutKeyUrl = "http://sourceforge.jp/projects/tween/wiki/%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC"; |
66 | 66 | |
67 | 67 | //===================================================================== |
68 | + // アップデートチェック関連 | |
69 | + | |
70 | + /// <summary> | |
71 | + /// 最新バージョンの情報を取得するためのURL | |
72 | + /// </summary> | |
73 | + /// <remarks> | |
74 | + /// version.txt のフォーマットについては http://sourceforge.jp/projects/opentween/wiki/VersionTxt を参照。 | |
75 | + /// </remarks> | |
76 | + public const string VersionInfoUrl = "http://www.opentween.org/status/version.txt"; | |
77 | + | |
78 | + //===================================================================== | |
68 | 79 | |
69 | 80 | // https://dev.twitter.com/ から取得できます。 |
70 | 81 |
@@ -72,7 +72,8 @@ namespace OpenTween | ||
72 | 72 | this.PictureBox1.Image = System.Drawing.SystemIcons.Question.ToBitmap(); |
73 | 73 | } |
74 | 74 | |
75 | - public System.Windows.Forms.DialogResult ShowDialog(string text, string detail = "", string caption = "DialogAsShieldIcon", | |
75 | + public System.Windows.Forms.DialogResult ShowDialog(IWin32Window owner, | |
76 | + string text, string detail = "", string caption = "DialogAsShieldIcon", | |
76 | 77 | System.Windows.Forms.MessageBoxButtons Buttons = System.Windows.Forms.MessageBoxButtons.OKCancel, |
77 | 78 | System.Windows.Forms.MessageBoxIcon icon = MessageBoxIcon.Question) |
78 | 79 | { |
@@ -815,15 +815,22 @@ namespace OpenTween | ||
815 | 815 | /// <remarks> |
816 | 816 | /// バージョン1.0.0.1のように末尾が0でない(=開発版)の場合は「1.0.1-beta1」が出力される |
817 | 817 | /// </remarks> |
818 | - /// <returns></returns> | |
819 | - public static string GetReadableVersion() | |
818 | + /// <returns> | |
819 | + /// 生成されたバージョン番号の文字列 | |
820 | + /// </returns> | |
821 | + public static string GetReadableVersion(string fileVersion = null) | |
820 | 822 | { |
821 | - if (string.IsNullOrEmpty(MyCommon.fileVersion)) | |
823 | + if (fileVersion == null) | |
824 | + { | |
825 | + fileVersion = MyCommon.fileVersion; | |
826 | + } | |
827 | + | |
828 | + if (string.IsNullOrEmpty(fileVersion)) | |
822 | 829 | { |
823 | 830 | return null; |
824 | 831 | } |
825 | 832 | |
826 | - int[] version = MyCommon.fileVersion.Split('.') | |
833 | + int[] version = fileVersion.Split('.') | |
827 | 834 | .Select(x => int.Parse(x)).ToArray(); |
828 | 835 | |
829 | 836 | if (version[3] == 0) |
@@ -1,6 +1,7 @@ | ||
1 | 1 | 更新履歴 |
2 | 2 | |
3 | 3 | ==== Ver 1.0.2-beta1(2012/xx/xx) |
4 | + * NEW: アップデート確認機能を追加 | |
4 | 5 | * FIX: 発言詳細部においてUnicodeで追加された一部の文字が正しく表示されない問題を修正 |
5 | 6 | * FIX: メッセージなどに含まれるアプリケーション名の変更漏れを修正 |
6 | 7 | * FIX: タスクバーから復元した際に最大化した状態が保持されない問題を修正 |
@@ -5979,10 +5979,57 @@ namespace OpenTween | ||
5979 | 5979 | |
5980 | 5980 | private void CheckNewVersion(bool startup = false) |
5981 | 5981 | { |
5982 | - // TODO 自動アップデート機能の実装 | |
5983 | - if (!startup) | |
5982 | + if (string.IsNullOrEmpty(MyCommon.fileVersion)) | |
5983 | + { | |
5984 | + return; | |
5985 | + } | |
5986 | + | |
5987 | + string retMsg; | |
5988 | + try | |
5989 | + { | |
5990 | + retMsg = tw.GetVersionInfo(); | |
5991 | + } | |
5992 | + catch | |
5993 | + { | |
5994 | + retMsg = ""; | |
5995 | + } | |
5996 | + | |
5997 | + if (string.IsNullOrEmpty(retMsg)) | |
5998 | + { | |
5999 | + StatusLabel.Text = Properties.Resources.CheckNewVersionText9; | |
6000 | + if (!startup) MessageBox.Show(Properties.Resources.CheckNewVersionText10, MyCommon.ReplaceAppName(Properties.Resources.CheckNewVersionText2), MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2); | |
6001 | + return; | |
6002 | + } | |
6003 | + | |
6004 | + // 改行2つで前後パートを分割(前半がバージョン番号など、後半が詳細テキスト) | |
6005 | + string[] msgPart = retMsg.Split(new string[] {"\n\n", "\r\n\r\n"}, 2, StringSplitOptions.None); | |
6006 | + | |
6007 | + string[] msgHeader = msgPart[0].Split(new string[] {"\n", "\r\n"}, StringSplitOptions.None); | |
6008 | + string msgBody = msgPart.Length == 2 ? msgPart[1] : ""; | |
6009 | + | |
6010 | + msgBody = Regex.Replace(msgBody, "(?<!\r)\n", "\r\n"); // LF -> CRLF | |
6011 | + | |
6012 | + string currentVersion = msgHeader[0]; | |
6013 | + string downloadUrl = msgHeader[1]; | |
6014 | + | |
6015 | + if (currentVersion.Replace(".", "").CompareTo(MyCommon.fileVersion.Replace(".", "")) > 0) | |
6016 | + { | |
6017 | + string dialogText = string.Format(Properties.Resources.CheckNewVersionText3, MyCommon.GetReadableVersion(currentVersion)); | |
6018 | + using (DialogAsShieldIcon dialog = new DialogAsShieldIcon()) | |
6019 | + { | |
6020 | + DialogResult ret = dialog.ShowDialog(this, dialogText, msgBody, MyCommon.ReplaceAppName(Properties.Resources.CheckNewVersionText1), MessageBoxButtons.YesNo, MessageBoxIcon.Question); | |
6021 | + if (ret == DialogResult.Yes) | |
6022 | + { | |
6023 | + this.OpenUriAsync(downloadUrl); | |
6024 | + } | |
6025 | + } | |
6026 | + } | |
6027 | + else | |
5984 | 6028 | { |
5985 | - MessageBox.Show(this, "OpenTween の自動アップデート機能は未実装です。OpenTween のウェブサイトで更新を確認し手動でアップデートしてください。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); | |
6029 | + if (!startup) | |
6030 | + { | |
6031 | + MessageBox.Show(Properties.Resources.CheckNewVersionText7 + MyCommon.GetReadableVersion() + Properties.Resources.CheckNewVersionText8 + MyCommon.GetReadableVersion(currentVersion), MyCommon.ReplaceAppName(Properties.Resources.CheckNewVersionText2), MessageBoxButtons.OK, MessageBoxIcon.Information); | |
6032 | + } | |
5986 | 6033 | } |
5987 | 6034 | } |
5988 | 6035 |
@@ -1656,7 +1656,7 @@ namespace OpenTween | ||
1656 | 1656 | public string GetVersionInfo() |
1657 | 1657 | { |
1658 | 1658 | var content = ""; |
1659 | - if (!(new HttpVarious()).GetData("http://tween.sourceforge.jp/version.txt?" + DateTime.Now.ToString("yyMMddHHmmss") + Environment.TickCount.ToString(), null, out content, MyCommon.GetUserAgentString())) | |
1659 | + if (!(new HttpVarious()).GetData(ApplicationSettings.VersionInfoUrl + "?" + DateTime.Now.ToString("yyMMddHHmmss") + Environment.TickCount.ToString(), null, out content, MyCommon.GetUserAgentString())) | |
1660 | 1660 | { |
1661 | 1661 | throw new Exception("GetVersionInfo Failed"); |
1662 | 1662 | } |