Przejdź do treści stopki
Iron Academy Logo
Aplikacja C#
Aplikacja C#

Inne Kategorie

Szybkie wdrażanie i aktualizacja aplikacji desktopowych C# z Velopack

Tim Corey
32m 25s

Tworzenie i aktualizacja aplikacji desktopowych na różnych platformach tradycyjnie były jednym z najbardziej frustrujących elementów rozwoju oprogramowania. Jednak jak wyjaśnia Tim Corey w swoim wideo "Deploy and Update C# Desktop Apps Fast with Velopack", ten proces może być teraz niezwykle łatwy.

Dzięki Velopack, fantastycznemu narzędziu zaprojektowanemu do obsługi od budowania pakietów po stosowanie aktualizacji, deweloperzy mogą teraz tworzyć, wdrażać i utrzymywać swoje aplikacje używając tylko jednego polecenia — bez skomplikówanych potoków budowania czy nieskończonej liczby plików konfiguracyjnych.

W tym artykułe przejdziemy szczegółowo przez cały 32-minutowy tutorial Tima, obejmujący jak używać Velopack do przekształcania standardowej aplikacji C# WPF w automatycznie aktualizujący się przenośny pakiet. Przyjrzymy się także, jak wspiera on automatyczne migracje, podpisywanie kodu i konfigurację bez dodatkowych ustawień dla wielu platform — wszystko to przy zachowaniu natywnej wydajności.

Wprowadzenie: Dłączego Velopack?

Tim zaczyna od wyjaśnienia, że tworzenie i aktualizacja aplikacji desktopowych nie musi być trudne — w rzeczywistości może być "nadzwyczaj łatwe." Jego celem w tym wideo jest pokazanie, jak Velopack może uprościć proces, pakując aplikację WPF, tworząc instalator i umożliwiając automatyczne aktualizacje przy minimalnej konfiguracji.

Podkreśla, że nie ogranicza się to do WPF — ten sam proces działa dla WinForms, konsolowych aplikacji, a nawet oprogramowania spoza .NET, jak Java, Rust czy C++. Velopack wspiera tworzenie pakietów dla prawie każdego języka lub frameworku, co czyni go jednym z najlepszych frameworków dla instalatorów dostępnych dziś dla aplikacji działających na różnych platformach.

Tworzenie Projektu WPF

Tim zaczyna w Visual Studio 2022, tworząc prosty projekt WPF o nazwie DeployDemo. Projekt jest skierowany na .NET 9, ale jak zwraca uwagę, działa on doskonale na nowszych wersjach, takich jak .NET 10.

To początkowe budowanie to tylko mała aplikacja do pokazania pełnego procesu wdrażania i aktualizacji. Chociaż używa WPF, ponownie podkreśla, że Velopack równie dobrze działa w przypadku aplikacji desktopowych działających na różnych platformach, tworząc jedną metodę dla wszystkich typów projektów .NET, a nawet projektów spoza .NET.

Instalacja Velopack jako Narzędzia Globalnego

Następnie Tim otwiera terminal i wpisuje:

dotnet tool install -g vpk

To jedno polecenie instaluje Velopack globalnie na systemie, umożliwiając deweloperom uruchamianie poleceń Velopack z dowolnego miejsca.

Tim nazywa to "sekretnym krokiem", ponieważ Velopack bierze wyjście kompilatora z twojego projektu i przekształca je w automatycznie aktualizujący się przenośny pakiet. Ten krok daje twojej aplikacji profesjonalny instalator oraz framework do automatycznych aktualizacji — wszystko w jednym.

Wyjaśnia, że wiersz polecenia nie tylko upraszcza konfigurację, ale łatwo integruje się także z potokami CI/CD, więc deweloperzy mogą automatyzować pakowanie, tworzenie wydań i wdrożenia bez dodatkowych skryptów. Możliwość automatyzacji za pomocą tylko jednego polecenia oznacza, że deweloperzy mogą zaoszczędzić cenny czas, zachowując spójność budowania.

Instalacja Pakietu NuGet Velopack

W Visual Studio, Tim otwiera Zarządzaj Pakietami NuGet i instaluje pakiet Velopack.

Wyjaśnia, że Velopack jest następcą Squirrel, wcześniej popularnego frameworku do tworzenia instalatorów. Jeśli używałeś Squirrel, Velopack może automatycznie migrować istniejącą konfigurację — oferując lepszą niezawodność, znacznie szybsze budowanie i lepszą zgodność z różnymi platformami.

Velopack może tworzyć instalatory desktopowe dla Windows, Linux i macOS, wspierając różne języki programowania, takie jak C#, Rust, C++ i JavaScript. To framework do wdrażania aplikacji działających na różnych platformach, który działa doskonale na wszystkich systemach.

Tim podkreśla, że Velopack jest całkowicie darmowy — nie ma subskrypcji ani opłat licencyjnych, a mimo to oferuje profesjonalne frameworki dla instalatorów porównywalne z komercyjnymi rozwiązaniami.

Inicjalizacja Velopack w Kodzie

W pliku App.xaml.cs, Tim dodaje konstruktor i inicjalizuje Velopack zaledwie kilkoma liniami kodu:

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

Ta koncepcja bez konfiguracji natychmiast łączy aplikację z automatycznym frameworkiem aktualizacji Velopack. Chociaż na razie nie sprawdza to aktualizacji, to to zapewnia wydajność Velopack podczas późniejszych kroków, kiedy zaczyna zarządzać aktualizacjami i instalacjami.

Tim wyjaśnia, że nawet jeśli ta konfiguracja jest prosta, jest wystarczająco potężna, aby uczynić aplikację automatycznie aktualizującą się, zapewniając użytkownikom zawsze najnowszą wersję na maszynie końcowego użytkownika.

Projektowanie Interfejsu Użytkownika

Przed dalszym omówieniem aktualizacji, Tim tworzy podstawowy interfejs WPF. Tworzy układ siatki i umieszcza przycisk Aktualizuj w prawym górnym rogu.

Początkowo źle umieszczony element powoduje błąd, ale Tim wykorzystuje to do przypomnienia widzom, jak ważna jest hierarchia układu w WPF. Po skorygowaniu interfejs instalowalnej aplikacji wygląda czysto i można go rozmieścić — pokazując, jak Velopack działa świetnie z popularnymi frameworkami, takimi jak WPF.

Następnie dodaje StackPanel zawierający pole tekstowe (mainTextBox) oraz przycisk Submit (submitButton). Kiedy aplikacja zostaje uruchomiona, wyświetla minimalny, działający interfejs użytkownika. Ten mały projekt będzie później używany do pokazania, jak aktualizacje są stosowane automatycznie.

Implementacja Przycisku Aktualizacji

Teraz Tim przechodzi do funkcjonalności. Podwójnie klika przycisk Aktualizuj, aby wygenerować jego zdarzenie kliknięcia. Stanie się to sercem frameworka automatycznych aktualizacji.

Wyjaśnia, że proces ten można podzielić na trzy etapy — sprawdzanie, pobieranie i instalowanie aktualizacji — ale w tym demo łączy wszystkie trzy w jedno zdarzenie, aby było to bardziej przejrzyste.

Pisanie logiki aktualizacji

W pliku MainWindow.xaml.cs Tim tworzy nowy obiekt UpdateManager i wskazuje mu lokalną ścieżkę, która będzie służyć jako źródło aktualizacji:

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

W praktyce ścieżka ta może być adresem URL HTTPS dla aplikacji zewnętrznej lub lokalnym udziałem plików do dystrybucji wewnętrznej. Velopack nie wymaga skomplikówanej konfiguracji — działa płynnie w obu środowiskach.

Następnie Tim dodaje kod asynchroniczny do obsługi sprawdzania wersji i aktualizacji:

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);

Ten kod sprawdza dostępność nowszej wersji, pobiera pakiety różnicowe i natychmiast je stosuje. Velopack zajmuje się wszystkim — aplikacja uruchamia się ponownie automatycznie po zakończeniu aktualizacji.

Wyjaśnia, że chociaż w tym demo używa się kliknięcia przycisku, programiści mogą również uruchamiać te aktualizacje w tle lub automatycznie podczas uruchamiania, tak jak w Professionalnym oprogramowaniu.

Publikacja aplikacji

Następnie Tim pokazuje, jak opublikować pierwszą wersję. Korzystając z terminala w folderze projektu, uruchamia:

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

Powoduje to wygenerowanie samodzielnej kompilacji zawierającej środowisko uruchomieniowe .NET. Oznacza to, że aplikacja będzie działać na komputerze każdego użytkownika końcowego bez konieczności oddzielnej instalacji .NET.

Tim pokazuje skompilowany wynik — plik DeployDemo.exe — w katalogu publikacji, potwierdzając, że działa poprawnie. Na tym etapie jest to tylko wynik kompilacji — nie jest to jeszcze spakowana, gotowa do instalacji wersja.

Tworzenie pakietu instalacyjnego

Aby przekształcić opublikowane pliki w instalator gotowy do wdrożenia, Tim używa polecenia pack firmy Velopack:

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

Powoduje to utworzenie folderu Releases zawierającego wszystkie niezbędne pliki, w tym pliki wykonywalne instalatora.

Tim kopiuje pliki wydania do lokalnego folderu "server". Uruchomienie wygenerowanego pliku instalacyjnego powoduje pełną instalację aplikacji — tworzy skróty, dodaje pozycję na liście Programy i funkcje oraz zapewnia natywny proces instalacji bez dodatkowych uprawnień lub monitów UAC.

Obecnie aplikacja jest oficjalną aplikacją do instalacji, opartą na Velopack.

Aktualizacja aplikacji

Aby zasymulować aktualizację, Tim modyfikuje kod przycisku "Prześlij":

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

Następnie ponownie pakuje aplikację, powtarzając te same polecenia publikowania i pakowania, ale z zaktualizowanym numerem wersji:

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

Velopack automatycznie tworzy pakiety delta (małe pliki różnicowe dla obecnych użytkowników) oraz pełny pakiet dla nowych instalacji. Tim zauważa, że podczas gdy pełny pakiet ma około 63 MB, pakiet delta ma tylko 132 KB — co dowodzi, że Velopack jest znacznie szybszy i wydajniejszy niż inne narzędzia lub frameworki instalacyjne.

Kopiuje nowe wydania do folderu serwera, tworząc w ten sposób wydania dla wersji 1.0.1.

Zastosowanie aktualizacji

Tim ponownie otwiera zainstalowaną aplikację i klika przycisk Aktualizuj. W ciągu kilku sekund Velopack pobiera i instaluje aktualizację 1.0.1 — automatycznie restartując aplikację.

Kiedy wpisuje swoje imię i klika "Prześlij", pojawia się teraz komunikat "Witaj, Tim". Mechanizm aktualizacji zadziałał błyskawicznie, potwierdzając, że Velopack łatwo się integruje i bezbłędnie obsługuje cały cykl aktualizacji.

Wskazuje on, że programiści mogą hostować te wydania na platformie Azure, w magazynie plików lub w repozytorium internetowym, a ta sama logika automatycznej aktualizacji będzie nadal działać w systemach Windows, Linux lub macOS.

Uproszczona konserwacja i elastyczność

Tim podkreśla, jak ten proces sprawia, że utrzymanie aplikacji desktopowych jest niezwykle łatwe. Programiści mogą wdrażać narzędzia wewnętrzne lub oprogramowanie publiczne z pełną funkcjonalnością automatycznej aktualizacji przy minimalnej konfiguracji i bez zewnętrznych zależności.

Velopack oferuje znane programistom .NET API i zajmuje się każdym etapem:

  • Publikowanie kompilacji

  • Tworzenie pakietów

  • Tworzenie wydań

  • Stosowanie aktualizacji

  • Czysta deinstalacja

Wszystko to odbywa się bez konieczności stosowania skomplikówanego procesu kompilacji lub złożonych plików konfiguracyjnych.

Tim nazywa Velopack fantastycznym narzędziem, które pomaga programistom zaoszczędzić cenny czas, zapewniając jednocześnie dopracowane, profesjonalne oprogramowanie. To framework do aktualizacji międzyplatformowych, który "po prostu działa".

Odinstalowywanie i śledzenie wersji

Tim pokazuje, że zainstalowana aplikacja pojawia się na liście "Odinstaluj lub zmień program" w systemie Windows, z wersją 1.0.1. Usunięcie jej przebiega płynnie — Velopack po prostu usuwa folder, nie pozostawiając żadnych śladów.

Dodaje, że Velopack działa znakomicie nie tylko w przypadku WPF, ale także WinForms, platformy UNO, a nawet starszych projektów opartych na .NET Framework 4.6.2. Jest również kompatybilny z innymi popularnymi frameworkami i językami, takimi jak Rust czy JavaScript, co czyni go uniwersalnym rozwiązaniem dla instalatorów wielopłatformowych.

Wnioski

Podsumowując, Tim wyraża swoje ogromne wrażenie na temat wyników pracy Velopack. Wystarczy kilka kroków — zainstalowanie narzędzia, dodanie jednej linii kodu i uruchomienie dwóch poleceń — aby programiści mogli przekształcić zwykły projekt .NET w w pełni instalowalną, samouaktualniającą się aplikację wielopłatformową.

Autor składa ogromne podziękowania programistom Velopack za stworzenie tak wspaniałego dzieła inżynierii, nazywając je prawdopodobnie najlepszym dostępnym obecnie frameworkiem do instalacji i aktualizacji wielopłatformowych aplikacji desktopowych.

Na koniec Tim przypomina widzom, że wszystkie szczegóły, polecenia i kod źródłowy są dostępne w opisie filmu. Zachęca programistów do dyskusji nad pomysłami, zgłaszania wniosków dotyczących funkcji oraz współtworzenia przyszłości projektu poprzez jego publiczne repozytorium.

Hero Worlddot related to Szybkie wdrażanie i aktualizacja aplikacji desktopowych C# z Velopack
Hero Affiliate related to Szybkie wdrażanie i aktualizacja aplikacji desktopowych C# z Velopack

Zarabiaj więcej, dzieląc się tym, co kochasz

Tworzysz treści dla deweloperów pracujących z .NET, C#, Java, Python, czy Node.js? Zamień swoją wiedzę specjalistyczną na dodatkowy dochód!

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie