サブストレージとしてのカスタマイズ変換の埋め込み
カスタマイズ変換を Windows インストーラー パッケージのストレージに格納して、インストール パッケージが使用可能な場合に変換を常に使用できるようにすることができます。 「埋め込み変換」を参照してください。 これの一例が、ユーティリティ WiSubStg.vbs として Windows インストーラー SDK で提供されています。 次のスニペット Emb.vbs でも、埋め込み変換を追加するために Storages テーブル を使用する方法が示されており、Windows スクリプト ホストで使用されます。
'Emb.vbs. Argument(0) is the original database. Argument(1) is the
' path to the transform file. Argument(2) is the name of the storage.
'
Option Explicit
' Check arguments
If WScript.Arguments.Count < 2 Then
WScript.Echo "Usage is emb.vbs [original database] [transform] [storage name]"
WScript.Quit(1)
End If
' Connect to Windows Installer object
On Error Resume Next
Dim installer : Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer")
' Evaluate command-line arguments and set open and update modes
Dim databasePath: databasePath = Wscript.Arguments(0)
Dim importPath : importPath = Wscript.Arguments(1)
Dim storageName : storageName = Wscript.Arguments(2)
' Open database and create a view on the _Storages table
Dim sqlQuery : sqlQuery = "SELECT `Name`,`Data` FROM _Storages"
Dim database : Set database = installer.OpenDatabase(databasePath, 1)
Dim view : Set view = database.OpenView(sqlQuery)
'Create and Insert the row.
Dim record : Set record = installer.CreateRecord(2)
record.StringData(1) = storageName
view.Execute record
'Insert storage - copy data into stream
record.SetStream 2, importPath
view.Modify 3, record
database.Commit
Set view = Nothing
Set database = Nothing
MNPtrans1 という名前のストレージを MNP2000.msi に追加し、「カスタマイズ変換への概要情報の追加」で作成した変換を含める場合は、Emb.vbs、元のデータベース、および変換ファイルを含むフォルダーにディレクトリを変更し、次のコマンド ラインを入力します。
Cscript.exe Emb.vbs MNP2000.msi MNPtrans.mst MNPtrans1
これでカスタマイズ変換の例が完了します。 変換を MNPtrans.mst に埋め込んだ後は、変換を常にインストール パッケージで使用できます。 変換を適用するために、MNPtrans.mst ファイルをソースに配置する必要はありません。
サンプル インストール パッケージを含むフォルダーから MNPtrans.mst を削除します。 MNP2000.msi アイコンをクリックしてインストールを起動するか、次のコマンド ラインを使用します。
msiexec /i MNP2000.msi
これにより、カスタマイズなしで製品がインストールされることに注意してください。 カスタマイズを使用してインストールするには、次のコマンド ラインを入力します。 TRANSFORMS プロパティの値が埋め込み変換を参照していることを示すために、コロンを使用します。
msiexec /i MNP2000.msi TRANSFORMS=:MNPtrans1
Gate 機能は機能選択ツリーに表示されないこと、およびユーザー インターフェイスで完全タイプのインストールが選択されている場合でも、Gate 機能のコンポーネントはインストールされないことに注意してください。
次の例