Поделиться через


Внедрение преобразований настройки в качестве подчиненного хранилища

Преобразование настройки можно сохранить в хранилище пакета установщика Windows, чтобы гарантировать, что преобразование всегда будет доступно при наличии пакета установки. См. раздел Внедренные преобразования. Пример этого приведен в пакете SDK установщика Windows в качестве служебной 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

Обратите внимание, что компонент Gate не отображается в дереве выбора компонентов и что компоненты компонента Gate не устанавливаются, даже если в пользовательском интерфейсе выбрано значение Полный тип установки.

Следующий пример

Пример исправления небольшого обновления