home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 June
/
Chip_2001-06_cd1.bin
/
zkuste
/
vbasic
/
Data
/
Utility
/
MSISDK15.msi
/
WiLstScr.vbs
< prev
next >
Wrap
Text File
|
2000-10-05
|
2KB
|
65 lines
' Windows Installer script viewer for use with Windows Scripting Host CScript.exe only
' For use with Windows Scripting Host, CScript.exe or WScript.exe
' Copyright (c) 1999-2000, Microsoft Corporation
' Demonstrates the use of the special database processing mode for viewing script files
'
Option Explicit
Const msiOpenDatabaseModeListScript = 5
' Check arg count, and display help if argument not present or contains ?
Dim argCount:argCount = Wscript.Arguments.Count
If argCount > 0 Then If InStr(1, Wscript.Arguments(0), "?", vbTextCompare) > 0 Then argCount = 0
If argCount = 0 Then
Wscript.Echo "Windows Installer Script Viewer for Windows Scripting Host (CScript.exe)" &_
vbNewLine & " Argument is path to installer execution script" &_
vbNewLine &_
vbNewLine & "Copyright (C) Microsoft Corporation, 1999-2000. All rights reserved."
Wscript.Quit 1
End If
' Cannot run with GUI script host, as listing is performed to standard out
If UCase(Mid(Wscript.FullName, Len(Wscript.Path) + 2, 1)) = "W" Then
Wscript.Echo "Cannot use WScript.exe - must use CScript.exe with this program"
Wscript.Quit 2
End If
Dim installer, view, database, record, fieldCount, template, index, field
On Error Resume Next
Set installer = CreateObject("WindowsInstaller.Installer") : CheckError
Set database = installer.Opendatabase(Wscript.Arguments(0), msiOpenDatabaseModeListScript) : CheckError
Set view = database.Openview("")
view.Execute : CheckError
Do
Set record = view.Fetch
If record Is Nothing Then Exit Do
fieldCount = record.FieldCount
template = record.StringData(0)
index = InstrRev(template, "[") + 1
If (index > 1) Then
field = Int(Mid(template, index, InstrRev(template, "]") - index))
If field < fieldCount Then
template = Left(template, Len(template) - 1)
While field < fieldCount
field = field + 1
template = template & ",[" & field & "]"
Wend
record.StringData(0) = template & ")"
End If
End If
Wscript.Echo record.FormatText
Loop
Wscript.Quit 0
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