Я пытаюсь создать собственный установщик для извлечения zip-файла из фиксированного местоположения в предпочтительное для пользователей местоположение, которое я посетил и нашел много источников, все из которых не работают. Проблема с тем, что приложение зависает при распаковке пакета и не обновляет индикатор выполнения до его 100% завершения (на мой взгляд, не очень полезно)
Это то, что у меня есть до сих пор
void Install()
{
using (Ionic.Zip.ZipFile zip = Ionic.Zip.ZipFile.Read(Constants.UpdateZipPath))
{
zip.ExtractProgress += new EventHandler<ExtractProgressEventArgs>(Zip_ExtractProgress);
zip.ExtractAll(installDir, ExtractExistingFileAction.OverwriteSilently);
}
}
void Zip_ExtractProgress(object sender, ExtractProgressEventArgs e)
{
if (e.TotalBytesToTransfer > 0)
{
ProgressBar.Value = Convert.ToInt32(100 * e.BytesTransferred / e.TotalBytesToTransfer);
}
}
Это один из источников, который я нашел, и он не работает С отчетом о проделанной работе
Когда я пытаюсь использовать Task.Factory.StartNew(() => Install());
, я получаю эту ошибку
Exception thrown: 'System.InvalidOperationException' in WindowsBase.dll
Exception thrown: 'System.InvalidOperationException' in DotNetZip.dll
Я использую Ionic.Zip.ZipFile
, и когда я использую его вне основного потока, он не работает.
<ProgressBar Margin="0,20,0,0" Height="20" x:Name="ProgressBar0" Visibility="Hidden"></ProgressBar>
15.09.2020