Porque a minha aplicação, quando compilada no Trunk2 exige as DLLs do XMLSec ?
O Trunk2, tem a habilidade de suportar OpenSSL (XMLSec) e CAPICOM, na mesma aplicação... e no ACBrNFe, existe a Classe TDFeSSL, que permite configurar qual será a biblioteca de SSL em Design ou Run-time
Para isso, basta mudar a configuração usando comandos como abaixo:
ACBrNFe1.Configuracoes.Geral.SSLLib := libOpenSSL;
ACBrNFe1.Configuracoes.Geral.SSLLib := libCapicom;
ACBrNFe1.Configuracoes.Geral.SSLLib := libCapicomDelphiSoap; // Mesmo que "libCapicom", mas usando a Indy
Porém, para efetuar essa "magica", precisamos compilar todas as Units que dão suporte a CAPICOM e OpenSSL\XMLSec, e elas injetam a dependência de DLLs externas
Porque eu usaria o suporte a OpenSSL ?
O OpenSSL é ótimo para certificados do tipo A1... pois você não precisa instalar o certificado no Windows... basta apontar o caminho do arquivo PFX e a Senha:
ACBrNFe1.Configuracoes.Certificados.ArquivoPFX := edtCaminho.Text;
ACBrNFe1.Configuracoes.Certificados.Senha := edtSenha.Text;
Porque remover o suporte a uma das bibliotecas de SSL ?
A desvantagem, é que a sua aplicação agora ficou dependente de mais DLLs, e para alguns pode ser um problema, distribuir e instalar as mesmas
Onde eu encontro as DLLs ?
\ACBr\DLLs\OpenSSL
\ACBr\DLLs\XMLSec
Para onde eu copio essas DLLs ?
Você deve copiar TODAS as DLLs das pastas acima indicadas (e não apenas algumas).
Você pode copiar para a mesma pasta da sua aplicação .EXE ou para o "System" do Windows
Observe que, essas DLLs são 32 bits, e portanto só funcionarão para aplicações compiladas com um compilador 32 bits (que é o padrão para Delphi e Lazarus)... Uma aplicação 32 bits roda em um S.O. 64 bits, mas o oposto não ocorre...
Considerando que essa DLLs são 32 bits, então:
Se o seu Windows for 32 bits, copie para a pasta: C:\Windows\System32
Se o seu Windows for 64 bits, copie para a pasta: C:\Windows\SysWOW64
Se você estiver instalando DLLs de 64 bits em um Windows 64 bits, então a pasta correta é: C:\Windows\System32 (vai entender... pergunte pra Microsoft)
Como eu removo a dependência ?
Nunca usou o OpenSSL ? Nunca deseja usar ? Então você pode remover o suporte do ACBr ao OpenSSL/XMLSec, e com isso, remover a dependência de sua aplicação das DLLs do XMLSec..
Edite o ACBr.inc... Observe que no inicio do mesmo, existem as linhas abaixo:
{.$DEFINE DFE_SEM_OPENSSL}
{.$DEFINE DFE_SEM_CAPICOM}
Apenas remova o ".", se quiser ativar a remoção...
{$DEFINE DFE_SEM_OPENSSL}
Por que mesmo assim, a sua aplicação fica dependente das DLLs do OpenSSL (libeay32.dll, ssleay32.dll) ?
O ACBr usa o OpenSSL para várias outras tarefas, como: criptografia e assinatura (ACBrEAD), comunicação segura (ACBrMail, ACBrHttp)... e outras... Então hoje, elas sempre serão necessárias... essa dependência já existia no "Trunk1"