Visual Studio 2005 VSZ カスタムパラメータ

TYPE LIBRARY


VSZ ファイルの最初の二行

Visual Studio 2005 の C++ カスタムウィザードの "$(ProjectName).vsz" ファイルでは、先頭の二行の役目は定まっています。

VSWIZARD 7.0

Wizard=VsWizard.VsWizardEngine.8.0

最初の行は "VSWIZARD" で始まって、テンプレートファイル形式のバージョン情報を指定します。ここには "6.0", "7.0", "7.1" のいずれかを指定できるとのことで、Visual Studio 2005 の C++ カスタムウィザードで自動生成されたときには "7.0" が指定されている感じでした。

次の行は "Wizard" 変数に対して、ウィザードの処理を担うウィザードプログラムの ProgID を設定します。Visual Studio 2005 では "VsWizard.VsWizardEngine.8.0" が指定されるようでした。

 

VSZ カスタムパラメータ シンボル

"$(ProjectName).vsz" ファイルの最初の 2 行が終わったら、必要に応じてカスタムパラメータを付加することができます。以下はそこで指定できる省略可能なカスタムパラメータの項目です。

WIZARD_NAME ウィザード名を指定します。
WIZARD_UI ウィザードにユーザインターフェイスを含めるかを示します。含める場合は TRUE が、含めない場合は FALSE が指定される感じです。
ABSOLUTE_PATH ウィザードの実装ファイルが格納されているフォルダへの絶対パスです。
RELATIVE_PATH ABSOLUTE_PATH の指定がない場合に、ウィザードの実装ファイルが格納されているフォルダへの相対パスとして機能します。カレントディレクトリは "PRODUCT_INSTALLATION_DIR" で、C++ の場合は既定で "VCWizards" となるようです。
START_PATH RELATIVE_PATH または ABSOLUTE_PATH によって定まったフォルダの後に続けて WIZARD_NAME が付加されたフォルダとして参照できる値です。
HTML_FILTER ソリューションエクスプローラの [HTML ファイル] フォルダに入れるファイルの種類です。既定では "htm" となっているようです。
IMAGE_FILTER ソリューションエクスプローラの [イメージ ファイル] フォルダに入れるファイルの種類です。既定では "bmp;gif" が指定されているそうです。
MISC_FILTER ソリューションエクスプローラの [その他] フォルダに入れるファイルの種類です。既定では "vsz;vsdir;ico;vcproj;csproj;css;inf" が指定されているそうです。
SCRIPT_FILTER ソリューションエクスプローラの [スクリプト ファイル] フォルダに入れるファイルの種類です。通常は "js" または "vbs" が指定されるそうです。
TEMPLATE_FILTER ソリューションエクスプローラの [テンプレート ファイル] フォルダに入れるファイルの種類です。通常は "txt" が指定されているそうです。
HTML_PATH ウィザードのユーザーインターフェイス用 HTML ファイルが保存されているフォルダです。既定では "START_PATH\HTML\LANGUAGE" というような構成になっているそうです。
IMAGES_PATH HTML ファイルで使用される画像ファイルが保存されているフォルダです。既定では "START_PATH\Images" という構成になっているようです。
SCRIPT_PATH ウィザードの処理を行うスクリプトが保存されているフォルダです。既定では "START_PATH\Scripts" という構成になっているようです。
TEMPLATE_PATH ウィザードのテンプレートファイルが保存されているフォルダです。既定では "START_PATH\Templates\<LangID>" となるそうです。
SCRIPT_COMMON_PATH 処理に使用するウィザード共用のスクリプトファイルが保存されるフォルダです。カレントディレクトリは "PRODUCT_INSTALLATION_DIR" で、C++ の場合は既定で "VCWizards" となるようです。
PROJECT_TEMPLATE_PATH テンプレートファイルが保存されるフォルダです。既定では "PRODUCT_INSTALLATION_DIR\VCWizards" という構成になっているそうです。
PRODUCT 対応するウィザードの環境です。既定では "Visual C++" に設定されているそうです。
PRODUCT_INSTALLATION_DIR HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0\Setup\<Product>\ProductDir レジストリに表示されるディレクトリだそうです。

Visual Studio 2005 の場合は "7.0" ではなく "8.0" のような気がしますけど、レジストリのその内容を確認してみたところ "C:\Program Files\Microsoft Visual Studio 8\VC\" が設定されているようでした。VSZ ファイル内でこの値を調整した場合にどのような影響があるのかはよく判りませんが、おそらく調整するのではなく参照するだけな感じなのではないかと思います。

PROJECT_TEMPLATE_NAME ウィザードで使用するテンプレートファイルだそうです。既定では "txt" に設定されているとのことですけど、意味合いとしてはテンプレートファイルとして使用するファイルの拡張子といった感じなのか、いまひとつピンと来ないところです。

 

PREPROCESS_FUNCTION パラメータ

"$(ProjectName).vsz" ファイルでは、下記に挙げる 3 つ以外にも利用できるのかは判りませんが、PREPROCESS_FUNCTION パラメータを利用して共用スクリプト "common.js" にある関数を呼び出すことも出来るようです。

CanAddATLClass ATL をサポートしている環境であるかを調べて、サポートされていない場合にはウィザードを起動させないようにすることが出来ます。
CanAddMFCClass MFC をサポートしている環境であるかを調べて、サポートされていない場合にはウィザードを起動させないようにすることが出来ます。
CanAddClass クラスを追加できる環境であるかを調べて、サポートされていない場合にはウィザードを起動させないようにすることが出来ます。

使い方としては、たとえば "CanAddClass" で判定したい場合には、次のような感じになります。

Param="PREPROCESS_FUNCTION = CanAddClass"