MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem 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
Nilton Medeiros
nilton@sistrom.com.br
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem 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,
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem 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?
Nilton Medeiros
nilton@sistrom.com.br
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem por Kapiaba »

MSXML6.png
abs.
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem 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?
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem por NiltonGM »

Reiniciei o PC e não deu certo também. Mesma msg:
Screenshot_20231124_121626.png
Nilton Medeiros
nilton@sistrom.com.br
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem 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.
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem 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.
Nilton Medeiros
nilton@sistrom.com.br
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem 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.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem 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.
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem 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.
Nilton Medeiros
nilton@sistrom.com.br
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem por Kapiaba »

Não existe esse comando TRY/CATCH no Harbour
Não sabia disso. Com FiveWin funciona de boas...

Abs.

Regards, saludos.
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem 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!
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

MSXML2.ServerXMLHTTP.6.0 pode ser instalado no Win7

Mensagem por JoséQuintas »

Talvez também precise atualizar certificados raiz, já que o W7 não atualiza mais.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder