Pacotes MSI vs nuget: quais são os melhores para entrega contínua?

Vamos discutir o tópico a seguir. Há uma aplicação que atualmente está sendo implantada com o método xcopy. Essa abordagem dificulta o gerenciamento de dependencies, atualizações de arquivos, etc. Há uma ideia para iniciar a implantação de aplicativos com a ajuda de alguns pacotes, como você faz no Linux com a ajuda de RPM , mas para o Windows.

Então eu tenho pergunta: o sistema de pacotes é melhor usar no windows classic windows installer ( msi ) ou nuget ou outra coisa?

MSI é o padrão de aplicativo corporativo aceito. Ele tem alguns benefícios corporativos importantes em comparação com as técnicas de implantação herdadas. O WiX é a nova maneira aberta de criar arquivos MSI.

  • Download do Conjunto de Ferramentas Wix .
  • Para dar uma olhada no Wix , você pode querer ler um resumo rápido e não oficial da história por trás dele .
  • Então você pode querer verificar outras maneiras de entregar um instalador, além do Wix lendo: Que produto de instalação usar? InstallShield, WiX, Wise, Advanced Installer, etc ( mais uma lista rápida de ferramentas ).
  • Finalmente, veja um exemplo completo de como um arquivo de origem do Wix e seus componentes se parecem no Codeproject . Este é o “Hello World” do Wix.

Alguns bons links iniciais para aprender o Wix:

  • Minhas sugestões de início rápido do Wix
  • Bons resources para aprender a criar instaladores MSI a partir do WiX
  • Como implementar o upgrade do instalador WiX? (atualização importante)
  • Quais são as limitações do WiX e do WiX Toolset?

Extrair arquivos do Setup.exe WiX Bundle ou de um arquivo MSI:

  • Extraia o MSI do EXE – incluindo como extrair arquivos incorporados em um executável do pacote WiX Burn.
  • Como posso comparar o conteúdo de dois (ou mais) arquivos MSI? – Incluindo como extrair arquivos de um MSI usando a ferramenta dark.exe do WiX

Como escrevi no meu post sugerido ” Wix quick start ” acima: Wix é hands-on . Concentre-se apenas em amostras simples, mas completas do mundo real, como a do Codeproject – ler a documentação sozinha provavelmente será confuso .

Concentre-se em dividir seu aplicativo em componentes e configure uma atualização importante. Use um arquivo por componente como uma regra básica e leia esta resposta para entender melhor a criação do componente: Alterar meu componente GUID no wix?

Uma atualização importante é o mecanismo de atualização mais comumente usado para software implantado (o outro tipo de atualização comum é a atualização secundária). É obviamente crucial que você possa atualizar o que já implantou. Obtenha cenários de upgrade funcionando antes de implantar sua primeira versão de software para ter confiança em sua solução de implantação.

Uma vez que você tenha seus componentes configurados e sua solução de upgrade esteja funcionando, o restante das peças se encheckboxrá à medida que você trabalha com os requisitos de implementação do seu aplicativo e verifica amostras no site tutorial do Wix : https: //www.firegiant. com / wix / tutorial / .

Para aqueles que escrevem código Wix diretamente (sem um editor de GUI), eu sugiro que você verifique esta resposta para uma maneira de manter seus arquivos fonte concisos: Sintaxe para guias no WIX?

Leia mais:

  • Windows Installer e a criação do WiX
  • Recursos do instalador, WIX vs InstallShield Express
  • Installshield ou Wix

Eu estou seguindo esse caminho agora, onde eu herdei o software usando MSI / WiX para o instalador, mas olhando para converter nosso processo para entrega contínua e empurrando as atualizações que estão instaladas sem interação com o cliente. Eu acho que é incorreto para nuget pombo como uma ferramenta de SDK, em sua essência, é uma ferramenta para implantar conjuntos de arquivos com versão. Além disso, se o software que você está implantando já responde pesadamente no nuget, e você já está empacotando seus assemblies em pacotes nuget para uso interno, então por que adicionar tecnologia extra ao mix por causa disso? empacotar um nuget.exe no seu msi, chame a atualização periodicamente, pronto.

Eu sei que o WiX suporta a criação de patches, mas parece que é uma reflection tardia. Além disso, o que acontece se o seu patch falhar na instalação? Instalando patches fora de ordem? Seu instalador principal requer permissions do UAC, enquanto o seu patch não?

Eu acho que os tempos estão mudando, e a MSI representa um modo antigo de pensar sobre as coisas. Chocolatey é um bom exemplo, mas ainda está neste estágio híbrido, misturando ambas as tecnologias.

MSI é mais parecido com pull – u obter um pacote, depois instalá-lo. Nuget é mais como um stratergy – você obtém o nome de um pacote, instala-o, então periodicamente você pode chamar update, e uma nova versão é baixada e instalada.