Вопрос Как сделать возможность взаимодействия другой программы с Установщиком?

  • Автор темы Автор темы zettend
  • Дата начала Дата начала

zettend

Старожил
Здравствуйте.
Работаю над неким аналогом Стима. Сама платформа пишется на Electron(JS). Добавления статуса "Установлено" сделали при помощи реестра. А вот как избежать окна самого установщика?
Мне грубо говоря надо в фоне запускать установщик и отдавать данные самому приложению. Как такое возможно реализовать? Само приложение отдаёт данные установщику путём ключей(Путь установки и язык). Но как отдавать данные самому приложению?
Вполне может сработать выводить данные типа: "Распаковка: bin/game.exe - 15%. Осталось 20 минут."
Но как это вывести в CMD?
 
А можно поподробнее? Платформа это только клиент? Где осуществляется хранение файлов? Как реализуется версионность и проверка целостности? Зачем в таком случае использовать установщики? Если можно делать распаковку на стороне клиента?
 
Платформа это только клиент?
Нет. Это сайт, но с бонусом. Поясняю алгоритм работы:
Если человек с сайта:
Скачивается простой Торрент файл. Он содержит обычный репак(как у всех).
Если человек с клиента:
Скачивает Торрент файл, запускает в нём Setup.exe и устанавливает.
Проверяет реестр на наличие игры, если есть, то запускает.
Так-же собирает инфу об кол-ве часов игры.
Есть оверлей с чатом и некоторыми настройками.

Где осуществляется хранение файлов?
До 5'и раздающих хостят сервера. Далее от клиентов трафик ходит, либо от сторонних торрент трекеров(если мы там публикуемся).

Как реализуется версионность и проверка целостности?
Все апдейты идут отдельно, с запаковки релизность не меняется. Грубо говоря установщик всегда имеет v1. Но в самом инсталляторе есть докачка новых файлов(если стоит ключ). Ибо в будущем мы будет обновления делать полностью клиентом, но возможность апдейта у установщика отбирать не будем(издаёмся на сторонних трекерах).
На сервере лежат файлы примерно так:
-GTA V
--Bin
--Updates
---v1
---v2
--Unpacked

Мы в любом случае храним последнюю версию игры распакованной, это позволяет сделать что-то вроде "Проверка файлов", при различие сходств мы их докачиваем.
Проверку делаем по хешам SHA 256.
Папка Bin всегда остаётся неизменной. В реестр добавляем v0, если игра только установлена. Если вышел v1, но у клиента v0, то скачиваем с заменой текущих файлов.

Зачем в таком случае использовать установщики?
Что-бы издаваться на торрент трекерах.

Если можно делать распаковку на стороне клиента?
Бесспорно можно, мы даже об этом думали. Но для нас важно использовать ISDone, который если и получится запустить на электроне, то лишь на Win. А нам важна кросс-платформенность. Если у клиента Linux/macOS мы просто делаем запуск игры через команду Wine. Wine мы докачиваем свой, сконфигурированный под определённую платформу. А на macOS нам вообще пришлось написать приложение-реверс, которая работает как доп. виртуализация для создания вида x64 приложения, если оно x32, ибо macOS выпилили поддержку x32.
 
Честно говоря, Electron какашка, слишком уж он прожорливый и лагучий. Зато кросс-платформенный, не спорю.

Нуу, учитывая необходимость запуска инсталлятора, то вариантов не слишком много. Разве что хукать окно установщика и мониторить изменение заголовка. Мониторить TLabel не получится, это неоконный объект,а лишь некий интерфейс, который рисует сразу на канву формы.

Вообще сам FA кросс-платформенный, есть бинарники под винду и линукс. При необходимости можно собрать под мак. Хотя играть под вайном то ещё извращение. Так что можно было бы организовать распаковку самим FA плюс инсталл скрипт, примерно как в стиме. По сути двойная работа, репак плюс инсталл скрипт... Зато так было бы правильнее

Далее, стим, в зависимости от системы, подкачивает свой набор бинарников под систему, и эмуляция не требуется, что огромный плюс.

Ещё, сделать нормальную версионность, с патчами при помощи xdelta, и milestone на каждое крупное обновление, чтобы не приходилось кучу патчей накатывать.

И ещё такой каверзный вопросик - а зачем вам это?
 
Shegorat, спасибо вам большое за расширенный ответ.

а зачем вам это?
Идея была давно, я попросту задолбался искать нормальные репаки, где-то нет раздач, где-то ещё какие-то проблемы.
А здесь я вроде как и заработать могу на рекламе, обеспечить людей работе и самому создаю удобство.
А причем здесь кроссплатформенность? Так у меня и ПК на винде, и MacBook. Играть хочется везде, но возиться с Wine не просто. А мощности MacBook хватает на запуск The Divison на средних, причем ещё и через Wine.
Ну и так-же не стоит забывать про Valve Proton(DirectX to Vulcan) и рост популярности среди Linux игроков.

К тому же есть ближайший родственник с сервером и неплохой шиной в Bulletproof стране)
 
Назад
Сверху