home *** CD-ROM | disk | FTP | other *** search
/ Chip: 25 Years Anniversary / CHIP_25Jahre_Jubilaeum.iso / downloads / 401065 / WPO11 / WPO11.msi / Binary.NewBinary25 < prev    next >
Text File  |  2003-04-15  |  5KB  |  153 lines

  1. Option Explicit
  2.  
  3. Const msiNoAction = -1
  4. Const msiInstallStateAdvertise = 1
  5. Const msiInstallStateAbsent = 2
  6. Const msiInstallStateLocal = 3
  7. Const msiInstallStateSource = 4
  8. Const msiInstallStateDefault = 5
  9.  
  10. '*********************************************************************************************
  11. '    Sub:        setRequiredFeatures
  12. '
  13. '    Args:        none
  14. '
  15. '    Returns:    none
  16. '
  17. '    Notes:    - reads data from `FeaturesRequired1
  18. '            - sets `FeaturesRequired`.`RequiredFeature` to be installed if `FeaturesRequired`.`Feature_` is going to be installed
  19. '            - limitations : will not update the Selection tree at real time
  20. '            - important : data is not validated, if there is an error in `FeaturesRequired` the install sub will fail
  21. '
  22. '*********************************************************************************************
  23. Sub setRequiredFeatures
  24.  
  25. On Error Resume Next
  26.     Dim sFeature, sFeatures()
  27.     Dim sReqFeature, sReqFeatures()
  28.  
  29.     getFeatures "", sFeatures
  30.  
  31.     For Each sFeature in sFeatures
  32.  
  33.         If (IsFeatureSelected(sFeature)) Then
  34.  
  35.             getFeatures sFeature, sReqFeatures
  36.  
  37.             For Each sReqFeature in sReqFeatures
  38.                 If (Not (IsFeatureSelected(sReqFeature))) Then
  39.                     Session.FeatureRequestState(sReqFeature) = msiInstallStateLocal
  40.                 End If
  41.             Next
  42.         End If
  43.  
  44.     Next
  45. End Sub
  46.  
  47.  
  48. '*********************************************************************************************
  49. '    Sub:        getFeatures(sFeature, BYREF anArr)
  50. '
  51. '    Args:        STRING sFeature    -> if "" then * are selected from `FeaturesRequired`.`Feature_`
  52. '                        -> if Not "" then * are selected from `FeaturesRequired`.`RequiredFeature` ...
  53. '                            where `FeaturesRequired`.`Feature_` = sFeature
  54. '            ARRAY anArr        -> results
  55. '
  56. '    Notes:    - no duplicate entries are returned
  57. '
  58. '*********************************************************************************************
  59. Sub getFeatures(sFeature, BYREF anArr)
  60. On Error Resume Next
  61.     Dim objRec, sFeatures, sCurFeature, sQuery, x
  62.     Dim objDB: Set objDB = Session.Database
  63.  
  64.     If (sFeature = "") Then
  65.         sQuery = "SELECT `FeaturesRequired`.`Feature_` FROM `FeaturesRequired` ORDER BY `FeaturesRequired`.`Feature_`"
  66.     Else
  67.         sQuery = "SELECT `FeaturesRequired`.`RequiredFeature` FROM `FeaturesRequired` WHERE `FeaturesRequired`.`Feature_` = '" & sFeature & "' ORDER BY `FeaturesRequired`.`Feature_`"
  68.     End If
  69.  
  70.     Dim objView: Set objView = objDB.OpenView(sQuery)
  71.  
  72.     objView.Execute
  73.  
  74.     sFeatures = ""
  75.     sCurFeature = ""
  76.     x = 0
  77.  
  78.     Do
  79.         Set objRec = objView.Fetch
  80.  
  81.         If (objRec Is Nothing) Then
  82.             Exit Do
  83.         Else
  84.  
  85.             If (sCurFeature <> objRec.StringData(1)) Then
  86.                 If (sFeatures <> "") Then
  87.                     sFeatures = sFeatures & ","
  88.                 End If
  89.  
  90.                 If (x = 0) Then
  91.                     ReDim anArr(0)
  92.                 Else
  93.                     ReDim Preserve anArr(Ubound(anArr) + 1)
  94.                 End If
  95.                 
  96.                 anArr(Ubound(anArr)) = objRec.StringData(1)
  97.                 sCurFeature = objRec.StringData(1)
  98.                 x = 1
  99.             End If
  100.         End If
  101.     Loop
  102.  
  103. End Sub
  104.  
  105.  
  106. '*********************************************************************************************
  107. '    Function:    getFeatureAction(sFeature)
  108. '
  109. '    Args:        STRING sFeature = `Feature`.`Feature`
  110. '
  111. '    Returns:    The current install state of the feature
  112. '
  113. '*********************************************************************************************
  114. Function getFeatureState(sFeature)
  115. On Error Resume Next
  116.     getFeatureState = Session.FeatureCurrentState(sFeature)
  117. End Function
  118.  
  119. '*********************************************************************************************
  120. '    Function:    getFeatureAction(sFeature)
  121. '
  122. '    Args:        STRING sFeature = `Feature`.`Feature`
  123. '
  124. '    Returns:    The requested action of the feature
  125. '
  126. '*********************************************************************************************
  127. Function getFeatureAction(sFeature)
  128. On Error Resume Next
  129.     getFeatureAction = Session.FeatureRequestState(sFeature)
  130. End Function
  131.  
  132.  
  133. '*********************************************************************************************
  134. '    Function:    IsFeatureSelected(sFeature)
  135. '
  136. '    Args:        STRING sFeature = `Feature`.`Feature`
  137. '
  138. '    Returns:    True \ False
  139. '
  140. '    Notes:        Determines if a feature is selected for install
  141. '*********************************************************************************************
  142. Function IsFeatureSelected(sFeature)
  143. On Error Resume Next
  144.     Dim nState: nState = getFeatureState(sFeature)
  145.     Dim nAction: nAction = getFeatureAction(sFeature)
  146.  
  147.     If ((nAction > msiInstallStateAbsent) Or ((nState > msiInstallStateAbsent) And (nAction = msiNoAction))) Then
  148.         IsFeatureSelected = True
  149.     Else
  150.         IsFeatureSelected = False
  151.     End If
  152.  
  153. End Function