Página 1 de 2

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 11:10
por NiltonGM
Pessoal, alguém sabe se é possível instalar o MSXML2.ServerXMLHTTP.6.0 no Windows 7 Pro? Meu app em harbour + hmg usa essa dll (msxml6.dll) para se comunicar com API da Nuvem Fiscal para emissão de CTe/MDFe, nos clientes com Win10 ou Win11 funcionta top, porem um cliente mais antigo onde estou fazendo a migração da versão 3.00 para 4.00 CTe, o seu "servidor" é Windows 7, o PC é antigo não suporta update de RAM ou SSD para por um Win10, assim que rodei meu sistema apareceu a mensagem "Error WINOLE/1007 Erro no suporte a canais seguros (0x80072F7D): msxml6.dll (DOS Error -2147352567)"
Seria o caso de apenas conseguir essa dll e copiar na raiz do meu app? Não consegui achar nada no google, a IA diz que é possível instalar, mas o link para download da MS não disponibiliza essa dll.
Grato

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 11:27
por Kapiaba
Bom dia, a .DLL deve estar em C:\WINDOWS\SYSTEM32

Executar o comando Regsvr32 em um prompt de comando como ADM:

regsvr32 /u msxml6.dll

regsvr32 msxml6.dll

Abs,

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 11:31
por NiltonGM
Kapiaba escreveu:Bom dia, a .DLL deve estar em C:\WINDOWS\SYSTEM32

Executar o comando Regsvr32 em um prompt de comando como ADM:

regsvr32 /u msxml6.dll

regsvr32 msxml6.dll

Abs,
Bom dia, eu copiei a dll para a raiz do meu app, rodei o regsvr32 /u msxml6.dll, não deu certo, como faço para o Win7 reconhecer e deixa-la disponível para meu app?

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 11:35
por Kapiaba
MSXML6.png
abs.

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 11:38
por NiltonGM
Kapiaba escreveu:
MSXML6.png
abs.
Até esse passo, beleza, mas meu app em Harbour continua dando a mesma msg de erro como mencionado no primeiro post.
Será preciso reiniciar o PC?

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 11:56
por NiltonGM
Reiniciei o PC e não deu certo também. Mesma msg:
Screenshot_20231124_121626.png

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 11:59
por Kapiaba
Veja se o TLS 1.2 está ligado e reinicie. Quem sabe não resolve? Ou poste o código para análise. Vai que...

https://stackoverflow.com/questions/485 ... n-windows7

Abs.

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 12:06
por NiltonGM
Kapiaba escreveu:Veja se o TLS 1.2 está ligado e reinicie. Quem sabe não resolve? Ou poste o código para análise. Vai que...

Abs.
TLS 1.2 ativo está porque o ACBrMonitor está rodando com SSL LT_TLSv1_2, no harbour não sei como é isso, uso no Windows 10 e Win11 sem problemas com o msxml6.
De qualquer forma segue o código de autenticação com a nuvem fiscal onde invoca a dll.

Código: Selecionar todos

#include "hmg.ch"
#include <hbclass.ch>

#define MODO_ASSINCRONO .F.

class TAuthNuvemFiscal

    data regPath readonly
    data token
    data expires_in readonly
    data Authorized readonly

    method new() constructor
    method getNewToken()

end class

method new() class TAuthNuvemFiscal
    ::regPath := appData:winRegistryPath
    ::token := CharXor(RegistryRead(::regPath + "nuvemFiscal\token"), "SysWeb2023")
    ::expires_in := StoD(RegistryRead(::regPath + "nuvemFiscal\expires_in"))

    if Empty(::expires_in) .or. (::expires_in < Date())
        // Ainda não tem token ou garante o novo token 2 dias antes de expirar
        ::Authorized := ::getNewToken()
    else
        ::Authorized := true
    endif

return Self

method getNewToken() class TAuthNuvemFiscal
    local lAuth := false, lError := false
    local empresa := appEmpresas:empresas[1]    // as Keys são as mesmas para todas as empresas
    local url := "https://auth.nuvemfiscal.com.br/oauth/token"
    local connection, response
	local content_type := "application/x-www-form-urlencoded"
    local client_id := empresa:nuvemfiscal_client_id
    local client_secret := empresa:nuvemfiscal_client_secret
    local scope := "cte mdfe cnpj empresa cep conta"
    local hResp, objError, msgError, body

    begin sequence
        connection := win_oleCreateObject("MSXML2.ServerXMLHTTP.6.0")
        if Empty(connection)
            saveLog("Erro na criação do serviço: MSXML2")
            // consoleLog({'win_oleCreateObject("MSXML2.ServerXMLHTTP.6.0") retornou type: ', ValType(connection), hb_eol()})
            lError := true
            Break
        endif
    end sequence

    if lError
        return false
    endif

    begin sequence

        connection:Open("POST", url, MODO_ASSINCRONO)
        connection:SetRequestHeader("Content-Type", content_type)

        /*  Os parâmetros são separados pelo & (ê comercial),
            mas o Harbour interpreta como macro substituição!
            Neste caso, é preciso usar o chr(38) para impor o &
            a cada parâmentro na string body
         */
        body := "grant_type=client_credentials"
        body += chr(38) + "client_id=" + client_id
        body += chr(38) + "client_secret=" + client_secret
        body += chr(38) + "scope=" + scope

        connection:Send(body)
        connection:WaitForResponse(5000)

    recover using objError
        msgError := MsgDebug(connection)
        if (objError:genCode == 0)
            // consoleLog({"Erro de conexão com o site", hb_eol(), hb_eol(), msgError, hb_eol()})
            saveLog({"Erro de conexão com o site", hb_eol(), hb_eol()})
        else
            // consoleLog({"Erro de conexão com o site", hb_eol(), "Error: ", objError:description, hb_eol(), msgError, hb_eol()})
            saveLog({"Erro de conexão com o site", hb_eol(), "Error: ", objError:description, hb_eol()})
        endif
        saveLog({"Erro de conexão com o site", hb_eol(), msgError, hb_eol()})
        lError := true
        Break
    end sequence

    if lError
        return false
    endif

    response := connection:ResponseBody
    // consoleLog(response)
    hResp := hb_jsonDecode(response)

    if hb_HGetRef(hResp, "access_token")
        ::token := hResp["access_token"]
        // Converte os segundos em dia (até segunda ordem da nuvem fiscal, é sempre 2592000's, que dá 30 dias)
        ::expires_in := Date() + hResp["expires_in"]/60/60/24
        ::expires_in := ::expires_in -2 // Menos 2 dias para garantir a renovação antes de expirar efetivamente
        RegistryWrite(::regPath + "nuvemFiscal\token", CharXor(::token, "SysWeb2023"))
        RegistryWrite(::regPath + "nuvemFiscal\expires_in", DtoS(::expires_in))
        lAuth := true
    else
        msgError := MsgDebug(response, hResp)
        //Teste: Passou! | consoleLog({"ResponseBody (hResp) retornou vazio", hb_eol(), msgError})
        saveLog("Falha na autenticação com a API da NuvemFiscal, o responseBody (hResp) retornou vazio")
    endif

return lAuth
A DLL é invocada na linha 44 do código acima!
Grato.

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 12:50
por Kapiaba
Tente assim:

Código: Selecionar todos

   #ifdef __XHARBOUR__  // PERFEITO COM XHARBOUR( I Like )

      Try

         Try
            Connection := CreateObject( 'MSXML2.XMLHTTP' )
         Catch
            Connection := CreateObject( 'Microsoft.XMLHTTP' )
         End

      Catch

         MsgInfo( 'Erro na Criação do Serviço' )

         RETURN NIL

      End

   #else // PERFEITO COM HARBOUR. ( no Like. kkkkk )

      Try

         Try
            Connection := win_OleCreateObject( 'MSXML2.XMLHTTP' )
         Catch
            Connection := win_OleCreateObject( 'Microsoft.XMLHTTP' )
         End

      Catch

         MsgInfo( 'Erro na Criação do Serviço! Com Harbour', 'Atenção!' )

         RETURN NIL

      End

   #endif
Regards, saludos.

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 13:04
por Kapiaba
Veja este tópico no Fivewin Brasil, foi uma "briga" boa:

http://fivewin.com.br/index.php?/topic/ ... ent-285886

<Kapiaba> é o Kpeta. kkkkkkkkkkkkkkkkkkkkkkk

abs.

Regards, saludos.

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 13:14
por NiltonGM
Não existe esse comando TRY/CATCH no Harbour que uso (v3.2.0) com HMG UNICODE (v3.4.4). Vou substitiur o comando que você passou e ver se da certo.

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 13:17
por Kapiaba
Não existe esse comando TRY/CATCH no Harbour
Não sabia disso. Com FiveWin funciona de boas...

Abs.

Regards, saludos.

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 14:06
por NiltonGM
Kapiaba escreveu:Tente assim:

Código: Selecionar todos

   #ifdef __XHARBOUR__  // PERFEITO COM XHARBOUR( I Like )

      Try

         Try
            Connection := CreateObject( 'MSXML2.XMLHTTP' )
         Catch
            Connection := CreateObject( 'Microsoft.XMLHTTP' )
         End

      Catch

         MsgInfo( 'Erro na Criação do Serviço' )

         RETURN NIL

      End

   #else // PERFEITO COM HARBOUR. ( no Like. kkkkk )

      Try

         Try
            Connection := win_OleCreateObject( 'MSXML2.XMLHTTP' )
         Catch
            Connection := win_OleCreateObject( 'Microsoft.XMLHTTP' )
         End

      Catch

         MsgInfo( 'Erro na Criação do Serviço! Com Harbour', 'Atenção!' )

         RETURN NIL

      End

   #endif
Regards, saludos.
Usei este comando Connection := CreateObject( 'Microsoft.XMLHTTP' ), deu o mesmo erro com excessão que trocou a dll msxml6 para msxml3.dll.
De qualquer forma, agradeço sua ajuda. O cliente fará um upgrade no PC e instalará o Windows 10 Pro, aí fica tudo resolvido.
Valeu e até a próxima!

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 15:04
por JoséQuintas
Atualize o Windows 7 pra ter canais seguros.
Precisa atualizar manualmente.

Não tem nada a ver ACBR funcionar ou não, ou em instalar HTTP 6.0 porque o W7 já tem.

A mensagem diz tudo: suporte a canais seguros

Procure atualização windows 7 TLS 1.2

Talvez... se a Microsoft não mudou... a bost. é que pra baixar isso, pode precisar funcionar canal seguro kkkkk

É sério: tudo na Microsoft virou canal seguro. Pra baixar a correção, pode precisar estar corrigido primeiro kkkk

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Enviado: 24 Nov 2023 19:29
por JoséQuintas
Talvez também precise atualizar certificados raiz, já que o W7 não atualiza mais.