Browse Source

Add rollback capability if update extraction fails

Eric Reed 12 years ago
parent
commit
236b79cc8a
1 changed files with 8 additions and 10 deletions
  1. 8 10
      MediaBrowser.Installer/MainWindow.xaml.cs

+ 8 - 10
MediaBrowser.Installer/MainWindow.xaml.cs

@@ -241,7 +241,6 @@ namespace MediaBrowser.Installer
                 }
                 catch (Exception e)
                 {
-
                     SystemClose("Error Removing Archive - " + e.GetType().FullName + "\n\n" + e.Message);
                     return;
                 }
@@ -399,17 +398,12 @@ namespace MediaBrowser.Installer
         protected void ExtractPackage(string archive)
         {
             // Delete old content of system
-            var systemDir = Path.Combine(RootPath, "system");
+            var systemDir = Path.Combine(RootPath, "System");
+            var backupDir = Path.Combine(RootPath, "System.old");
             if (Directory.Exists(systemDir))
             {
-                try
-                {
-                    Directory.Delete(systemDir, true);
-                }
-                catch
-                {
-                    // we tried...
-                }
+                if (Directory.Exists(backupDir)) Directory.Delete(backupDir,true);
+                Directory.Move(systemDir, backupDir);
             }
 
             // And extract
@@ -437,6 +431,10 @@ namespace MediaBrowser.Installer
                     }
                     else
                     {
+                        //Rollback
+                        if (Directory.Exists(systemDir)) Directory.Delete(systemDir);
+                        Directory.Move(backupDir, systemDir);
+                        File.Delete(archive); // so we don't try again if its an update
                         throw;
                     }
                 }