Udostępnij za pośrednictwem


Wybieranie strategii aktualizacji ClickOnce

Technologia ClickOnce może udostępniać automatyczne aktualizacje aplikacji. Aplikacja ClickOnce okresowo odczytuje plik manifestu wdrożenia, aby sprawdzić, czy są dostępne aktualizacje aplikacji. Jeśli są dostępne, jest pobierana i uruchamiana nowa wersja aplikacji. W celu zwiększenia wydajności pobierane są tylko pliki, które uległy zmianie.

Podczas projektowania aplikacji ClickOnce należy określić, która strategia będzie używana przez aplikację do sprawdzania dostępności aktualizacji. Istnieją trzy podstawowe strategie, których można użyć: sprawdzanie, czy są dostępne aktualizacje podczas uruchamiania aplikacji, sprawdzanie, czy są dostępne aktualizacje po uruchomieniu aplikacji (za pomocą wątku działającego w tle) oraz utworzenie interfejsu użytkownika do obsługi aktualizacji.

Ponadto można określić, jak często aplikacja będzie sprawdzać, czy są dostępne aplikacje, oraz że aktualizacje są wymagane.

Uwaga

Aktualizacje aplikacji wymagają łączności sieciowej. W przypadku braku połączenia sieciowego aplikacja zostanie uruchomiona bez sprawdzania, czy są dostępne aktualizacje, niezależnie od wybranej strategii aktualizacji.

Uwaga

W programach .NET Framework 2.0 i .NET Framework 3.0 w dowolnym momencie aplikacja sprawdza aktualizacje przed uruchomieniem lub po uruchomieniu albo przy użyciu <interfejsów API xref:System.Deployment.Application> , należy ustawić deploymentProvider w manifeście wdrożenia. Element deploymentProvider odpowiada w programie Visual Studio polu Lokalizacja aktualizacji w oknie dialogowym Aktualizacje na karcie Publikowanie. Ta reguła jest złagodzona w programie .NET Framework 3.5. Aby uzyskać więcej informacji, zobacz Wdrażanie aplikacji ClickOnce na potrzeby testowania i serwerów produkcyjnych bez rezygnacji.

Sprawdzanie dostępności aktualizacji po uruchomieniu aplikacji

Gdy jest używana ta strategia, aplikacja będzie podejmować próby zlokalizowania i odczytania pliku manifestu wdrożenia w tle, podczas gdy inne jej funkcje będą normalnie działać. Jeśli aktualizacja jest dostępna, następnym razem, gdy użytkownik uruchomi aplikację, zostanie wyświetlony monit o pobranie i zainstalowanie aktualizacji.

Ta strategia sprawdza się najlepiej w przypadku połączeń sieciowych o niskiej przepustowości lub większych aplikacji, które mogą wymagać pobierania dużych plików.

Aby włączyć tę strategię aktualizacji, kliknij pozycję Po uruchomieniu aplikacji w sekcji Wybierz, kiedy aplikacja powinna sprawdzić dostępność aktualizacji okna dialogowego Aplikacja Aktualizacje. Następnie określ interwał aktualizacji w sekcji Określ częstotliwość sprawdzania dostępności aktualizacji przez aplikację.

Jest to takie samo, jak zmiana elementu Update w manifeście wdrożenia w następujący sposób:

<!-- When to check for updates -->
<subscription>
   <update>
      <expiration maximumAge="6" unit="hours" />
   </update>
</subscription>

Sprawdzanie dostępności aktualizacji przed uruchomieniem aplikacji

Strategia domyślna polega na próbie zlokalizowania i przeczytania pliku manifestu wdrożenia przed uruchomieniem aplikacji. Gdy jest używana ta strategia, aplikacja będzie podejmować próby zlokalizowania i odczytania pliku manifestu wdrożenia za każdym razem, gdy użytkownik uruchomi aplikację. Jeśli aktualizacja jest niedostępna, zostanie uruchomiona istniejąca wersja aplikacji. Jeśli wymagana aktualizacja jest dostępna, zostanie pobrana i uruchomiona. Jeśli aktualizacja jest dostępna, ale nie jest wymagana, użytkownik ma wybór, czy przeprowadzić uaktualnienie, czy uruchomić istniejącą wersję.

Ta strategia sprawdza się najlepiej w przypadku połączeń sieciowych o wysokiej przepustowości; opóźnienia w uruchamianiu aplikacji mogą być nieakceptowalnie długie w przypadku połączenia o niskiej przepustowości.

Aby włączyć tę strategię aktualizacji, kliknij przycisk Przed uruchomieniem aplikacji w sekcji Wybierz, kiedy aplikacja powinna sprawdzić dostępność aktualizacji w oknie dialogowym Aplikacja Aktualizacje.

Jest to takie samo, jak zmiana elementu Update w manifeście wdrożenia w następujący sposób:

<!-- When to check for updates -->
<subscription>
   <update>
      <beforeApplicationStartup />
   </update>
</subscription>

Uwaga

W przypadku aplikacji .NET Core 3.1 i .NET 5 i nowszych sprawdzanie aktualizacji przed uruchomieniem aplikacji jest jedyną obsługiwaną opcją aktualizacji.

Wymaganie aktualizacji

Możliwe są sytuacje, w których autor aplikacji będzie wymagał, aby użytkownicy używali zaktualizowanej wersji aplikacji. Na przykład może to być spowodowane wprowadzeniem zmian w zasobie zewnętrznym, takim jak usługa sieci Web, które uniemożliwią poprawne działanie wcześniejszych wersji aplikacji. W takim przypadku należy oznaczyć aktualizację jako wymaganą i uniemożliwić użytkownikom uruchamianie wcześniejszych wersji.

Uwaga

Mimo że można wymagać aktualizacji przy użyciu innych strategii aktualizacji, sprawdzanie Przed uruchomieniem aplikacji jest jedynym sposobem zagwarantowania, że nie można uruchomić starszej wersji. Gdy podczas uruchamiania zostanie wykryta obowiązkowa aktualizacja, użytkownik będzie musiał zaakceptować aktualizację lub zamknąć aplikację.

Aby oznaczyć aktualizację zgodnie z wymaganiami, kliknij pozycję Określ minimalną wymaganą wersję dla tej aplikacji w oknie dialogowym Aktualizacje aplikacji, a następnie określ wersję publikowania (wersja główna, pomocnicza, kompilacja, poprawka), która określa najniższy numer wersji aplikacji, którą można zainstalować.

Jest to takie samo, jak ustawienie atrybutu minimumRequiredVersion elementu Deployment w manifeście wdrożenia, na przykład:

<deployment install="true" minimumRequiredVersion="1.0.0.0">

Określanie interwałów aktualizacji

Można również określić, jak często aplikacja sprawdza dostępność aktualizacji. W tym celu należy określić, że aplikacja sprawdza dostępność aktualizacji po uruchomieniu, tak jak opisano w sekcji „Sprawdzanie, czy są dostępne aktualizacje, po uruchomieniu aplikacji” wcześniej w tym temacie.

Aby określić interwał aktualizacji, ustaw częstotliwość sprawdzania częstotliwości sprawdzania przez aplikację właściwości aktualizacji w oknie dialogowym Application Aktualizacje.

Jest to takie samo, jak ustawienie atrybutów maximumAge i unit elementu Update w manifeście wdrożenia.

Na przykład można chcieć, aby sprawdzanie odbywało się przy każdym uruchomieniu aplikacji, raz w tygodniu lub raz w miesiącu. Jeśli w określonym czasie nie będzie dostępne połączenie z siecią, sprawdzanie dostępności aplikacji zostanie wykonane przy następnym uruchomieniu aplikacji.

Uwaga

W technologii ClickOnce dla platform .NET Core i .NET 5 lub nowszych ta funkcja nie jest obsługiwana. Aby uzyskać więcej informacji, zobacz ClickOnce dla platformy .NET.

Udostępnianie interfejsu użytkownika dla aktualizacji

Gdy jest używana ta strategia, deweloper aplikacji dostarcza interfejs użytkownika, który umożliwia użytkownikowi określenie, kiedy lub jak często aplikacja ma sprawdzać dostępność aktualizacji. Na przykład można dostarczyć polecenie „Sprawdź, czy są dostępne aktualizacje” albo okno dialogowe „Ustawienia aktualizacji”, w którym będzie można wybrać różne interwały aktualizacji. Interfejsy API wdrażania ClickOnce zapewniają platformę do programowania własnego interfejsu użytkownika aktualizacji. Aby uzyskać więcej informacji, zobacz System.Deployment.Application przestrzeń nazw.

Uwaga

Klasy ApplicationDeployment i interfejsy API w System.Deployment.Application przestrzeni nazw nie są obsługiwane w wersjach .NET Core i .NET 5 i nowszych. W programie .NET 7 jest obsługiwana nowa metoda uzyskiwania dostępu do właściwości wdrażania aplikacji. Aby uzyskać więcej informacji, zobacz Access ClickOnce deployment properties in .NET (Uzyskiwanie dostępu do właściwości wdrożenia ClickOnce na platformie .NET). Platforma .NET 7 nie obsługuje odpowiedników metod ApplicationDeployment.

Jeśli aplikacja używa interfejsów API wdrożenia do sterowania własną logiką obsługi aktualizacji, należy zablokować sprawdzanie dostępności aktualizacji, tak jak opisano w poniższej sekcji „Blokowanie sprawdzania dostępności aktualizacji”.

Ta strategia sprawdza się najlepiej w sytuacji, gdy są potrzebne różne strategie aktualizacji dla różnych użytkowników.

Blokuj sprawdzanie aktualizacji

Można także spowodować, że aplikacja nigdy nie będzie sprawdzać dostępności aktualizacji. Na przykład możesz mieć prostą aplikację, która nigdy nie zostanie zaktualizowana, ale chcesz skorzystać z łatwości instalacji zapewnianej przez wdrożenie Technologii ClickOnce.

Należy również zablokować sprawdzanie aktualizacji, czy aplikacja używa interfejsów API wdrażania do wykonywania własnych aktualizacji; Zobacz "Podaj interfejs użytkownika dla aktualizacji" we wcześniejszej części tego tematu.

Aby zablokować sprawdzanie aktualizacji, wyczyść pole wyboru Aplikacja powinna sprawdzać dostępność aktualizacji w oknie dialogowym Aplikacja Aktualizacje.

Możesz również zablokować sprawdzanie aktualizacji, usuwając <Subscription> tag z manifestu wdrożenia.

Podniesienie uprawnień i aktualizacje

Jeśli nowa wersja aplikacji ClickOnce wymaga wyższego poziomu zaufania do uruchomienia niż poprzednia wersja, usługa ClickOnce wyświetli monit o podanie użytkownikowi monitu o przyznanie aplikacji tego wyższego poziomu zaufania. Jeśli użytkownik odmówi udzielenia wyższego poziomu zaufania, aktualizacja nie zostanie zainstalowana. Funkcja ClickOnce wyświetli monit o ponowne zainstalowanie aplikacji po następnym ponownym uruchomieniu. Jeśli użytkownik odmówi w tym punkcie udzielenia wyższego poziomu zaufania, a aktualizacja nie będzie oznaczona jako wymagana, zostanie uruchomiona stara wersja aplikacji. Jeśli jednak aktualizacja będzie wymagana, aplikacja nie zostanie uruchomiona ponownie, dopóki użytkownik nie zaakceptuje wyższego poziomu zaufania.

Użytkownicy nie będą monitowani o poziomy zaufania w przypadku użycia zaufanego wdrożenia aplikacji. Aby uzyskać więcej informacji, zobacz Omówienie wdrażania zaufanych aplikacji.