André Alves de Lima

Talking about Software Development and more…

Criando um instalador com o Visual Studio 2015

Uns tempos atrás eu escrevi um artigo mostrando rapidamente como criar instaladores para aplicativos .NET. Nesse artigo eu mostrei três ferramentas que podemos utilizar para gerar instaladores das nossas aplicações: Installer Projects do Visual Studio, InnoSetup e InstallShield. Como esse é um dos artigos mais acessados aqui no meu site, eu resolvi me aprofundar um pouco em cada uma dessas ferramentas. Confira no vídeo abaixo a criação de um instalador no Visual Studio 2015 utilizando os Installer Projects:

Adicionando os Installer Projects no Visual Studio 2015

Como mencionei no vídeo, se você não conseguir encontrar os projetos de instalação no Visual Studio 2015, não se preocupe, isso é completamente normal. Até o Visual Studio 2012, os projetos de instalador eram adicionados automaticamente durante a configuração do Visual Studio. Porém, a partir do Visual Studio 2013 nós temos que baixar uma extensão a parte para instalá-los.

Você pode baixar os Installer Projects para Visual Studio 2013 aqui e para o Visual Studio 2015 aqui. Outra opção é abrir a tela de “Extensions and Updates” diretamente no Visual Studio (menu “Tools“), clicar em “Online” e procurar por “Installer“.

Baixe o projeto de exemplo

Para baixar o projeto de exemplo desse artigo, assine a minha newsletter. Ao fazer isso, além de ter acesso ao projeto, você receberá um e-mail toda semana sobre o artigo publicado e ficará sabendo também em primeira mão sobre o artigo da próxima semana, além de receber dicas “bônus” que eu só compartilho por e-mail. Inscreva-se utilizando o formulário no final do artigo.

Até a próxima!

André Lima

Photo by Peter Shanks used under Creative Commons
https://pixabay.com/en/startup-start-up-notebooks-creative-593327/

Song Rocket Power Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 3.0 License
http://creativecommons.org/licenses/by/3.0/

Newsletter do André Lima

* indicates required



Powered by MailChimp

40 thoughts on “Criando um instalador com o Visual Studio 2015

  • […] Para mais informações sobre esse vídeo (inclusive para baixar o projeto de exemplo), clique neste link. […]

  • Sames Davis disse:

    Muito boa a aula, gostei!
    Só alguns detalhes que eu queria saber como fazer, como por exemplo, mudar o idioma da tela do instalador e colocar uma LOGO na tela de instalação e alterar o ícone do arquivo de instalação.

    Porque ele gera dois arquivos? setup e install? Não poderia ser apenas um?

    • andrealveslima disse:

      Olá Sames, muito obrigado! Fico feliz que você tenha gostado do vídeo.. :)

      Quanto às suas questões.. Para alterar o idioma, você precisa configurar a propriedade “Localization” do projeto do instalador.. Já para colocar um logotipo no instalador, você pode seguir as instruções apresentadas nesta thread do StackOverflow.. E quanto ao ícone, você pode especificar um ícone customizado que vai ser mostrado na janela de adicionar e remover programas, através de propriedade “AddRemoveProgramsIcon” do instaldor..

      Por fim: por que gera dois arquivos? Um arquivo é o instalador somente do seu aplicativo (arquivo com extensão .msi) e o outro é o instalador “geral” (arquivo setup.exe), que vai conferir se todas as dependências estão instaladas, etc.. Ao distribuir o aplicativo, você precisa dos dois arquivos e você tem que executar o arquivo setup.exe para rodar o instalador..

      Abraço!
      André Lima

  • Olá André, como eu faço para que quando eu atualizar o sistema com uma nova versão e execute o instalador desta nova versão o instalador desistale a versão já instalada automaticamente e instale a nova eu vi essa função no FileZila FTP é excelente você solta uma instalação é o próprio cliente já instala sem precisar desintalar e como a maioria não sabe então isso ajudaria. OBRIGADO abraço.

    • andrealveslima disse:

      Olá André!

      Nesse caso você precisa trabalhar com a propriedade “RemovePreviousVersions” do instalador (documentação aqui).. Você também não pode esquecer de mudar o atributo “Version” no instalador e a versão dos assemblies da sua aplicação.. Dessa forma ele gerará um novo “ProductCode”, que fará com que o instalador entenda que uma nova versão do mesmo aplicativo está sendo instalada..

      Abraço!
      André Lima

  • André disse:

    André boa tarde outra pergunta…rs quanto eu gero o instalador gera 2 arquivos de SETUP e tanto um quanto o outro executa normal, qual a razão de gerar 2 arquivos iguais? Obrigado.

    • andrealveslima disse:

      Olá André, desculpa a demora, é que o seu comentário tinha caído no spam aqui..

      Eu falei sobre o motivo da geração de dois arquivos pelo setup em um comentário logo aqui em cima (resposta do comentário do Sames Davis).. Dá uma olhada lá e veja se você ficou claro pra você..

      Abraço!
      André Lima

  • Eduardo fontes disse:

    Ótima Literatura, adquirir o Ebook – Aprendendo Report Viewer – do design à implantação, Recomendo a todos que assim como eu necessite de literatura passo a passo, que seja ELUCITATIVA! Ándré está de parabéns pela obra, espero que lance mais!

    • andrealveslima disse:

      Olá Eduardo!

      Muito obrigado! Fico feliz que você tenha aproveitado o conteúdo do e-book! Qualquer dúvida, é só entrar em contato.. :)

      Abraço!
      André Lima

  • Frederico A. Simões disse:

    Olá André bom dia!

    Como sempre trazendo material de qualidade para nosso aprendizado. Excelente artigo! Agora eu gostaria de tirar uma pequena dúvida. Eu tenho uma fonte .TTF que não encontramos em determinado sistema operacional. Qual seria a ideia para fazer a instalação dessa fonte? Eu vi que em sua explicação eu poderia utiliza o Custom Actions para rodar um programa e fazer alguma rotina referente ao meu software. A ideia seria essa mesmo ou teria outra maneira para fazer a instalação dessa fonte?

    Obrigado mais uma vez por seus excelentes artigos publicados. Estou sempre acompanhando seu trabalho. Muito bom! Sempre tenho recomendado a alguns amigos

  • Frederico A. Simões disse:

    André acabei esquecendo de perguntar uma outra coisa. Na minha aplicação eu estou utilizando o .NET Framework 4.6.1 e o SQL Local DB. Gostaria de saber se na instalação não for detectado os recursos mencionados acima, se eu poderia fazer a instalação off-line e sozinha sem a “intervenção” do usuário. É possível fazer isso em segundo plano? Obrigado e desculpas por não ter colocado a informação completa.

    • andrealveslima disse:

      Olá novamente, Frederico! Sem problema, vamos lá..

      Na parte de requisitos do projeto de instalação você pode selecionar esses pré-requisitos para serem instalados automaticamente.. Porém, acredito que a instalação não será “off-line”, o usuário terá que aceitar os termos, etc, etc.. Só fazendo um teste em uma máquina limpa mesmo para ver o comportamento exato..

      Se realmente for necessária uma instalação sem intervenção, eu tentaria fazer manualmente com custom actions rodando um .bat que chame os instaladores necessários passando o parâmetro para instalação “quiet”..

      Abraço!
      André Lima

  • Frederico Simões disse:

    Olá André estou eu aqui novamente para tirar mais uma dúvida.

    Eu utilizo o IntelliLock para fazer a segurança e licenciamento dos programas que venho desenvolvendo. Só que tem um porém, quando eu utilizo esse software, ele faz uma compilação e “protege” contra uma possível pirataria.

    Onde está o meu problema. Quando vou fazer um instalador com o Visual Studio, quando pego o projeto de saída, ele nunca pega o arquivo executável que foi compilado pelo programa que utilizo.

    Poderia safar mais essa onça por favor? Já procurei na internet e ainda não achei nada. Poderia me ajudar por favor?

    Obrigado desde já.

    • Frederico Simões disse:

      André,

      Consegui resolver o meu problema. Depois de analisar bem cheguei a seguinte solução:

      1 – Copiei o arquivo que o IntelliLock compila e coloquei na pasta do meu projeto onde está localizado o Primary output from Gerador XML (Active)

      2 – Na janela Configuration Manager desmarquei a opção Build do meu projeto para que ele não sobreposse o meu arquivo compilado pelo programa IntelliLock.

      3 – Compilei somente o meu projeto Setup e funcionou normalmente.

      Peço desculpas por ter colocado a informação acima. Como resolvi o problema achei apropriado colocar também a resolução do problema. Peço desculpas por que eu acho que não fui muito claro.

      Mesmo assim um grande abraço e obrigado por suas colaborações.

      • andrealveslima disse:

        Olá Frederico!

        Que bom que você conseguiu resolver o problema.. Eu não tinha ideia do que poderia ser feito nessa situação, mas, felizmente você conseguiu solucionar.. :)

        E não tem problema nenhum que você colocou as informações acima.. Muito pelo contrário, eu agradeço por você ter voltado aqui e compartilhado com a gente a solução que você encontrou.. Dessa forma, se mais alguém tiver essa mesma dificuldade no futuro, as suas instruções vão ajudar sem dúvida alguma..

        Um forte abraço!
        André Lima

  • Alberto disse:

    Obrigado, ajudou bastante!

  • Ricardo Santos disse:

    Olá André!

    Achei o teu tutorial muito interessante e já me ajudou bastante, mas tenho uma dúvida que gostava que me ajudasse.
    Como posso eu adicionar um ficheiro .exe ao meu Setup Project de maneira a que seja executado antes ou depois do deployment?

    Obrigado, Abraço!

    • andrealveslima disse:

      Olá Ricardo, muito obrigado pelo comentário!

      Antes da instalação vai ser difícil você conseguir executar qualquer coisa.. Pelo que pesquisei, tem até umas gambiarras que você pode fazer, mas são bem complicadas.. Se você realmente precisar que seja executado antes da instalação, aí recomendo que você parta para alguma outra solução de instalador (como o InnoSetup)..

      Se for depois da instalação, aí você pode trabalhar com custom actions.. Tem um passo a passo nesta thread do StackOverflow, veja só:

      How to run a “.bat” file during installation?

      Abraço!
      André Lima

      • Ricardo Santos disse:

        Muito Obrigado pela sua resposta tão rápido!
        Não necessita de ser antes da instalação…
        Deste modo adicionei o meu executável (dotnet sdk.exe ) na pasta commit das custom actions, o que acontece é que quando começa a instalar o Dotnet dá um erro (0x80070652 já existe outra instalação em curso) pois ele não dá como concluida a primeira. Como consigo resolver este problema?

        Obrigado,
        Ricardo Santos

        • andrealveslima disse:

          Olá Ricardo!

          O que é exatamente que você está querendo instalar? O .NET Framework? Se for, nesse caso você só precisa adicioná-lo como pré-requisito do instalador.. Aí ele controlará se a versão especificada do .NET está instalada antes mesmo de prosseguir com a instalação do seu aplicativo..

          Se for algum outro instalador baseado na tecnologia MSI, aí você terá problema mesmo, porque não é possível fazer duas instalações ao mesmo tempo.. E mesmo que você coloque como custom action depois da instalação, teoricamente a primeira instalação ainda não terá sido concluída, aí você não conseguirá iniciar a segunda instalação..

          Nesse caso, normalmente você consegue encontrar os chamados “Merge Modules” dos componentes, que podem ser adicionados ao instalador da aplicação.. Ou você pode também distribuir os componentes manualmente na pasta do seu aplicativo..

          Mas, tudo isso depende do que exatamente você está tentando instalar junto com a aplicação..

          Abraço!
          André Lima

  • Demiraldo Santos disse:

    Olá André:

    Desenvolvi em VB.NET uma aplicação e já usei o Instalador com sucesso. Graças a sua clara explicação.

    Só que surgiu uma dúvida em relação a um post feito pelo Andre Luis Spilari em 11/02/2017: ele pergunta sobre desinstalar a versão instalada automaticamente sem a intervenção do usuário. Você respondeu que é só configurar o “RemovePreviousVersions” do instalador e depois mudar o atributo “Version” também.
    Desculpe, mas não consegui encontrar o local onde faço essas configurações. Adianto que é a primeira vez que uso esse recurso, então, desculpe se a pergunta está sendo tão óbvia…

  • Demiraldo Santos disse:

    Olá André:

    Desculpa mesmo… me confundi e já achei onde faço a configuração que comentei. Desconsidere o meu post anterior, ok?

    Abraços!

    • andrealveslima disse:

      Olá Demiraldo! Que bom que você conseguiu encontrar a opção que estava procurando.. Se ficar com alguma outra dúvida, é só entrar em contato.. :)

      Abraço!
      André Lima

  • Jefferson disse:

    Cara, muito bom seu artigo. Mas eu tentei criar um installer, e durante a buid do instalador abre o instalador e pede para encontrar o arquivo vs_setup.msi do “Microsoft Visual Studio 2010 Shell (Integrated)”. não acho isso de jeito nenhum e não consigo continuar, trava o VS e fica na tela de cancelando a instalação.

    • andrealveslima disse:

      Olá Jefferson!

      Estranho hein.. Qual versão do Visual Studio você está utilizando? E você tem outras versões do Visual Studio instaladas no mesmo computador?

      Abraço!
      André Lima

  • Ricardo disse:

    Caro André, parabéns pela contribuição do video. Estou testando esse instalador na versão do Visual Studio Professional 2017 e notei na parte dos pré-requisitos que não tenho mais os pacotes distribuíveis como você tem do .NET 4.0 e Windows Installer 3.5 que dependo na minha aplicação. Dei uma pesquisada e não encontrei como adicionar elas. Tem alguma dica? Obrigado.

  • Paulo Ito disse:

    Andre,

    ótimo video, parabéns.

    Tenho um problema, estou tentando gerar um instalador e em resumo tudo acontece normalmente porem o atalho criado na desktop não está funcionando. Analisando as propriedades do atalho, o atalho aponta para a pasta da aplicação mas não para o exe do meu aplicativo. O que eu preciso fazer para que meu atalho aponte para o exe?

    Obrigado.

    • andrealveslima disse:

      Olá Paulo!

      Como é que você criou o atalho dentro do instalador? Você precisa clicar com o botão direito, selecionar a opção de criar atalho e apontar para o “primary output” do projeto.. Assim o atalho será criado apontando para o EXE..

      Caso você não tenha entendido, posta um screenshot da parte de atalhos do seu instalador para eu dar uma olhada como você está fazendo..

      Abraço!
      André Lima

      • Paulo Ito disse:

        Ola andré,

        Obrigado por responder meu post.
        Poderia conferir os screenshots no link abaixo:
        https://drive.google.com/open?id=1iamP38gT0gFGncK9BzQpguKtQPSB6-Im

        obrigado

        • andrealveslima disse:

          Olá Paulo!

          Obrigado por enviar as screenshots.. Pois bem, aparentemente você não criou o atalho da maneira correta.. Tente excluir essa entrada de atalho do seu instalador e cria uma outra novamente seguindo os passos:

          1) Clique com o botão direito na área à direita da seção “User’s Desktop”
          2) Escolha a opção “Create New Shortcut”
          3) Na janela “Select Item in Project”, escolha “Application Folder” no combobox “Look in” e selecione “Primary output from XXXXX” (onde XXXXX é o nome da aplicação)
          4) Clique em OK

          Depois volta aqui e conta pra gente se funcionou..

          Abraço!
          André Lima

  • SUZANA BORGES DOS SANTOS disse:

    André, poderia me ajudar com uma dúvida?
    Como eu faço para que depois de instalado, o executável seja chamado “sozinho” e já rode sem que o usuário tenha que fazer isso?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *