home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 May / Chip_1999-05_cd.bin / zkuste / vbasic / Data / Priklady / log.bas < prev    next >
BASIC Source File  |  1999-03-04  |  7KB  |  169 lines

  1. Option Explicit
  2.  
  3. 'Pouze pro 32 bitovΘ prost°edφ
  4.  
  5. 'Funkce a procedury v tomto modulu vytvß°φ log soubor (p°i instalaci n∞jakΘho programu),
  6. 'kter² slou₧φ p°i odinstalovßnφ ke korektnφmu odstran∞nφ vÜech jeho komponent. Tento log
  7. 'soubor je pou₧it programem ST4UNST.EXE, pokud u₧ivatel odstranφ program pomocφ kontrol
  8. 'panelu (p°idat nebo ubrat programy) ve Windows 95.
  9. '
  10. 'Funkce jsou zalo₧eny na "trasakΦnφm modelu zpracovßnφ dat". P°i spuÜt∞nφ programu setup
  11. 'je t°eba zavolat funkci NewAction. Pokud instalace prob∞hne v po°ßdku, volßme funkci
  12. 'CommitAction, jinak funkci AbortAction.
  13.  
  14. #If Win32 And LOGGING Then
  15.  
  16. Global Const fLOG_WARNINGS = True 'True - v log souboru se budou ob∞vovat upozorn∞nφ (WARNING)
  17.  
  18. Global Const gstrKEY_PRIVATEFILE = "PrivateFile"
  19. Global Const gstrKEY_SHAREDFILE = "SharedFile"
  20. Global Const gstrKEY_SYSTEMFILE = "SystemFile"
  21. Global Const gstrKEY_CREATEDIR = "CreateDir"
  22. Global Const gstrKEY_PROGMANGROUP = "ProgManGroup"
  23. Global Const gstrKEY_PROGMANITEM = "ProgManItem"
  24. Global Const gstrKEY_SHELLFOLDER = "ShellFolder"
  25. Global Const gstrKEY_SHELLLINK = "ShellLink"
  26. Global Const gstrKEY_DLLSELFREGISTER = "DllSelfRegister"
  27. Global Const gstrKEY_EXESELFREGISTER = "ExeSelfRegister"
  28. Global Const gstrKEY_REMOTEREGISTER = "RemoteRegister"
  29. Global Const gstrKEY_REGKEY = "RegKey"
  30. Global Const gstrKEY_REGVALUE = "RegValue"
  31.  
  32. 'Chyby STKIT432.DLL
  33. Private Const LOGERR_SUCCESS = 0
  34. Private Const LOGERR_INVALIDARGS = 1
  35. Private Const LOGERR_OUTOFMEMORY = 2
  36. Private Const LOGERR_EXCEEDEDCAPACITY = 3
  37. Private Const LOGERR_WRITEERROR = 4
  38. Private Const LOGERR_NOCURRENTACTION = 5
  39. Private Const LOGERR_UNEXPECTED = 6
  40. Private Const LOGERR_FILENOTFOUND = 7
  41.  
  42. Private Const LogErrOK = 1    'OK k pokraΦovßnφ i p°es chybu
  43. Private Const LogErrFatal = 2 'UkonΦenφ instalace (zßva₧nß chyba)
  44.  
  45. 'Funkce knihovny STKIT432.DLL
  46. Private Declare Function DllAbortAction Lib "STKIT432.DLL" Alias "AbortAction" () As Long
  47. Private Declare Function DllAddActionNote Lib "STKIT432.DLL" Alias "AddActionNote" (ByVal lpszNote As String) As Long
  48. Private Declare Function DllChangeActionKey Lib "STKIT432.DLL" Alias "ChangeActionKey" (ByVal lpszNewKey As String) As Long
  49. Private Declare Function DllCommitAction Lib "STKIT432.DLL" Alias "CommitAction" () As Long
  50. Private Declare Function fDllWithinAction Lib "STKIT432.DLL" Alias "fWithinAction" () As Long
  51. Private Declare Function DllLogError Lib "STKIT432.DLL" Alias "LogError" (ByVal lpszERROR As String, ByVal lpszDURINGACTION As String, ByVal lpszErrMsg As String) As Long
  52. Private Declare Function DllLogNote Lib "STKIT432.DLL" Alias "LogNote" (ByVal lpszNote As String) As Long
  53. Private Declare Function DllLogWarning Lib "STKIT432.DLL" Alias "LogWarning" (ByVal lpszWARNING As String, ByVal lpszDURINGACTION As String, ByVal lpszWarningMsg As String) As Long
  54. Private Declare Function DllNewAction Lib "STKIT432.DLL" Alias "NewAction" (ByVal lpszKey As String, ByVal lpszData As String) As Long
  55. Private Declare Function DllEnableLogging Lib "STKIT432.DLL" Alias "EnableLogging" (ByVal lpszFilename As String) As Long
  56. Private Declare Function DllDisableLogging Lib "STKIT432.DLL" Alias "DisableLogging" () As Long
  57.  
  58. 'UkonΦφ aktußlnφ akci
  59. Sub AbortAction()
  60.     ShowLoggingError DllAbortAction(), LogErrFatal
  61. End Sub
  62.  
  63. 'P°idß poznßmku do log souboru
  64. Sub AddActionNote(ByVal strNote As String)
  65.     ShowLoggingError DllAddActionNote(strNote), LogErrOK
  66. End Sub
  67.  
  68. 'Zm∞nφ klφΦ aktußlnφ akce
  69. Sub ChangeActionKey(ByVal strNewKey As String)
  70.     ShowLoggingError DllChangeActionKey(strNewKey), LogErrFatal
  71. End Sub
  72.  
  73. 'Potvrzenφ ∙sp∞ÜnΘ akce, akce bude zapsßna do log souboru
  74. Sub CommitAction()
  75.     ShowLoggingError DllCommitAction(), LogErrFatal
  76. End Sub
  77.  
  78. 'ZruÜφ zßpis do log souboru. VÜechny funkce budou volßny a v²sledky musφ b²t v po°ßdku,
  79. 'ale nebudou zapisovßny na disk
  80. Sub DisableLogging()
  81.     ShowLoggingError DllDisableLogging(), LogErrFatal
  82. End Sub
  83.  
  84. 'Umo₧nφ zßpis do log souboru
  85. Sub EnableLogging(ByVal strLogFileName As String)
  86.     ShowLoggingError DllEnableLogging(strLogFileName), LogErrFatal
  87. End Sub
  88.  
  89. 'Zapisuje chyby do log souboru. Nejde zruÜit funkcφ AbortAction
  90. Sub LogError(ByVal strErr As String)
  91.     ShowLoggingError DllLogError(ResolveResString(resLOG_ERROR), ResolveResString(resLOG_DURINGACTION), strErr), LogErrFatal
  92. End Sub
  93.  
  94. 'Zapisuje upozorn∞nφ (WARNING) do log souboru. Nejde zruÜit funkcφ AbortAction.
  95. 'Dß se zruÜit nastavenφm konstanty fLOG_WARNINGS na hodnotu false
  96. Sub LogWarning(ByVal strWarning As String)
  97.     If fLOG_WARNINGS Then
  98.         ShowLoggingError DllLogWarning(ResolveResString(resLOG_WARNING), ResolveResString(resLOG_DURINGACTION), strWarning), LogErrFatal
  99.     End If
  100. End Sub
  101.  
  102. 'Zapisuje poznßmku do log souboru; poznßmka se nemusφ vztahovat k aktußlnφ akci
  103. Sub LogNote(ByVal strNote As String)
  104.     ShowLoggingError DllLogNote(strNote), LogErrOK
  105. End Sub
  106.  
  107. 'Start novΘ akce pro vytvß°enφ logu. Jestli₧e je tato funkce volßna p°ed tφm,
  108. 'ne₧ je p°edchozφ funkce ukonΦena (Commit nebo Abort), je p°edchozφ funkce umφst∞na
  109. 'do zßsobnφku. Po potvrzenφ aktußlnφ akce se stßvß aktußlnφ akce v zßsobnφku.
  110. Sub NewAction(ByVal strKey As String, ByVal strData As String)
  111.     ShowLoggingError DllNewAction(strKey, strData), LogErrFatal
  112. End Sub
  113.  
  114. Sub ShowLoggingError(ByVal lErr As Long, ByVal lErrSeverity As Long)
  115.     If lErr = LOGERR_SUCCESS Then
  116.         Exit Sub
  117.     End If
  118.     
  119.     Dim strErrMsg As String
  120.     Static fRecursive As Boolean
  121.     
  122.     If fRecursive Then
  123.         DisableLogging
  124.         MsgError ResolveResString(resUNEXPECTED), vbExclamation Or vbOKOnly, gstrTitle
  125.         ExitSetup frmsetup1, gintret_fatal
  126.     End If
  127.  
  128.     fRecursive = True
  129.  
  130.     Select Case lErr
  131.       Case LOGERR_OUTOFMEMORY, LOGERR_WRITEERROR, LOGERR_UNEXPECTED, LOGERR_FILENOTFOUND
  132.         strErrMsg = ResolveResString(resUNEXPECTED)   
  133.       Case LOGERR_INVALIDARGS, LOGERR_EXCEEDEDCAPACITY, LOGERR_NOCURRENTACTION
  134.         strErrMsg = ResolveResString(resUNEXPECTED)
  135.       Case Else
  136.         strErrMsg = ResolveResString(resUNEXPECTED)
  137.     End Select
  138.     
  139.     Dim iRet As Integer
  140.     Dim fAbort As Boolean
  141.     
  142.     fAbort = False
  143.     If lErrSeverity = LogErrOK Then
  144.         iRet = MsgFunc(strErrMsg, MB_OKCANCEL Or MB_ICONEXCLAMATION, gstrTitle)
  145.         Select Case iRet
  146.         Case IDOK
  147.         Case IDCANCEL
  148.             fAbort = True
  149.         Case Else
  150.             fAbort = True
  151.         End Select
  152.     Else
  153.         MsgFunc strErrMsg, MB_OK Or MB_ICONEXCLAMATION, gstrTitle
  154.         fAbort = True
  155.     End If
  156.  
  157.     If fAbort Then
  158.         ExitSetup frmCopy, gintRET_ABORT
  159.     End If
  160.  
  161.     fRecursive = False
  162. End Sub
  163.  
  164. 'Vracφ true, jestli₧e existuje n∞jakß aktußlnφ akce
  165. Function fWithinAction() As Boolean
  166.     fWithinAction = fDllWithinAction()
  167. End Function
  168.  
  169. #End IF