Freigeben über


Auswählen einer ClickOnce-Updatestrategie

ClickOnce kann automatische Anwendungsupdates bereitstellen. Eine ClickOnce-Anwendung liest ihre Bereitstellungsmanifestdatei regelmäßig vor, um festzustellen, ob Updates für die Anwendung verfügbar sind. Falls verfügbar, wird die neue Version der Anwendung heruntergeladen und ausgeführt. Aus Effizienzgründen werden nur die Dateien heruntergeladen, die sich geändert haben.

Beim Entwerfen einer ClickOnce-Anwendung müssen Sie bestimmen, welche Strategie die Anwendung verwendet, um nach verfügbaren Updates zu suchen. Es gibt drei grundlegende Strategien, die Sie verwenden können: Suchen nach Updates beim Starten der Anwendung, Überprüfen auf Updates nach dem Starten der Anwendung (ausgeführt in einem Hintergrundthread) oder Bereitstellen einer Benutzeroberfläche für Updates.

Darüber hinaus können Sie bestimmen, wie oft die Anwendung nach Updates sucht, und Sie können Updates erforderlich machen.

Hinweis

Anwendungsupdates erfordern Netzwerkkonnektivität. Wenn keine Netzwerkverbindung vorhanden ist, wird die Anwendung ausgeführt, ohne nach Updates zu suchen, unabhängig von der von Ihnen gewählten Updatestrategie.

Hinweis

In .NET Framework 2.0 und .NET Framework 3.0 müssen Sie jedes Mal, wenn Ihre Anwendung entweder vor oder nach dem Start nach Updates sucht oder die <xref:System.Deployment.Application-APIs> verwendet, deploymentProvider im Bereitstellungsmanifest festlegen. Das deploymentProvider-Element entspricht in Visual Studio dem Feld "Speicherort aktualisieren" im Dialogfeld "Updates" auf der Registerkarte "Veröffentlichen". Diese Regel wurde in .NET Framework 3.5 gelockert. Weitere Informationen finden Sie unter Bereitstellen von ClickOnce-Anwendungen für Test- und Produktionsserver ohne erneutes Signieren.

Nach dem Starten der Anwendung nach Updates suchen

Mithilfe dieser Strategie versucht die Anwendung, die Bereitstellungsmanifestdatei im Hintergrund zu suchen und zu lesen, während die Anwendung ausgeführt wird. Wenn ein Update verfügbar ist, wird der Benutzer beim nächsten Ausführen der Anwendung aufgefordert, das Update herunterzuladen und zu installieren.

Diese Strategie eignet sich am besten für Netzwerkverbindungen mit geringer Bandbreite oder für größere Anwendungen, die möglicherweise längere Downloads erfordern.

Um diese Updatestrategie zu aktivieren, klicken Sie im Dialogfeld "Anwendungsupdates" auf "Nach dem Start der Anwendungauswählen, wann die Anwendung nach Updates suchen soll". Geben Sie dann im Abschnitt ein Updateintervall an. Geben Sie an, wie häufig die Anwendung nach Updates suchen soll.

Dies entspricht dem Ändern des Update-Elements im Bereitstellungsmanifest wie folgt:

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

Überprüfen auf Updates vor dem Starten der Anwendung

Die Standardstrategie besteht darin, die Bereitstellungsmanifestdatei zu suchen und zu lesen, bevor die Anwendung gestartet wird. Mithilfe dieser Strategie versucht die Anwendung, die Bereitstellungsmanifestdatei jedes Mal zu suchen und zu lesen, wenn der Benutzer die Anwendung startet. Wenn kein Update verfügbar ist, wird die vorhandene Version der Anwendung gestartet. Wenn ein erforderliches Update verfügbar ist, wird es heruntergeladen und gestartet. Wenn ein Update verfügbar, aber nicht erforderlich ist, erhält der Benutzer eine Wahl, ob die vorhandene Version aktualisiert oder gestartet werden soll.

Diese Strategie eignet sich am besten für Netzwerkverbindungen mit hoher Bandbreite; die Verzögerung beim Starten der Anwendung kann über Verbindungen mit geringer Bandbreite unakzeptabel lang sein.

Um diese Updatestrategie zu aktivieren, klicken Sie im Dialogfeld "Anwendungsupdates" auf "Vor dem Start der Anwendungauswählen", wann die Anwendung nach Updates suchen soll.

Dies entspricht dem Ändern des Update-Elements im Bereitstellungsmanifest wie folgt:

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

Hinweis

Für .NET Core 3.1 und .NET 5 und neuere Anwendungen ist das Überprüfen auf Updates vor dem Starten der Anwendung die einzige unterstützte Updateoption.

Erforderliche Aktualisierungen vornehmen

Es kann vorkommen, dass Benutzer eine aktualisierte Version Ihrer Anwendung ausführen müssen. Sie können beispielsweise eine Änderung an einer externen Ressource vornehmen, z. B. einen Webdienst, der verhindert, dass die frühere Version Ihrer Anwendung ordnungsgemäß funktioniert. In diesem Fall möchten Sie Ihr Update als erforderlich markieren und verhindern, dass Benutzer die frühere Version ausführen.

Hinweis

Obwohl Sie Updates mithilfe der anderen Updatestrategien benötigen können, ist die Überprüfung vor dem Start der Anwendung die einzige Möglichkeit, sicherzustellen, dass eine ältere Version nicht ausgeführt werden kann. Wenn das obligatorische Update beim Start erkannt wird, muss der Benutzer entweder das Update akzeptieren oder die Anwendung schließen.

Wenn Sie ein Update als erforderlich markieren möchten, klicken Sie im Dialogfeld "Anwendungsupdates" auf "Mindestens erforderliche Version für diese Anwendung angeben", und geben Sie dann die Veröffentlichungsversion (Major, Minor, Build, Revision) an, die die niedrigste Versionsnummer der Anwendung angibt, die installiert werden kann.

Dies entspricht dem Festlegen des MinimumRequiredVersion-Attributs des Deployment-Elements im Bereitstellungsmanifest; Zum Beispiel:

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

Angeben von Aktualisierungsintervallen

Sie können auch angeben, wie oft die Anwendung nach Updates sucht. Geben Sie dazu an, dass die Anwendung nach dem Start nach Updates sucht, wie weiter oben in diesem Thema unter "Überprüfen auf Updates nach Dem Anwendungsstart" beschrieben.

Um das Updateintervall anzugeben, legen Sie im Dialogfeld "Anwendungsupdates" fest, wie häufig die Anwendung nach Aktualisierungseigenschaften suchen soll.

Dies entspricht dem Festlegen der maximumAge- und Einheit-Attribute des Update-Elements im Bereitstellungsmanifest.

Sie können beispielsweise jedes Mal überprüfen, wenn die Anwendung ausgeführt wird, oder einmal pro Woche oder einmal pro Monat. Wenn zur angegebenen Zeit keine Netzwerkverbindung vorhanden ist, wird die Aktualisierungsprüfung ausgeführt, wenn die Anwendung das nächste Mal ausgeführt wird.

Hinweis

In ClickOnce für .NET Core und .NET 5 oder höher wird dieses Feature nicht unterstützt. Weitere Informationen finden Sie unter ClickOnce für .NET.

Bereitstellen einer Benutzeroberfläche für Updates

Bei verwendung dieser Strategie stellt der Anwendungsentwickler eine Benutzeroberfläche bereit, über die der Benutzer auswählen kann, wann oder wie oft die Anwendung nach Updates sucht. Sie können z. B. einen Befehl "Jetzt auf Updates überprüfen" oder ein Dialogfeld "Updateeinstellungen" bereitstellen, das Optionen für verschiedene Updateintervalle enthält. Die ClickOnce-Bereitstellungs-APIs bieten ein Framework für die Programmierung Ihrer eigenen Update-Benutzeroberfläche. Weitere Informationen finden Sie im System.Deployment.Application Namespace.

Hinweis

Die ApplicationDeployment Klasse und APIs im System.Deployment.Application Namespace werden in .NET Core und .NET 5 und höher nicht unterstützt. In .NET 7 wird eine neue Methode für den Zugriff auf Anwendungsbereitstellungseigenschaften unterstützt. Weitere Informationen finden Sie unter Access ClickOnce-Bereitstellungseigenschaften in .NET. .NET 7 unterstützt nicht das Äquivalent von ApplicationDeployment-Methoden.

Wenn Ihre Anwendung Bereitstellungs-APIs verwendet, um ihre eigene Updatelogik zu steuern, sollten Sie die Updateüberprüfung blockieren, wie im folgenden Abschnitt unter "Blockieren der Updateüberprüfung" beschrieben.

Diese Strategie funktioniert am besten, wenn Sie unterschiedliche Updatestrategien für unterschiedliche Benutzer benötigen.

Aktualisierungsprüfung blockieren

Es ist auch möglich, zu verhindern, dass Ihre Anwendung immer nach Updates sucht. Sie können beispielsweise eine einfache Anwendung haben, die nie aktualisiert wird, aber Sie möchten die Einfache Installation von ClickOnce-Bereitstellung nutzen.

Sie sollten auch die Aktualisierungsüberprüfung blockieren, wenn Ihre Anwendung Bereitstellungs-APIs zum Ausführen eigener Updates verwendet. siehe "Bereitstellen einer Benutzeroberfläche für Updates" weiter oben in diesem Thema.

Deaktivieren Sie das Kontrollkästchen " Die Anwendung sollte nach Updates suchen" im Dialogfeld "Anwendungsupdates", um die Überprüfung auf Updates zu blockieren.

Sie können die Aktualisierungsüberprüfung auch blockieren, indem Sie das <Subscription> Tag aus dem Bereitstellungsmanifest entfernen.

Berechtigungserweiterung und -updates

Wenn für eine neue Version einer ClickOnce-Anwendung eine höhere Vertrauensstufe als die vorherige Version erforderlich ist, fordert ClickOnce den Benutzer auf, um zu fragen, ob der Anwendung diese höhere Vertrauensebene gewährt werden soll. Wenn der Benutzer ablehnt, die höhere Vertrauensebene zu gewähren, wird das Update nicht installiert. ClickOnce fordert den Benutzer auf, die Anwendung beim nächsten Neustart erneut zu installieren. Wenn der Benutzer zu diesem Zeitpunkt die höhere Vertrauensstufe verweigert und das Update nicht als erforderlich gekennzeichnet ist, wird die alte Version der Anwendung ausgeführt. Wenn das Update jedoch erforderlich ist, wird die Anwendung erst wieder ausgeführt, wenn der Benutzer die höhere Vertrauensebene akzeptiert.

Wenn Sie die vertrauenswürdige Anwendungsbereitstellung verwenden, tritt keine Aufforderung zur Eingabe von Vertrauensstufen auf. Weitere Informationen finden Sie in der Übersicht über die Bereitstellung vertrauenswürdiger Anwendungen.