mirror of https://github.com/sipwise/jitsi.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
6.1 KiB
118 lines
6.1 KiB
' Windows Installer utility to manage the summary information stream
|
|
' For use with Windows Scripting Host, CScript.exe or WScript.exe
|
|
' Copyright (c) 1999-2001, Microsoft Corporation
|
|
' Demonstrates the use of the database summary information methods
|
|
|
|
Option Explicit
|
|
|
|
Const msiOpenDatabaseModeReadOnly = 0
|
|
Const msiOpenDatabaseModeTransact = 1
|
|
Const msiOpenDatabaseModeCreate = 3
|
|
|
|
Dim propList(19, 1)
|
|
propList( 1,0) = "Codepage" : propList( 1,1) = "ANSI codepage of text strings in summary information only"
|
|
propList( 2,0) = "Title" : propList( 2,1) = "Package type, e.g. Installation Database"
|
|
propList( 3,0) = "Subject" : propList( 3,1) = "Product full name or description"
|
|
propList( 4,0) = "Author" : propList( 4,1) = "Creator, typically vendor name"
|
|
propList( 5,0) = "Keywords" : propList( 5,1) = "List of keywords for use by file browsers"
|
|
propList( 6,0) = "Comments" : propList( 6,1) = "Description of purpose or use of package"
|
|
propList( 7,0) = "Template" : propList( 7,1) = "Target system: Platform(s);Language(s)"
|
|
propList( 8,0) = "LastAuthor" : propList( 8,1) = "Used for transforms only: New target: Platform(s);Language(s)"
|
|
propList( 9,0) = "Revision" : propList( 9,1) = "Package code GUID, for transforms contains old and new info"
|
|
propList(11,0) = "Printed" : propList(11,1) = "Date and time of installation image, same as Created if CD"
|
|
propList(12,0) = "Created" : propList(12,1) = "Date and time of package creation"
|
|
propList(13,0) = "Saved" : propList(13,1) = "Date and time of last package modification"
|
|
propList(14,0) = "Pages" : propList(14,1) = "Minimum Windows Installer version required: Major * 100 + Minor"
|
|
propList(15,0) = "Words" : propList(15,1) = "Source flags: 1=short names, 2=compressed, 4=network image"
|
|
propList(16,0) = "Characters" : propList(16,1) = "Used for transforms only: validation and error flags"
|
|
propList(18,0) = "Application" : propList(18,1) = "Application associated with file, ""Windows Installer"" for MSI"
|
|
propList(19,0) = "Security" : propList(19,1) = "0=Read/write 1=Readonly recommended 2=Readonly enforced"
|
|
|
|
Dim iArg, iProp, property, value, message
|
|
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
|
|
message = "Windows Installer utility to manage summary information stream" &_
|
|
vbNewLine & " 1st argument is the path to the storage file (installer package)" &_
|
|
vbNewLine & " If no other arguments are supplied, summary properties will be listed" &_
|
|
vbNewLine & " Subsequent arguments are property=value pairs to be updated" &_
|
|
vbNewLine & " Either the numeric or the names below may be used for the property" &_
|
|
vbNewLine & " Date and time fields use current locale format, or ""Now"" or ""Date""" &_
|
|
vbNewLine & " Some properties have specific meaning for installer packages"
|
|
For iProp = 1 To UBound(propList)
|
|
property = propList(iProp, 0)
|
|
If Not IsEmpty(property) Then
|
|
message = message & vbNewLine & Right(" " & iProp, 2) & " " & property & " - " & propLIst(iProp, 1)
|
|
End If
|
|
Next
|
|
message = message & vbNewLine & vbNewLine & "Copyright (C) Microsoft Corporation, 1999-2001. All rights reserved."
|
|
|
|
Wscript.Echo message
|
|
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") : If CheckError("MSI.DLL not registered") Then Wscript.Quit 2
|
|
|
|
' Evaluate command-line arguments and open summary information
|
|
Dim cUpdate:cUpdate = 0 : If argCount > 1 Then cUpdate = 20
|
|
Dim sumInfo : Set sumInfo = installer.SummaryInformation(Wscript.Arguments(0), cUpdate) : If CheckError(Empty) Then Wscript.Quit 2
|
|
|
|
' If only package name supplied, then list all properties in summary information stream
|
|
If argCount = 1 Then
|
|
' For iProp = 1 to UBound(propList)
|
|
iProp = 9
|
|
value = sumInfo.Property(iProp) : CheckError(Empty)
|
|
' If Not IsEmpty(value) Then message = message & vbNewLine & Right(" " & iProp, 2) & " " & propList(iProp, 0) & " = " & value
|
|
If Not IsEmpty(value) Then message = "" & value
|
|
' Next
|
|
Wscript.Echo message
|
|
Wscript.Quit 0
|
|
End If
|
|
|
|
' Process property settings, combining arguments if equal sign has spaces before or after it
|
|
For iArg = 1 To argCount - 1
|
|
property = property & Wscript.Arguments(iArg)
|
|
Dim iEquals:iEquals = InStr(1, property, "=", vbTextCompare) 'Must contain an equals sign followed by a value
|
|
If iEquals > 0 And iEquals <> Len(property) Then
|
|
value = Right(property, Len(property) - iEquals)
|
|
property = Left(property, iEquals - 1)
|
|
If IsNumeric(property) Then
|
|
iProp = CLng(property)
|
|
Else ' Lookup property name if numeric property ID not supplied
|
|
For iProp = 1 To UBound(propList)
|
|
If propList(iProp, 0) = property Then Exit For
|
|
Next
|
|
End If
|
|
If iProp > UBound(propList) Then Wscript.Echo "Unknown summary property name: " & property : Wscript.Quit 2
|
|
If iProp = 11 Or iProp = 12 Or iProp = 13 Then
|
|
If UCase(value) = "NOW" Then value = Now
|
|
If UCase(value) = "DATE" Then value = Date
|
|
value = CDate(value)
|
|
End If
|
|
If iProp = 1 Or iProp = 14 Or iProp = 15 Or iProp = 16 Or iProp = 19 Then value = CLng(value)
|
|
sumInfo.Property(iProp) = value : CheckError("Bad format for property value " & iProp)
|
|
property = Empty
|
|
End If
|
|
Next
|
|
If Not IsEmpty(property) Then Wscript.Echo "Arguments must be in the form: property=value " & property : Wscript.Quit 2
|
|
|
|
' Write new property set. Note! must write even if error, else entire stream will be deleted
|
|
sumInfo.Persist : If CheckError("Error persisting summary property stream") Then Wscript.Quit 2
|
|
Wscript.Quit 0
|
|
|
|
|
|
Function CheckError(message)
|
|
If Err = 0 Then Exit Function
|
|
If IsEmpty(message) Then message = Err.Source & " " & Hex(Err) & ": " & Err.Description
|
|
If Not installer Is Nothing Then
|
|
Dim errRec : Set errRec = installer.LastErrorRecord
|
|
If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText
|
|
End If
|
|
Wscript.Echo message
|
|
CheckError = True
|
|
Err.Clear
|
|
End Function
|