Incorporamento delle trasformazioni di personalizzazione come sottostorage

È possibile archiviare la trasformazione di personalizzazione in un archivio del pacchetto di Windows Installer per garantire che la trasformazione sia sempre disponibile quando il pacchetto di installazione è disponibile. Vedere Trasformazioni incorporate. Questo esempio viene fornito in Windows Installer SDK come utilità WiSubStg.vbs. Il frammento di codice seguente, Emb.vbs, illustra anche l'uso della tabella Storages per aggiungere una trasformazione incorporata ed è per l'uso con l'host script di 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

Per aggiungere un archivio denominato MNPtrans1 a MNP2000.msi e contenente la trasformazione creata in Aggiunta di informazioni di riepilogo alla trasformazione personalizzazione, modificare le directory nella cartella contenente Emb.vbs, il database originale e il file di trasformazione, quindi immettere la riga di comando seguente.

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

In questo modo viene completato l'esempio di trasformazione della personalizzazione. Dopo aver incorporato la trasformazione in MNPtrans.mst, la trasformazione è sempre disponibile con il pacchetto di installazione. Il file MNPtrans.mst non deve trovarsi nell'origine per applicare la trasformazione.

Rimuovere MNPtrans.mst dalla cartella contenente il pacchetto di installazione di esempio. Fare clic sull'icona MNP2000.msi per avviare un'installazione o usare la riga di comando seguente.

msiexec /i MNP2000.msi

Si noti che questo installa il prodotto senza le personalizzazioni. Per installare con le personalizzazioni, immettere la riga di comando seguente. Usare un punto per indicare che il valore della proprietà TRANSFORMS fa riferimento a una trasformazione incorporata.

msiexec /i MNP2000.msi TRANSFORMS=:MNPtrans1

Si noti che la funzionalità Gate non viene visualizzata nell'albero di selezione delle funzionalità e che i componenti della funzionalità Gate non vengono installati anche se nell'interfaccia utente è selezionato un tipo completo di installazione.

Esempio successivo

Un piccolo esempio di patch di aggiornamento