Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Приложение с автообновлением

Приложение с автообновлением

Страницы: 1 2 Следующая »
HolyDelПостоялецwww16 апр. 20189:17#0
Привет!

Какой каноничный способ автообновления существует?
Типа создаем лаунчер, который стучится куда-то, спрашивает актуальную версию, сверяет ее с локальной, и, если они различаются - скачивает? Какие подводные камни существуют? Какие еще фунцкии можно переложить на лаунчер? (авторизация, какая-нибудь таблица рекордсменов)?

unnamedПостоялецwww16 апр. 201810:37#1
HolyDel
> Какие подводные камни существуют?

Не делать как steam. т.е. не менять права доступа так, что в итоге дырень получается.

AkscanПользовательwww16 апр. 201810:39#2
unnamed
Не делать как steam. т.е. не менять права доступа так, что в итоге дырень получается.

А как стим делает так?
unnamedПостоялецwww16 апр. 201810:48#3
Akscan
> А как стим делает так?

Он пользователю дает доступ на запись в каталог, где разрешено выполнение.

ShadowTeologПостоялецwww16 апр. 201810:54#4
На винде готовой механики авто-обновления не существует. Все самопальные решения либо смертельно достают пользователя постоянными требованиями админских прав, либо хранят софтину в профиле пользователя, либо разрешают запись кому попало куда не надо.
unnamedПостоялецwww16 апр. 201810:57#5
ShadowTeolog
> либо хранят софтину в профиле пользователя

причем с настроенными правами этот недософт просто не запустится.

> либо разрешают запись кому попало куда не надо

для этих вообще отдельный котел припасен.

> смертельно достают пользователя постоянными требованиями админских прав

Тоже непонятно зачем. Можно же создать своего пользователя, настроить ему права и через него делать обновления.

Правка: 16 апр. 2018 10:57

DelfigamerПостоялецwww16 апр. 201815:26#6
unnamed
> Он пользователю дает доступ на запись в каталог, где разрешено выполнение.
Конечно, потому что многие игры сохраняются в ту же папку, где лежит сама игра, и срезать игры с магазина они точно не будут.
kiparПостоялецwww16 апр. 201816:08#7
Delfigamer
На этот случай в винде есть files virtualization. Приложение думает что пишет в Program Files, а пишет в \AppData\Local\VirtualStore.
МизраэльПостоялецwww16 апр. 201816:41#8
HolyDel
> Какой каноничный способ автообновления существует?
ClickOnce

HolyDel
> Типа создаем лаунчер, который стучится куда-то, спрашивает актуальную версию,
> сверяет ее с локальной, и, если они различаются - скачивает? Какие подводные
> камни существуют? Какие еще фунцкии можно переложить на лаунчер? (авторизация,
> какая-нибудь таблица рекордсменов)?
У нас есть корпоративная софтина, которая реализует автообновление:
1) есть ядро, которое ставится инсталлятором
2) при запуске лаунчер ищет в %localappdata%/Company/Application последнюю установленную версию
3) лаунчер же запрашивает у сервера манифест приложения, которое доступно для обновления
4) если у нас стоит более старая версия, то в %localappdata%/Company/Application создаётся подпапка с номером версии и туда выкачивается пакет обновления
5) лаунчер запускает последнюю версию приложения.

gkv311Постоялецwww16 апр. 201816:41#9
Чтобы не изобретать велосипеда, имеет смысл для начала попробовать существующие библиотеки.
Для Windows есть WinSparkle:
https://winsparkle.org/

Для прочих - лучше отдать обновления на откуп пакетному менеджеру системы.

unnamedПостоялецwww16 апр. 201817:37#10
Delfigamer
> Конечно, потому что многие игры сохраняются в ту же папку, где лежит сама игра,
> и срезать игры с магазина они точно не будут.

Разработчики Steam-клиента могли бы создать пользователя для этого.


Мизраэль
> У нас есть корпоративная софтина, которая реализует автообновление:
> 1) есть ядро, которое ставится инсталлятором
> 2) при запуске лаунчер ищет в %localappdata%/Company/Application последнюю
> установленную версию
> 3) лаунчер же запрашивает у сервера манифест приложения, которое доступно для
> обновления
> 4) если у нас стоит более старая версия, то в
> %localappdata%/Company/Application создаётся подпапка с номером версии и туда
> выкачивается пакет обновления
> 5) лаунчер запускает последнюю версию приложения.

Придется обязательно подписывать программу, чтобы внести в SRP/AppLocker по сертификату. Для домашней винды не подходит - там просто нет политик и локера.
А в корпоративной среде софт можно ставить централизованно через домен.

Правка: 16 апр. 2018 17:37

МизраэльПостоялецwww16 апр. 201817:38#11
unnamed
> Придется обязательно подписывать программу, чтобы внести в SRP/AppLocker по
> сертификату.
Это в любом случае придётся делать, иначе замучаетесь с клиентами.

> Для домашней винды не подходит - там просто нет политик и локера.
> А в корпоративной среде софт можно ставить централизованно через домен.
У нас веб приложение, нельзя централизовано раскатать на домашние машины пользователей :)

unnamedПостоялецwww16 апр. 201817:47#12
Мизраэль
> Это в любом случае придётся делать, иначе замучаетесь с клиентами.

На домашней винде нельзя же разрешать запуск по сертификату - там доступны только ACL и обязательные уровни целостности. Для ClickOnce-а придется оставить права RWX.

Почему бы не сделать свой сервис для обновления? При установке создаем учетку, запускаем под ней свой сервис, настраиваем права. Сервис выполняет обновления без всяких запросов прав, т.к. он уже работает под нужным пользователем.

DelfigamerПостоялецwww16 апр. 201818:21#13
kipar
> На этот случай в винде есть files virtualization. Приложение думает что пишет в
> Program Files, а пишет в \AppData\Local\VirtualStore.
А в чём разница? Не проще тогда весь стим установить в отдельную папку?
А, так он же так и делает, называется "%ProgramFiles%\Steam".

unnamed
> Разработчики Steam-клиента могли бы создать пользователя для этого.
Игры тоже из этого пользователя запускать? А что делать с теми, которые хранят сохранения в папках пользователя?

Правка: 16 апр. 2018 18:26

unnamedПостоялецwww16 апр. 201818:31#14
Delfigamer
> Игры тоже из этого пользователя запускать?

я так и сделал. Создал пользователя steam и из-под него работает сам steam и игры.

> А что делать с теми, которые хранят сохранения в папках пользователя?

А в чем проблема? Сохранения будут лежать в хомяке у пользователя steam. Для удобства можно разрешить чтение сохранений для учетной записи реального пользователя и симлинк кинуть в его хомяк.

Правка: 16 апр. 2018 18:31

Страницы: 1 2 Следующая »

/ Форум / Программирование игр / Общее

2001—2018 © GameDev.ru — Разработка игр