Skip to content

Commit

Permalink
- MyShogi Updater エラーメッセージを強化、ファイルコピーの時の整合性のチェック追加。
Browse files Browse the repository at this point in the history
  • Loading branch information
yaneurao committed Sep 2, 2018
1 parent 7de3000 commit 7c0f11f
Show file tree
Hide file tree
Showing 6 changed files with 153 additions and 37 deletions.
3 changes: 3 additions & 0 deletions MyShogi/docs/更新履歴.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
■ 2018/09/03


- MyShogi Updater エラーメッセージを強化、ファイルコピーの時の整合性のチェック追加。


- V1.1.2リリース。
- eval : MyShogi201807260000Eval.zip
- 本体 : MyShogi201809030600V112.zip
Expand Down
12 changes: 9 additions & 3 deletions MyShogiUpdater/App.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ public class TheApp
/// <summary>
/// Update用のソースフォルダ
/// </summary>
public string UpdateSourcePath = "V100toV110"; // Update1
//public string UpdateSourcePath = "V100toV120"; // Update2
public string UpdateSourcePath = "V100toV112"; // Update1.2
#endif

/// <summary>
Expand All @@ -33,11 +32,18 @@ public class TheApp
/// </summary>
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";
Expand Down
6 changes: 3 additions & 3 deletions MyShogiUpdater/MainDialog.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

34 changes: 22 additions & 12 deletions MyShogiUpdater/MainDialog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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; }));
}

/// <summary>
/// 進捗表示用のテキストボックスにメッセージを表示する。
/// </summary>
/// <param name="message"></param>
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);
}
}));
}

/// <summary>
/// インストール先フォルダの選択
/// </summary>
Expand Down
80 changes: 61 additions & 19 deletions MyShogiUpdater/PatchMaker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,34 +76,76 @@ public static void MakePatch(string sourcePath1 , string sourcePath2)
/// </summary>
/// <param name="source"></param>
/// <param name="target"></param>
public static void FolderCopy(string sourcePath , string targetPath , string excludeFile , Action<string> copyed_file)
public static void FolderCopy(string sourcePath , string targetPath , string excludeFile , Action<string> 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 }");
}
}

}
Expand Down
55 changes: 55 additions & 0 deletions MyShogiUpdater/info/V100toV112_info.txt
Original file line number Diff line number Diff line change
@@ -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手詰みルーチンを呼び出すバグを修正した


- 開発者向け機能について
- デバッグウィンドウを使う前に「デバッグの開始」を選ばなくても良いようにした。

0 comments on commit 7c0f11f

Please sign in to comment.