1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

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

Тема в разделе "Inno Setup", создана пользователем Incorrect, 25 мар 2020.

  1. Старожил

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

    Регистрация:
    15 июн 2011
    Сообщения:
    790
    Симпатии:
    1.147
    Пол:
    Мужской
    А можно поподробнее? Платформа это только клиент? Где осуществляется хранение файлов? Как реализуется версионность и проверка целостности? Зачем в таком случае использовать установщики? Если можно делать распаковку на стороне клиента?
     
  3. Старожил

    Регистрация:
    11 июл 2014
    Сообщения:
    293
    Симпатии:
    129
    Пол:
    Мужской
    Нет. Это сайт, но с бонусом. Поясняю алгоритм работы:
    Если человек с сайта:
    Скачивается простой Торрент файл. Он содержит обычный репак(как у всех).
    Если человек с клиента:
    Скачивает Торрент файл, запускает в нём 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.
     
  4. Безумный Лорд Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    790
    Симпатии:
    1.147
    Пол:
    Мужской
    Честно говоря, Electron какашка, слишком уж он прожорливый и лагучий. Зато кросс-платформенный, не спорю.

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

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

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

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

    И ещё такой каверзный вопросик - а зачем вам это?
     
  5. Старожил

    Регистрация:
    11 июл 2014
    Сообщения:
    293
    Симпатии:
    129
    Пол:
    Мужской
    Shegorat, спасибо вам большое за расширенный ответ.

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

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

Поделиться этой страницей