パッチファイルを作成する方法について説明する。

Windowsでパッチファイルを作成するには、専用のツールが必要になる。
(Linux系OSには、diffコマンドが用意されている。このコマンドのWindows版を利用する必要がある)
このツールは、以下の場所からダウンロードできる。
 サイト名:ソフトウェア工房α
 プログラミング・ツール(移植ソフト)にある「GNU diff 2.7.2 (Win32 版) ファイル名:diff272w.zip」をダウンロードする。

 ※上記のツール以外にも、diffコマンドの移植ツールは存在するので、使いやすいものを選択すれば良い。
【事前準備】
 1.上記のサイトから「diff272w.zip」をダウンロードする。
 2.ダウンロードしたファイルを解凍する。
  →このファイルを解凍すると、「Diff.exe」というファイルがある。
   この実行ファイルを利用することでパッチを当てることが可能になる。
 3.必要があれば、「Diff.exe」を適当なフォルダに移動する。
 4.環境変数のPathに「Diff.exe」を保管したフォルダを登録する。
  →あらかじめ、Pathに設定されているフォルダに保管すれば、登録する必要はない。
  1)[コントロールパネル]-[システム]を選択する。
  2)[詳細設定]タブを選択し、[環境変数]を指定する。
  3)システム環境変数の一覧からPathを選択し、[編集]ボタンを押す。
   → 一覧にPathがない場合には、[新規]ボタンを押す。
  4)以下の通りに指定する。
   変数名:Path
   変数値:Diff.exeを保管したフォルダの絶対パス
   ※他のパスが指定されている場合には、「;(セミコロン)」で区切ること。
    C:\DiffにDiff.exeを保存した場合の例
     例)C:Windows;C:\Diff

 ※4の作業は、コマンドプロンプトで「Diff.exe」のパスを気にせずに利用するための対応。
  以降の説明は、環境変数への登録を行っているものとする。

【パッチファイルの作成】
※パッチファイルの作成には、修正前後のファイルが必要となります。
 修正する前にファイルのバックアップを行う必要があります。


 1.以下のファイルを用意し、フォルダ「C:\Work」に保存する。
  ・修正前のファイル(Test.vb.bk)
  ・修正後のファイル(Test.vb)
 2.コマンドプロンプトで以下のコマンドを実行する。
  C:\> cd C:\Work
  C:\Work> diff -u Test.vb.bk Test.vb
  ※最初に修正前のファイルを指定し、その後に修正後のファイルを指定する。
 3.画面上に差分が表示される。
  この表示された内容がパッチの内容となる。

 パッチファイルを作成したいので、画面に表示しても意味がない。
 というわけで、リダイレクト機能を利用してファイルに出力する。

  C:\Work> diff -u Test.vb.bk Test.vb > Test.Patch

 上記を実行すると、「C:\Work」に「Test.Patch」というファイルを作成する。
 この「Test.Patch」というファイルに差分情報が書き込まれ、パッチファイルとして利用できる。

 作成したパッチファイルを使ってソースコードを更新することができる。
 この方法については別の記事にて紹介する。

【サンプルファイルの内容】
《Test.vb.bk(修正前)》
Public Class Sample
 Public Shared Sub Main()
  Debug.WriteLine("Hello")
 End Sub
End Class

《Test.vb(修正後)》
Public Class Sample
 Public Shared Sub Main()
  For idx As Integer = 0 To 9
   Debug.WriteLine("Hello")
  Next idx
 End Sub
End Class


《差分情報》
--- test.vb.bk Tue Feb 26 13:00:33 2008
+++ test.vb Tue Feb 26 13:00:23 2008
@@ -1,5 +1,7 @@
Public Class Sample
 Public Shared Sub Main()
-  Debug.WriteLine("Hello")
+  For idx As Integer = 0 To 9
+   Debug.WriteLine("Hello")
+  Next idx
 End Sub
End Class

【補足事項】
・パッチファイルの作成を行う場合には、-uオプションを付ける。
・パッチファイルを作成するメリットとしては、ファイル容量を軽減できる。
 →ネットワーク経由でファイルのやり取りを行う場合には、リソースを軽減できる。
  但し、相手がパッチを適用できる環境を持っていることが前提となる。
・「diff」と「patch」コマンドは、オープンソースを利用する場合には必須となる。
 →バグの修正や機能追加がパッチとして提供されることが結構ある。