home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 June
/
Chip_2001-06_cd1.bin
/
zkuste
/
vbasic
/
Data
/
Utility
/
MSISDK15.msi
/
WiUseXfm.vbs
< prev
Wrap
Text File
|
2000-10-05
|
3KB
|
59 lines
' Windows Installer utility to applay a transform to an installer database
' For use with Windows Scripting Host, CScript.exe or WScript.exe
' Copyright (c) 1999-2000, Microsoft Corporation
' Demonstrates use of Database.ApplyTransform and MsiDatabaseApplyTransform
'
Option Explicit
' Error conditions that may be suppressed when applying transforms
Const msiTransformErrorAddExistingRow = 1 'Adding a row that already exists.
Const msiTransformErrorDeleteNonExistingRow = 2 'Deleting a row that doesn't exist.
Const msiTransformErrorAddExistingTable = 4 'Adding a table that already exists.
Const msiTransformErrorDeleteNonExistingTable = 8 'Deleting a table that doesn't exist.
Const msiTransformErrorUpdateNonExistingRow = 16 'Updating a row that doesn't exist.
Const msiTransformErrorChangeCodePage = 256 'Transform and database code pages do not match
Const msiOpenDatabaseModeReadOnly = 0
Const msiOpenDatabaseModeTransact = 1
Const msiOpenDatabaseModeCreate = 3
If (Wscript.Arguments.Count < 2) Then
Wscript.Echo "Windows Installer database tranform application utility" &_
vbNewLine & " 1st argument is the path to an installer database" &_
vbNewLine & " 2nd argument is the path to the transform file to apply" &_
vbNewLine & " 3rd argument is optional set of error conditions to suppress:" &_
vbNewLine & " 1 = adding a row that already exists" &_
vbNewLine & " 2 = deleting a row that doesn't exist" &_
vbNewLine & " 4 = adding a table that already exists" &_
vbNewLine & " 8 = deleting a table that doesn't exist" &_
vbNewLine & " 16 = updating a row that doesn't exist" &_
vbNewLine & " 256 = mismatch of database and transform codepages" &_
vbNewLine &_
vbNewLine & "Copyright (C) Microsoft Corporation, 1999-2000. All rights reserved."
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") : CheckError
' Open database and apply transform
Dim database : Set database = installer.OpenDatabase(Wscript.Arguments(0), msiOpenDatabaseModeTransact) : CheckError
Dim errorConditions:errorConditions = 0
If Wscript.Arguments.Count >= 3 Then errorConditions = CLng(Wscript.Arguments(2))
Database.ApplyTransform Wscript.Arguments(1), errorConditions : CheckError
Database.Commit : CheckError
Sub CheckError
Dim message, errRec
If Err = 0 Then Exit Sub
message = Err.Source & " " & Hex(Err) & ": " & Err.Description
If Not installer Is Nothing Then
Set errRec = installer.LastErrorRecord
If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText
End If
Wscript.Echo message
Wscript.Quit 2
End Sub