WinMerge Portrable 改造版を作った

本日の成果:WinMerge Portrable 改造版

  テキストファイルの比較は開発現場では頻繁に必要になります。Word/Excelべったりの人海戦術な現場でもないかぎり。(^_^;
  なので、比較のためのツールはCUI/GUI問わず長い歴史がありまして、私もWinDiffやDFやRekisaなどいろいろ試した果てに、今はWinMergeを愛用しています。というか、それのポータブル版のWinMerge PortableをUSBメモリに放り込んで持ち歩いています。
  Rekisaには劣るかもしれませんがそれなりに綺麗な表示で、差分を表示するだけでなくそのまま編集することもでき、プラグインでWordやExcelの文字部分の比較もできちゃうあたりが気に入っております。

  ところがそのWinMerge Portableですが、起動してオプションを変更しても、一旦閉じて再起動するとその変更したオプションがデフォルトに戻ってしまうという問題がありました。最初は、ああポータブル版だからレジストリとかに形跡を残さないようにしてるのね、それなら仕方ない、などと思っていたのですが、その後いろいろ試していたらどうも設定が残る項目とそうでない項目とがあるみたいなのです。なんだか腑に落ちないのでソースも覗いて調べてみたところ、作った人の思いとしては終了時に設定をファイルに保存した上でレジストリからは証拠隠滅(笑)して、次回起動時にファイルに保存しておいた設定を読み込むようなロジックは入ってるようでした。
  さらに調査を続けたところ、レジストリの中身をファイルに書き出すときは、それ用のライブラリを使っているのに対し、ファイルからレジストリに読み込む時には、同じライブラリではなくreg.exeを使っているために、最後まで読み込まれていないということが判りました。だいぶ昔のバージョンからずっとそうなっているらしいことを考えると、日本語環境独自の問題かも。そもそもなぜ、読み込むときだけreg.exeを使うようなコーディングになっているのかも謎です。reg.exeを優先して使うなら使うで、読み込みだけでなく書き出しにも使うようにするべきではないでしょうか。
  それともう一点、これは不具合か仕様か判りませんが、WinMerge Portableでは、ポータブル版独自の設定ファイルに、追加のオプションをあらかじめ書いておくことができます。できますけど、追加のオプションが毎回コマンドラインの末尾に付加されるので、一時的に打ち消すことができません。例えば、普段はいつも○○のフィルタを使いたいが、今回だけ××のフィルタを使いたい、という時に、設定ファイルを書き換える必要がありました。
  普通は、設定ファイルに書いたオプションと、コマンドラインで与えたオプションとでは、後者の方が強いべきではないかと思うのですが。

  というわけで、上記2点とあといくつか改善した版を作ってしまいました。1つ目の問題については、reg.exeを使わず、書き出し/読み込みともにライブラリ側の命令を使うようにしました。これにより、前回終了時の設定が復元されるようになりました。
  2つ目の問題については、コマンドラインを組み立てる時の文字列の連結の順番を変えただけ。

  せっかく作ったので、GPLに基づき公開します(笑)。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です