Mamy aplikację .Net, która używa ClickOnce do automatycznej aktualizacji. Problem z Click Once polega jednak na tym, że wszystkie zestawy otrzymują aktualizacje, niezależnie od tego, czy w projekcie wystąpią jakieś zmiany, czy też nie. Zastanawiam się, aby zaktualizować ręcznie tylko zmienionych bibliotek dll do poprzedniego opublikowanego folderu ClickOnce i aktualizowania pliku manifestu przy użyciu MageUI.exe. Zastanawiam się również, aby zwiększała liczbę zmontowanych zespołów, abyśmy mogli śledzić, które złożeń uległy zmianie, patrząc na folder pamięci podręcznej użytkownika, w którym zainstalowana jest aplikacja ClickOnce. Chciałbym wiedzieć, czy jest to podejście dopuszczalne? Dzięki.Konserwacja wersji zespołu w ClickOnce?
Odpowiedz
Myślę, że to nie jest konieczne. Choć dialogowe aktualizacji dostarczanych przez ClickOnce nie powiedzieć, tak, ClickOnce nie będą pobierać pliki, gdy spełnione są następujące warunki: hash
- pliku jest taka sama
- datownik pliku jest taka sama.
- Dla zespołów, może być konieczne silne nazwać je
Zamiast będzie skopiować pliki z poprzedniej wersji.
Więc jeśli użyjesz silnych nazw i nie odbudujesz złożeń, gdy się nie zmienią, ClickOnce powinien zrobić dokładnie to, co chcesz.
Zobacz odniesienia dla here i here.
Here jest oficjalnym źródłem mówiąc
Podczas aktualizowania aplikacji ClickOnce nie pobiera wszystkich plików do nowej wersji aplikacji, chyba że pliki zostały zmienione. Zamiast tego porównuje haszowane podpisy plików określonych w manifeście aplikacji dla bieżącej aplikacji z sygnaturami w manifeście dla nowej wersji. Jeśli sygnatury pliku są różne, ClickOnce pobiera nową wersję. Jeśli podpisy są zgodne, plik nie zmienił się z jednej wersji do drugiej. W takim przypadku ClickOnce skopiuje istniejący plik i użyje go w nowej wersji aplikacji. Takie podejście uniemożliwia ClickOnce ponowne pobranie całej aplikacji, nawet jeśli zmieniono tylko jeden lub dwa pliki.
Tak, to prawda, ale gdy rozwiązanie zostanie skompilowane, wszystkie manifesty zmian złożenia nie mają znaczenia są w nim jakiekolwiek zmiany kodu, czy też nie. –
Tak, masz rację. Będziesz musiał umieścić projekty w różnych rozwiązaniach i ręcznie aktualizować odniesienia zespołów w twoim "głównym" projekcie. Zgadzam się, że jest to znacznie mniej wygodne niż posiadanie ich wszystkich w jednym rozwiązaniu. Ale nadal IMO jest znacznie lepsze niż próba zmuszenia ClickOnce do częściowej aktualizacji, gdy zmienią się sygnatury skrótu. – wkl
Dla naszej aplikacji musieliśmy również ustawić flagę Full-trust application w ustawieniach projektu dla częściowej aktualizacji dll, nie tylko silnie nazywać – VMAtm
Brzmi jak problem czekający na zdarzenie, jeśli mnie zapytasz. Co się stanie, jeśli jeden klient przegapi określoną aktualizację "pomiędzy". Otrzyma nową wersję, ale może nie zawierać niektórych zmian wprowadzonych w poprzedniej wersji, których nie otrzymał. – user1429080
Tak więc, po kliknięciu raz instalacji sprawdzimy poprawną wersję # wszystkich bibliotek dll. Tak więc, jeśli aktualizacja 1 ma bibliotekę dll z wersją # 1.1.1.1 i aktualizacją 2 ma inną bibliotekę dll w wersji 1.1.1.2, to zaktualizuj 3 kliknięcia, gdy instalacja powinna mieć bibliotekę dll 1 z wersją 1.1.1.1 i biblioteką dll 2 z wersją 1.1.1.2 ze zmianami, które zostaną wprowadzone w aktualizacji 3. W rzeczywistości najnowsze wydanie jednego kliknięcia byłoby zaktualizowane, aby dodać przyrostowe biblioteki dll za pomocą interfejsu użytkownika magów, a wszyscy klienci otrzymaliby tę samą wersję, więc jeśli klient jest w starszej wersji, on również dostanie zaktualizowany do najnowszego. –
Ale czy to nie oznacza, że każde wydanie będzie musiało mieć wszystko we wszystkich poprzednich wydaniach + zmiany w bieżącej wersji? Co oznacza, że każde wydanie będzie "grubsze", dopóki w pewnym momencie kolejne wydanie nie będzie musiało zawierać wszystkiego?W każdym razie, o ile mogę powiedzieć, jedynym sposobem na wsparcie aktualizacji z * dowolnej * starej wersji do bieżącej wersji jest uwzględnienie wszystkiego w każdym wydaniu. Jeśli masz ograniczoną liczbę użytkowników i jesteś w stanie kontrolować ich regularną aktualizację, to może uda się to zrobić do pracy ... – user1429080