summaryrefslogtreecommitdiffstats
path: root/build/wix/WiSubStg.vbs
diff options
context:
space:
mode:
Diffstat (limited to 'build/wix/WiSubStg.vbs')
-rw-r--r--build/wix/WiSubStg.vbs101
1 files changed, 0 insertions, 101 deletions
diff --git a/build/wix/WiSubStg.vbs b/build/wix/WiSubStg.vbs
deleted file mode 100644
index f7ed6988a1..0000000000
--- a/build/wix/WiSubStg.vbs
+++ /dev/null
@@ -1,101 +0,0 @@
-' Windows Installer utility to add a transform or nested database as a substorage
-' For use with Windows Scripting Host, CScript.exe or WScript.exe
-' Copyright (c) Microsoft Corporation. All rights reserved.
-' Demonstrates the use of the database _Storages table
-'
-Option Explicit
-
-Const msiOpenDatabaseModeReadOnly = 0
-Const msiOpenDatabaseModeTransact = 1
-Const msiOpenDatabaseModeCreate = 3
-
-Const msiViewModifyInsert = 1
-Const msiViewModifyUpdate = 2
-Const msiViewModifyAssign = 3
-Const msiViewModifyReplace = 4
-Const msiViewModifyDelete = 6
-
-Const ForAppending = 8
-Const ForReading = 1
-Const ForWriting = 2
-Const TristateTrue = -1
-
-' 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 database substorage management utility" &_
- vbNewLine & " 1st argument is the path to MSI database (installer package)" &_
- vbNewLine & " 2nd argument is the path to a transform or database to import" &_
- vbNewLine & " If the 2nd argument is missing, substorages will be listed" &_
- vbNewLine & " 3rd argument is optional, the name used for the substorage" &_
- vbNewLine & " If the 3rd argument is missing, the file name is used" &_
- vbNewLine & " To remove a substorage, use /D or -D as the 2nd argument" &_
- vbNewLine & " followed by the name of the substorage to remove" &_
- vbNewLine &_
- vbNewLine & "Copyright (C) Microsoft Corporation. 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
-
-' Evaluate command-line arguments and set open and update modes
-Dim databasePath:databasePath = Wscript.Arguments(0)
-Dim openMode : If argCount = 1 Then openMode = msiOpenDatabaseModeReadOnly Else openMode = msiOpenDatabaseModeTransact
-Dim updateMode : If argCount > 1 Then updateMode = msiViewModifyAssign 'Either insert or replace existing row
-Dim importPath : If argCount > 1 Then importPath = Wscript.Arguments(1)
-Dim storageName : If argCount > 2 Then storageName = Wscript.Arguments(2)
-If storageName = Empty And importPath <> Empty Then storageName = Right(importPath, Len(importPath) - InStrRev(importPath, "\",-1,vbTextCompare))
-If UCase(importPath) = "/D" Or UCase(importPath) = "-D" Then updateMode = msiViewModifyDelete : importPath = Empty 'substorage will be deleted if no input data
-
-' Open database and create a view on the _Storages table
-Dim sqlQuery : Select Case updateMode
- Case msiOpenDatabaseModeReadOnly: sqlQuery = "SELECT `Name` FROM _Storages"
- Case msiViewModifyAssign: sqlQuery = "SELECT `Name`,`Data` FROM _Storages"
- Case msiViewModifyDelete: sqlQuery = "SELECT `Name` FROM _Storages WHERE `Name` = ?"
-End Select
-Dim database : Set database = installer.OpenDatabase(databasePath, openMode) : CheckError
-Dim view : Set view = database.OpenView(sqlQuery)
-Dim record
-
-If openMode = msiOpenDatabaseModeReadOnly Then 'If listing storages, simply fetch all records
- Dim message, name
- view.Execute : CheckError
- Do
- Set record = view.Fetch
- If record Is Nothing Then Exit Do
- name = record.StringData(1)
- If message = Empty Then message = name Else message = message & vbNewLine & name
- Loop
- Wscript.Echo message
-Else 'If adding a storage, insert a row, else if removing a storage, delete the row
- Set record = installer.CreateRecord(2)
- record.StringData(1) = storageName
- view.Execute record : CheckError
- If importPath <> Empty Then 'Insert storage - copy data into stream
- record.SetStream 2, importPath : CheckError
- Else 'Delete storage, fetch first to provide better error message if missing
- Set record = view.Fetch
- If record Is Nothing Then Wscript.Echo "Storage not present:", storageName : Wscript.Quit 2
- End If
- view.Modify updateMode, record : CheckError
- database.Commit : CheckError
- Set view = Nothing
- Set database = Nothing
- CheckError
-End If
-
-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