Put retries on overall extract operation

This commit is contained in:
Eric Reed 2013-04-15 08:00:48 -04:00
parent bc833492f0
commit 8e0722085d

View File

@ -265,18 +265,32 @@ namespace MediaBrowser.Installer
{
// Extract
lblStatus.Text = "Extracting Package...";
try
var retryCount = 0;
var success = false;
while (!success && retryCount < 3)
{
ExtractPackage(archive);
// We're done with it so delete it (this is necessary for update operations)
TryDelete(archive);
}
catch (Exception e)
{
SystemClose("Error Extracting - " + e.GetType().FullName + "\n\n" + e.Message);
// Delete archive even if failed so we don't try again with this one
TryDelete(archive);
return;
try
{
ExtractPackage(archive);
success = true;
// We're done with it so delete it (this is necessary for update operations)
TryDelete(archive);
}
catch (Exception e)
{
if (retryCount < 3)
{
retryCount++;
Thread.Sleep(500);
}
else
{
// Delete archive even if failed so we don't try again with this one
TryDelete(archive);
SystemClose("Error Extracting - " + e.GetType().FullName + "\n\n" + e.Message);
return;
}
}
}
// Create shortcut
@ -496,7 +510,6 @@ namespace MediaBrowser.Installer
{
//Rollback
RollBack(systemDir, backupDir);
TryDelete(archive); // so we don't try again if its an update
throw new ApplicationException(string.Format("Could not extract {0} to {1} after {2} attempts.\n\n{3}", archive, RootPath, retryCount, e.Message));
}
}