Delen via


Een ClickOnce-updatestrategie kiezen

ClickOnce kan automatische toepassingsupdates bieden. Een ClickOnce-toepassing leest regelmatig het manifestbestand van de implementatie om te zien of er updates voor de toepassing beschikbaar zijn. Indien beschikbaar, wordt de nieuwe versie van de toepassing gedownload en uitgevoerd. Voor efficiëntie worden alleen de bestanden gedownload die zijn gewijzigd.

Bij het ontwerpen van een ClickOnce-toepassing moet u bepalen welke strategie de toepassing gebruikt om te controleren op beschikbare updates. Er zijn drie basisstrategieën die u kunt gebruiken: controleren op updates bij het opstarten van toepassingen, controleren op updates na het opstarten van de toepassing (uitgevoerd in een achtergrondthread) of een gebruikersinterface voor updates bieden.

Daarnaast kunt u bepalen hoe vaak de toepassing op updates controleert en u kunt updates uitvoeren die vereist zijn.

Opmerking

Toepassingsupdates vereisen netwerkconnectiviteit. Als er geen netwerkverbinding aanwezig is, wordt de toepassing uitgevoerd zonder te controleren op updates, ongeacht de updatestrategie die u kiest.

Opmerking

In .NET Framework 2.0 en .NET Framework 3.0 moet u, op elk moment dat uw toepassing controleert op updates, of het nu vóór of na het opstarten is, of door de API's van <xref:System.Deployment.Application> te gebruiken, deploymentProvider instellen in het implementatiemanifest. Het deploymentProvider element komt in Visual Studio overeen met het veld Updatelocatie in het dialoogvenster Updates van het tabblad Publiceren . Deze regel is ontspannen in .NET Framework 3.5. Zie ClickOnce-toepassingen implementeren voor testen en productieservers zonder opnieuw te ondertekenen voor meer informatie.

Controleren op updates na het opstarten van de toepassing

Door deze strategie te gebruiken, probeert de toepassing het manifestbestand van de implementatie op de achtergrond te vinden en te lezen terwijl de toepassing wordt uitgevoerd. Als er een update beschikbaar is, wordt de gebruiker de volgende keer dat de toepassing wordt uitgevoerd, gevraagd om de update te downloaden en te installeren.

Deze strategie werkt het beste voor netwerkverbindingen met lage bandbreedte of voor grotere toepassingen waarvoor mogelijk lange downloads nodig zijn.

Als u deze updatestrategie wilt inschakelen, klikt u op Nadat de toepassing is gestart in de sectie Kiezen wanneer de toepassing op updates van het dialoogvenster Toepassingsupdates moet controleren. Geef vervolgens een update-interval op in de sectie Geef op hoe vaak de toepassing op updates moet controleren.

Dit is hetzelfde als het aanpassen van het Update-element in het implementatiemanifest als volgt:

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

Controleren op updates voordat de toepassing wordt opgestart

De standaardstrategie is om het manifestbestand voor de implementatie te zoeken en te lezen voordat de toepassing wordt gestart. Door deze strategie te gebruiken, probeert de toepassing het manifestbestand van de implementatie te zoeken en te lezen telkens wanneer de gebruiker de toepassing start. Als er geen update beschikbaar is, wordt de bestaande versie van de toepassing gestart. Als er een vereiste update beschikbaar is, wordt deze gedownload en gestart. Als een update beschikbaar is maar niet vereist, krijgt de gebruiker een keuze of de bestaande versie moet worden bijgewerkt of gestart.

Deze strategie werkt het beste voor netwerkverbindingen met een hoge bandbreedte; de vertraging bij het starten van de toepassing kan onaanvaardbaar lang zijn dan verbindingen met lage bandbreedte.

Als u deze updatestrategie wilt inschakelen, klikt u op Voordat de toepassing wordt gestart in de sectie Kiezen wanneer de toepassing op updates van het dialoogvenster Toepassingsupdates moet controleren.

Dit is hetzelfde als het wijzigen van het update-element in het implementatiemanifest zoals volgt:

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

Opmerking

Voor .NET Core 3.1- en .NET 5- en nieuwere toepassingen is het controleren van updates voordat de toepassing wordt gestart de enige updateoptie die wordt ondersteund.

Vereiste updates uitvoeren

Het kan gebeuren dat gebruikers een bijgewerkte versie van uw toepassing moeten uitvoeren. U kunt bijvoorbeeld een wijziging aanbrengen in een externe resource, zoals een webservice die verhindert dat de eerdere versie van uw toepassing correct werkt. In dit geval wilt u de update markeren als vereist en voorkomen dat gebruikers de eerdere versie uitvoeren.

Opmerking

Hoewel u updates kunt vereisen met behulp van de andere updatestrategieën, is het controleren voordat de toepassing wordt gestart de enige manier om te garanderen dat een oudere versie niet kan worden uitgevoerd. Wanneer de verplichte update wordt gedetecteerd bij het opstarten, moet de gebruiker de update accepteren of de toepassing sluiten.

Als u een update wilt markeren als vereist, klikt u op Een minimaal vereiste versie voor deze toepassing opgeven in het dialoogvenster Toepassingsupdates en geeft u vervolgens de publicatieversie op (primair, secundair, build, revisie), waarmee het laagste versienummer van de toepassing wordt opgegeven die kan worden geïnstalleerd.

Dit is hetzelfde als het instellen van het kenmerk minimumRequiredVersion van het implementatie-element in het implementatiemanifest; bijvoorbeeld:

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

Updateintervallen opgeven

U kunt ook opgeven hoe vaak de toepassing op updates controleert. Hiertoe geeft u op dat de toepassing controleert op updates na het opstarten, zoals eerder in dit onderwerp wordt beschreven in 'Controleren op updates na het opstarten van de toepassing'.

Als u het updateinterval wilt opgeven, stelt u in hoe vaak de toepassing moet controleren op updates-eigenschappen in het dialoogvenster Toepassingsupdates .

Dit is hetzelfde als het instellen van de maximumage - en eenheidskenmerkenvan het update-element in het implementatiemanifest.

U kunt bijvoorbeeld elke keer dat de toepassing wordt uitgevoerd, één keer per week of één keer per maand controleren. Als er op het opgegeven moment geen netwerkverbinding aanwezig is, wordt de updatecontrole uitgevoerd wanneer de toepassing de volgende keer wordt uitgevoerd.

Opmerking

In ClickOnce voor .NET Core en .NET 5 of hoger wordt deze functie niet ondersteund. Zie ClickOnce voor .NET voor meer informatie.

Een gebruikersinterface voor updates bieden

Wanneer deze strategie wordt gebruikt, biedt de ontwikkelaar van de toepassing een gebruikersinterface waarmee de gebruiker kan kiezen wanneer of hoe vaak de toepassing op updates zal controleren. U kunt bijvoorbeeld de opdracht 'Nu controleren op updates' of een dialoogvenster 'Instellingen bijwerken' opgeven met opties voor verschillende updateintervallen. De ClickOnce-implementatie-API's bieden een framework voor het programmeren van uw eigen updategebruikersinterface. Zie de System.Deployment.Application naamruimte voor meer informatie.

Opmerking

De ApplicationDeployment klasse en API's in de System.Deployment.Application naamruimte worden niet ondersteund in .NET Core en .NET 5 en latere versies. In .NET 7 wordt een nieuwe methode voor het openen van toepassingsimplementatie-eigenschappen ondersteund. Zie Access ClickOnce-implementatie-eigenschappen in .NET voor meer informatie. .NET 7 biedt geen ondersteuning voor het equivalent van ApplicationDeployment-methoden.

Als uw toepassing implementatie-API's gebruikt om de eigen updatelogica te beheren, moet u de controle van updates blokkeren zoals beschreven in 'Controle van updates blokkeren' in de volgende sectie.

Deze strategie werkt het beste wanneer u verschillende updatestrategieën voor verschillende gebruikers nodig hebt.

Updatecontrole blokkeren

Het is ook mogelijk om te voorkomen dat uw toepassing ooit op updates controleert. U hebt bijvoorbeeld een eenvoudige toepassing die nooit wordt bijgewerkt, maar u wilt profiteren van het gemak van de installatie door ClickOnce-implementatie.

U moet ook de controle van updates blokkeren als uw toepassing implementatie-API's gebruikt om zijn eigen updates uit te voeren; zie 'Een gebruikersinterface voor updates opgeven' eerder in dit onderwerp.

Als u het bijwerken wilt blokkeren, schakelt u het selectievakje De toepassing moet controleren op updates uit in het dialoogvenster Toepassingsupdates.

U kunt de controle van updates ook blokkeren door de <Subscription> tag uit het implementatiemanifest te verwijderen.

Machtigingsverhoging en updates

Als voor een nieuwe versie van een ClickOnce-toepassing een hoger vertrouwensniveau moet worden uitgevoerd dan de vorige versie, wordt de gebruiker door ClickOnce gevraagd of de toepassing dit hogere vertrouwensniveau moet krijgen. Als de gebruiker weigert het hogere vertrouwensniveau te verlenen, wordt de update niet geïnstalleerd. ClickOnce vraagt de gebruiker om de toepassing opnieuw te installeren wanneer deze opnieuw wordt opgestart. Als de gebruiker op dit moment weigert het hogere vertrouwensniveau te verlenen en de update niet is gemarkeerd als vereist, wordt de oude versie van de toepassing uitgevoerd. Als de update echter vereist is, wordt de toepassing pas opnieuw uitgevoerd als de gebruiker het hogere vertrouwensniveau accepteert.

Er wordt niet gevraagd om vertrouwensniveaus als u vertrouwde toepassingsimplementatie gebruikt. Zie het overzicht van de implementatie van vertrouwde toepassingen voor meer informatie.