From 7c0f11ffb77579cd6968e0c0e58c0f36cd7ba145 Mon Sep 17 00:00:00 2001 From: yaneurao Date: Mon, 3 Sep 2018 06:59:13 +0900 Subject: [PATCH] =?UTF-8?q?-=20MyShogi=20Updater=20=E3=82=A8=E3=83=A9?= =?UTF-8?q?=E3=83=BC=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E3=82=92?= =?UTF-8?q?=E5=BC=B7=E5=8C=96=E3=80=81=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=82=B3=E3=83=94=E3=83=BC=E3=81=AE=E6=99=82=E3=81=AE=E6=95=B4?= =?UTF-8?q?=E5=90=88=E6=80=A7=E3=81=AE=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\346\226\260\345\261\245\346\255\264.txt" | 3 + MyShogiUpdater/App.cs | 12 ++- MyShogiUpdater/MainDialog.Designer.cs | 6 +- MyShogiUpdater/MainDialog.cs | 34 +++++--- MyShogiUpdater/PatchMaker.cs | 80 ++++++++++++++----- MyShogiUpdater/info/V100toV112_info.txt | 55 +++++++++++++ 6 files changed, 153 insertions(+), 37 deletions(-) create mode 100644 MyShogiUpdater/info/V100toV112_info.txt diff --git "a/MyShogi/docs/\346\233\264\346\226\260\345\261\245\346\255\264.txt" "b/MyShogi/docs/\346\233\264\346\226\260\345\261\245\346\255\264.txt" index da173dd4..3a6954a5 100644 --- "a/MyShogi/docs/\346\233\264\346\226\260\345\261\245\346\255\264.txt" +++ "b/MyShogi/docs/\346\233\264\346\226\260\345\261\245\346\255\264.txt" @@ -5,6 +5,9 @@ ■ 2018/09/03 +- MyShogi Updater エラーメッセージを強化、ファイルコピーの時の整合性のチェック追加。 + + - V1.1.2リリース。 - eval : MyShogi201807260000Eval.zip - 本体 : MyShogi201809030600V112.zip diff --git a/MyShogiUpdater/App.cs b/MyShogiUpdater/App.cs index 7bf3b049..0cfd15d6 100644 --- a/MyShogiUpdater/App.cs +++ b/MyShogiUpdater/App.cs @@ -21,8 +21,7 @@ public class TheApp /// /// Update用のソースフォルダ /// - public string UpdateSourcePath = "V100toV110"; // Update1 - //public string UpdateSourcePath = "V100toV120"; // Update2 + public string UpdateSourcePath = "V100toV112"; // Update1.2 #endif /// @@ -33,11 +32,18 @@ public class TheApp /// public bool MakePatchEnable = false; public string PatchSource1 = "V100"; - public string PatchSource2 = "V110"; + public string PatchSource2 = "V112"; #region 過去にリリースした本Updaterの設定集 #if false + + // 『将棋神やねうら王』 Update1.2[2018/09/3] + public string YaneuraOuVersion = "2018"; + public string UpdateSourcePath = "V100toV112"; + public string PatchSource1 = "V100"; + public string PatchSource2 = "V112"; + // 『将棋神やねうら王』 Update1[2018/08/31] public string YaneuraOuVersion = "2018"; public string UpdateSourcePath = "V100toV110"; diff --git a/MyShogiUpdater/MainDialog.Designer.cs b/MyShogiUpdater/MainDialog.Designer.cs index 1e62f564..c421cc5a 100644 --- a/MyShogiUpdater/MainDialog.Designer.cs +++ b/MyShogiUpdater/MainDialog.Designer.cs @@ -40,7 +40,7 @@ private void InitializeComponent() // button1 // this.button1.Font = new System.Drawing.Font("MS UI Gothic", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); - this.button1.Location = new System.Drawing.Point(347, 455); + this.button1.Location = new System.Drawing.Point(343, 490); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(161, 33); this.button1.TabIndex = 1; @@ -90,7 +90,7 @@ private void InitializeComponent() this.richTextBox2.Name = "richTextBox2"; this.richTextBox2.ReadOnly = true; this.richTextBox2.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; - this.richTextBox2.Size = new System.Drawing.Size(846, 58); + this.richTextBox2.Size = new System.Drawing.Size(846, 93); this.richTextBox2.TabIndex = 6; this.richTextBox2.Text = ""; // @@ -98,7 +98,7 @@ private void InitializeComponent() // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.ClientSize = new System.Drawing.Size(854, 491); + this.ClientSize = new System.Drawing.Size(845, 525); this.Controls.Add(this.richTextBox2); this.Controls.Add(this.richTextBox1); this.Controls.Add(this.button2); diff --git a/MyShogiUpdater/MainDialog.cs b/MyShogiUpdater/MainDialog.cs index 6d46378c..f3b44273 100644 --- a/MyShogiUpdater/MainDialog.cs +++ b/MyShogiUpdater/MainDialog.cs @@ -76,23 +76,33 @@ private void worker() Invoke(new Action(() => { richTextBox2.Text += $"\r\nCopy \"{ViewModel.SourceFolder}\" to \"{ViewModel.InstallFolder}\""; })); PatchMaker.FolderCopy(ViewModel.SourceFolder, ViewModel.InstallFolder, ViewModel.UpdateTextFile /*このファイル除外*/ , (filename) => { - Invoke(new Action(() => { - richTextBox2.Text += "\r\n" + filename; - try - { - var start = richTextBox2.Text.Length; // 末尾を選択しておく。 - richTextBox2.SelectionStart = start; - richTextBox2.ScrollToCaret(); - } catch (Exception ex) - { - MessageBox.Show(ex.Message); - } - })); + OutputProgressMessage(filename); }); Invoke(new Action(() => { button1.Enabled = true; })); } + /// + /// 進捗表示用のテキストボックスにメッセージを表示する。 + /// + /// + private void OutputProgressMessage(string message) + { + Invoke(new Action(() => { + richTextBox2.Text += "\r\n" + message; + try + { + var start = richTextBox2.Text.Length; // 末尾を選択しておく。 + richTextBox2.SelectionStart = start; + richTextBox2.ScrollToCaret(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + })); + } + /// /// インストール先フォルダの選択 /// diff --git a/MyShogiUpdater/PatchMaker.cs b/MyShogiUpdater/PatchMaker.cs index d737fd06..77a82ece 100644 --- a/MyShogiUpdater/PatchMaker.cs +++ b/MyShogiUpdater/PatchMaker.cs @@ -76,34 +76,76 @@ public static void MakePatch(string sourcePath1 , string sourcePath2) /// /// /// - public static void FolderCopy(string sourcePath , string targetPath , string excludeFile , Action copyed_file) + public static void FolderCopy(string sourcePath , string targetPath , string excludeFile , Action progress_message) { - sourcePath = Path.GetFullPath(sourcePath); - // target側はfull pathで取得できているはず。 + try + { - excludeFile = Path.GetFileName(excludeFile); + sourcePath = Path.GetFullPath(sourcePath); + // target側はfull pathで取得できているはず。 - var sources = Directory.GetFiles(sourcePath, "*", SearchOption.AllDirectories); - foreach(var s in sources) - { - var relative_source_path = s.Substring(sourcePath.Length + 1 /* PathSeparator.Length */); + excludeFile = Path.GetFileName(excludeFile); + + var sources = Directory.GetFiles(sourcePath, "*", SearchOption.AllDirectories); + foreach (var s in sources) + { + var relative_source_path = s.Substring(sourcePath.Length + 1 /* PathSeparator.Length */); - // 除外ファイルであるか - if (relative_source_path == excludeFile) - continue; + // 除外ファイルであるか + if (relative_source_path == excludeFile) + continue; - var target = Path.Combine(targetPath, relative_source_path); + var target = Path.Combine(targetPath, relative_source_path); - var dir = Path.GetDirectoryName(target); - if (!Directory.Exists(dir)) - Directory.CreateDirectory(dir); + var dir = Path.GetDirectoryName(target); + if (!Directory.Exists(dir)) + Directory.CreateDirectory(dir); - File.Copy(s, target, true); + File.Copy(s, target, true); - copyed_file(target); // コピーされたファイル。 - } + progress_message(target); // コピーされたファイル。 + } - copyed_file("Updateが完了しました!"); + progress_message("ファイルコピーが完了しました。これより、ファイルの整合性のチェックを行います。"); + + // コピーされたファイルが破損していないかなどのチェック + + foreach (var s in sources) + { + var relative_source_path = s.Substring(sourcePath.Length + 1 /* PathSeparator.Length */); + if (relative_source_path == excludeFile) + continue; + + var target = Path.Combine(targetPath, relative_source_path); + + try + { + // 元のファイルとバイナリレベルで同一か確認する。 + + if (!File.Exists(target)) + throw new Exception($"コピー先からファイル消えています。ファイル名 = {target}"); + + var bin1 = File.ReadAllBytes(s); + var bin2 = File.ReadAllBytes(target); + + if (!bin1.SequenceEqual(bin2)) + { + throw new Exception($"コピー先のファイルの内容がコピー元と一致しません。ファイル名 = {target}"); + } + } catch (Exception ex) + { + progress_message($"{ex.Message}\r\nファイルのコピーに失敗しています。ファイル名 = {target}\r\nアップデートを中断しました。アンチウイルスソフトにファイルコピーがブロックされている可能性があります。"); + return; + } + } + progress_message("ファイルの整合性に問題はありませんでした。"); + + progress_message("アップデートが完了しました。"); + + } catch (Exception ex) + { + progress_message($"アップデートに失敗しました。アンチウイルスソフトにファイルコピーがブロックされている可能性があります。\r\n{ ex.Message }\r\n{ ex.StackTrace }"); + } } } diff --git a/MyShogiUpdater/info/V100toV112_info.txt b/MyShogiUpdater/info/V100toV112_info.txt new file mode 100644 index 00000000..06602769 --- /dev/null +++ b/MyShogiUpdater/info/V100toV112_info.txt @@ -0,0 +1,55 @@ +『将棋神やねうら王』用アップデーター V1.2 + +このアップデーターによって、製品版(V1.00)が、Update1.2(V1.12)にバージョンアップします。Update1.2で追加された機能は、以下の通りです。 + +■ 大きな機能追加 + + +- 棋譜の自動保存機能 +- 対局結果一覧ウィンドウ +- コンピューター同士の連続対局機能 +- 思考エンジンのプリセットに「十段」「十一段」「十二段」を追加 + + +■ 細かな機能追加・改良点 + + +- 対局について + - 対局開始&対局終了、勝ち、負け、引き分けの画面エフェクト追加 + - 棋譜・検討ウィンドウの読み筋のところ、KI2形式以外にKIF形式、CSA形式、chess形式の表示が切り替えが出来るようになった。 + - マウスのドラッグ&ドロップで駒を移動させる時にも、駒が移動できる先の升のエフェクトを表示するように。 + + +- 棋譜の入出力 + - 局面図の出力において、「5八金まで」のように最終手の指し手も出力するようにした。 + - SVG形式での局面保存に対応(メニューのファイル→局面の保存) + - KIF形式で書き出した棋譜ファイルがKifu for Windows V7で読み込めない件に対応。 - 柿木将棋の棋譜に手合割と持ち駒が同時に指定されていて、これが読み込めなかったのを改良。 + - メニューの「ファイル」→「クリップボードにコピー」,「クリップボードからペースト」追加。 + - ショートカットキーの割り当て + - Ctrl+Vをクリップボードからのペーストに割当て + - Ctrl+CをクリップボードへのKIF形式での棋譜コピーに割当て。 + - etc.. + - ファイルメニューに直近に開いたファイル数個が表示するように。 + + +- 検討ウィンドウについて + - 検討ウィンドウに経過時刻、fだけでなくff(小数点以下2桁)まで表示するようにした。- デバッグウインドウで複数行の選択、Ctrl+Cで選択行のクリップボードへのコピーが出来るようにした。 + - 検討ウィンドウのカラムの横幅を次回起動時に復元するようにした。 + + +- エンジンの詳細設定について + - エンジンオプション設定、デフォルト値に戻す手段を追加。 + - エンジンオプションのデフォルト値をTooltipのなかに表示するようにした。 + - メニュー「ファイル」→「設定の初期化」→「各エンジン設定の初期化」を追加。 + - メニュー「ファイル」→「設定の初期化」→「各表示設定などの初期化」を追加。 + + +- 詰将棋エンジンに関して + - 逆王手がかかっている局面でも詰みを探索するようにした + - 詰将棋エンジンで指定したHashの2倍のメモリが確保されていたのを修正。 + - 詰将棋のエンジン設定ダイアログで秒数の指定が出来るようにした。 + - 詰み手順を復元する探索ルーチンの中で受け手側の手番かつ王手がかかっている状況で1手詰みルーチンを呼び出すバグを修正した + + +- 開発者向け機能について + - デバッグウィンドウを使う前に「デバッグの開始」を選ばなくても良いようにした。 \ No newline at end of file