Pergunta

Estou usando o VS Installer para criar um pacote de configuração para o meu aplicativo VB6. E o problema é que eu posso ver que, no explorador do projeto, há uma lista de dependências anexadas ao meu arquivo exe.

TEXTO DE ALT http://img505.imageshack.us/img505/9696/croppercapture259lr8.png

E no sistema de arquivos no Target Machine TreeView, eu posso armazenar a DLL/OCX em uma pasta ou na própria pasta do sistema Windows [a janela esquerda].

TEXTO DE ALT http://img101.imageshack.us/img101/9224/croppercapture251qm1.png

Então, o que eu não entendo é .. existe realmente uma diferença? Se eu apenas definir as dependências e não adicionar a DLL ou OCX à pasta ou ganhar a pasta SYS, a DLL também é copiada automaticamente?

Foi útil?

Solução

Não é garantido que todas essas DLLs estejam presentes no sistema em que o software está sendo instalado. Então eles precisam ser incluídos no seu instalador. A partir daí, você tem duas opções.

Você pode instalá -los nas pastas do sistema Windows ou na pasta do aplicativo. A diferença é que, se você os instalar na pasta de aplicativos, poderá configurar as coisas no XP e Vista, para que a versão diferente do software com uma versão diferente dos componentes possa ser acionada e executada lado a lado. Instalá -los na pasta do sistema quebrará qualquer versão mais antiga que dependa da versão mais antiga dos componentes.

A instalação na pasta de aplicativos raramente não funciona se um componente depende de outros componentes que não podem ser atualizados. Quando isso ocorre, geralmente é com as bibliotecas da Microsoft. Eles melhoraram ao longo dos anos sobre esse assunto.

Você pode ler mais sobre os problemas envolvendo execução lado a lado aqui

Finalmente, as dependências precisam estar no seu instalador para que sejam registradas no registro do Windows. Diferentemente da maioria dos conjuntos .NET, qualquer aplicativo ActiveX/COM precisa ter o componente registrado para usá -lo, mesmo se você estiver usando os tipos CreateObject e Variant para acessá -lo.

Admito que todo o processo é idiossincrático e é uma das fontes para as histórias sobre o inferno da DLL. Comece com o artigo do MSDN, use a Wikipedia e, é claro, faça mais perguntas aqui.

Outras dicas

Normalmente, você não deve ter uma pasta "DLLS" na pasta do aplicativo para um pacote normal do instalador, mas existem muitos fatores envolvidos (DLLs padrão privado, com com free com, etc.). Sim, as dependências são incluídas (a menos que você excluir eles). Cada um deles deve ter uma propriedade que determine onde instalam nos sistemas de destino.

Você também possui vários componentes nessa lista que não são redistribuíveis dessa maneira porque são componentes do sistema dependentes de OS, componentes MDAC ou não são licenciados para redist (FM20.dll, por exemplo).

Infelizmente, este é um exemplo do tipo de pacote que pode levar diretamente à DLL Hell para os sistemas de seus usuários. Corrigir isso pode significar pesquisar todos os componentes do MS nos artigos da MS KB para determinar o que pode ou deve ser redistribuído e como.

A implantação pode ser um negócio confuso para acertar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top