Russian Qt Forum
Ноябрь 23, 2024, 20:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: Автоматическое обновление клиента через интернет (по сети)  (Прочитано 21411 раз)
fuCtor
Гость
« Ответ #30 : Июнь 29, 2012, 20:11 »

К реализации подошел примерно по той же схеме что и Верес говорит, приложение  спрашивает у сервера есть что новое, получает ссылки, выкачивает дальше в ребут.

Апдейтер работает на двух платформах (Win, Mac). Для каждой написан с использованием родных средств создания GUI, а общая часть на ANSI C.
Сам апдейтер реализован как интерпретатор скриптов, скрипты содержатся в пакете обновления в бинарном виде (байткод). Там же содержатся и необходимые данные. Таким образом можно формировать различные сценарии обновления.

В итоге апдейтер может сам себя обновлять, выполнять базовые файловые операции, контролировать целостность пакета/цели/результата, контролировать права доступа и просить повышения прав при необходимости и так далее.

За год ни одной проблемы связанной с апдейтером не было =)
Записан
Bepec
Гость
« Ответ #31 : Июнь 29, 2012, 21:33 »

Alex Custov погуглите "Сервер сценариев windows".

Скрипты, которые позволяют делать с системой всё что угодно. Аналоги вроде имеются и в unix подобных системах, но в той области у меня маловато опыта.

И да, при должном желании, ручками можно прописать всё. Абсолютно. И спросить и записать и снять бд всего содержимого на диске и отправить этот списочек мне в БД Улыбающийся

PS Как ты думаешь установщики пишут в реестр? Веселый так же и в апдейтере можно прописать. Только в апдейтере будет всё нужное и не будет наносного Веселый
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #32 : Июнь 29, 2012, 21:37 »

Я про это и говорю - ты фактически напишешь свой инсталятор, второй INNO Setup, зачем на это тратить время я не понимаю. NIH синдром - одна из самых дебильных вещей в IT.

И да, при должном желании, ручками можно прописать всё. Абсолютно. И спросить и записать и снять бд всего содержимого на диске и отправить этот списочек мне в БД

Можно, можно и свою Qt написать для этих целей, и даже (чего мелочиться) ОС, в которой не будет ничего лишнего.
« Последнее редактирование: Июнь 29, 2012, 21:41 от Alex Custov » Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #33 : Июнь 29, 2012, 22:57 »

Что-то никто тут о "Windows Defender", firewall, антивирусах, и прочих приблудах, запрещающих запись в папку типа C:\Program Files не вспоминает. Что же будет с замечательным маленьким апдейтером, когда при запуске под пользовательским аккаунтом ему Windows тупо не даст изменить содержимое каталога программы? Будете писать собственную службу, которая апдейтами заниматься будет? А кто тогда эту службу будет инициализировать? Будете всё же инсталлятор для приложения писать?
В Windows существует служба Windows Installer, с помощью которой по мнению Microsoft все эти задачи и должны решаться. И даже специальные средства разработки для неё имеются, умеющие в том числе атомарные бинарные апдейты делать. Правда тараканов там своих хватает. Так что дерзайте: каждый настоящий программист всё же должен хоть раз в жизни собственноручно написать файловый менеджер и автоматический обновлятель.
Записан
Bepec
Гость
« Ответ #34 : Июнь 30, 2012, 17:32 »

Хокс - я тебе по секрету скажу. Даже запись/удаление с помощью МСИ в програм файлс без полномочий НЕВОЗМОЖЕН Веселый

Не для того ограничения ставят, чтобы их вот так служба обходила.

И да - неужели ты думаешь, что возможно охватить все антивирусы? Улыбающийся Наоборот, именно антивирусы должны охватывать программы, чем успешно и занимаются.

Автоматического обновлятора нету пока вроде в общем доступе. Точнее каждый из них заточен на свою программу и "О, неожиданно" не занимаются рукоблудством, описанным в вашем случае(установка без привилегий).

PS только что поставил огранку себе на гостя. Запустил инсталлер виндосовского медиа плейера. Получил отказ об установке в данную папку Веселый
Записан
ufna
Гость
« Ответ #35 : Июнь 30, 2012, 18:55 »

Рассуждение об абстрактном коне в сферическом ваакуме, если честно Улыбающийся Из разряда "программисты о дизайне".

Важно представлять ЗАЧЕМ нужен инсталлятор/апдейтер и как это для юзера. От этого уже решать что как храниться и т.п.

Нормальные игрушки онлайн используют свои инсталляторы/лончеры/апдейтеры. Причем здесь как бы основные моменты:
 - сам лончер - статически собран. обновлять себя умеет (шанс порушить процесс минимален)
 - обязательная проверка по хешу и по названиям файлов. чтобы знать чего не хватает вдруг или что удалить.
 - докачка апдейтов

Все это на Qt делается безпроблемно. Я уж не говорю о том, что для "крупных" программ как игр еще и торрент в это дело встроен.

Важно также понимать:
 - сколько у программы будет юзеров
 - как часто будут апдейты
 - нужна ли "история апдейтов"

К примеру, если у вас вдруг 100500 пользьвателей с частыми апдейтами - то еще и содержать сервера придется под это дело + поле для оптимизации траффика и т.п. там неплохое.

Если же апдейты раз в полгода, и они не обязательные, то проще всего - пусть юзер качает обычный сэтап.
Записан
ДвеКопейки
Гость
« Ответ #36 : Июль 02, 2012, 06:03 »

Всем спасибо, очень интересный диспут.

Вижу что придется объяснить почему мне нужен сферический конь в вакууме.

Мы продаем достаточно дорогостоящее оборудование по всей РФ, на котором из софта есть только ОС, фаервол, наше ПО.

Задача состоит в том, чтобы это все чудо обновлялось САМО.
Пользователь максимум должен видеть таблички "извините сейчас оборудование производит обновление", "Производится поиск обновлений", "Проверка текущего состояния".

Чисто теоретически файлы сами по себе портится не будут.
Но так же возможна ситуация, что где нибудь в Сасово не будет интернета полгода, не оплачен интернет, проблемы со связью, не запускалось оборудование.
Поэтому мне выгоднее по мд5 проверить какие файлы стоит изменять.

Права доступа у программы будут максимальные.
Пользователь ничего не может делать помимо работы с программой, хоть и чисто теоретически он сидит с правами админа.
Записан
Bepec
Гость
« Ответ #37 : Июль 02, 2012, 06:49 »

Ага. В принципе идеальный пользователеустойчивый вариант Веселый
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #38 : Июль 02, 2012, 11:17 »

Хокс - я тебе по секрету скажу. Даже запись/удаление с помощью МСИ в програм файлс без полномочий НЕВОЗМОЖЕН Веселый

PS только что поставил огранку себе на гостя. Запустил инсталлер виндосовского медиа плейера. Получил отказ об установке в данную папку Веселый

По секрету я тебе отвечу - я про установку/удаление без админских полномочий нигде и не говорил. Речь шла об автоматических обновлениях. Впрочем, для автора темы действительно лучше самому писать обновлялку - у него ситуация с пользовательскими правами простая.
Записан
Bepec
Гость
« Ответ #39 : Июль 02, 2012, 12:09 »

Что-то никто тут о "Windows Defender", firewall, антивирусах, и прочих приблудах, запрещающих запись в папку типа C:\Program Files не вспоминает. Что же будет с замечательным маленьким апдейтером, когда при запуске под пользовательским аккаунтом ему Windows тупо не даст изменить содержимое каталога программы? Будете писать собственную службу, которая апдейтами заниматься будет? А кто тогда эту службу будет инициализировать? Будете всё же инсталлятор для приложения писать?
В Windows существует служба Windows Installer, с помощью которой по мнению Microsoft все эти задачи и должны решаться. И даже специальные средства разработки для неё имеются, умеющие в том числе атомарные бинарные апдейты делать. Правда тараканов там своих хватает. Так что дерзайте: каждый настоящий программист всё же должен хоть раз в жизни собственноручно написать файловый менеджер и автоматический обновлятель.

Ну и  не ври тогда Веселый Ни 1 служба не обновит, если не будет запущена с админскими правами. А чтобы они были, нужны что? админские права Веселый
Копирование/удаление/перемещение/замена без прав НЕВОЗМОЖНА. В принципе Улыбающийся (Анонимусы злостно взвоют на эту реплику, ну да фу на хакеров)
И МСИ запускается с правами пользователя Веселый
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #40 : Июль 02, 2012, 12:17 »

Ну и  не ври тогда Веселый Ни 1 служба не обновит, если не будет запущена с админскими правами.
И МСИ запускается с правами пользователя Веселый
Windows Installer для того и выполнен в виде службы, чтобы запускаясь с системными (даже не админскими!) полномочиями иметь возможность выполнять все эти операции.
В любом случае, дискутировать в таком тоне я не собираюсь, тем более что суть темы уже собственно раскрыта.
Записан
Bepec
Гость
« Ответ #41 : Июль 02, 2012, 12:19 »

Угум. И не стоит дискутировать Веселый Я ж говорю специально проверял - при запуске с пользовательскими правами, если нет доступа к program files(Запрещено администратором для этого пользователя), то MSI выдаёт ошибочку доступа Улыбающийся
Записан
ufna
Гость
« Ответ #42 : Июль 02, 2012, 13:26 »

Чисто теоретически файлы сами по себе портится не будут.
Но так же возможна ситуация, что где нибудь в Сасово не будет интернета полгода, не оплачен интернет, проблемы со связью, не запускалось оборудование.
Поэтому мне выгоднее по мд5 проверить какие файлы стоит изменять.

"чисто теоретически" - надеяться не стоит, но не суть.

если проблемы с интернетом, то апдейт ОБЯЗАН проходить так:
 1. определяем какие файлы повреждены из текущей версии, качаем их для _текущей_ версии
 2. определяем что нужно проапдейтить, качаем это в отдельную папочку, сверяя целостность. Апдейт локальной сборки реальный начинаем когда все файлы докачались.
 3. сохраняем текущую версию в бэкап, обновляем.

Это нужно для избежания проблем обрыва связи на середине апдейта.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #43 : Июль 02, 2012, 14:56 »

Кстати есть готовые сторонные решения на эту тему, в т.ч. бесплатные, например, winsparkle или google omaha. Сам правда не пробовал, рекомендовать не рискну.
« Последнее редактирование: Июль 02, 2012, 15:01 от xokc » Записан
Bepec
Гость
« Ответ #44 : Июль 02, 2012, 15:20 »

Готовые Сторонние Решение, о которых Никто Почему То не Пишет Веселый
И я ниразу их не видел, хотя активно пользуюсь апдейтерами и обновляторами.
Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.146 секунд. Запросов: 23.