21

Zaktualizowałem aplikację ClickOnce, a po uruchomieniu użytkownik zostanie zapytany, czy chce zainstalować nową wersję.Aplikacja ClickOnce przeskakuje z pytaniem o aktualizację (lub kończy się niepowodzeniem, jeśli zaznaczono opcję pominięcia)

Pracuję w wysoce kontrolowanym środowisku. Kiedy aktualizacja jest dostępna, musi zostać zainstalowana (zgodność wsteczna z bazą danych nie jest zapewniona w starszych wersjach).

Inną opcją jest niepowodzenie w uruchomieniu, jeśli pominięto naciśnięcie (to też działa dobrze).

Potrzebuję jakiś sposób, aby powstrzymać je przed uruchomieniem starej wersji aplikacji.

Odpowiedz

39

Ten artykuł odpowiada na pytanie. Kieruję cię do artykułu zamiast po prostu pisać odpowiedź, ponieważ wszystko w tym artykule jest warte poznania.

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

Oto odnośny fragment z artykułu:

Wymuszenie aktualizacji ClickOnce

Jedną z największych punktów sprzedaży ClickOnce jest automatyczne aktualizacje. Jednym z najczęstszych pytań, jakie otrzymuję w związku z , jest: "Jak mogę wymusić aktualizację użytkownika na ?"

Są trzy rzeczy wiedzieć z odniesieniu do wymuszania na użytkownikach aktualizacje:

1) Jeśli aplikacja jest aplikacją online , użytkownicy będą zawsze uruchomić najnowszą wersję; aplikacje online są pobierane za każdym razem aplikacja jest dostępna. Tak więc, z aplikacjami internetowymi, domyślnie otrzymuje się wymuszone-aktualizacje .

2) Jeśli aplikacja jest zainstalowaną aplikacją , można wymusić aktualizacje przez przy użyciu atrybutu MinimumRequiredVersion . Jeśli opublikujesz aplikację przy użyciu programu Visual Studio, możesz ustawić tę właściwość w oknie Aktualizacje .

3) Ostatnią rzeczą, aby pamiętać, że jeśli aplikacja jest zainstalowana aplikacji (a nie ustawiono atrybut MinimumRequiredVersion) ClickOnce zasugeruje użytkownikowi na „Update dostępny” okno wyboru tylko wtedy, gdy użytkownik uruchamia aplikację ze skrótu Menu Start . Oznacza to, że jeśli aplikacja jest zainstalowaną aplikacją , a użytkownik uruchamia aplikację z adresu URL, ClickOnce wymusza aktualizację.


Znalazłam też kolejny dobry artykuł:

ClickOnce: Bringing Ease and Reliability to Smart Client Deployment

+1

Świetna odpowiedź! Dziękuję bardzo. – Vaccano

+0

Dzięki za odpowiedzi, bardzo pomocne! :) Tylko uwaga, że ​​link sayedhashimi.com jest zepsuty. – deadlydog

+1

Udokumentowałem proces automatycznego aktualizowania atrybutu MinimumRequiredVersion podczas korzystania z metody 2 pod adresem http://geekswithblogs.net/deadlydog/archive/2012/08/15/force-clickonce-applications-to-automatically-update-without- prompting-user.aspx – deadlydog

2

to działało mi odznaczając aplikacja powinna sprawdzać aktualizacje, a aplikacja rozpoczął aktualizację bez monitowania użytkownika po dwóch wersjach.

Enter image description here

+3

To zadziała tylko wtedy, gdy będziesz obsługiwał Aktualizacje w kodzie za pomocą interfejsu API Clickonce: http://msdn.microsoft.com/en-us/library/ms404263.aspx –

+1

Tak, mój kod obsługuje aktualizacje w Program.cs i ponownie ładuję kod jeśli montaż ma nowszą wersję – PUG

0

Aby wymusić aktualizację na klientach należy ustawić pole wersja minimalna równa bieżącej wersji są wdrażane, to wymusić aktualizację whiout „skip” opcji.

4

To zgrabnie sprawdziło się dla mnie. Dodaj poniższe linie do pliku projektu:

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

Zauważ, że ApplicationVersion nie może mieć wartość jak 1.0.0.* w pliku projektu i powinna być zwiększana w czasie kompilacji dla auto-update do pracy.

przypadku korzystania TeamCity, aby zwiększyć numer wersji przejdź do Configuration Budowa stronie projektu i ustawić następujące system własności:

system.ApplicationVersion = %build.number% 

Można również uzyskać MSBuild, aby zwiększyć wersja według czasu z czymś takim:

<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> 
Powiązane problemy