string SourcePath = Path.Combine(temp, folderName);
string DestinationPath = unpack;
try
{
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
archive.ExtractToDirectory(temp);
}
MessageBox.Show(
folderName + " successfully downloaded.",
"Download complete!",
MessageBoxButtons.OK,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1,
MessageBoxOptions.DefaultDesktopOnly);
}
finally
{
//Создать идентичное дерево каталогов
foreach (string dirPath in Directory.GetDirectories(SourcePath, "*", SearchOption.AllDirectories))
Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath));
//Скопировать все файлы. И перезаписать(если такие существуют)
foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true);
};
Directory.Delete(temp, true);
Ошибка CS8370 Компонент "оператор range" недоступен в C# 7.3. Используйте версию языка 8.0 или выше.
Ошибка CS0518 Предопределенный тип "System.Range" не определен или не импортирован
Ошибка CS0518 Предопределенный тип "System.Index" не определен или не импортирован
Ошибка CS8370 Компонент "ссылочные типы, допускающие значение NULL" недоступен в C# 7.3. Используйте версию языка 8.0 или выше.
foreach (var entry in archive.Entries.Where(e => e.FullName.StartsWith(folder.FullName)))
Обязательный атрибут чтобы работал OpenFileDialog - в коде используется.
Так оно работает, но если я делаю Application.Run прямо из async Task - то я висну на if (ofd.ShowDialog() == DialogResult.OK) с исключением "Текущий поток должен быть задан как поток однопоточного контейнера (STA), чтобы вызовы OLE стали возможны."Когда это один файл - как раз обновление и отрабатывает без вопросов, а вот когда оттуда стартует форма и диалог - начинается беда. По этому я обновления и вынес в отдельный файл, только запустить его не могу...
А! Кажется понял. [STAThread] действительно там не нужен. Но один фиг - не знаю как его стартануть.