これはインストール済みの製品に対して、何らかの修正や機能追加を行うことを意味しています。これはあくまでMSIファイルによる製品の書き換えでした。その目的が変わってきます。UpgradesについてはMSIファイルを使用することになります。いずれの種類に関してもPackageCodeは変更しておかなければなりません。PackageCodeは、MSIファイルやMSPファイルのようなファイルを一意に識別します。そのためProductVersionも変更するべきではありません。ProductVersionを変更しておくようにします。製品に割り当てられたパッチは、MsiEnumPatchesで列挙することができます。*pcchTransformsBuf);szProductは、パッチを列挙したい製品の製品コードを指定します。iPatchIndexは、パッチのインデックスをゼロベースで指定します。lpPatchBufは、パッチのGUIDが返ります。これは、パッチのPackageCodeです。詳しい使い方は分かりません(NULLを指定することはできません)。pcchTransformsBufは、lpTransformsBufのバッファのサイズを指定します。選択された製品に割り当てられているパッチを右側のリストボックスに列挙します。lParam);}基本的には、製品に割り当てられているパッチを列挙する意味はそれほどありません。パッチが割り当てられているかどうかを調べる目的としてMsiEnumPatchesは有用となります。これから割り当てようとするパッチのPackageCodeと一致するかを調べるコードを記述するのです。Fileという.pcpファイルが必要となります。両者のファイルの差分からMSPファイルが作成されることになっています。基本的にはこのファイルをOrca等で開き、PCP専用のテーブルを追加することになります。どのようなテーブルが必要になるのかを参考にすることもできます。UiCreatePatchPackageを呼び出してPCPファイルからMSPファイルを作成します。このDLLを使用するように設計されています。