Спасибо за ответыПосмотреть вложение 48302
- ПатчКод:DoVersionCheck()
- КлиентКод:DoFullCheck()
Код:if (!webClient.IsBusy && !updaterWorker.IsBusy) { DoFullCheck(); // или DoVersionCheck }
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Спасибо за ответыПосмотреть вложение 48302
- ПатчКод:DoVersionCheck()
- КлиентКод:DoFullCheck()
Код:if (!webClient.IsBusy && !updaterWorker.IsBusy) { DoFullCheck(); // или DoVersionCheck }
Для добавления юзерагента:Спасибо за ответы
webRequest = (HttpWebRequest)WebRequest.Create(PatchHost + fileDataArray[2]);
webRequest.UserAgent = "MOYUPDATER";
webClient.Headers.Add(HttpRequestHeader.UserAgent, "MOYUPDATER");
WindowState = FormWindowState.Minimized;
if (WindowState == FormWindowState.Minimized)
{
this.Hide();
NotifyIcon.Visible = true;
NotifyIcon.ShowBalloonTip(3000);
NotifyIcon.Text = "MOYUPDATER";
}
this.Show();
WindowState = FormWindowState.Normal;
NotifyIcon.Dispose();
Там async/потоки нужно дописывать для нормальной работыу кого как по скорости с этим апдейтером? залил на ftp (hetzner), канал 10 гбит, при обычном wget скорость отличная, мои домашние 500 мбит на фулл используются, через апдейтер - скорость 600 кбайт/сек)
это не при чем )Там async/потоки нужно дописывать для нормальной работы
Измени эту строку где начало byte[] downBufferу кого как по скорости с этим апдейтером? залил на ftp (hetzner), канал 10 гбит, при обычном wget скорость отличная, мои домашние 500 мбит на фулл используются, через апдейтер - скорость 600 кбайт/сек)
byte[] downBuffer = new byte[65536];
найди строку SpeedLable.Text = и замени ее на это, будет в МБоу ты волшебник)
Посмотреть вложение 48649
SpeedLable.Text = (Convert.ToDouble(fileStream.Length) / 1024 / 1024 / sw.Elapsed.TotalSeconds).ToString("0.00") + " MB/s";
да, стало определенно лучше, но еще над дизайном шаманить и шаманить)найди строку SpeedLable.Text = и замени ее на это, будет в МБ
Код:SpeedLable.Text = (Convert.ToDouble(fileStream.Length) / 1024 / 1024 / sw.Elapsed.TotalSeconds).ToString("0.00") + " MB/s";
Там это всё равно нужно ) Скачка и распаковка идёт в одном потоке там )это не при чем )
Измени эту строку где начало byte[] downBuffer
Код:byte[] downBuffer = new byte[65536];
Я бы сказал последовательно, скачал- распаковал- скачал- распаковал)Там это всё равно нужно ) Скачка и распаковка идёт в одном потоке там )
patch.ini вся инфа вылетает в 1 строку, неприятно)там потоки добавить нужно)
Ты что пакуешь 10-15 терабайт?а ничего себе он файлы пакует около 5 часов патч геном
Да тут еще зависит степень сжатия, там она максимальная. Понятно что если просто на лайте запаковать, почти без сжатия оно паканет быстроТы что пакуешь 10-15 терабайт?
Видимо "билдер" достаточно тугой, сделан абы как, никто не задумывался о том чтоб сделать по человечески, или он делался ещё в эпоху когда пентиумы существовали.
Для примера, тестировщик моим аптейдером делает патч, 22.3 Гб клиент (классик кажется) запаковался за 16 минут, на проце Intel® Xeon® E5-2670 v2 10 ядер / 20 потоков, LGA2011 2.50GHz.
i7 10870, клиент около 20гб, загрузка процессом 14% причем не 1 поток, а раскинуто по всем.Ты что пакуешь 10-15 терабайт?
Видимо "билдер" достаточно тугой, сделан абы как, никто не задумывался о том чтоб сделать по человечески, или он делался ещё в эпоху когда пентиумы существовали.
Для примера, тестировщик моим аптейдером делает патч, 22.3 Гб клиент (классик кажется) запаковался за 16 минут, на проце Intel® Xeon® E5-2670 v2 10 ядер / 20 потоков, LGA2011 2.50GHz.
+ 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;
}
}
я просто уже добавил настраиваемые потоки чисто на сжатие, 6 шт хватает чтоб на 80% грузить.. 19гб сжимает до 8. Но не понимаю как у вас оно жмет за 10 мин, когда у меня не меньше часа + у меня тоже nvme.я себе кстати через chatgpt организовал многопоток для билдера патча, i7 10700k + nvme за 10 минут упаковывает 23 гига
Интересно глянуть, где лежит?на с# есть же готовая либа для апдейтера........ там только форму выпилить и можно использовать.
в комплекте: Формы для апдейтера/Код для обновления файлов