21

Ich habe meine ClickOnce-Anwendung aktualisiert, und wenn der Benutzer ausgeführt wird, werden sie gefragt, ob sie die neue Version installieren möchten.ClickOnce-Anwendung überspringt die Abfrage nach einem Update (oder fehlgeschlagener Start, wenn Überspringen ausgewählt ist)

Ich arbeite in einer streng kontrollierten Umgebung. Wenn ein Update verfügbar ist, muss es installiert werden (bei alten Versionen ist die Abwärtskompatibilität zur Datenbank nicht gewährleistet).

Eine andere Möglichkeit besteht darin, den Lauf zu unterbrechen, wenn Skip gedrückt wird (das funktioniert auch).

Ich brauche einen Weg, sie von einer alten Version der Anwendung zu stoppen.

Antwort

39

Dieser Artikel beantwortet Ihre Frage. Ich weise Sie auf den Artikel hin, anstatt nur eine Antwort zu schreiben, denn alles in diesem Artikel ist es wert, dass Sie es wissen.

http://www.sayedhashimi.com/CategoryView,category,ClickOnce.aspx

Im Folgenden ist der relevante Auszug aus dem Artikel:

Erzwingen Clickonce-Updates

Einer der großen Verkaufsstellen von Clickonce automatische Updates ist. Einer der die häufigsten Fragen, die ich in Bezug auf Updates erhalten, ist "Wie kann ich eine Aktualisierung auf den Benutzer erzwingen?"

Es gibt drei Dinge mit bezüglich wissen Updates auf Benutzer zu zwingen:

1) Wenn Ihre Anwendung ist eine Online- Anwendung, die Benutzer immer laufen die neueste Version; Online Anwendungen werden jedes Mal heruntergeladen die Anwendung zugegriffen wird. So, mit Online-Anwendungen, erhalten Sie Zwangs-Updates standardmäßig.

2) Wenn Ihre Anwendung ist eine installierte Anwendung können Sie Updates erzwingen, indem das Attribut MinimumRequiredVersion verwenden. Wenn Sie Ihre -Anwendung mit Visual Studio veröffentlichen, können Sie diese Eigenschaft im Dialogfeld Aktualisierungen von festlegen.

3) Das letzte, was zu beachten ist, dass, wenn Ihre Anwendung ist eine installierte Anwendung (und Sie haben nicht festgelegt, das MinimumRequiredVersion Attribut) Clickonce den Benutzer mit einem Prompt wird „Update verfügbar“ Dialog ist nur, wenn die Benutzer startet die Anwendung über die Verknüpfung Startmenü. Das heißt, wenn eine Anwendung eine installierte Anwendung ist und der Benutzer die Anwendung von einer URL startet, erzwingt ClickOnce das Update.


Ich fand auch einen guten Artikel:

ClickOnce: Bringing Ease and Reliability to Smart Client Deployment

+1

Große Antwort! Vielen Dank. – Vaccano

+0

Danke für die Antworten, sehr hilfreich! :) Nur eine Anmerkung auch, dass der sayedhashimi.com Link gebrochen ist. – deadlydog

+1

Ich habe einen Prozess zum automatischen Aktualisieren des Attributs MinimumRequiredVersion bei Verwendung der Methode 2 unter http://geekswithblogs.net/deadlydog/archive/2012/08/15/force-clickonce-applications-to-automatisch-update-without- dokumentiert. prompting-user.aspx – deadlydog

2

Es funktionierte mich Die Anwendung von unchecking sollte und die Anwendung nach Updates gestartet, ohne die Aktualisierung der Benutzerführung nach zwei Versionen.

Enter image description here

+3

Dies funktioniert nur, wenn Sie Updates in Code mit der Clickonce-API behandeln: http://msdn.microsoft.com/en-us/library/ms404263.aspx –

+1

Ja mein Code verarbeitet Updates in Program.cs ich den Code neu laden Wenn die Assembly eine neuere Version hat – PUG

0

Um ein Update auf den Clients zwingen Sie die minimale Versionsfeld gleich auf die aktuelle Version Sie bereitstellen setzen müssen, wird dies die Aktualisierung erzwingen whiout Option „überspringen“.

4

Das ist ordentlich für mich gearbeitet. Fügen Sie folgende zu der Projektdatei:

<UpdateRequired>true</UpdateRequired> 
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion> 

Beachten Sie, dass ApplicationVersion keinen Wert wie 1.0.0.* in der Projektdatei haben kann und es sollte für Auto-Update arbeiten bei der Erstellung erhöht werden.

Bei der Verwendung von Teamcity, um die Versionsnummer zu Build-Konfiguration Seite für Ihr Projekt gehen zu erhöhen und setzen Sie das folgende Systemeigenschaft:

system.ApplicationVersion = %build.number% 

Sie können auch MSBuild erhalten zu erhöhen Version von Zeit mit etwas wie diesem:

<UpdateRequired>true</UpdateRequired> 
<BuildNumber>$([System.DateTime]::Now.ToString(yyyyMMdd))</BuildNumber> 
<RevisionNumber>$([System.DateTime]::Now.ToString(mmss))</RevisionNumber> 
<ApplicationVersion>1.0.$(BuildNumber).$(RevisionNumber)</ApplicationVersion> 
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion> 
1

Zusätzlich zu David's answer installieren Sie einfach die AutoUpdateProjectsMinimumRequiredClickOnceVersion nuget package in Ihrem Projekt. Wenn Sie Ihr Projekt so eingerichtet haben, dass es nach Updates sucht und eine mindestens erforderliche Version verwendet, wird sichergestellt, dass die erforderliche Mindestversion immer Ihrer aktuellen Version entspricht (d. H. Der Benutzer muss immer auf die neueste Version aktualisiert werden).