您可以將自定義轉換儲存在 Windows Installer 套件的儲存位置中,以確保在安裝套件可用時,轉換始終可用。 請參閱 內嵌轉換。 Windows Installer SDK 中提供此範例作為公用程序 WiSubStg.vbs。 下列代碼段 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
請注意,閘道功能不會出現在功能選取樹狀結構中,而且即使已在使用者介面中選取 [完整安裝類型],也不會安裝閘道功能的元件。
下一個範例