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