Додаток, що самооновлюється - філософія


15

Це філософське питання.

Враховуючи гіпотетичну програму для настільних ПК та бажання надавати автоматичні оновлення (а не змушувати людей відвідувати веб-сайт, перевіряти наявність оновлень, завантажувати оновлення, встановлювати), хто з двох є більш підходом "найкращої практики"?

  1. Як і iTunes , він перевіряє, чи є нова версія, і спонукає користувача завантажити нову версію. Якщо це так, він завантажує повний виконуваний файл встановлення (у цьому випадку файл інсталятора Windows (.msi)), який встановлює повну версію (не лише оновлення до попередньої версії - занадто багато для управління, якщо там є кілька версій) . Так, скажімо, це версія 10.1.1 - ви встановлюєте свіжу чи модернізуєте, ви використовуєте той самий файл. Після завантаження він доручає користувачу закрити програму та запустити інсталяційний файл самостійно.

  2. Подібно до іншої, він перевіряє наявність нової версії та спонукає користувача завантажити її, але замість того, щоб просто завантажити виконуваний файл і спонукати користувача запустити його, він фактично запускає його для них - вимкнення відкритої ними програми, придбання необхідна безпека для встановлення файлів.

Проблеми з №2: багато проблем із закриттям програми, оскільки програма може відкривати інші програми ( Outlook та Excel ) або що робити, якщо користувач опинився в середині чогось. Крім безпеки, для встановлення потрібен доступ до місцевого адміністратора, а якщо його у вас немає? У пізніших версіях Windows не можна просто перекрити безпеку людини.

Проблеми з №1: деякі люди вважають, що це буде занадто важким, занадто багато зусиль для кінцевого споживача.

Я настійно вважаю за краще піти з №1, оскільки це дозволить заощадити 80-120 годин на моєму проекті, а його простіше втілити та підтримувати. Однак у нас є люди, які сильно почуваються з усіх боків.

Яка найкраща практика для подібних речей?


Я не так впевнена, що це філософське, звучить так, що вона шукає для мене рішення.

Так що не задавати питання дизайну / архітектури тут?

Моє запитання: чому номер 2 вимагає, щоб програма була закрита та перезапущена? Якщо це оновлення безпеки, то це зрозуміло, але звичайний користувач закриває та знову відкриває програму хоча б раз на день, якщо не більше, то чому б не встановити її у фоновому режимі, нехай користувач запускає програму, використовуючи старішу версію в пам'яті , а потім, коли вони перезапускають його, використовують нову версію, яка була встановлена. Ні суєти, ні суєти.
Майк S

@Mike S: це неможливо в Windows (не вдається перезапустити виконувані файли, що працюють), і навіть в Linux це не дуже гарна ідея (якщо ви відкриєте інший екземпляр, у вас буде один, який запускає старий код, і один, який працює з новим кодом - якщо трапляються якісь IPC, це ще гірше)
Дін Хардінг

З досвіду: якщо ви перевіряєте наявність оновлень, не дозволяйте програмі робити це щодня опівночі чи 15:00. Це здається розумним, але ви закінчуєте DDOS''s власні сервери. Просто додайте до 3600 секунд випадковості; це не що терміново.
MSalters

Відповіді:


20

Особисто мені більше подобається підхід Google Chrome. Базова директорія із запуском і підкаталогами для кожної встановленої версії програмного забезпечення. Засіб запуску просто шукає найвищий номер версії і використовує це та видаляє старі версії за потребою. Завдання оновлення виконується щоразу так, щоб завантажувати та створювати нові каталоги. Коли нові версії встановлені, запущена програма вимагає перезапустити, щоб використовувати нову версію.


4
+1 за вказівку на гарну поведінку Google. На противагу цьому - Adobe Acrobat Reader, який, як і кожного другого дня, встановлює певні невідкладні патчі для встановлення, а також постійно порушує їх у своїй роботі.
Інго

Мені також подобається такий підхід. Мінусом є те, що він працює лише для установок для кожного користувача, які не потребують висоти. Після того, як у вас з'явиться запит на висоту, це не має значення, чи потрібно ще кілька клацань, щоб виконати оновлення (це вже не мовчить).

@Cosmin, якщо ви не хочете використовувати% appdata%, ви можете використовувати% ProgramData% для зберігання завантажених файлів. Більш філософсько правильним способом було б зберігання архіву там, а потім підняття для встановлення наступного разу, коли програма запускається.
Шматочки бекону

ЛЮБИТИ цю відповідь, і я кладу її в свою кишеню (наразі, завантаження стилю "Itunes" знайшло широке звернення з економії причин.)
Шеннон Девіс,

3

Ви не повинні створювати зайві записи для запуску, щоб перевірити наявність оновлень, таких як Adobe Flash Player (важко відстежити їх, і я не можу знайти спосіб відключення чеків ...) або iTunes. Це дратує користувача (вуха, все одно). Кращим варіантом буде перевірити наявність оновлень при запуску програми, як це робить Firefox .

Простий ненав'язливий "Установити оновлення?" вікно не буде дратувати користувачів. Нехай оновиться у фоновому режимі, поки користувач виконує інші речі, а потім автоматично запустить вашу програму.

Просто не забудьте включити варіант:

Перевірте наявність оновлень за адресою:

  • Увійти (якщо ви дратуєте вундів)
  • Запуск програми ( увімкнено за замовчуванням)
  • Кожні кілька тижнів ( вимкнено за замовчуванням)

Або щось подібне.


Якщо це варто докласти зусиль, я б сказав, піди на це. Це ваше рішення.


2

Я думаю, ви хочете налаштувати "ClickOnce".

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

ClickOnce - це технологія розгортання, яка дозволяє створювати самооновлювані програми на базі Windows, які можна встановити та запустити при мінімальній взаємодії з користувачем. Розгортання ClickOnce долає три основні проблеми в розгортанні:

Труднощі в оновленні додатків. Після розгортання програми Microsoft Windows Installer кожного разу, коли програма оновлюється, користувач повинен перевстановити всю програму; за допомогою розгортання ClickOnce ви можете надавати оновлення автоматично. Завантажуються лише ті частини програми, які змінилися, а потім повна оновлена ​​програма перевстановлюється з нової папки.

Вплив на комп'ютер користувача. При розгортанні Windows Installer програми часто покладаються на спільні компоненти з можливістю конфліктування версій; з розгортанням ClickOnce кожен додаток є автономним і не може втручатися в інші програми.

Дозволи безпеки. Розгортання Windows Installer вимагає адміністративних дозволів і дозволяє лише обмежену установку користувача; Розгортання ClickOnce дозволяє неадміністративним користувачам встановлювати та надавати лише ті дозволи доступу до коду, необхідні для програми.


Це було не питанням плюсів і мінусів натискання одного разу та MSI (до яких багато ваших висновків є невірними та / або неповними), а скоріше питанням найкращих практик автоматичного оновлення рішень.
Крістофер Художник

Я все одно ціную цю інформацію і поділюсь її з розробником, щоб побачити, чи вважав він це варіантом - можливо, він думав, що йому доведеться сам розробити процес оновлення.

Ну, Крістофер, візьміть це за MS, це прямо від MSDN. Це теж корисний коментар.

Коли він кодує технології розгортання, він ніколи не здивує мене, коли хтось, хто розміщує повідомлення на MSDN, помиляється. Є дуже мало з нас експертів, які справді розуміють цей матеріал.
Крістофер Художник

2

Я особисто оцінив додатки, які роблять щось подібне до рамки Sparkle . Я здогадуюсь це лише річ Mac, але вона по суті робить наступне (вгорі голови - я припускаю, що поведінку можна відрегулювати).

  1. Перевірте наявність оновлень (як правило, при запуску програми)
  2. Якщо такий є, відображається окреме вікно із добре відформатованим журналом змін
  3. Потім користувач може пропустити цю версію, встановити її або вибрати, щоб її нагадували пізніше
  4. Якщо він вирішить встановити програму, під журналом змін відображається панель прогресу
  5. Після завантаження користувач може вирішити вийти з програми та встановити її негайно або встановити після того, як він закриє програму

Враховуючи, що ви говорите про .msi, ця конкретна рамка насправді не застосовна, але в цьому випадку я б скоріше пішов з деяким існуючим рішенням, ніж винаходити колесо.


1

Я б сказав, що ви дійсно повинні знати свого користувача. Якщо вони є кмітливими та мають інтенсивний інтерес залишатися в курсі, №1 буде працювати.

Ніколи не варто недооцінювати лінь користувача, оскільки коли їхня програма більше не працює, тому що вони більше не підтримуються, вас пізніше затоплять дзвінки довідкової служби.

Час буде або розвиватися (№2), або підтримкою (№1).


1

Як що до цього?

  • При запуску програми перевірте наявність нової версії та (необов'язково після запиту користувача) завантажити її.
  • Коли завантаження завершиться, надайте користувачеві кнопку, яка дозволяє перевстановити та перезапустити програму (не використовуйте діалогове вікно, якщо оновлення не є критичним).
  • При відключенні програми (необов'язково після запиту користувача) запустіть інсталятор. Якщо користувач відмовиться робити встановлення в цей момент (можливо, він поспішає), зробіть це наступного разу перед запуском програми.

Вам не потрібно турбувати користувача, нічого не потрібно закривати ...


1

Чому б не щось посередині?

Запросіть завантажити (або зробіть опцію "завантажити автоматично"), після закінчення запиту встановити завантажене оновлення (виконати .msi). Таким чином, ви заперечуєте мінус №2 (закриття в середині роботи користувача), але зберігаючи комфорт вартістю ще на 1 клік.

Діалог " Закрити та встановити оновлення? " Повинен бути легко доступним (але не дратувати), коли користувач спочатку відхилиться. Маючи "Запуск <назва програми>?" прапорець у кінці .msi буде майже схожим на №2, не маючи більше жодної роботи

@ програми безпеки
в сучасній Windows можуть запитувати дозвіл на виконання дій, що вимагають прав адміністратора (користувачеві відображається підказка, де (вони) він вводить пароль адміністратора, а потім вибирає "так / ні", чи надавати дозвіл)


1

У мене 124 ломбарди, які використовують мій настільний додаток "Управління ломбардом". Щоразу, коли у мене є нове оновлення, я надсилаю їм електронне повідомлення, повідомляючи їм про оновлення та його деталі. Тоді вони мають можливість FTP це увійти на мій веб-сайт. Вони також мають можливість відкатати оновлення. Мій веб-сайт також відстежує кожну встановлену версію ломбарду.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.