Russian Qt Forum
Ноябрь 23, 2024, 19:51
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
Автоматическое обновление клиента через интернет (по сети)
Страниц:
1
2
[
3
]
4
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Автоматическое обновление клиента через интернет (по сети) (Прочитано 21381 раз)
fuCtor
Гость
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #30 :
Июнь 29, 2012, 20:11 »
К реализации подошел примерно по той же схеме что и Верес говорит, приложение спрашивает у сервера есть что новое, получает ссылки, выкачивает дальше в ребут.
Апдейтер работает на двух платформах (Win, Mac). Для каждой написан с использованием родных средств создания GUI, а общая часть на ANSI C.
Сам апдейтер реализован как интерпретатор скриптов, скрипты содержатся в пакете обновления в бинарном виде (байткод). Там же содержатся и необходимые данные. Таким образом можно формировать различные сценарии обновления.
В итоге апдейтер может сам себя обновлять, выполнять базовые файловые операции, контролировать целостность пакета/цели/результата, контролировать права доступа и просить повышения прав при необходимости и так далее.
За год ни одной проблемы связанной с апдейтером не было =)
Записан
Bepec
Гость
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #31 :
Июнь 29, 2012, 21:33 »
Alex Custov погуглите "Сервер сценариев windows".
Скрипты, которые позволяют делать с системой всё что угодно. Аналоги вроде имеются и в unix подобных системах, но в той области у меня маловато опыта.
И да, при должном желании, ручками можно прописать всё. Абсолютно. И спросить и записать и снять бд всего содержимого на диске и отправить этот списочек мне в БД
PS Как ты думаешь установщики пишут в реестр?
так же и в апдейтере можно прописать. Только в апдейтере будет всё нужное и не будет наносного
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #32 :
Июнь 29, 2012, 21:37 »
Я про это и говорю - ты фактически напишешь свой инсталятор, второй INNO Setup, зачем на это тратить время я не понимаю. NIH синдром - одна из самых дебильных вещей в IT.
Цитата: Bepec от Июнь 29, 2012, 21:33
И да, при должном желании, ручками можно прописать всё. Абсолютно. И спросить и записать и снять бд всего содержимого на диске и отправить этот списочек мне в БД
Можно, можно и свою Qt написать для этих целей, и даже (чего мелочиться) ОС, в которой не будет ничего лишнего.
«
Последнее редактирование: Июнь 29, 2012, 21:41 от Alex Custov
»
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #33 :
Июнь 29, 2012, 22:57 »
Что-то никто тут о "Windows Defender", firewall, антивирусах, и прочих приблудах, запрещающих запись в папку типа C:\Program Files не вспоминает. Что же будет с замечательным маленьким апдейтером, когда при запуске под пользовательским аккаунтом ему Windows тупо не даст изменить содержимое каталога программы? Будете писать собственную службу, которая апдейтами заниматься будет? А кто тогда эту службу будет инициализировать? Будете всё же инсталлятор для приложения писать?
В Windows существует служба Windows Installer, с помощью которой по мнению Microsoft все эти задачи и должны решаться. И даже специальные средства разработки для неё имеются, умеющие в том числе атомарные бинарные апдейты делать. Правда тараканов там своих хватает. Так что дерзайте: каждый настоящий программист всё же должен хоть раз в жизни собственноручно написать файловый менеджер и автоматический обновлятель.
Записан
Bepec
Гость
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #34 :
Июнь 30, 2012, 17:32 »
Хокс - я тебе по секрету скажу. Даже запись/удаление с помощью МСИ в програм файлс без полномочий НЕВОЗМОЖЕН
Не для того ограничения ставят, чтобы их вот так служба обходила.
И да - неужели ты думаешь, что возможно охватить все антивирусы?
Наоборот, именно антивирусы должны охватывать программы, чем успешно и занимаются.
Автоматического обновлятора нету пока вроде в общем доступе. Точнее каждый из них заточен на свою программу и "О, неожиданно" не занимаются рукоблудством, описанным в вашем случае(установка без привилегий).
PS только что поставил огранку себе на гостя. Запустил инсталлер виндосовского медиа плейера. Получил отказ об установке в данную папку
Записан
ufna
Гость
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #35 :
Июнь 30, 2012, 18:55 »
Рассуждение об абстрактном коне в сферическом ваакуме, если честно
Из разряда "программисты о дизайне".
Важно представлять ЗАЧЕМ нужен инсталлятор/апдейтер и как это для юзера. От этого уже решать что как храниться и т.п.
Нормальные игрушки онлайн используют свои инсталляторы/лончеры/апдейтеры. Причем здесь как бы основные моменты:
- сам лончер - статически собран. обновлять себя умеет (шанс порушить процесс минимален)
- обязательная проверка по хешу и по названиям файлов. чтобы знать чего не хватает вдруг или что удалить.
- докачка апдейтов
Все это на Qt делается безпроблемно. Я уж не говорю о том, что для "крупных" программ как игр еще и торрент в это дело встроен.
Важно также понимать:
- сколько у программы будет юзеров
- как часто будут апдейты
- нужна ли "история апдейтов"
К примеру, если у вас вдруг 100500 пользьвателей с частыми апдейтами - то еще и содержать сервера придется под это дело + поле для оптимизации траффика и т.п. там неплохое.
Если же апдейты раз в полгода, и они не обязательные, то проще всего - пусть юзер качает обычный сэтап.
Записан
ДвеКопейки
Гость
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #36 :
Июль 02, 2012, 06:03 »
Всем спасибо, очень интересный диспут.
Вижу что придется объяснить почему мне нужен сферический конь в вакууме.
Мы продаем достаточно дорогостоящее оборудование по всей РФ, на котором из софта есть только ОС, фаервол, наше ПО.
Задача состоит в том, чтобы это все чудо обновлялось САМО.
Пользователь максимум должен видеть таблички "извините сейчас оборудование производит обновление", "Производится поиск обновлений", "Проверка текущего состояния".
Чисто теоретически файлы сами по себе портится не будут.
Но так же возможна ситуация, что где нибудь в Сасово не будет интернета полгода, не оплачен интернет, проблемы со связью, не запускалось оборудование.
Поэтому мне выгоднее по мд5 проверить какие файлы стоит изменять.
Права доступа у программы будут максимальные.
Пользователь ничего не может делать помимо работы с программой, хоть и чисто теоретически он сидит с правами админа.
Записан
Bepec
Гость
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #37 :
Июль 02, 2012, 06:49 »
Ага. В принципе идеальный пользователеустойчивый вариант
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #38 :
Июль 02, 2012, 11:17 »
Цитата: Bepec от Июнь 30, 2012, 17:32
Хокс - я тебе по секрету скажу. Даже запись/удаление с помощью МСИ в програм файлс без полномочий НЕВОЗМОЖЕН
PS только что поставил огранку себе на гостя. Запустил инсталлер виндосовского медиа плейера. Получил отказ об установке в данную папку
По секрету я тебе отвечу - я про установку/удаление без админских полномочий нигде и не говорил. Речь шла об автоматических обновлениях. Впрочем, для автора темы действительно лучше самому писать обновлялку - у него ситуация с пользовательскими правами простая.
Записан
Bepec
Гость
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #39 :
Июль 02, 2012, 12:09 »
Цитата: xokc от Июнь 29, 2012, 22:57
Что-то никто тут о "Windows Defender", firewall, антивирусах, и прочих приблудах, запрещающих запись в папку типа C:\Program Files не вспоминает. Что же будет с замечательным маленьким апдейтером, когда при запуске под пользовательским аккаунтом ему Windows тупо не даст изменить содержимое каталога программы? Будете писать собственную службу, которая апдейтами заниматься будет? А кто тогда эту службу будет инициализировать? Будете всё же инсталлятор для приложения писать?
В Windows существует служба Windows Installer, с помощью которой по мнению Microsoft все эти задачи и должны решаться. И даже специальные средства разработки для неё имеются, умеющие в том числе атомарные бинарные апдейты делать. Правда тараканов там своих хватает. Так что дерзайте: каждый настоящий программист всё же должен хоть раз в жизни собственноручно написать файловый менеджер и автоматический обновлятель.
Ну и не ври тогда
Ни 1 служба не обновит, если не будет запущена с админскими правами. А чтобы они были, нужны что? админские права
Копирование/удаление/перемещение/замена без прав НЕВОЗМОЖНА. В принципе
(Анонимусы злостно взвоют на эту реплику, ну да фу на хакеров)
И МСИ запускается с правами пользователя
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #40 :
Июль 02, 2012, 12:17 »
Цитата: Bepec от Июль 02, 2012, 12:09
Ну и не ври тогда
Ни 1 служба не обновит, если не будет запущена с админскими правами.
И МСИ запускается с правами пользователя
Windows Installer для того и выполнен в виде службы, чтобы запускаясь с системными (даже не админскими!) полномочиями иметь возможность выполнять все эти операции.
В любом случае, дискутировать в таком тоне я не собираюсь, тем более что суть темы уже собственно раскрыта.
Записан
Bepec
Гость
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #41 :
Июль 02, 2012, 12:19 »
Угум. И не стоит дискутировать
Я ж говорю специально проверял - при запуске с пользовательскими правами, если нет доступа к program files(Запрещено администратором для этого пользователя), то MSI выдаёт ошибочку доступа
Записан
ufna
Гость
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #42 :
Июль 02, 2012, 13:26 »
Цитата: ДвеКопейки от Июль 02, 2012, 06:03
Чисто теоретически файлы сами по себе портится не будут.
Но так же возможна ситуация, что где нибудь в Сасово не будет интернета полгода, не оплачен интернет, проблемы со связью, не запускалось оборудование.
Поэтому мне выгоднее по мд5 проверить какие файлы стоит изменять.
"чисто теоретически" - надеяться не стоит, но не суть.
если проблемы с интернетом, то апдейт ОБЯЗАН проходить так:
1. определяем какие файлы повреждены из текущей версии, качаем их для _текущей_ версии
2. определяем что нужно проапдейтить, качаем это в отдельную папочку, сверяя целостность. Апдейт локальной сборки реальный начинаем когда все файлы докачались.
3. сохраняем текущую версию в бэкап, обновляем.
Это нужно для избежания проблем обрыва связи на середине апдейта.
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #43 :
Июль 02, 2012, 14:56 »
Кстати есть готовые сторонные решения на эту тему, в т.ч. бесплатные, например, winsparkle или google omaha. Сам правда не пробовал, рекомендовать не рискну.
«
Последнее редактирование: Июль 02, 2012, 15:01 от xokc
»
Записан
Bepec
Гость
Re: Автоматическое обновление клиента через интернет (по сети)
«
Ответ #44 :
Июль 02, 2012, 15:20 »
Готовые Сторонние Решение, о которых Никто Почему То не Пишет
И я ниразу их не видел, хотя активно пользуюсь апдейтерами и обновляторами.
Записан
Страниц:
1
2
[
3
]
4
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...