【问题标题】:OTA version 12.21 and ALM version 11.52 compatibility issueOTA 12.21 版和 ALM 11.52 版兼容性问题
【发布时间】:2016-05-11 06:31:30
【问题描述】:

我目前同时使用 ALM 11.52 和 ALM 12.21。我需要在两个 ALM 版本 9 上运行一个 excel vba 宏,因为有些项目在 11.52 上,有些在 12.21 上)。但是当我尝试连接到 ALM 11.52 上的项目时,我收到一条错误消息,指出 OTA 版本 (12.21) 与 ALM 服务器版本 11.52 不兼容。有什么办法可以解决 OTA 兼容性问题?

【问题讨论】:

    标签: excel vba alm


    【解决方案1】:

    为简单起见,我们可以说 VBA 使用在系统范围级别注册的 OTA。在这种情况下,只能注册一个客户。 坦率地说,您不应该尝试在同一流程中与 2 个不同的客户合作。但是,如果您需要这个,您需要加载 ALM 提供的 Side-By-Side 清单。 默认情况下,位于文件夹中的 ALM 客户端 %LOCALAPPDATA%\HP\ALM 客户端。在文件 Deployments.ini 中,您可以找到确切的 ALM 客户端部署位置(取决于 ALM URL 或版本) 您可以使用文件 application.sxs.manifest 来激活您需要的激活上下文。这是示例代码:

    Private Declare Function CreateActCtx Lib "kernel32" Alias "CreateActCtxA" (ByRef pActCtx As ACTCTX_) As Long
    Private Declare Sub ReleaseActCtx Lib "kernel32" (ByVal hActCtx As Long)
    
    Private Declare Function ActivateActCtx Lib "kernel32" (ByVal hActCtx As Long, ByRef lpCookie As Long) As Integer
    Private Declare Function DeactivateActCtx Lib "kernel32" (ByVal dwFlags As Long, ByVal ulCookie As Long) As Boolean
    
    
    Private Declare Function GetLastError Lib "kernel32" () As Long
    Declare Sub SetLastError Lib "kernel32.dll" (ByVal dwErrCode As Long)
    
    Private Type ACTCTX_
        cbSize As Long
        dwFlags As Long
        lpSource As String
        wProcessorArchitecture As Integer
        wLangId As Integer
        lpAssemblyDirectory As String
        lpResourceName As String
        lpApplicationName As String
        hModule As Long
    End Type
    
    Private actctx As ACTCTX_
    Private hActCtx As Long
    Private actCtxCookie As Long
    
    Const ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID As Long = 4
    Const INVALID_HANDLE_VALUE As Long = -1
    
    Const CREATE_CONTEXT_ERROR As Long = 1
    Const ACTIVATE_CONTEXT_ERROR As Long = 2
    
    Public Sub ActivateOtaContext(ByVal almClientDeploymendPath As String)
      Dim actctx As ACTCTX_, ativated As Integer
    
    
      If Right(almClientDeploymendPath, 1) = "\" Then
        almClientDeploymendPath = Left(almClientDeploymendPath, Len(almClientDeploymendPath) - 1)
      End If
      actctx.cbSize = Len(actctx)
      actctx.dwFlags = ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID
      actctx.lpAssemblyDirectory = almClientDeploymendPath
      actctx.lpSource = almClientDeploymendPath & "\application.sxs.manifest"
    
      hActCtx = CreateActCtx(actctx)
      If hActCtx = INVALID_HANDLE_VALUE Then
        Err.Raise vbObjectError + CREATE_CONTEXT_ERROR, , "Cannot create activation context. Error code: " + GetLastError
      End If
      If ActivateActCtx(hActCtx, actCtxCookie) <> 1 Then
        Err.Raise vbObjectError + ACTIVATE_CONTEXT_ERROR, , "Cannot activate context. Error code: " + GetLastError
      End If
    End Sub
    
    Public Sub DeactivateOtaContext()
      If actCtxCookie > 0 Then
        Call DeactivateActCtx(0, actCtxCookie)
        actCtxCookie = 0
      End If
      If hActCtx > 0 Then
        Call ReleaseActCtx(hActCtx)
      End If
    End Sub
    
    Sub Test()
      Dim tdConnection As ITDConnection10
      Dim AlmClientsBasePath As String
      AlmClientsBasePath = Environ("LocalAppData") + "\HP\ALM-Client"
    
      ActivateOtaContext AlmClientsBasePath + "\alm1221"
    
      Set tdConnection = CreateObject("TDApiOle80.TDConnection")
      tdConnection.InitConnectionEx "http://alm1221.company.net/qcbin/"
      tdConnection.LoginEx "user1", "pwd1"
      tdConnection.Logout
      tdConnection.ReleaseConnection
      Set tdConnection = Nothing
    
      DeactivateOtaContext
    
      ActivateOtaContext AlmClientsBasePath + "\alm115"
    
    
      Set tdConnection = CreateObject("TDApiOle80.TDConnection")
      tdConnection.InitConnectionEx "http://alm.company.net/qcbin/"
      tdConnection.LoginEx "user2", "pwd2"
      tdConnection.Logout
      tdConnection.ReleaseConnection
      Set tdConnection = Nothing
    
      DeactivateOtaContext
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多