• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.
Иконка ресурса

Исходники updater/launcher и Patch Builder 2022-05-13

Нет прав для скачивания
  • Автор темы Автор темы rosylik
  • Дата начала Дата начала

Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Спасибо за ответы
Для добавления юзерагента:
Добавляем после
Код:
webRequest = (HttpWebRequest)WebRequest.Create(PatchHost + fileDataArray[2]);
webRequest.UserAgent = "MOYUPDATER";
Добавляем в DownloadFile
Код:
webClient.Headers.Add(HttpRequestHeader.UserAgent, "MOYUPDATER");
Для сворачивания апдейтера "кнопка свернуть"
Код:
WindowState = FormWindowState.Minimized;
Добавляем NotifyIcon на форму не забываем добавить иконку обязательно.

Добавляем событии для главной формы Resize
Код:
            if (WindowState == FormWindowState.Minimized)
            {
                this.Hide();
                NotifyIcon.Visible = true;
                NotifyIcon.ShowBalloonTip(3000);
                NotifyIcon.Text = "MOYUPDATER";
            }
Добавляем событие для развёртывание из трея для Notifyicon будь то клик или дабл клик:
Код:
            this.Show();
            WindowState = FormWindowState.Normal;
Удаляем залипание системного трея после закрытия формы в кнопку close
Код:
NotifyIcon.Dispose();
Для добавления контекстного меню к NotifyIcon добавляем на форму ContextMenuStrip
Указываем ContextMenuStrip для NotifyIcon:
1678645102566.webp
 
у кого как по скорости с этим апдейтером? залил на ftp (hetzner), канал 10 гбит, при обычном wget скорость отличная, мои домашние 500 мбит на фулл используются, через апдейтер - скорость 600 кбайт/сек)
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
у кого как по скорости с этим апдейтером? залил на ftp (hetzner), канал 10 гбит, при обычном wget скорость отличная, мои домашние 500 мбит на фулл используются, через апдейтер - скорость 600 кбайт/сек)
Там async/потоки нужно дописывать для нормальной работы
 
Там async/потоки нужно дописывать для нормальной работы
это не при чем )
у кого как по скорости с этим апдейтером? залил на ftp (hetzner), канал 10 гбит, при обычном wget скорость отличная, мои домашние 500 мбит на фулл используются, через апдейтер - скорость 600 кбайт/сек)
Измени эту строку где начало byte[] downBuffer
Код:
byte[] downBuffer = new byte[65536];
 
найди строку SpeedLable.Text = и замени ее на это, будет в МБ
Код:
 SpeedLable.Text = (Convert.ToDouble(fileStream.Length) / 1024 / 1024 / sw.Elapsed.TotalSeconds).ToString("0.00") + " MB/s";
да, стало определенно лучше, но еще над дизайном шаманить и шаманить)
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Там это всё равно нужно ) Скачка и распаковка идёт в одном потоке там )
Я бы сказал последовательно, скачал- распаковал- скачал- распаковал)
Ну кому надо могут переписать логику
 
а ничего себе он файлы пакует около 5 часов патч геном :Golddigging:
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
а ничего себе он файлы пакует около 5 часов патч геном :Golddigging:
Ты что пакуешь 10-15 терабайт?
Видимо "билдер" достаточно тугой, сделан абы как, никто не задумывался о том чтоб сделать по человечески, ?или он делался ещё в эпоху когда пентиумы существовали?.

Для примера, тестировщик моим аптейдером делает патч, 22.3 Гб клиент (классик кажется) запаковался за 16 минут, на проце Intel® Xeon® E5-2670 v2 10 ядер / 20 потоков, LGA2011 2.50GHz.
 
Ты что пакуешь 10-15 терабайт?
Видимо "билдер" достаточно тугой, сделан абы как, никто не задумывался о том чтоб сделать по человечески, ?или он делался ещё в эпоху когда пентиумы существовали?.

Для примера, тестировщик моим аптейдером делает патч, 22.3 Гб клиент (классик кажется) запаковался за 16 минут, на проце Intel® Xeon® E5-2670 v2 10 ядер / 20 потоков, LGA2011 2.50GHz.
Да тут еще зависит степень сжатия, там она максимальная. Понятно что если просто на лайте запаковать, почти без сжатия оно паканет быстро

Пс выкладывай исходы))
Это шара, что от нее хотеть и ждать
 
Ты что пакуешь 10-15 терабайт?
Видимо "билдер" достаточно тугой, сделан абы как, никто не задумывался о том чтоб сделать по человечески, ?или он делался ещё в эпоху когда пентиумы существовали?.

Для примера, тестировщик моим аптейдером делает патч, 22.3 Гб клиент (классик кажется) запаковался за 16 минут, на проце Intel® Xeon® E5-2670 v2 10 ядер / 20 потоков, LGA2011 2.50GHz.
i7 10870, клиент около 20гб, загрузка процессом 14% причем не 1 поток, а раскинуто по всем.

+ N и в чтении тоже добавить. Или сделать себе патч эдитор )
Код:
private void ThreadFunction(string fileName, string destName)
        {
            /* do some work in a thread */
            CompressFileLZMA(fileName, destName);
        }
        private void patchWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            var worker = sender as BackgroundWorker;
            string inputPath = inputFolderTb.Text.TrimEnd('\\');
            string outputPath = outputFolderTb.Text.TrimEnd('\\');
            // Clear old files if any inside output
            clearDirectory(outputPath);
            var patchFileWriter = new StreamWriter(outputPath + @"\patch.ini");
            try
            {
                var fileList = this.GetFiles(inputPath);
                int nThreadCount = 0;
                foreach (string fileName in fileList)
                {
                    nThreadCount++;
                }
                Thread[] workerThreads = new Thread[nThreadCount];
                int nThreadNumb = 0;
                foreach (string fileName in fileList)
                {
                    if (worker.CancellationPending == true)
                    {
                        e.Cancel = true;
                        break;
                    }
                    var hash = GetFileMD5Hash(fileName);
                    var relativePath = fileName.Replace(inputPath, "");
                    var remotePath = relativePath.Replace(@"\", "/") + ".7z";
                    patchFileWriter.Write(hash + "|" + relativePath + "|" + remotePath + ";\n");
                    _ = Invoke((MethodInvoker)delegate
                    {
                        outputLabel.Text = "Processing " + relativePath.TrimStart('\\');
                    });
                    workerThreads[nThreadNumb] = new Thread(() => ThreadFunction(fileName, fileName.Replace(inputPath, outputPath) + ".7z"));
                    workerThreads[nThreadNumb].Start();
                    nThreadNumb++;
                }
                patchFileWriter.Close();
            }
            catch (Exception ex)
            {
                patchFileWriter.Close();
                throw ex;
            }
        }

Оно? Я просто плохой программист. Грузит цп на все 100 и оперативу сжирает :Hot:
 
на с# есть же готовая либа для апдейтера........ там только форму выпилить и можно использовать.
в комплекте: Формы для апдейтера/Код для обновления файлов
 
я себе кстати через chatgpt организовал многопоток для билдера патча, i7 10700k + nvme за 10 минут упаковывает 23 гига
 
я себе кстати через chatgpt организовал многопоток для билдера патча, i7 10700k + nvme за 10 минут упаковывает 23 гига
я просто уже добавил настраиваемые потоки чисто на сжатие, 6 шт хватает чтоб на 80% грузить.. 19гб сжимает до 8. Но не понимаю как у вас оно жмет за 10 мин, когда у меня не меньше часа + у меня тоже nvme.
на с# есть же готовая либа для апдейтера........ там только форму выпилить и можно использовать.
в комплекте: Формы для апдейтера/Код для обновления файлов
Интересно глянуть, где лежит?
 
Назад
Сверху Снизу