Ir para o conteúdo do rodapé
Iron Academy Logo
Aplicação C#
Aplicação C#

Outras categorias

Implante e atualize aplicativos desktop C# rapidamente com o Velopack.

Tim Corey
32m 25s

Implementar e atualizar aplicativos de desktop multiplataforma tem sido tradicionalmente uma das partes mais frustrantes do desenvolvimento. Mas, como Tim Corey explica em seu vídeo " Implantar e atualizar aplicativos desktop C# rapidamente com o Velopack ", esse processo agora pode ser extremamente fácil.

Com o Velopack, uma ferramenta fantástica projetada para lidar com tudo, desde a criação de pacotes até a aplicação de atualizações, os desenvolvedores agora podem criar, implantar e manter seus aplicativos usando apenas um comando — sem pipelines de compilação complexos ou arquivos de configuração intermináveis.

Neste artigo, faremos um passo a passo detalhado do tutorial completo de 32 minutos do Tim, que aborda como usar o Velopack para transformar um aplicativo WPF padrão em C# em um pacote portátil com atualização automática. Veremos também como ele oferece suporte a migrações automáticas, assinatura de código e configuração sem necessidade de configuração para múltiplas plataformas — tudo isso mantendo o desempenho nativo.

Introdução: Por que Velopack?

Tim começa explicando que implantar e atualizar aplicativos de desktop não precisa ser difícil — na verdade, pode ser "extremamente fácil". Seu objetivo neste vídeo é mostrar como o Velopack pode simplificar o processo, empacotando um aplicativo WPF, criando um instalador e habilitando atualizações automáticas com configuração mínima.

Ele enfatiza que isso não se limita ao WPF — o mesmo processo funciona para WinForms, aplicativos de console ou até mesmo softwares não .NET, como Java, Rust ou C++. O Velopack suporta a criação de pacotes para praticamente qualquer linguagem ou framework, tornando-o um dos melhores frameworks de instalação disponíveis atualmente para aplicações multiplataforma.

Criando um projeto WPF

Tim começa no Visual Studio 2022, criando um projeto WPF simples chamado DeployDemo. O projeto tem como alvo o .NET 9, mas, como ele destaca, funciona perfeitamente em versões mais recentes, como o .NET 10.

Esta versão inicial é apenas uma pequena aplicação para demonstrar todo o processo de implantação e atualização. Embora utilize WPF, ele reitera que o Velopack funciona igualmente bem para aplicativos desktop multiplataforma, tornando-se uma solução única para todos os tipos de projetos .NET e até mesmo para projetos que não utilizam .NET.

Instalando o Velopack como uma ferramenta global

Em seguida, Tim abre o terminal e digita:

dotnet tool install -g vpk

Este único comando instala o Velopack globalmente no sistema, permitindo que os desenvolvedores executem comandos do Velopack de qualquer lugar.

Tim chama isso de "etapa secreta" porque o Velopack pega a saída do compilador do seu projeto e a transforma em um pacote portátil que se atualiza automaticamente. Esta etapa fornece ao seu aplicativo um instalador profissional e uma estrutura de atualização automática — tudo em um só lugar.

Ele explica que a linha de comando não só simplifica a configuração, como também se integra facilmente aos pipelines de CI/CD, permitindo que os desenvolvedores automatizem o empacotamento, a criação de versões e a implantação sem scripts adicionais. A capacidade de automatizar com apenas um comando significa que os desenvolvedores podem economizar tempo valioso, mantendo builds consistentes.

Instalando o pacote NuGet Velopack

Dentro do Visual Studio, Tim abre o Gerenciador de Pacotes NuGet e instala o pacote Velopack.

Ele explica que o Velopack é o sucessor do Squirrel, um framework de instalação que era bastante popular anteriormente. Se você já utilizou o Squirrel, o Velopack pode migrar automaticamente sua configuração existente, oferecendo maior confiabilidade, compilações significativamente mais rápidas e melhor compatibilidade entre plataformas.

O Velopack pode gerar instaladores para desktop para Windows, Linux e macOS, com suporte a várias linguagens de programação, como C#, Rust, C++ e JavaScript. É uma estrutura para implantação de aplicativos multiplataforma que funciona maravilhosamente bem em diversos sistemas.

Tim enfatiza que o Velopack é totalmente gratuito — não há taxa de assinatura ou licença, mas oferece estruturas de instalação profissionais comparáveis ​​às soluções comerciais.

Inicializando o Velopack no código

No arquivo App.xaml.cs, Tim adiciona um construtor e inicializa o Velopack com apenas algumas linhas de código:

new VelopackApp()
    .Build()
    .Run();
new VelopackApp()
    .Build()
    .Run();

Essa configuração sem necessidade de configuração conecta imediatamente o aplicativo à estrutura de atualização automática do Velopack. Embora ainda não verifique se há atualizações, é isso que permite o bom desempenho do Velopack nas etapas posteriores, quando ele começa a gerenciar atualizações e instalações.

Tim explica que, embora essa configuração seja simples, ela é poderosa o suficiente para tornar o aplicativo autoatualizável, garantindo que os usuários sempre executem a versão mais recente em seus computadores.

Projetando a interface do usuário

Antes de se aprofundar nas atualizações, Tim cria uma interface WPF básica. Ele cria um layout em grade e coloca um botão Atualizar no canto superior direito.

Inicialmente, um elemento mal posicionado causa um erro, mas Tim o utiliza para lembrar aos espectadores a importância da hierarquia de layout no WPF. Após a correção, a interface do aplicativo instalável fica limpa e redimensionável — mostrando como o Velopack funciona muito bem com frameworks populares como o WPF.

Em seguida, ele adiciona um StackPanel contendo uma caixa de texto (mainTextBox) e um botão Enviar (submitButton). Quando o aplicativo é executado, ele exibe uma interface de usuário mínima e funcional. Este pequeno projeto será usado posteriormente para demonstrar a aplicação automática de atualizações.

Implementando o botão de atualização

Agora Tim vai abordar a funcionalidade. Ele clica duas vezes no botão Atualizar para gerar o evento de clique. Isso se tornará o núcleo da estrutura de atualização automática.

Ele explica que você pode dividir o processo em três fases — verificação, download e aplicação de atualizações — mas, para esta demonstração, ele combina as três em um único evento para simplificar o processo.

Escrevendo a lógica de atualização

No arquivo MainWindow.xaml.cs, Tim cria um novo UpdateManager e o direciona para um caminho local que servirá como fonte de atualização:

var mgr = new UpdateManager(@"C:\temp\DeployDemoServer");
var mgr = new UpdateManager(@"C:\temp\DeployDemoServer");

Em situações reais, esse caminho pode ser um URL HTTPS para um aplicativo voltado para o público externo ou um compartilhamento de arquivos local para distribuição interna. O Velopack não exige configurações complexas — funciona perfeitamente em qualquer ambiente.

Em seguida, Tim adiciona código assíncrono para lidar com a verificação de versão e atualizações:

var newVersion = await mgr.CheckForUpdatesAsync();

if (newVersion == null)
{
    MessageBox.Show("You are on the latest version.");
    return;
}

await mgr.DownloadUpdatesAsync(newVersion);
await mgr.ApplyUpdatesAndRestartAsync(newVersion);
var newVersion = await mgr.CheckForUpdatesAsync();

if (newVersion == null)
{
    MessageBox.Show("You are on the latest version.");
    return;
}

await mgr.DownloadUpdatesAsync(newVersion);
await mgr.ApplyUpdatesAndRestartAsync(newVersion);

Este código verifica se existe uma versão mais recente, baixa os pacotes delta e os aplica instantaneamente. O Velopack cuida de tudo — o aplicativo reinicia automaticamente assim que a atualização for concluída.

Ele explica que, embora esta demonstração utilize um clique de botão, os desenvolvedores também podem acionar essas atualizações silenciosamente ou automaticamente na inicialização, assim como acontece com softwares profissionais.

Publicando o aplicativo

Em seguida, Tim demonstra como publicar a primeira versão. Utilizando o terminal dentro da pasta do projeto, ele executa o seguinte comando:

dotnet publish --self-contained -r win-x64 -o ./publish

Isso gera uma versão autocontida que inclui o ambiente de execução do .NET . Isso significa que o aplicativo será executado em qualquer máquina do usuário final sem a necessidade de instalar o .NET separadamente.

Tim mostra o resultado compilado — o arquivo DeployDemo.exe — no diretório de publicação, confirmando que ele é executado corretamente. Neste momento, trata-se apenas da saída do compilador — ainda não é uma versão empacotada e instalável.

Criando o pacote de instalação

Para transformar os arquivos publicados em um instalador pronto para implantação, Tim usa o comando pack do Velopack:

vpk pack --pack-id DeployDemo --pack-version 1.0.0 --pack-directory ./publish

Isso cria uma pasta "Releases" contendo todos os arquivos necessários, incluindo os executáveis ​​de instalação.

Tim copia os arquivos de lançamento para uma pasta local do "servidor". Executar o arquivo de instalação gerado instala o aplicativo completamente — ele cria atalhos, adiciona uma entrada na lista de Programas e Recursos e oferece uma experiência de instalação nativa, sem permissões extras ou solicitações do Controle de Conta de Usuário (UAC).

Agora, o aplicativo é um aplicativo oficial instalável, desenvolvido pela Velopack.

Atualizando o aplicativo

Para simular uma atualização, Tim modifica o código do botão Enviar:

MessageBox.Show($"Hello {mainTextBox.Text}");
MessageBox.Show($"Hello {mainTextBox.Text}");

Em seguida, ele reempacota o aplicativo repetindo os mesmos comandos de publicação e empacotamento, mas com um número de versão atualizado:

vpk pack --pack-id DeployDemo --pack-version 1.0.1 --pack-directory ./publish

O Velopack cria automaticamente pacotes delta (pequenos arquivos diferenciais para usuários existentes) e um pacote completo para novas instalações. Tim observa que, embora o pacote completo tenha cerca de 63 MB, o pacote delta tem apenas 132 KB — prova de que o Velopack é significativamente mais rápido e eficiente do que outras ferramentas ou estruturas de instalação.

Ele copia as novas versões para a pasta do servidor, criando efetivamente versões para a versão 1.0.1.

Aplicando a atualização

Tim reabre o aplicativo instalado e clica no botão Atualizar. Em segundos, o Velopack baixa e aplica a atualização 1.0.1, reiniciando o aplicativo automaticamente.

Quando ele digita o nome e clica em Enviar, agora aparece "Olá, Tim". A estrutura de atualização funcionou extremamente rápido, confirmando que o Velopack se integra facilmente e lida com todo o ciclo de atualização sem problemas.

Ele destaca que os desenvolvedores poderiam hospedar essas versões no Azure, em um armazenamento de arquivos ou em um repositório web, e a mesma lógica de atualização automática continuaria funcionando no Windows, Linux ou macOS.

Manutenção simplificada e flexibilidade

Tim destaca como esse processo torna a manutenção de aplicativos de desktop extremamente fácil. Os desenvolvedores podem implantar ferramentas internas ou software público com funcionalidade completa de atualização automática usando configuração mínima e sem dependências externas.

O Velopack oferece uma API familiar para desenvolvedores .NET e cuida de todas as etapas:

  • Publicação de builds

  • Pacotes de construção

  • Criação de versões

  • Aplicando atualizações

  • Desinstalação limpa

Tudo isso acontece sem a necessidade de um pipeline de compilação complexo ou arquivos de configuração profundos.

Tim considera o Velopack uma ferramenta fantástica que ajuda os desenvolvedores a economizar tempo valioso, ao mesmo tempo que entrega softwares profissionais e de alta qualidade. É uma estrutura para atualizações multiplataforma que "simplesmente funciona".

Desinstalação e controle de versões

Tim demonstra que o aplicativo instalado aparece na lista "Desinstalar ou alterar um programa" do Windows, exibindo a versão 1.0.1. A remoção é simples — o Velopack apenas exclui a pasta, sem deixar nenhum resíduo.

Ele acrescenta que o Velopack funciona maravilhosamente bem não apenas para WPF, mas também para WinForms, UNO Platform e até mesmo para projetos mais antigos do .NET Framework 4.6.2. Também é compatível com outras estruturas e linguagens populares, como Rust ou JavaScript, tornando-se uma solução universal para instaladores multiplataforma.

Conclusão

Para finalizar, Tim expressa o quão extremamente impressionado está com o desempenho da Velopack. Com apenas alguns passos — instalar a ferramenta, adicionar uma linha de código e executar dois comandos — os desenvolvedores podem transformar um projeto .NET simples em um aplicativo multiplataforma, totalmente instalável e com atualização automática.

Ele expressa sua enorme gratidão aos desenvolvedores do Velopack por criarem uma obra de engenharia tão incrível, considerando-a possivelmente a melhor estrutura de instalação e atualização para aplicativos de desktop multiplataforma disponível atualmente.

Tim finaliza lembrando aos espectadores que todos os detalhes, comandos e código-fonte estão disponíveis na descrição do vídeo . Ele incentiva os desenvolvedores a discutirem ideias, solicitarem recursos e contribuírem para o futuro do projeto por meio de seu repositório público.

Hero Worlddot related to Implante e atualize aplicativos desktop C# rapidamente com o Velopack.
Hero Affiliate related to Implante e atualize aplicativos desktop C# rapidamente com o Velopack.

Ganhe mais compartilhando o que você ama.

Você cria conteúdo para desenvolvedores que trabalham com .NET, C#, Java, Python ou Node.js? Transforme sua expertise em renda extra!

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim