Ir para conteúdo
  • Cadastre-se

dev botao

Erro desconhecido ao Enviar MDF-e no comando ACBrMDFe1.Enviar


Ver Solução Respondido por antonio.carlos,
  • Este tópico foi criado há 1275 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Olá Bom Dia!

Atualizei a versão do ACBr pois no manifesto agora está exigindo a informação do produto predominante, pois bem depois de feito a atualização e a mesma compilou normalmente no delphi, atualizei também a pasta schemas, mas ao tentar gerar e enviar o manifesto está ocorrendo um erro de Access Violation(segue em anexo a imagem do erro).

Essa parte de enviar o manifesto funcionava antes de atualizar a versão, mas agora da esse erro o pode ser? Fiz a atualização do meu windows 7 64 bits sp1 só ficou 3 atualizações importantes mas que não atualiza será que pode ter haver com esse erro? 

No ACBrMDFe tem alguma opção de ativar para ele gerar arquivo de log?

Segue o trecho do programa:

 LerConfiguracao;
  ACBrMDFe1.Manifestos.Clear;
  GerarMDFe(CEnummanif.text);
  ACBrMDFe1.Manifestos.Imprimir;//espelho
  if(Application.Messagebox(pchar(' Os Dados do Manifesto(MDF-e)) estão Corretos?'+chr(10)+chr(13)+' Clique em SIM para Gerar e Enviar!'+chr(10)+chr(13)+' Clique em NÃO para não Gerar e Enviar está MDF-e!      '),'Aviso',MB_ICONQUESTION+ MB_DEFBUTTON2 +MB_YESNO+ MB_SYSTEMMODAL)=IDYES)
  then begin

            if (ACBrMDFe1.Enviar(0,false) = true)     //O ERRO ACONTECE AQUI <-----
            then begin
                      ACBrMDFe1.Manifestos.GerarMDFe;
                      ACBrMDFe1.Manifestos.Items[0].GravarXML();

                    end;

       end;

Já tentei atualizar dll e nada o que pode ser ?

Desde já Muito Obrigado pela Ajuda!

erro_acbrmdfe_enviar.jpg

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Mauricio,

Não entendi essa parte:

if (ACBrMDFe1.Enviar(0,false) = true)     //O ERRO ACONTECE AQUI <-----
then begin
       ACBrMDFe1.Manifestos.GerarMDFe;
       ACBrMDFe1.Manifestos.Items[0].GravarXML();
end;

O método Enviar, Gera, Salva em disco (se configurado para isso), Assina, Valida, Envia para a SEFAZ, aguarda o retorno, caso autorizado atualiza o XML com o protocolo de autorização e salva em disco o XML assinado e protocolado.

Não faz nenhum sentido após o envio você gerar novamente o XML e salvar ele.

Esse XML que você gerou novamente, vai estar sem a assinatura e o protocolo de autorização.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Italo!

4 minutos atrás, Italo Jurisato Junior disse:

Bom dia Mauricio,

Não entendi essa parte:


if (ACBrMDFe1.Enviar(0,false) = true)     //O ERRO ACONTECE AQUI <-----
then begin
       ACBrMDFe1.Manifestos.GerarMDFe;
       ACBrMDFe1.Manifestos.Items[0].GravarXML();
end;

O método Enviar, Gera, Salva em disco (se configurado para isso), Assina, Valida, Envia para a SEFAZ, aguarda o retorno, caso autorizado atualiza o XML com o protocolo de autorização e salva em disco o XML assinado e protocolado.

Não faz nenhum sentido após o envio você gerar novamente o XML e salvar ele.

Esse XML que você gerou novamente, vai estar sem a assinatura e o protocolo de autorização.

Então essa parte de GerarMdfe e Gravarxml eu pus agora na tentativa meio no desespero já que o cliente está com caminhão já em trânsito ae fiz essa tentativa.

Mas o problema o erro acontece no Enviar antes até desse trecho e antes da atualização não ocorria enviava normalmente. Tem alguma configuração nova no componente ACBrMDFe?

Obrigado pela Ajuda!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Testando mais um pouco, descobri que o erro ocorre depois de executar o ACBrMDFe1.Enviar, dentro da unit ACBMDFe quando executa a função :

function TACBrMDFe.Enviar(const ALote: String; Imprimir:Boolean = True;
      ASincrono:  Boolean = False): Boolean;

o erro acontece ao executar o procedure Manifestos.Assinar que está na unit ACBrMDFeManifestos.

procedure TManifestos.Assinar;
var
  i: integer;
begin
  for i := 0 to Self.Count - 1 do
    Self.Items[i].Assinar; 
end;

O erro ocorre na linha Self.Items[i].Assinar; 

O que pode ser? Será que tenho desinstalar o ACBr e instalar novamente?

Desde já Muito Obrigado pela ajuda!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
7 minutos atrás, BigWings disse:

Precisa depurar dentro do método ACBrMDFe.Enviar pra saber que ponto exato o erro ocorre.

Como o Italo comentou, esse método faz uma série de operações.

Olá BigWings

Testando mais um pouco, descobri que o erro ocorre depois de executar o ACBrMDFe1.Enviar, dentro da unit ACBMDFe quando executa a função :

function TACBrMDFe.Enviar(const ALote: String; Imprimir:Boolean = True;
      ASincrono:  Boolean = False): Boolean;

o erro acontece ao executar o procedure Manifestos.Assinar que está na unit ACBrMDFeManifestos.

procedure TManifestos.Assinar;
var
  i: integer;
begin
  for i := 0 to Self.Count - 1 do
    Self.Items[i].Assinar; 
end;

O erro ocorre na linha Self.Items[i].Assinar; 

O que pode ser? Será que tenho desinstalar o ACBr e instalar novamente?

Desde já Muito Obrigado pela ajuda!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
11 minutos atrás, BigWings disse:

Precisa depurar dentro do método ACBrMDFe.Enviar pra saber que ponto exato o erro ocorre.

Como o Italo comentou, esse método faz uma série de operações.

  10 minutos atrás, BigWings disse:

Precisa depurar dentro do método ACBrMDFe.Enviar pra saber que ponto exato o erro ocorre.

Como o Italo comentou, esse método faz uma série de operações.

Olá BigWings

Testando mais um pouco, descobri que o erro ocorre depois de executar o ACBrMDFe1.Enviar, dentro da unit ACBMDFe quando executa a função :

function TACBrMDFe.Enviar(const ALote: String; Imprimir:Boolean = True;
      ASincrono:  Boolean = False): Boolean;

o erro acontece ao executar o procedure Manifestos.Assinar que está na unit ACBrMDFeManifestos.

procedure TManifestos.Assinar;
var
  i: integer;
begin
  for i := 0 to Self.Count - 1 do
    Self.Items[i].Assinar; 
end;

O erro ocorre na linha Self.Items[i].Assinar; 

Ae dentro do procedure abaixo o erro ocorre exatamente na linha FXMLAssinado := SSL.Assinar(String(XMLUTF8), 'MDFe', 'infMDFe');

procedure Manifesto.Assinar;
var
  XMLStr: String;
  XMLUTF8: AnsiString;
  Leitor: TLeitor;
begin
  with TACBrMDFe(TManifestos(Collection).ACBrMDFe) do
  begin
    if not Assigned(SSL.AntesDeAssinar) then
      SSL.ValidarCNPJCertificado( MDFe.Emit.CNPJCPF );
  end;

  // Gera novamente, para processar propriedades que podem ter sido modificadas
  XMLStr := GerarXML;

  // XML já deve estar em UTF8, para poder ser assinado //
  XMLUTF8 := ConverteXMLtoUTF8(XMLStr);

  with TACBrMDFe(TManifestos(Collection).ACBrMDFe) do
  begin
    FXMLAssinado := SSL.Assinar(String(XMLUTF8), 'MDFe', 'infMDFe');
    // SSL.Assinar() sempre responde em UTF8...
    FXMLOriginal := FXMLAssinado;

    Leitor := TLeitor.Create;
    try
      leitor.Grupo := FXMLAssinado;
      MDFe.signature.URI := Leitor.rAtributo('Reference URI=');
      MDFe.signature.DigestValue := Leitor.rCampo(tcStr, 'DigestValue');
      MDFe.signature.SignatureValue := Leitor.rCampo(tcStr, 'SignatureValue');
      MDFe.signature.X509Certificate := Leitor.rCampo(tcStr, 'X509Certificate');
    finally
      Leitor.Free;
    end;

    // Gera o QR-Code para adicionar no XML após ter a
    // assinatura, e antes de ser salvo.

    with TACBrMDFe(TManifestos(Collection).ACBrMDFe) do
    begin
      MDFe.infMDFeSupl.qrCodMDFe := GetURLQRCode(MDFe.Ide.cUF, MDFe.Ide.tpAmb,
                MDFe.ide.tpEmis, MDFe.infMDFe.ID, MDFe.infMDFe.Versao);

      GerarXML;
    end;

    if Configuracoes.Arquivos.Salvar and
      (not Configuracoes.Arquivos.SalvarApenasMDFeProcessados) then
    begin
      if NaoEstaVazio(NomeArq) then
        Gravar(NomeArq, FXMLAssinado)
      else
        Gravar(CalcularNomeArquivoCompleto(), FXMLAssinado);
    end;
  end;
end;

Desculpa replicar a mensagem e que não sei tem  como excluir ou alterar uma resposta .

Obrigado pela Ajuda!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
16 minutos atrás, BigWings disse:

Verifique a configuração SSLLib e as DLLs OpenSSL/LibXML.

Bom vamos lá eu atualizei na pasta do projeto as dlls: libxml2, libeay32, ssleay32 e testei mesmo erro. Tem que atualizar mais alguma?

Minha configuração: 

SSLLIB: libwincrypt

Cryptlib: crywinCrypt

Httplib: httpWinHttp

XMLSIGNLIB: xsLibxml2

SSLTYPE: LT_TLSv1_2

Sempre usei essa configuração tanto pra nota quanto pra manifesto e estava funcionando antes de atualizar a versão. Você sugere alguma outra?

Debugando mais um pouco o erro acontece nessa função na parte em negrito:

function TDFeSSL.Assinar(const ConteudoXML, docElement, infElement: String;
  const SignatureNode: String; const SelectionNamespaces: String; const IdSignature: String;
  const IdAttr: String 😞 String;
Var
  XmlAss, DeclaracaoXMLAntes, DeclaracaoXMLDepois: String;
  Assinado: Boolean;
begin
  // Nota: ConteudoXML, DEVE estar em UTF8 //
  // Lendo Header antes de assinar, Se Header não for UTF8 não usa... //
  if XmlEhUTF8(ConteudoXML) then
    DeclaracaoXMLAntes := ObtemDeclaracaoXML(ConteudoXML)
  else
    DeclaracaoXMLAntes := '';

  Assinado := False;

  if Assigned(FAntesDeAssinar) then
  begin
    XmlAss := ConteudoXML;
    FAntesDeAssinar( XmlAss, docElement, infElement, SignatureNode,
                     SelectionNamespaces, IdSignature);
    Assinado := (XmlAss <> ConteudoXML);
  end;

  if not Assinado then
  begin
    XmlAss := FSSLXmlSignClass.Assinar( ConteudoXML, docElement, infElement,
                                        SignatureNode, SelectionNamespaces,
                                        IdSignature, IdAttr);

    // Verificando se modificou o Header do XML assinado, e voltando para o anterior //
    if (DeclaracaoXMLAntes <> '') then
    begin
      DeclaracaoXMLDepois := ObtemDeclaracaoXML(XmlAss);

      if (DeclaracaoXMLDepois = '') then
        XmlAss := DeclaracaoXMLAntes + XmlAss
      else if (DeclaracaoXMLAntes <> DeclaracaoXMLDepois) then
        XmlAss := StringReplace(XmlAss, DeclaracaoXMLAntes, DeclaracaoXMLDepois, []);
    end;
  end;

  Result := XmlAss;
end;

Será que pode ser atualização do windows? Tem 3 principais que não consigo atualizar.

Obrigado pela Ajuda!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa Tarde Juliomar !

1 hora atrás, Juliomar Marchetti disse:

Tu está usando o certificado instalado no windows? se sim ao instalar marcou ele como exportavel?

Sim o certificado(A1) está instalado no Windows e sim quando instalei marquei ele como exportavel.

Minha configuração é essa: 

SSLLIB: libwincrypt

Cryptlib: crywinCrypt

Httplib: httpWinHttp

XMLSIGNLIB: xsLibxml2

SSLTYPE: LT_TLSv1_2

ae mudei para

SSLLIB: libcapicom

Cryptlib: cryCapicom

Httplib: httpWinINet

XMLSIGNLIB: xsMsXmlCapicom

SSLTYPE: LT_TLSv1_2

Configurado usando o capicom não da o erro e enviou ae deu algumas rejeições, mas o que importa é que não deu o erro, mas só que recomendação que vi já no forum e de não usar a capicom.

Porque será que usando winCRYpt da o erro?

Muito Obrigado por me Ajudar!

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Se o erro é na assinatura ainda acho que é algo relacionado a DLL, no caso a libxml2.dll.

Qual DLL (de qual pasta do ACBr) está distribuindo?

Seu executável é 32 ou 64 bits?

Você tem a diretiva USE_MINGW ativada no ACBr.inc?

 

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa Tarde BigWings

1 hora atrás, BigWings disse:

Se o erro é na assinatura ainda acho que é algo relacionado a DLL, no caso a libxml2.dll.

Qual DLL (de qual pasta do ACBr) está distribuindo?

Seu executável é 32 ou 64 bits?

Você tem a diretiva USE_MINGW ativada no ACBr.inc?

 

Bom eu deixo todas dlls na pasta onde é gerado o executável.

Eu testei atualizando lbxml2.dll da pasta C:\ACBr\DLLs\LibXml2 testei tanto da pasta x64 quanto x86 e ambos os casos ocorreu o mesmo erro no mesmo lugar.

Meu executavel é 32 bits já que ainda uso o delphi 2010, e não lembro de ter nele alguma opção igual tem no Delphi Rio por exemplo que de a opção de gerar na versão pra 32 ou 64 bits. 

Não uso a diretiva USE_MINGW ativada no ACBr.inc.

Atualizei as dlls libeay32 e ssleay32 também das pastas 186 e x64 mas ambas o erro persisti.

Obrigado pela Ajuda!

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia.

indiferente o delphi que use sua aplicação é Win32 no caso x86 então as dll's que deve usar é somente x86.

a IDE do delphi até hoje é Win32/x86

coloque elas junto a seu executável

tem a instalação do microsoft runtime que também deve ser instalado x86 para que sua aplicação funcione.

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom Dia Juliomar

2 horas atrás, Juliomar Marchetti disse:

Bom dia.

indiferente o delphi que use sua aplicação é Win32 no caso x86 então as dll's que deve usar é somente x86.

a IDE do delphi até hoje é Win32/x86

coloque elas junto a seu executável

tem a instalação do microsoft runtime que também deve ser instalado x86 para que sua aplicação funcione.

Atualizei todas as dll para x86 e testei por exemplo a libxml2 de x86 de todas pastas do acbr, e todas elas estão na pasta do executável mas o erro  persisti . 

Sobre a instalação do microsoft runtime bom a versão que está instalado aqui e a mesma que estava funcionando antes de eu atualizar o ACBr. 

O erro ocorre function TDFeSSL.Assinar no trecho em negrito 

 if not Assinado then
  begin
    XmlAss := FSSLXmlSignClass.Assinar( ConteudoXML, docElement, infElement,
                                        SignatureNode, SelectionNamespaces,
                                        IdSignature, IdAttr);

 

Mudando capicom funciona o problema está no wincrypt, pensei que fosse alguma atualização do windows pendente mas testei em outras duas maquinas com win 7 sp1 com todas as atualizações feitas e deu o mesmo erro.

Pensei que fosse também aquelas configurações do internet explorer - avançadas - Usar SSL 3.0 que deixo selecionada e também deixo selecionada Usar TLS 1.2 até mudei aqui pra outras opções mas da o mesmo erro.

Ainda no meu pc aqui falta 2 atualizações importantes, estou tentando fazer as duas, pois não sei dizer se ao gerar um executável com o windows faltando essas atualizações ele é gerado faltando algo e mesmo executando ele em um pc com o windows atualizado ele retorne o  erro.

Obrigado pela Atenção!

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Para WinCrypt funcionar tem que estar atualizado por conta do TLS 1.2

o TLS 1.2 tu configura no componente e ele já faz a mudança das configurações para você.

tente terminar a atualização e fazer o teste, e reporte aqui para sabermos

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Não creio que tenha a ver com TLS ou configurações do Internet Explorer, se o erro está  acontecendo na assinatura do XML, sendo assim não foi feita nenhuma tentativa de conexão com o webservice ainda.

Só se alguma atualização do Windows afetar a libxml2...

Já tentou usar outro certificado? De preferência A1 carregando pelo PFX.

 

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Boa Tarde a Todos!

Depois de muita luta consegui terminar as atualizações do windows, agora está atualizado.

Em 17/09/2020 at 11:42, Juliomar Marchetti disse:

Para WinCrypt funcionar tem que estar atualizado por conta do TLS 1.2

o TLS 1.2 tu configura no componente e ele já faz a mudança das configurações para você.

tente terminar a atualização e fazer o teste, e reporte aqui para sabermos

Mas infelizmente não resolveu o problema, o mesmo erro persisti e no mesmo lugar:

O erro ocorre function TDFeSSL.Assinar no trecho em negrito 

 if not Assinado then
  begin
    XmlAss := FSSLXmlSignClass.Assinar( ConteudoXML, docElement, infElement,
                                        SignatureNode, SelectionNamespaces,
                                        IdSignature, IdAttr);

 

Tenho a opção no sistema de mudar a config por de wincrypt para capicom por exemplo, e quando mudo pra capicom funciona valida,assina envia tudo certo sem problemas o problema está com o wincrypt.

Em 17/09/2020 at 12:21, BigWings disse:

Não creio que tenha a ver com TLS ou configurações do Internet Explorer, se o erro está  acontecendo na assinatura do XML, sendo assim não foi feita nenhuma tentativa de conexão com o webservice ainda.

Só se alguma atualização do Windows afetar a libxml2...

Já tentou usar outro certificado? De preferência A1 carregando pelo PFX.

 

BigWings tentei todas as libxml2 que tem na pasta ACBr e até a anterior a atualização, mas também não deu certo.

Testei sim com outro dois  certificados A1 e também deu o mesmo erro, no mesmo lugar.

Com relação ao certificado eu indico ele no ACBrNFe da seguinte forma:

         edtNumSerie.Text := Ini.ReadString( 'Certificado','NumSerie','') ;
         if (trim(edtNumSerie.text) <> '')
         then begin
                 ACBrNFe1.Configuracoes.Certificados.NumeroSerie := edtNumSerie.Text;
                 edtNumSerie.Text := ACBrNFe1.Configuracoes.Certificados.NumeroSerie;
              end;

Faço dessa forma desde quando comecei usar o ACBrNFe pra tirar NF-e isso já a muito tempo.

Não entendi a parte de carregar o A1 pelo PFX?

Teria alguma coisa haver windows 7 64 ou 32?

 Muito Obrigado pela Ajuda e Atenção!

Link para o comentário
Compartilhar em outros sites

  • Moderadores
15 minutos atrás, Mauricio Elias disse:

Não entendi a parte de carregar o A1 pelo PFX?

Pra não precisar instalar o certificado no Windows, onde você acessa pelo número de série, você pode informar direto o caminho do arquivo do certificado em ArquivoPFX, ou ainda uma URL em URLPFX ou ainda o binário do arquivo para DadosPFX.

  ACBrNFe1.Configuracoes.Certificados.URLPFX      := edtURLPFX.Text;
  ACBrNFe1.Configuracoes.Certificados.ArquivoPFX  := edtCaminho.Text;
  ACBrNFe1.Configuracoes.Certificados.DadosPFX    := edtDadosPFX.Text;
  ACBrNFe1.Configuracoes.Certificados.Senha       := edtSenha.Text;
  ACBrNFe1.Configuracoes.Certificados.NumeroSerie := edtNumSerie.Text;

 

26 minutos atrás, Mauricio Elias disse:

Teria alguma coisa haver windows 7 64 ou 32?

Creio que não...

Você consegue criar uma aplicação de teste em que o problema ocorra, e anexar aqui? Lembre de incluir as DLLs que está usando.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom Dia a Todos

Desculpa a demora por responder é que estava procurando saber se tinha mais alguma atualização do windows faltando, mas agora estão todas feitas e mesmo assim o erro persisti.

Em 21/09/2020 at 18:29, BigWings disse:

Pra não precisar instalar o certificado no Windows, onde você acessa pelo número de série, você pode informar direto o caminho do arquivo do certificado em ArquivoPFX, ou ainda uma URL em URLPFX ou ainda o binário do arquivo para DadosPFX.


  ACBrNFe1.Configuracoes.Certificados.URLPFX      := edtURLPFX.Text;
  ACBrNFe1.Configuracoes.Certificados.ArquivoPFX  := edtCaminho.Text;
  ACBrNFe1.Configuracoes.Certificados.DadosPFX    := edtDadosPFX.Text;
  ACBrNFe1.Configuracoes.Certificados.Senha       := edtSenha.Text;
  ACBrNFe1.Configuracoes.Certificados.NumeroSerie := edtNumSerie.Text;

 

Creio que não...

Você consegue criar uma aplicação de teste em que o problema ocorra, e anexar aqui? Lembre de incluir as DLLs que está usando.

Olá BigWings eu fiz dessa forma informando o caminho do certificado A1 no ArquivoPFX, e infelizmente também não solucionou o problema.

O mais estranho que tenho uma o delphi 2010 instalado em uma máquina virtual com win 7 32 bits e lá fiz atualização do ACBr antes pra testar e lá também está com o windows atualizado e nele não da o erro. Pelo que lembro quando atualizei a versão do ACBr nele o windows já estava atualizado, e senão me falha a memória quando atualizei usando ACBrInstall ele já vem com as opções marcadas, como disse senão me engano nessa versão na máquina virtual acho que não selecionei as opções novas de componentes como por exemplo ACBR_ciot (não sei te haver com o problema que acontece ao assinar), já na versão que uso pra trabalhar que está no win 7 64 bits, eu atualizei o ACBr antes do windows estar atualizado e nele lembro que marquei todas as opções novas, e atualizo sem problemas.

Será que pode ser isso?

Vou desinstalar o ACBr e instalar novamente(quando eu atualizei não desinstalei ele não) pra ve se resolve.

Quanto criar uma aplicação infelizmente estou sem tempo pra criar uma, mas se quiser poderia postar a minha aplicação e um banco de teste, mas não vou conseguir postar aqui devido ao tamanho do arquivo. Tem outra forma?

Vou fazer isso desinstalar o ACBr usando o apagarACBr e instalar novamente e ve se resolve. 

Outra dúvida se resolver esse problema, todos os clientes vão ter que estar com o windows com todos os updates atualizados independente da versão do windows?

Desde já Muito Obrigado pela Ajuda e Atenção!

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Não parece ter a ver com a instalação do ACBr, mas incompatibilidade da LibXML2.dll com o executável.

Tenho visto alguns relatos isolados de erros com a libxml2 mas até agora não consegui reproduzir.

Quanto a aplicação pode ser uma bem pequena, que faça as configurações do ACBrNFe, abra um XML e tente assinar, não precisa envolver banco de dados.

A atualização do Windows é necessária para usar httpWinHttp com TLS 1.2.

  • Curtir 3
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Bom Dia

BigWings fiz a pequena aplicação que você pediu, que abri um xml e tenta assinar. 

Em 24/09/2020 at 09:27, BigWings disse:

Não parece ter a ver com a instalação do ACBr, mas incompatibilidade da LibXML2.dll com o executável.

Tenho visto alguns relatos isolados de erros com a libxml2 mas até agora não consegui reproduzir.

Quanto a aplicação pode ser uma bem pequena, que faça as configurações do ACBrNFe, abra um XML e tente assinar, não precisa envolver banco de dados.

A atualização do Windows é necessária para usar httpWinHttp com TLS 1.2.

O windows está atualizado mas o erro persisti. Segue em anexo a aplicação feita no delphi 2010. Segue sem o executável pois mesmo compactado ultrapassa o tamanho de 2 mb.

As dlls também não estão juntas e nem a pasta schemas pelo mesmo motivo de ultrapassar o limite do tamanho do arquivo para anexar. 

As dlls que está dentro da pasta dessa minha aplicação são: capicom,iconv,inpout32,libeay32,libxml2,libxmlsec,msvcr71,msvcr120,msxml5,msxml5r,ssleay32,swmfd,zlib1

Como disse antes em outro pc que tenho uma máquina virtual com o win 7 32 atualizado com o mesmo delphi e acbr atualizado nele não acontece o erro.

Será que tem que atualizar ou colocar a lixml2.dll na pasta syswon64? Ou colocar na system32(ta sem)?

Devo desinstalar o ACBr e instalar novamente?

Desde já Muito Obrigado pela Ajuda e Atenção!

 

 

NFE TESTE_exe.zip

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Não consegui replicar o erro apenas com os fontes, o que eu queria testar eram os binários...

Você diz que em outra máquina não tem erro, isso usando o mesmo EXE e DLLs que está usando na máquina onde o erro ocorre?

Parece que você tem DLLs demais na pasta, CAPICOM, MSXML e XmlSec não são mais necessários.

Sugiro então que faça o seguinte:

- Reinstale o ACBr marcando as opções de não usar CAPICOM e não usar XmlSec, não esquecendo de marcar a opção de copiar as DLLs para a pasta do Windows;

- Recompile a sua aplicação;

- Coloque o seu exe e apenas as DLLs da pasta ACBr\DLLs\LibxXML2\x86 e ACBr\DLLs\OpenSLL\1.1.1.7\x86.

Como você usa Delphi 2010 não vai precisar das DLLs de 64 bits.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Boa Tarde BigWings

23 minutos atrás, BigWings disse:

Não consegui replicar o erro apenas com os fontes, o que eu queria testar eram os binários...

Você diz que em outra máquina não tem erro, isso usando o mesmo EXE e DLLs que está usando na máquina onde o erro ocorre?

Parece que você tem DLLs demais na pasta, CAPICOM, MSXML e XmlSec não são mais necessários.

Sugiro então que faça o seguinte:

- Reinstale o ACBr marcando as opções de não usar CAPICOM e não usar XmlSec, não esquecendo de marcar a opção de copiar as DLLs para a pasta do Windows;

- Recompile a sua aplicação;

- Coloque o seu exe e apenas as DLLs da pasta ACBr\DLLs\LibxXML2\x86 e ACBr\DLLs\OpenSLL\1.1.1.7\x86.

Como você usa Delphi 2010 não vai precisar das DLLs de 64 bits.

Então não é usando o mesmo exe, o exe gerado na maquina virtual esse funciona la na maquina virtual onde ele foi criado quanto na maquina com problema. O exe gerado aqui nessa maquina com problema não funciona aqui e nem na máquina virtual.

Ok vou reinstalar o ACBr seguindo essa configurações que você passou, e seguir as outras recomendações depois te falo se deu certo.

As dlls capicom, msxml estão dentro pois como tive que atualizar alguns clientes, e com esse problema por hora estão usando a capicom.

Obrigado pela Ajuda!

Link para o comentário
Compartilhar em outros sites

  • Moderadores
6 minutos atrás, Mauricio Elias disse:

Então não é usando o mesmo exe, o exe gerado na maquina virtual esse funciona la na maquina virtual onde ele foi criado quanto na maquina com problema. O exe gerado aqui nessa maquina com problema não funciona aqui e nem na máquina virtual.

Desconfio da diretiva USE_MINGW, ela pode estar ativada em uma das duas instalações.

Com ela ativada (não é mais recomendado) as DLLs tem que ser as da pasta MinGW.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1275 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.