Inserção de transformações de personalização como substorage
Você pode armazenar a transformação de personalização em um armazenamento do pacote do Windows Installer para garantir que a transformação sempre esteja disponível quando o pacote de instalação estiver disponível. Confira Transformações inseridas. Um exemplo disso é fornecido no SDK do Windows Installer como o utilitário WiSubStg.vbs. O snippet a seguir, Emb.vbs, também ilustra o uso da tabela Storages para adicionar uma transformação inserida e serve para usar no Windows Script Host.
'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
Para adicionar um armazenamento chamado MNPtrans1 a MNP2000.msi e contendo a transformação que você criou em Adicionar informações de resumo à transformação de personalização, altere os diretórios para a pasta que contém Emb.vbs, o banco de dados original e o arquivo de transformação e, em seguida, insira a linha de comando a seguir.
Cscript.exe Emb.vbs MNP2000.msi MNPtrans.mst MNPtrans1
Isso conclui o exemplo de transformação de personalização. Depois de inserir a transformação em MNPtrans.mst, a transformação sempre estará disponível no pacote de instalação. O arquivo MNPtrans.mst não precisa estar localizado na origem para aplicar a transformação.
Remova MNPtrans.mst da pasta que contém o pacote de instalação de exemplo. Clique no ícone MNP2000.msi para iniciar uma instalação ou usar a linha de comando a seguir.
msiexec /i MNP2000.msi
Observe que isso instala o produto sem as personalizações. Para instalar com as personalizações, insira a linha de comando a seguir. Use dois-pontos para indicar que o valor da propriedade TRANSFORMS refere-se a uma transformação inserida.
msiexec /i MNP2000.msi TRANSFORMS=:MNPtrans1
Observe que o recurso Gate não aparece na árvore de seleção de recursos e que os componentes do recurso Gate não estão instalados mesmo que um tipo completo de instalação seja selecionado na interface do usuário.
Próximo exemplo
Um exemplo de aplicação de patch em uma pequena atualização