Como criar um sistema de instalação simples para o VB6 no XP / Vista e mais recente?

Forte ênfase em simples. Eu nunca fiz um instalador e prefiro não ter que aprender muito. Um sistema que eu poderia entregar uma pilha de arquivos e faria algumas suposições inteligentes sobre onde colocá-los seria o ideal.

Vá em frente e responda a pergunta geral.

No entanto, nos meus casos, estou preso a algumas restrições adicionais. O programa a ser instalado é escrito em VB6 (ou é 5?) E em algumas versões anteriores do VB, portanto, não será atualizado em breve. Eu tenho uma instalação em execução e terá uma VM limpa para jogar com Então eu vou estar fazendo um loop de: executar a instalação, encontrar onde está quebrado, corrigi-lo, adicionar ao instalador, reverter a VM, tente novamente. Se alguém tiver uma abordagem melhor, estou aberto a sugestões.

Eu preciso fazê-lo funcionar no XP e eu realmente gostaria de ter algo que funcione em versões mais recentes do Windows também.

InnoSetup ou NSIS , o que parecer mais fácil para você. O ISTool é uma boa ferramenta gráfica para o InnoSetup que facilita ainda mais a criação de scripts de configuração.

Eu usei o InnoSetup há vários anos, antes do Vista, e fiquei muito feliz com isso. Eu só tinha alguns arquivos para instalar e um ícone do menu Iniciar. Funcionou muito bem e foi fácil de aprender.

Dependency Walker é super útil para descobrir qual dll está faltando no instalador. Depois de conhecer a dll, você pode encontrar o módulo de mesclagem no Localizador de Módulos de Mesclagem .

Eu trabalhei com o NSIS e superar algumas de suas pequenas complexidades é um sistema fantástico. é grátis, oferece toneladas de capacidade de plugin e conseguiu fazer tudo o que eu precisava fazer.

Criar um pacote de instalação completo para um programa é quase uma área de assunto em si. Há muitos fatores a serem considerados e a maioria de nós não está mais executando o Windows 95. O mundo não é tão simples como era antes.

Há muitas coisas que precisam ser abordadas, e alguns desses problemas de “configuração” significam mudar o programa também. Por exemplo, o conceito “pastas protegidas” que parecia ser novo para as pessoas quando o Vista UAC entrou em cena. Eu acho que eles estavam todos correndo como admin ou algo assim? Em sua forma mais simples, significa que você não coloca arquivos graváveis ​​próximos ao EXE em Programas (também conhecidos como “Arquivos de Programas”).

Outro fator é que a maneira como o registro é usado mudou. Eu não estou falando sobre virtualização de registro, embora isso seja parte disso também. Mas o registro COM pode ser feito tanto por computador quanto por usuário, e até mesmo desativar o UAC pode acabar com isso. Consulte Registros COM por usuário e processos elevados com o UAC no Windows Vista SP1 . O resultado é que um pacote de instalação não deve estar executando o regsvr32 (ou, de outra forma, chamando o ponto de input self-reg de uma biblioteca COM). Veja “Comentários” na tabela AutoReg .


O Windows Installer é o caminho a seguir na maioria dos casos. Programadores VB6 têm o Visual Studio Installer 6.0 versão 1.1 disponível como um download gratuito para criar pacotes MSI. Consulte “Servidores COM” no artigo do VFP. Usando o Microsoft Visual Studio Installer para distribuir aplicativos do Visual FoxPro 6.0 para obter algumas informações valiosas.

Esta não é a opção mais fácil, mas há um Assistente de Configuração VB no VSI 1.1 para ajudar a obter o básico certo. Fazer coisas avançadas como criar uma subpasta [CommonAppData] e definir direitos Todos nela deve ser feito em uma etapa de pós-compilation fora do IDE. É aí que as ferramentas de terceiros podem ser úteis para lhe dar mais controle sem recorrer aos scripts Orca ou pós-build do instalador.

Esses caras que fazem instaladores “legados” com script tentam acompanhar, mas o script fica cada vez mais complicado. Os resultados são por vezes duvidosos. O Windows 7 introduz algumas novas rugas próprias.

Embora o ClickOnce não seja realmente a melhor opção para o VB6, nada indica que você não possa usar o COM para instalações XCopy de muitos programas sem reg-free. O COM sem registro pode até ser uma boa opção para uso em um pacote de instalação.


Assim, no final, a maneira “mais simples” de implantar programas VB6 provavelmente será pacotes COM XCopy sem regravação, envolvidos em um EXE de extração automática que triggersrá um script para criar um atalho do Menu Iniciar. Se você pode viver sem o atalho, isso é ainda mais fácil: basta descompactar o pacote onde ele precisa ir!

Consulte Criar meu manifesto ou ferramentas alternativas para empacotamento COM sem reg.

Isso requer que os sistemas de destino estejam executando o XP (preferencialmente SP2) ou posterior. A única falha possível aqui é que o XP não incluiu os tempos de execução do VB6 SP6 até o XP SP3, então você vai querer testar seu programa com os tempos de execução do VB6 SP5 primeiro. Bem mais uma falha: você não pode usar EXEs ActiveX dessa forma, eles ainda exigem registro.

Meu conselho é esse. Tente manter o instalador o mais simples possível. O Windows Installer é um software muito complicado e, quando as coisas não funcionam bem, pode ser difícil descobrir o que está acontecendo. Tenho certeza de que todos nós experimentamos o loop infinito do Windows Installer tentando reparar um arquivo que você não tem mais o arquivo .msi de origem.

Na maioria das vezes, usar o Windows Installer é como usar uma marreta para quebrar uma noz.

Eu uso InnoSetup para minhas próprias coisas e InstallShield no trabalho (contra a minha vontade). Comece com um simples instalador baseado em script e use o Windows Installer somente se você tiver um bom motivo para isso.

Observe que o suporte para instalar assemblies no GAC pode estar faltando para algumas ferramentas de configuração que não são do Windows Installer (como o InnoSetup).

Eu costumava AMAR Inno Setup. Ênfase em “usado para”.

Quando você executa o instalador de arquivo único (o que você normalmente faz), ele descompacta o programa de instalação real em uma pasta sob a pasta temp e, em seguida, tenta executá-lo. O problema é … alguns programas antivírus não permitem isso.

O autor está ciente disso e se recusa a fazer algo sobre isso. O nome da pasta é random, portanto, não pode ser adicionado a nenhuma lista de isenção que seu programa antivírus possa usar.

Novamente. O autor está ciente disso e sugere que eu diga aos meus usuários para desativar seus programas antivírus durante a instalação. (Como isso vai acontecer)