Софт Движок для автоапдейтера + патч-билдер[Golang][Source]

Aristo

Бессмертный
Проверенный
Победитель в номинации 2023
Сообщения
689
Розыгрыши
0
Решения
11
Репутация
648
Реакции
803
Баллы
1 658
Всем привет.

Немного шары от меня.

Несколько дней назад, решил потихоньку освоить какой-то новый ЯП. Выбор пал на Golang.
В качестве первого проекта на этом языке, решил сделать движок для автоапдейтера.
Выкладываю в шару под Apache 2.0

Вопрос: Что в архиве?
Ответ: Сурсы апдейтера и патч-билдера на языке Go

Вопрос: Это нужно компилировать?
Ответ: Да, для начала это стоит скомпилировать для нужной вам платформы и разрядности.

Вопрос: Что умеет builder и как им пользоваться?
Ответ: Полученный после компиляции файл кладете в корень папки, которую хотите превратить в патч для апдейтера. Например возьмем C:\Patch
- Кладете файл patch_builder.exe в C:\Patch\patch_builder.exe
- Запускаете через командную строку с параметрами "patch_builder.exe -threads [число потоков(по умолчанию 4)] -compression [fastest default better best]
- Апдейтер начинает работать. Он считает чексуммы, используя алгоритм xxHash и сжимает файлы, используя компрессию ZSTD.
- Полученные файлы выгружаются тут же в папку /updater_out/ сохраняя структуру папок
- После окончания упаковки, в папке /updater_out/ создается файл info.txt, с чексуммами файлов и их путями.
- Эти файлы необходимо выгрузить на веб, в директорию вашего апдейтера, доступную с внешки. Например

Вопрос: Что умеет updater и как им пользоваться?
Ответ: Полученный после компиляции файл updater необходимо положить в корень папки вашего клиента. Т.е например если вы положите файл в C:\Client\updater, то он будет по умолчанию работать с этой папкой.
- После запуска, апдейтер пытается подключится к указанному хосту и ищет там файл info.txt
- В случае, если файл найден, он скачивает его, парсит и пытается скачать и обновить файлы, исходя из полученной информации.
- Апдейтер использует количество потоков по количеству ядер, т.к я пока не сильно понял, как масштабируется нагрузка от количества горутин. Если что, конфигурируйте по своему вкусу.
- xxHash для чексуммы и ZSTD для декомпрессии.
- Поддерживается функция самообновления. Если апдейтер нашел в патче себя, но хешсумма не совпадает, он обновится и попросит перезапуск.

Вопрос: Есть GUI?
Ответ: Нет, но вы можете написать любой GUI, используя фреймворки Fyme, Gio, QT, GTK и прочие.

Из плюсов - довольно высокая скорость работы.

Пароль для архива:


Буду благодарен за фидбек.
 

Вложения

  • gopdater.zip
    7,4 КБ · Просмотры: 135

Хороший апдейтер с быстрыми алгоритмами подсчета. 🙂👍
 
Thanks,If u can upload the pic.everyone can see it.
 
Кто в теме голанга, какой размер файла если использовать графические фреймоврки типа тех, что предложены выше? Тянут за собой кучу всего?

По теме: если будут апдейты, то предлагаю жить хотя бы в 2007 и добавить S3. А юзеры уже сами выберут провайдера, а игроки получат норм доступность по умолчанию
 
Последнее редактирование:
Кто в теме голанга, какой размер файла если использовать графические фреймоврки типа тех, что предложены выше? Тянут за собой кучу всего?

По теме: если будут апдейты, то предлагаю жить хотя бы в 2007 и добавить S3. А юзеры уже сами выберут провайдера, а игроки получат норм доступность по умолчанию
Не, саппортить его я точно не буду. Я писал его в качестве теста. Я у себя юзаю переписанную на плюсы версию + QT6
 

    Projack

    Баллов: 1
    Ужос какой, QT со статической линковкой hello world будет выплевывать 30mb+
Кто в теме голанга, какой размер файла если использовать графические фреймоврки типа тех, что предложены выше? Тянут за собой кучу всего?
Размер будет большой, GUI не имеет смысла использовать в Go, Go не для этого создавался, если нужно GUI, то лучше рассмотреть продукты либо другие, которые для этого и делались и делаются.
 
Назад
Сверху Снизу