Aplikacja samoregulująca - filozofia

15

To jest pytanie filozoficzne.

Biorąc pod uwagę hipotetyczną aplikację komputerową i chęć zapewnienia automatycznych aktualizacji (zamiast zmuszania ludzi do odwiedzania strony internetowej, sprawdzania aktualizacji, pobierania aktualizacji, instalowania), który z nich jest bardziej „najlepszym rozwiązaniem”?

  1. Podobnie jak iTunes , sprawdza, czy jest nowa wersja i monituje użytkownika o pobranie nowej wersji. Jeśli tak, pobiera pełny plik wykonywalny instalacji (w tym przypadku plik Instalatora Windows (.msi)), który instaluje pełną wersję (nie tylko aktualizację do poprzedniej wersji - zbyt wiele, aby zarządzać, jeśli istnieje wiele wersji) . Powiedzmy, że jest to wersja 10.1.1 - niezależnie od tego, czy instalujesz nową wersję, czy aktualizujesz, używasz tego samego pliku. Po pobraniu instruuje użytkownika, aby zamknął aplikację i sam uruchomił plik instalacyjny.

  2. Podobnie jak w przypadku drugiej, sprawdza, czy jest nowa wersja i monituje użytkownika o jej pobranie, ale zamiast po prostu pobrać plik wykonywalny i zachęcić go do uruchomienia, w rzeczywistości uruchamia go dla nich - zamykając otwarty program, uzyskując niezbędne zabezpieczenia do instalowania plików.

Problemy z nr 2: wiele problemów związanych z zamykaniem programu, ponieważ program może otwierać inne programy ( Outlook i Excel ) lub co, jeśli użytkownik był w trakcie czegoś. Również w kwestii bezpieczeństwa potrzebujesz lokalnego administratora, aby zainstalować, a jeśli nie masz? W późniejszych wersjach systemu Windows nie można po prostu zastąpić zabezpieczeń danej osoby.

Problemy z numerem 1: niektóre osoby uważają, że będzie to zbyt trudne, zbyt duży wysiłek dla użytkownika końcowego.

Zdecydowanie wolałbym pójść z numerem 1, ponieważ pozwoli to zaoszczędzić 80-120 godzin na moim projekcie oraz jest łatwiejsze do wdrożenia i utrzymania. Mamy jednak ludzi, którzy czują się silnie ze wszystkich stron.

Jaka jest najlepsza praktyka w tego typu sprawach?

Shannon Davis
źródło
Nie jestem pewien, czy to filozoficzne, wygląda na to, że szuka dla mnie rozwiązania.
Czy zadawanie pytań projektowych / architektonicznych nie jest w porządku?
Moje pytanie brzmi: dlaczego # 2 wymaga zamknięcia programu i ponownego uruchomienia? Jeśli jest to aktualizacja zabezpieczeń, jest to zrozumiałe, ale normalny użytkownik zamyka i ponownie otwiera program co najmniej raz dziennie, jeśli nie więcej, więc dlaczego nie zainstalować go w tle, pozwól mu uruchomić program przy użyciu starszej wersji w pamięci , a następnie po ponownym uruchomieniu użyj nowej wersji, która została zainstalowana. Bez kłopotów, bez kłopotów.
Mike S
@Mike S: nie jest to możliwe w systemie Windows (nie można nadpisywać plików wykonywalnych, które są uruchomione), a nawet w systemie Linux nie jest to szczególnie dobry pomysł (jeśli otworzysz inną instancję, będziesz mieć jeden działający stary kod, a drugi nowy kod - jeśli dzieje się jakikolwiek IPC, jest jeszcze gorzej)
Dean Harding
Z doświadczenia: jeśli sprawdzasz dostępność aktualizacji, nie rób tego codziennie o północy lub o 15:00. To wydaje się rozsądne, ale DDOS kończy się na własnych serwerach. Wystarczy dodać do 3600 sekund losowości; to nie jest tak pilne.
MSalters

Odpowiedzi:

20

Osobiście wolę podejście Google Chrome. Katalog podstawowy z programem uruchamiającym i podkatalogami dla każdej zainstalowanej wersji oprogramowania. Program uruchamiający po prostu wyszukuje najwyższy numer wersji i używa go i w razie potrzeby usuwa starsze wersje. Zadanie aktualizacji jest wykonywane tak często, aby pobierać i tworzyć nowe katalogi. Po zainstalowaniu nowych wersji uruchomiona aplikacja żąda ponownego uruchomienia w celu użycia nowej wersji.

Kawałki bekonu
źródło
4
+1 za wskazanie dobrego zachowania Googlesa. Kontrastem jest Adobe Acrobat Reader, który jak co drugi dzień instaluje kilka pozornie pilnych łatek i ciągle przeszkadza w pracy.
Ingo
Też podoba mi się to podejście. Minusem jest to, że działa tylko w przypadku instalacji na użytkownika, które nie wymagają podniesienia. Gdy pojawi się monit o podniesienie uprawnień, nie ma znaczenia, czy potrzebujesz jeszcze kilku kliknięć, aby przeprowadzić aktualizację (nie jest już cicho).
@Cosmin, jeśli nie chcesz używać% appdata%, możesz użyć% ProgramData% do przechowywania pobranych plików. Bardziej filozoficznie poprawnym sposobem byłoby przechowywanie tam archiwum, a następnie podniesienie uprawnień do instalacji przy następnym uruchomieniu programu.
Boczek Bity
MIŁOŚĆ ta odpowiedź i kładę go w mojej tylnej kieszeni (do tej pory „iTunes” styl Pobieranie znalazła szerokie odwołania ze względów oszczędności.)
Shannon Davis
3

Nie powinieneś tworzyć niepotrzebnych wpisów startowych, aby sprawdzić dostępność aktualizacji, takich jak Adobe Flash Player (trudno je wszystkie wyśledzić, a ja nie mogę znaleźć sposobu, aby wyłączyć sprawdzanie ...) lub iTunes. Drażni użytkownika (w każdym razie maniaków). Lepszym rozwiązaniem byłoby sprawdzenie dostępności aktualizacji podczas uruchamiania aplikacji, tak jak robi to Firefox .

Prosty dyskretny „Zainstalować aktualizacje?” okno nie drażni użytkowników. Niech aktualizuje się w tle, gdy użytkownik wykonuje inne czynności, a następnie automatycznie uruchamia aplikację.

Pamiętaj tylko, aby podać opcję:

Sprawdź aktualizacje w:

  • Zaloguj się (jeśli chcesz zirytować maniaków)
  • Uruchomienie aplikacji ( na domyślnie)
  • Co kilka tygodni ( domyślnie wyłączone )

Lub coś podobnego.


Jeśli jest to warte wysiłku, powiedziałbym: idź. To twoja decyzja.

Mateen Ulhaq
źródło
2

Myślę, że chcesz konfiguracji „ClickOnce”.

http://msdn.microsoft.com/en-us/library/142dbbz4(v=vs.90).aspx

ClickOnce to technologia wdrażania, która umożliwia tworzenie samodzielnie aktualizujących się aplikacji opartych na systemie Windows, które można instalować i uruchamiać przy minimalnej interakcji użytkownika. Wdrożenie ClickOnce rozwiązuje trzy główne problemy we wdrożeniu:

Trudności w aktualizacji aplikacji. Dzięki wdrożeniu Instalatora Microsoft Windows za każdym razem, gdy aplikacja jest aktualizowana, użytkownik musi ponownie zainstalować całą aplikację; dzięki wdrożeniu ClickOnce możesz automatycznie dostarczać aktualizacje. Pobierane są tylko te części aplikacji, które uległy zmianie, a następnie pełna, zaktualizowana aplikacja jest ponownie instalowana z nowego folderu obok siebie.

Wpływ na komputer użytkownika. Podczas wdrażania Instalatora Windows aplikacje często polegają na współużytkowanych składnikach, co może powodować konflikty wersji; Dzięki wdrożeniu ClickOnce każda aplikacja jest samodzielna i nie może zakłócać działania innych aplikacji.

Uprawnienia bezpieczeństwa. Wdrożenie Instalatora Windows wymaga uprawnień administracyjnych i zezwala na ograniczoną instalację użytkownika; Wdrożenie ClickOnce umożliwia użytkownikom niebędącym administratorami instalowanie i przyznaje tylko te uprawnienia Code Access Security niezbędne dla aplikacji.


źródło
Nie była to kwestia zalet i wad kliknięcia raz i MSI (do których wiele z twoich wniosków jest niepoprawnych i / lub niekompletnych), ale raczej kwestia najlepszych praktyk w zakresie rozwiązań automatycznej aktualizacji.
Christopher Painter
Mimo to doceniam te informacje i podzielę się nimi z programistą, aby sprawdzić, czy uznał je za opcję - być może pomyślał, że sam będzie musiał opracować proces aktualizacji.
Cóż, Christopher, weź to ze stwardnieniem rozsianym, to bezpośrednio z MSDN. To też bardzo pomocny komentarz.
Kiedy koduje technologie wdrażania, nigdy mnie nie zaskakuje, gdy ktoś publikujący w MSDN źle go zrozumie. Jest bardzo niewielu z nas ekspertów, którzy naprawdę rozumieją to.
Christopher Painter
2

Osobiście doceniłem aplikacje, które robią coś podobnego do frameworku Sparkle . Wydaje mi się, że jest to tylko Mac, ale zasadniczo spełnia następujące warunki (z góry mojej głowy - zakładam, że zachowanie można dostosować).

  1. Sprawdź dostępność aktualizacji (zwykle przy uruchomieniu aplikacji)
  2. Jeśli tak, wyświetlane jest osobne okno z ładnie sformatowanym dziennikiem zmian
  3. Użytkownik może następnie pominąć tę wersję, zainstalować ją lub wybrać przypomnienie później
  4. Jeśli zdecyduje się zainstalować aplikację, pasek zmian zostanie wyświetlony pod dziennikiem zmian
  5. Po pobraniu użytkownik może zdecydować się zamknąć aplikację i zainstalować ją natychmiast lub zainstalować po jej zamknięciu

Biorąc pod uwagę, że mówisz o .msi, ten konkretny framework nie ma tak naprawdę zastosowania, ale w tym przypadku wolałbym zastosować jakieś istniejące rozwiązanie niż wynaleźć koło.

sebastiangeiger
źródło
1

Powiedziałbym, że naprawdę musisz znać swojego użytkownika. Jeśli są bystrzy i lubią duże zainteresowanie utrzymywaniem aktualności, # 1 zadziała.

Nigdy nie lekceważ lenistwa użytkownika, ponieważ gdy jego program przestanie działać, ponieważ nie jest już obsługiwany, później zalane zostaną wezwania pomocy technicznej.

Czas przyjdzie albo z rozwoju (# 2), albo ze wsparcia (# 1).

wałek klonowy
źródło
1

A co z tym?

  • Podczas uruchamiania aplikacji sprawdź, czy jest nowa wersja i (opcjonalnie po zapytaniu użytkownika) pobierz ją.
  • Po zakończeniu pobierania podaj użytkownikowi przycisk umożliwiający ponowną instalację i ponowne uruchomienie aplikacji (nie używaj żadnego okna dialogowego, chyba że aktualizacja jest krytyczna).
  • Podczas zamykania aplikacji (opcjonalnie po zapytaniu użytkownika) uruchom instalator. W przypadku, gdy użytkownik odmówi instalacji w tym momencie (być może się spieszy), zrób to następnym razem przed uruchomieniem aplikacji.

Nie musisz przeszkadzać użytkownikowi, nie musisz niczego zamykać ...

maaartinus
źródło
1

Dlaczego nie coś pośrodku?

Monituj o pobranie (lub zaznacz opcję „pobierz automatycznie”), po zakończeniu monitu o zainstalowanie pobranej aktualizacji (uruchom .msi). W ten sposób negujesz minus 2 (zamykanie w środku pracy użytkownika), a jednocześnie utrzymujesz komfort kosztem 1 dodatkowego kliknięcia.

Okno dialogowe „ Zamknij i zainstaluj aktualizację? ” Powinno być łatwo dostępne (ale nie denerwujące), gdy użytkownik najpierw odmawia. Dzięki opcji „Uruchom <nazwa programu>?” pole wyboru na końcu .msi będzie prawie jak nr 2 i nie będzie już więcej pracy

@ bezpieczeństwo
Programy we współczesnym systemie Windows mogą żądać uprawnień do wykonywania działań wymagających uprawnień administratora (użytkownik wyświetla monit, gdzie wpisuje hasło administratora, a następnie wybiera „tak / nie”, czy udzielić zezwolenia)

NoxArt
źródło
1

Mam 124 lombardów, którzy korzystają z mojej aplikacji komputerowej Pawnshop Management. Ilekroć mam nową aktualizację, wysyłam do nich wiadomość e-mail z informacją o aktualizacji i jej szczegółach. Następnie mają opcję FTP, logując się na mojej stronie. Mają także opcję wycofania aktualizacji. Moja strona internetowa śledzi również każdą zainstalowaną wersję lombardu.

Frank R.
źródło