Windows Installer API (SDK)

DuplicateFile Table

Referenz » DuplicateFile Table | Microsoft Docs


VBS class DuplicateFile


Class classDuplicateFileTable
Private mFileKey, mComponent, mFile, mDestName, mDestFolder

    Public Property Get pFileKey
        pFileKey = mFileKey
    End Property
    Public Property Let pFileKey(strFileKey)
        mFileKey = strFileKey
    End Property
    Public Property Get pComponent
        pComponent = mComponent
    End Property
    Public Property Let pComponent(strComponent)
        mComponent = strComponent
    End Property
    Public Property Get pFile
        pFile = mFile
    End Property
    Public Property Let pFile(strFile)
        mFile = strFile
    End Property
    Public Property Get pDestName
        pDestName = mDestName
    End Property
    Public Property Let pDestName(strDestName)
        mDestName = strDestName
    End Property
    Public Property Get pDestFolder
        pDestFolder = mDestFolder
    End Property
    Public Property Let pDestFolder(strDestFolder)
        mDestFolder = strDestFolder
    End Property
    
    Private Sub Class_Initialize
        'Anweisungen
    End Sub
    ' -----------------------------------------------------------------

    Public Function CreateTable()
    Dim strSQL, objView, objTableRow

    strSQL = "CREATE TABLE " & Chr(96) & "DuplicateFile" & Chr(96) & " (" & _
              Chr(96) & "FileKey" & Chr(96) & " CHAR(72) NOT NULL, " & _
              Chr(96) & "Component_" & Chr(96) & " CHAR(72) NOT NULL, " & _
              Chr(96) & "File_" & Chr(96) & " CHAR(72) NOT NULL, " & _
              Chr(96) & "DestName" & Chr(96) & " CHAR(255) LOCALIZABLE, " & _
              Chr(96) & "DestFolder" & Chr(96) & " CHAR(32) PRIMARY KEY " & _
              Chr(96) & "FileKey" & Chr(96) & ")"

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

    msiValidation.pTable = "DuplicateFile"
    msiValidation.pColumn = "FileKey"
    msiValidation.pNullable = "N"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = ""
    msiValidation.pKeyColumn = Null
    msiValidation.pCategory = "Identifier"
    msiValidation.pSet = ""
    msiValidation.pDescription = "Primary key used to identify a particular file entry."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

    msiValidation.pTable = "DuplicateFile"
    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 referencing Component that controls the duplicate file."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

    msiValidation.pTable = "DuplicateFile"
    msiValidation.pColumn = "File_"
    msiValidation.pNullable = "N"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = "File"
    msiValidation.pKeyColumn = 1
    msiValidation.pCategory = "Identifier"
    msiValidation.pSet = ""
    msiValidation.pDescription = "Foreign key referencing the source file to be duplicated."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

    msiValidation.pTable = "DuplicateFile"
    msiValidation.pColumn = "DestName"
    msiValidation.pNullable = "Y"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = "File"
    msiValidation.pKeyColumn = Null
    msiValidation.pCategory = "Filename"
    msiValidation.pSet = ""
    msiValidation.pDescription = "Filename to be given to the duplicate file."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

    msiValidation.pTable = "DuplicateFile"
    msiValidation.pColumn = "DestFolder"
    msiValidation.pNullable = "Y"
    msiValidation.pMinValue = Null
    msiValidation.pMaxValue = Null
    msiValidation.pKeyTable = "File"
    msiValidation.pKeyColumn = Null
    msiValidation.pCategory = "Identifier"
    msiValidation.pSet = ""
    msiValidation.pDescription = "Name of a property whose value is assumed to " & _
                                "resolve to the full pathname to a destination folder."

        msiValidation.ModifyValidationRecord
        msiValidation.ResetValidationRecord

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

    Public Function ModifyDuplicateFileRecord()
    Dim strSQL, objView, objTableRow

    strSQL = "SELECT * FROM DuplicateFile"

    Set objView = objDatabase.OpenView(strSQL)
    objView.Execute
    Do 
        Set objTableRow = objView.Fetch
        If objTableRow Is Nothing Then
            Set objTableRow = objInstaller.CreateRecord(5)
            objTableRow.StringData(1) = mFileKey
            objTableRow.StringData(2) = mComponent
            objTableRow.StringData(3) = mFile
            objTableRow.StringData(4) = mDestName
            objTableRow.StringData(5) = mDestFolder
            objView.Modify msiViewModifyAssign, objTableRow
            Exit Do
        End If
            objTableRow.StringData(1) = mFileKey
            objTableRow.StringData(2) = mComponent
            objTableRow.StringData(3) = mFile
            objTableRow.StringData(4) = mDestName
            objTableRow.StringData(5) = mDestFolder
            objView.Modify msiViewModifyAssign, objTableRow
    Loop
    objDatabase.Commit()
    objView.Close
    Set objView = Nothing

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

    Public Function DeleteDuplicateFileRecord()
    Dim strSQL, objView, objTableRow

    strSQL = "SELECT * FROM DuplicateFile"

    Set objView = objDatabase.OpenView(strSQL)
    objView.Execute
        Do 
            Set objTableRow = objView.Fetch
            If objTableRow Is Nothing Then Exit Do
        
            If objTableRow.StringData(2) = 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 DuplicateFile"

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

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