瀏覽代碼

Better error messages on extract failures

Eric Reed 12 年之前
父節點
當前提交
078e813d25
共有 1 個文件被更改,包括 21 次插入5 次删除
  1. 21 5
      MediaBrowser.Installer/MainWindow.xaml.cs

+ 21 - 5
MediaBrowser.Installer/MainWindow.xaml.cs

@@ -449,8 +449,24 @@ namespace MediaBrowser.Installer
             var backupDir = Path.Combine(RootPath, "System.old");
             if (Directory.Exists(systemDir))
             {
-                if (Directory.Exists(backupDir)) Directory.Delete(backupDir,true);
-                Directory.Move(systemDir, backupDir);
+                try
+                {
+                    if (Directory.Exists(backupDir)) Directory.Delete(backupDir,true);
+
+                }
+                catch (Exception e)
+                {
+                    throw new ApplicationException("Could not delete previous backup directory.\n\n"+e.Message);
+                }
+
+                try
+                {
+                    Directory.Move(systemDir, backupDir);
+                }
+                catch (Exception e)
+                {
+                    throw new ApplicationException("Could not move system directory to backup.\n\n"+e.Message);
+                }
             }
 
             // And extract
@@ -469,7 +485,7 @@ namespace MediaBrowser.Installer
                         }
                     }
                 }
-                catch
+                catch (Exception e)
                 {
                     if (retryCount < 3)
                     {
@@ -480,8 +496,8 @@ namespace MediaBrowser.Installer
                     {
                         //Rollback
                         RollBack(systemDir, backupDir);
-                        File.Delete(archive); // so we don't try again if its an update
-                        throw;
+                        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));
                     }
                 }
             }