Windows Installer API (SDK)

Binary Table

Referenz » Binary Table | Microsoft Docs


VBS class Binary


Class classBinaryTable
Private mName, mData

    Public Property Get pName
        pName = mName
    End Property
    Public Property Let pName(strName)
        mName = strName
    End Property
    Public Property Get pData
        pData = mData
    End Property
    Public Property Let pData(binaryData)
        mData = binaryData
    End Property
    
    Private Sub Class_Initialize
        'Anweisungen
    End Sub
    ' -----------------------------------------------------------------

    Public Function CreateTable()
    Dim strSQL, objView, objTableRow

    strSQL = "CREATE TABLE " & Chr(96) & "Binary" & Chr(96) & " (" & _
        Chr(96) & "Name" & Chr(96) & " CHAR(72) NOT NULL, " & _
        Chr(96) & "Data" & Chr(96) & " OBJECT NOT NULL PRIMARY KEY , " & _
        Chr(96) & "Name" & Chr(96) & ")"

    Set objView = objDatabase.OpenView(strSQL)
    objView.Execute
    objDatabase.Commit()

    msiValidationTable.pTable = "Binary"
    msiValidationTable.pColumn = "Name"
    msiValidationTable.pNullable = "N"
    msiValidationTable.pMinValue = Null
    msiValidationTable.pMaxValue = Null
    msiValidationTable.pKeyTable = ""
    msiValidationTable.pKeyColumn = Null
    msiValidationTable.pCategory = "Identifier"
    msiValidationTable.pSet = ""
    msiValidationTable.pDescription = "Unique key identifying the binary data."

        msiValidationTable.ModifyAssignValidationRecord
        msiValidationTable.ResetValidationRecord

    msiValidationTable.pTable = "Binary"
    msiValidationTable.pColumn = "Data"
    msiValidationTable.pNullable = "N"
    msiValidationTable.pMinValue = Null
    msiValidationTable.pMaxValue = Null
    msiValidationTable.pKeyTable = ""
    msiValidationTable.pKeyColumn = Null
    msiValidationTable.pCategory = "Binary"
    msiValidationTable.pSet = ""
    msiValidationTable.pDescription = "The unformatted binary data."

        msiValidationTable.ModifyAssignValidationRecord
        msiValidationTable.ResetValidationRecord

    Set objView = Nothing
    
    End Function
    ' -----------------------------------------------------------------

    Public Function ModifyBinaryRecord()
    Dim strSQL, objView, objRecord

    strSQL = "SELECT " & Chr(96) & "Name" & Chr(96) & "," & _
                            Chr(96) & "Data" & Chr(96) & " FROM Binary"

    Set objView = objDatabase.OpenView(strSQL)
    Set objRecord = objInstaller.CreateRecord(2)
        objRecord.StringData(1) = mName
        objView.Execute objRecord
        objRecord.SetStream 2, mData
        objView.Modify msiViewModifyAssign, objRecord
    
        objDatabase.Commit()
        objView.Close
    Set objView = Nothing

    End Function
    ' -----------------------------------------------------------------

    Public Function DeleteBinaryRecords()
    Dim strSQL, objView, objTableRow

    strSQL = "SELECT * FROM Binary"

    Set objView = objDatabase.OpenView(strSQL)
    objView.Execute
        Do 
            Set objTableRow = objView.Fetch
            If objTableRow Is Nothing Then Exit Do
        
            If objTableRow.StringData(1) = mName Then _
               objView.Modify msiViewModifyDelete, objTableRow
        Loop
    objDatabase.Commit()
    objView.Close
    Set objView = Nothing

    End Function
    ' -----------------------------------------------------------------

    Public Function DeleteAllRecords()
    Dim strSQL, objView

    strSQL = "DELETE FROM Binary"

    Set objView = objDatabase.OpenView(strSQL)
        objView.Execute
    objDatabase.Commit()
        objView.Close
    Set objView = Nothing

    End Function
    ' -----------------------------------------------------------------

    Public Function DropTable()
    Dim strSQL, objView

    strSQL = "DROP TABLE Binary"

    Set objView = objDatabase.OpenView(strSQL)
        objView.Execute
    objDatabase.Commit()
        objView.Close
    Set objView = Nothing

    End Function
    ' -----------------------------------------------------------------

    Private Sub Class_Terminate()
        'Anweisungen
    End Sub
End Class
' ---------------------------------------------------------------------