2013年4月4日木曜日

WinMerge で比較

ThinAppのパッケージ、VBSやバッチファイル等、日々増えていくファイル。

簡単に作れるが故、どんどん更新をして、新しいものや古いものが混在してしまいがちで、
あとから見返してみると、どのような変更を行ったかなかなか思い出せず、
思い出したとしても、確実な変更点を列挙することは難しく、時間が掛かります。

そのようなときは、比較(俗に言うdiff)ツールで比較をすれば、
短時間に確実に確認することが出来ます。

それを用いて、今回はThinAppのパッケージの比較にフォーカスしてみます。

1, 導入

WinMerge というツールがあります。
(4/5現在、2.14.0+-jp-4 が最新)

WinMerge 日本語版

ここで配布されているものは、日本語に特化されたものになりますので、こちらを使用することを推奨します。この後の説明も 2.14.0+-jp-4 を元に行います。

もし、オリジナルの WinMerge をご利用になる場合には、SourceForge からダウンロードします。
(検索結果に出てくる、winmerge.org はどうやらドメインの有効期限が切れて乗っ取られた模様…)

インストール版を使用すると、以下の機能追加があるようですが、
不要であればPortable化しても問題ないと思います。

  • 比較対象の情報を保存できるプロジェクトファイルの関連づけ
  • エクスプローラ上で右クリックから WinMerge に送る
  • コマンドプロンプトからコマンドラインで利用できるように環境変数のPATHにインストールディレクトリを追加
必要に応じて、Excel や Word の比較用のプラグイン等を導入すると他の場面でも役に立ちそうです。

2,起動

WinMergeU.exe を起動するだけで、設定等は規定値で問題ありません。

3, 使い方

(ThinApp の場合)

まず、起動した WinMerge のウインドウに古いバージョンのフォルダをドラッグ&ドロップします。

次に、比較するバージョンのフォルダをドラッグ&ドロップします。
ここで対象のフォルダを確認するウインドウが表示されますが、ThinAppの場合はフォルダマクロ対策として、【サブフォルダを含む】にチェックすることが重要です。


比較結果が表示されます。

4, 差異の確認

画面をスクロールして、次の部分を主に確認します。


右側のみ:比較するバージョンのみに含まれているため、追加したファイルです。
左側のみ:古いバージョンのみに含まれているため、削除したファイルです。


バイナリファイルは異なっています:実行ファイルやDLLファイルなど、メモ帳等のエディタで閲覧できないファイルに差異があります。ThinAppの場合、ビルドしたexeファイルなどの差異であることが殆どであるため、対応の必要が無いことが多いです。

テキストファイルは異なります:レジストリファイルやpackage.iniなど、メモ帳等のエディタで閲覧できるファイルの差異が確認できるものであるため、その行をダブルクリックして差異を確認します。


【ファイルを比較できません】や、【テキストファイルは同一です】の場合でもファイルの更新日付が違う場合も要注意です。

5, 差異の適用

必要に応じて、差異を古いバージョンに適用します。
作業する前に、バックアップを取ると安心です。

テキストファイルの適用

確認するためにダブルクリックすると、画面が切り替わり、ツールバーに以下のようなボタンが表示されます。


画像一番左側のボタン:次の差異
差異が確認できる部分まで自動で移動します。

画像一番右側のボタン:左にコピーして次へ
差異を左(古いバージョン)に同じようにコピーします。


"選択されたファイルは同一です"の表示がされたら、そのファイルの際は無いということになります。

ファイル単位の適用

"左側のみ"の場合で、右クリックから、【削除】→【左】と選択すると、左(古いバージョンにしかないファイル)を削除することができます。

"右側のみ"の場合で、右クリックから、【コピー】→【右から左】を選択すると、右(比較したバージョン)から、左(古いバージョン)にファイルがコピーされます。

※ 先述した、【ファイルを比較できません】の場合、ダブルクリックしても、ファイルが開かないことがあります。

この場合は、右クリックから、【左を開く】→【登録されたアプリケーションで】を選択すると、メモ帳等で起動し、内容を確認することが出来ますので、目視で確認します。


以上になります。