Jump to content
Sign in to follow this  
Graf

Создание лаунчера

Recommended Posts

Вечер добрый. Создал в Windows Forms C# форму лаунчера. Есть у кого пример?)) Как именно реализовать функцию проверки файлов, скачивания .zip архивов и их разархивация?) Или это только платная услуга?)

Good evening. Created in Windows Forms C# form launcher. Does anyone have an example?)) Exactly how to implement a function that checks files, download .zip archives and unzipping them?) Or is it only a paid service?)

Share this post


Link to post
Share on other sites

Продумай алгоритм лаунчера от начала и до конца, и начинай делать. Вопросы задавай, если появятся - поможем. Алгоритмы могут быть разные - neoncube проверяет версиюю и достает файлы из списка, официальный патчер вроде бы проверяет хэш всех файлов клиента, делает списки с названиями файлов, хешом. Один список хранится на хостинге, другой в клиенте. При запуске лаунчера они сравниваются, те, которые не сошлись - добавляются в лист. После проверки, начинается загрузка всех файлов из листа, обновляется список в клиенте. Повторая проверка списков, если все файлы сошлись, запускаешь игру.

Это был примерный алгоритм, который нужно дорабатывать и учитывать все нюянсы (допустим, каким образом лучше находить хэш файлов). Удачи!

Share this post


Link to post
Share on other sites
15 часов назад, Graf сказал:

Вечер добрый. Создал в Windows Forms C# форму лаунчера. Есть у кого пример?)) Как именно реализовать функцию проверки файлов, скачивания .zip архивов и их разархивация?) Или это только платная услуга?)

Good evening. Created in Windows Forms C# form launcher. Does anyone have an example?)) Exactly how to implement a function that checks files, download .zip archives and unzipping them?) Or is it only a paid service?)

Я использовал 7zip  когда работал с шарпом. 
Алгоритм примерной такой -

запускаем лаунчер, 
смотрим в нашей папке файл с версией, 
идем на сайт, смотрим по определенному адресу файл, 
если версия файла(циферки внутри файла) отличаются от тех которые мы увидели у себя в папке с игрой то,
начинаем скачивать файл по заранее известному адресу.
Распаковываем 7zip'ом и радуемся

Это был очень костыльный вариант, но он легко реализуем.

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

Еще один минус - всем нужно установить дополнительно ПО 7zip, я так же реализовал это при запуске лаунчера в первый раз.

А вообще в инете много различных способов, могу порыться и найти тебе метод обновления ла2 там красивое решение, но слишком сложное для пиратии


Делай добро и бросай его в воду

Share this post


Link to post
Share on other sites
В 02.12.2017 в 15:26, NMS3RR сказал:

Я использовал 7zip  когда работал с шарпом. 
Алгоритм примерной такой -


запускаем лаунчер, 
смотрим в нашей папке файл с версией, 
идем на сайт, смотрим по определенному адресу файл, 
если версия файла(циферки внутри файла) отличаются от тех которые мы увидели у себя в папке с игрой то,
начинаем скачивать файл по заранее известному адресу.
Распаковываем 7zip'ом и радуемся

Это был очень костыльный вариант, но он легко реализуем.

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

Еще один минус - всем нужно установить дополнительно ПО 7zip, я так же реализовал это при запуске лаунчера в первый раз.

А вообще в инете много различных способов, могу порыться и найти тебе метод обновления ла2 там красивое решение, но слишком сложное для пиратии

Не соображаю) Как сделать на примере neoncube? В файле pathes.txt(ini или как угодно) идут названия

"1. Patch_1.rar

2. Patch_2.rar" и так далее.

Чтобы подключалось по ссылке, проверяло и скачивалось + разархивировалось.

"Ionic.Zip;" библиотека для работы с .zip

Edited by Graf
  • Like 1

Share this post


Link to post
Share on other sites
5 часов назад, Graf сказал:

Не соображаю) Как сделать на примере neoncube? В файле pathes.txt(ini или как угодно) идут названия

"1. Patch_1.rar

2. Patch_2.rar" и так далее.

Чтобы подключалось по ссылке, проверяло и скачивалось + разархивировалось.

"Ionic.Zip;" библиотека для работы с .zip

 

Ты хочешь, что бы за тебя сделали ? Пиши @V3ct0r он сделает тебе за Money, учить языку тебя никто не будет, если интересно поднимай архивы, читай топики, но я думаю ты не будешь этого делать,  гугли готовые в интернете и редактируй.

Share this post


Link to post
Share on other sites
5 часов назад, StixXx сказал:

 

Ты хочешь, что бы за тебя сделали ? Пиши @V3ct0r он сделает тебе за Money, учить языку тебя никто не будет, если интересно поднимай архивы, читай топики, но я думаю ты не будешь этого делать,  гугли готовые в интернете и редактируй.

Меня интересует лишь алгоритм neoncube. Именно логика.

Прошу сделать мне логическую цепочку его работы)))

Edited by Graf

Share this post


Link to post
Share on other sites
4 часа назад, Graf сказал:

Меня интересует лишь алгоритм neoncube. Именно логика.

Прошу сделать мне логическую цепочку его работы)))

 

15 часов назад, Graf сказал:

Не соображаю) Как сделать на примере neoncube? В файле pathes.txt(ini или как угодно) идут названия

"1. Patch_1.rar

2. Patch_2.rar" и так далее.

Чтобы подключалось по ссылке, проверяло и скачивалось + разархивировалось.

"Ionic.Zip;" библиотека для работы с .zip

У неона алгоритм примерно такой как вы и описали. 
Запускаем лаунчер, проверяем нашу последнюю версию, смотри на последнюю версию на сайт и начинаем последовательно скачивать файлы по заведомо известному адресу, аля "www.blablabla.ru/download/patch/*.zip(где * название патча), скачали - разархивировали, добавили строчку в наш локальный файл с версиями о новой версии(насколько я помню он пишет там все файлы по очереди) и начинаем скачивать новый файл.

  • Like 1

Делай добро и бросай его в воду

Share this post


Link to post
Share on other sites

Смог все реализовать. Теперь не понимаю, как правильно label вставить и progressbar, чтобы показывалось "Обновление найдено", "Обновления загружаются", "Обновление завершено". Помогите пожалуйста))

Edited by Graf

Share this post


Link to post
Share on other sites
5 hours ago, Graf said:

Смог все реализовать. Теперь не понимаю, как правильно label вставить и progressbar, чтобы показывалось "Обновление найдено", "Обновления загружаются", "Обновление завершено". Помогите пожалуйста))

Почитайте о multithreading. Вам в патчере без этого не обойтись.

Share this post


Link to post
Share on other sites
5 часов назад, Graf сказал:

Смог все реализовать. Теперь не понимаю, как правильно label вставить и progressbar, чтобы показывалось "Обновление найдено", "Обновления загружаются", "Обновление завершено". Помогите пожалуйста))

Используйте потоки и делегаты. 

  • Like 1

Делай добро и бросай его в воду

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...