Graf 214 Report post Posted December 1, 2017 Вечер добрый. Создал в 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?) Quote Share this post Link to post Share on other sites
quad 17 Report post Posted December 2, 2017 Продумай алгоритм лаунчера от начала и до конца, и начинай делать. Вопросы задавай, если появятся - поможем. Алгоритмы могут быть разные - neoncube проверяет версиюю и достает файлы из списка, официальный патчер вроде бы проверяет хэш всех файлов клиента, делает списки с названиями файлов, хешом. Один список хранится на хостинге, другой в клиенте. При запуске лаунчера они сравниваются, те, которые не сошлись - добавляются в лист. После проверки, начинается загрузка всех файлов из листа, обновляется список в клиенте. Повторая проверка списков, если все файлы сошлись, запускаешь игру. Это был примерный алгоритм, который нужно дорабатывать и учитывать все нюянсы (допустим, каким образом лучше находить хэш файлов). Удачи! Quote Share this post Link to post Share on other sites
WVWMK 121 Report post Posted December 2, 2017 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 там красивое решение, но слишком сложное для пиратии Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
Graf 214 Report post Posted December 7, 2017 (edited) В 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 December 7, 2017 by Graf 1 Quote Share this post Link to post Share on other sites
StixXx 1 Report post Posted December 7, 2017 5 часов назад, Graf сказал: Не соображаю) Как сделать на примере neoncube? В файле pathes.txt(ini или как угодно) идут названия "1. Patch_1.rar 2. Patch_2.rar" и так далее. Чтобы подключалось по ссылке, проверяло и скачивалось + разархивировалось. "Ionic.Zip;" библиотека для работы с .zip Ты хочешь, что бы за тебя сделали ? Пиши @V3ct0r он сделает тебе за Money, учить языку тебя никто не будет, если интересно поднимай архивы, читай топики, но я думаю ты не будешь этого делать, гугли готовые в интернете и редактируй. Quote Share this post Link to post Share on other sites
Graf 214 Report post Posted December 7, 2017 (edited) 5 часов назад, StixXx сказал: Ты хочешь, что бы за тебя сделали ? Пиши @V3ct0r он сделает тебе за Money, учить языку тебя никто не будет, если интересно поднимай архивы, читай топики, но я думаю ты не будешь этого делать, гугли готовые в интернете и редактируй. Меня интересует лишь алгоритм neoncube. Именно логика. Прошу сделать мне логическую цепочку его работы))) Edited December 7, 2017 by Graf Quote Share this post Link to post Share on other sites
WVWMK 121 Report post Posted December 7, 2017 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(где * название патча), скачали - разархивировали, добавили строчку в наш локальный файл с версиями о новой версии(насколько я помню он пишет там все файлы по очереди) и начинаем скачивать новый файл. 1 Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
Graf 214 Report post Posted December 7, 2017 Спасибо. Так понятнее Quote Share this post Link to post Share on other sites
Graf 214 Report post Posted December 8, 2017 (edited) Смог все реализовать. Теперь не понимаю, как правильно label вставить и progressbar, чтобы показывалось "Обновление найдено", "Обновления загружаются", "Обновление завершено". Помогите пожалуйста)) Edited December 8, 2017 by Graf Quote Share this post Link to post Share on other sites
quad 17 Report post Posted December 8, 2017 5 hours ago, Graf said: Смог все реализовать. Теперь не понимаю, как правильно label вставить и progressbar, чтобы показывалось "Обновление найдено", "Обновления загружаются", "Обновление завершено". Помогите пожалуйста)) Почитайте о multithreading. Вам в патчере без этого не обойтись. Quote Share this post Link to post Share on other sites
WVWMK 121 Report post Posted December 8, 2017 5 часов назад, Graf сказал: Смог все реализовать. Теперь не понимаю, как правильно label вставить и progressbar, чтобы показывалось "Обновление найдено", "Обновления загружаются", "Обновление завершено". Помогите пожалуйста)) Используйте потоки и делегаты. 1 Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
Graf 214 Report post Posted December 8, 2017 Все работает. Всем большое спасибо) Quote Share this post Link to post Share on other sites