Como executar o executável no final do Projeto de Instalação?
-
09-06-2019 - |
Pergunta
Eu tenho um projeto de instalação do Visual Studio que uso para instalar um aplicativo WinForms bastante simples.No final da instalação, tenho uma página de interface de usuário personalizada que mostra uma única caixa de seleção que pergunta ao usuário se ele deseja executar o aplicativo.Já vi outros instaladores fazerem isso com bastante frequência.Mas não consigo encontrar uma maneira de fazer com que o Projeto de Instalação execute um executável após a conclusão da instalação.Uma ideia?
OBSERVAÇÃO:Você não pode usar ações personalizadas porque elas são usadas como parte do processo de instalação. Desejo executar meu aplicativo instalado assim que o usuário pressionar o botão 'Fechar' no final da instalação.
Solução
Acredito que esta seja uma das reais limitações do projeto de instalação do Visual Studio.Você precisa modificar a última página da interface de instalação, mas o VS.NET não oferece uma maneira de fazer isso.Você poderia modificar as tabelas no .MSI após sua construção, mas o VS.NET provavelmente substituiria essas alterações sempre que fosse compilado.Você pode substituir a última página usando um módulo de mesclagem incluído no projeto de instalação.De qualquer forma, você precisará se familiarizar com a forma como as caixas de diálogo da interface do usuário são criadas em um .MSI e isso não é trivial.
Você pode considerar mudar para um instalador gratuito baseado em script ou comprar um aplicativo comercial de autoria de configuração (só não compre o InstallShield pelo amor de Pete).Dê uma olhada no InstallAware (embora eu não o tenha usado).
Outras dicas
Você também pode usar ações personalizadas
Acabei de encontrar uma maneira muito fácil que não requer ferramentas externas.Você só precisa adicionar um arquivo de classe ao projeto principal e uma ação personalizada ao projeto de configuração.
Fiz isso para aplicativos internos criando um chicote de script VB que inicia o executável de configuração, aguarda o fechamento e, em seguida, inicia o segundo programa.
Você também pode fazer isso com um pouco mais de polimento usando algumas chamadas de API do Win em um executável C.
Você pode usar o MSILAUNCH (embora eu só funcione com o MSICREATE).
Eu consegui isso invocando o método Main no assembly usando a seguinte linha:
(typeof(ClassWithinAssemblyToExecute)).Assembly.EntryPoint.Invoke(null, new Object[] {} )
você pode fazer isso por um instalador personalizado.basta adicionar a classe do instalador e você verá muitos eventos como após a instalação, antes da instalação.basta conectar após a instalação e a partir daí executar seu exe por classe de processo.Eu sugiro que você pesquise no Google para saber mais sobre o instalador personalizado.aqui está um bom link que pode te ajudar http://www.codeproject.com/Articles/19560/Launching-Your-Application-After-Install-using-Vis
obrigado