From 8e0722085d55b96ffc9aad330f63d1869835478c Mon Sep 17 00:00:00 2001 From: Eric Reed Date: Mon, 15 Apr 2013 08:00:48 -0400 Subject: [PATCH] Put retries on overall extract operation --- MediaBrowser.Installer/MainWindow.xaml.cs | 37 +++++++++++++++-------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/MediaBrowser.Installer/MainWindow.xaml.cs b/MediaBrowser.Installer/MainWindow.xaml.cs index 16cde95925..6e4ad1258d 100644 --- a/MediaBrowser.Installer/MainWindow.xaml.cs +++ b/MediaBrowser.Installer/MainWindow.xaml.cs @@ -265,18 +265,32 @@ namespace MediaBrowser.Installer { // Extract lblStatus.Text = "Extracting Package..."; - try - { - ExtractPackage(archive); - // We're done with it so delete it (this is necessary for update operations) - TryDelete(archive); - } - catch (Exception e) + var retryCount = 0; + var success = false; + while (!success && retryCount < 3) { - 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)); } }