Freigeben über


Einbetten von Anpassungstransformationen als Unterspeicher

Sie können die Anpassungstransformation in einem Speicher des Windows Installer-Pakets speichern, um sicherzustellen, dass die Transformation immer verfügbar ist, wenn das Installationspaket verfügbar ist. Siehe Eingebettete Transformationen. Das Hilfsprogramm WiSubStg.vbs im Windows Installer SDK ist ein Beispiel hierfür. Der folgende Codeausschnitt „Emb.vbs“ veranschaulicht auch die Verwendung der Storages-Tabelle zum Hinzufügen einer eingebetteten Transformation und ist für die Verwendung mit Windows Script Host vorgesehen.

'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

Um „MNP2000.msi“ einen Speicher namens „MNPtrans1“ mit der Transformation hinzuzufügen, die Sie unter Hinzufügen von Zusammenfassungsinformationen zur Anpassungstransformation erstellt haben, wechseln Sie in den Ordner, der „Emb.vbs“, die ursprüngliche Datenbank und die Transformationsdatei enthält, und geben Sie dann die folgende Befehlszeile ein.

Cscript.exe Emb.vbs MNP2000.msi MNPtrans.mst MNPtrans1

Damit ist das Beispiel für die Anpassungstransformation abgeschlossen. Nach dem Einbetten der Transformation in „MNPtrans.mst“ ist die Transformation immer mit dem Installationspaket verfügbar. Die Datei „MNPtrans.mst“ muss sich nicht in der Quelle befinden, um die Transformation anzuwenden.

Entfernen Sie „MNPtrans.mst“ aus dem Ordner, der das Beispielinstallationspaket enthält. Klicken Sie auf das Symbol für „MNP2000.msi“, um eine Installation zu starten, oder verwenden Sie die folgende Befehlszeile.

msiexec /i MNP2000.msi

Beachten Sie, dass das Produkt dadurch ohne die Anpassungen installiert wird. Wenn Sie es mit den Anpassungen installieren möchten, geben Sie die folgende Befehlszeile ein. Verwenden Sie einen Doppelpunkt, um anzugeben, dass sich der Wert der TRANSFORMS-Eigenschaft auf eine eingebettete Transformation bezieht.

msiexec /i MNP2000.msi TRANSFORMS=:MNPtrans1

Beachten Sie, dass das Gate-Feature nicht in der Featureauswahlstruktur angezeigt wird und dass die Komponenten des Gate-Features auch dann nicht installiert werden, wenn auf der Benutzeroberfläche der Installationstyp „Vollständig“ ausgewählt wird.

Nächstes Beispiel

Beispiel für das Patchen eines kleinen Updates