Windows Installer API (SDK)

IniFile Table

Referenz » IniFile Table | Microsoft Docs


VBS class IniFile


Class classIniFileTable
Private mIniFile, mFileName, mDirProperty, mSection, mKey, mValue, mAction, mComponent

    Public Property Get pIniFile
        pIniFile = mIniFile
    End Property
    Public Property Let pIniFile(strIniFile)
        mIniFile = strIniFile
    End Property
    Public Property Get pFileName
        pFileName = mFileName
    End Property
    Public Property Let pFileName(strFileName)
        mFileName = strFileName
    End Property
    Public Property Get pDirProperty
        pDirProperty = mDirProperty
    End Property
    Public Property Let pDirProperty(strDirProperty)
        mDirProperty = strDirProperty
    End Property
    Public Property Get pSection
        pSection = mSection
    End Property
    Public Property Let pSection(strSection)
        mSection = strSection
    End Property
    Public Property Get pKey
        pKey = mKey
    End Property
    Public Property Let pKey(strKey)
        mKey = strKey
    End Property
    Public Property Get pValue
        pValue = mValue
    End Property
    Public Property Let pValue(strValue)
        mValue = strValue
    End Property
    Public Property Get pAction
        pAction = mAction
    End Property
    Public Property Let pAction(intAction)
        mAction = intAction
    End Property
    Public Property Get pComponent
        pComponent = mComponent
    End Property
    Public Property Let pComponent(strComponent)
        mComponent = strComponent
    End Property
    
    Private Sub Class_Initialize
        'Anweisungen
    End Sub
    ' -----------------------------------------------------------------
    
    Public Function CreateTable()
    Dim strSQL, objView

    strSQL = "CREATE TABLE " & Chr(96) & "IniFile" & Chr(96) & " (" & _
                 Chr(96) & "IniFile" & Chr(96) & " CHAR(72) NOT NULL, " & _
                 Chr(96) & "FileName" & Chr(96) & " CHAR(255) LOCALIZABLE NOT NULL, " & _
                 Chr(96) & "DirProperty" & Chr(96) & " CHAR(72), " & _
                 Chr(96) & "Section" & Chr(96) & " CHAR(255) LOCALIZABLE NOT NULL, " & _
                 Chr(96) & "Key" & Chr(96) & " CHAR(128) LOCALIZABLE NOT NULL, " & _
                 Chr(96) & "Value" & Chr(96) & " CHAR(255) LOCALIZABLE NOT NULL, " & _
                 Chr(96) & "Action" & Chr(96) & " SHORT NOT NULL, " & _
                 Chr(96) & "Component_" & Chr(96) & " CHAR(72) NOT NULL PRIMARY KEY " & _
                 Chr(96) & "IniFile" & Chr(96) & ")"

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

    msiValidation.pTable = "IniFile"
    msiValidation.pColumn = "IniFile"
    msiValidation.pNullable = "N"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = ""
    msiValidation.pKeyColumn = Null
    msiValidation.pCategory = "Identifier"
    msiValidation.pSet = ""
    msiValidation.pDescription = "Primary key, non-localized token."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

    msiValidation.pTable = "IniFile"
    msiValidation.pColumn = "FileName"
    msiValidation.pNullable = "N"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = ""
    msiValidation.pKeyColumn = Null
    msiValidation.pCategory = "Filename"
    msiValidation.pSet = ""
    msiValidation.pDescription = "The .INI file name in which to write the information."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

    msiValidation.pTable = "IniFile"
    msiValidation.pColumn = "DirProperty"
    msiValidation.pNullable = "Y"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = ""
    msiValidation.pKeyColumn = Null
    msiValidation.pCategory = "Identifier"
    msiValidation.pSet = ""
    msiValidation.pDescription = "Foreign key into the Directory table denoting the " & _
                                    "directory where the .INI file is."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

    msiValidation.pTable = "IniFile"
    msiValidation.pColumn = "Section"
    msiValidation.pNullable = "N"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = ""
    msiValidation.pKeyColumn = Null
    msiValidation.pCategory = "Formatted"
    msiValidation.pSet = ""
    msiValidation.pDescription = "The .INI file Section."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

    msiValidation.pTable = "IniFile"
    msiValidation.pColumn = "Key"
    msiValidation.pNullable = "N"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = ""
    msiValidation.pKeyColumn = Null
    msiValidation.pCategory = "Formatted"
    msiValidation.pSet = ""
    msiValidation.pDescription = "The .INI file key below Section."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

    msiValidation.pTable = "IniFile"
    msiValidation.pColumn = "Value"
    msiValidation.pNullable = "N"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = ""
    msiValidation.pKeyColumn = Null
    msiValidation.pCategory = "Formatted"
    msiValidation.pSet = ""
    msiValidation.pDescription = "The value to be written."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

    msiValidation.pTable = "IniFile"
    msiValidation.pColumn = "Action"
    msiValidation.pNullable = "N"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = ""
    msiValidation.pKeyColumn = Null
    msiValidation.pCategory = ""
    msiValidation.pSet = "0;1;3"
    msiValidation.pDescription = "The type of modification to be made, one of iifEnum."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

    msiValidation.pTable = "IniFile"
    msiValidation.pColumn = "Component_"
    msiValidation.pNullable = "N"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = "Component"
    msiValidation.pKeyColumn = 1
    msiValidation.pCategory = "Identifier"
    msiValidation.pSet = ""
    msiValidation.pDescription = "Foreign key into the Component table referencing " & _
                            "component that controls the installing of the .INI value."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

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

    Public Function ModifyIniFileRecord()
    Dim strSQL, objView, objTableRow

    strSQL = "SELECT * FROM IniFile"

    Set objView = objDatabase.OpenView(strSQL)
    objView.Execute
    Do 
        Set objTableRow = objView.Fetch
        If objTableRow Is Nothing Then
            Set objTableRow = objInstaller.CreateRecord(8)
            objTableRow.StringData(1) = mIniFile
            objTableRow.StringData(2) = mFileName
            objTableRow.StringData(3) = mDirProperty
            objTableRow.StringData(4) = mSection
            objTableRow.StringData(5) = mKey
            objTableRow.StringData(6) = mValue
            objTableRow.IntegerData(7) = mAction
            objTableRow.StringData(8) = mComponent
            objView.Modify msiViewModifyAssign, objTableRow
            Exit Do
        End If
        objTableRow.StringData(1) = mIniFile
        objTableRow.StringData(2) = mFileName
        objTableRow.StringData(3) = mDirProperty
        objTableRow.StringData(4) = mSection
        objTableRow.StringData(5) = mKey
        objTableRow.StringData(6) = mValue
        objTableRow.IntegerData(7) = mAction
        objTableRow.StringData(8) = mComponent
        objView.Modify msiViewModifyAssign, objTableRow
    Loop
    objDatabase.Commit()
    objView.Close
    Set objView = Nothing

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

    Public Function DeleteIniFileRecord()
    Dim strSQL, objView, objTableRow

    strSQL = "SELECT * FROM IniFile"

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

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

    Public Function DeleteAllRecords()
    Dim strSQL, objView

    strSQL = "DELETE FROM IniFile"

    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 IniFile"

    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
' ---------------------------------------------------------------------