# HG changeset patch
# User moel.mich
# Date 1342541459 0
# Node ID 25ef2c489ce817aa16a8949fdd99ddd842566dd8
# Parent  daa9590e1beed69c4bf109f7272e7a9e8bb3f153
Attempt at fixing Issue 253 without breaking Issue 159 once more.

diff -r daa9590e1bee -r 25ef2c489ce8 Hardware/Ring0.cs
--- a/Hardware/Ring0.cs	Sat Jul 14 19:24:04 2012 +0000
+++ b/Hardware/Ring0.cs	Tue Jul 17 16:10:59 2012 +0000
@@ -123,9 +123,8 @@
       driver.Open();
 
       if (!driver.IsOpen) {
-        // driver is not loaded, try to reinstall and open
+        // driver is not loaded, try to install and open
 
-        driver.Delete();
         fileName = GetTempFileName();
         if (fileName != null && ExtractDriver(fileName)) {
           if (driver.Install(fileName)) {
@@ -133,15 +132,28 @@
 
             if (!driver.IsOpen) {
               driver.Delete();
-              report.AppendLine("Status: Opening driver failed");
+              report.AppendLine("Status: Opening driver failed after install");
             }
           } else {
-            report.AppendLine("Status: Installing driver \"" +
-              fileName + "\" failed" +
-              (File.Exists(fileName) ? " and file exists" : ""));
-            report.AppendLine();
-            report.Append("Exception: " + Marshal.GetExceptionForHR(
-              Marshal.GetHRForLastWin32Error()).Message);
+            // install failed, try to delete and reinstall
+            driver.Delete();
+
+            if (driver.Install(fileName)) {
+              driver.Open();
+
+              if (!driver.IsOpen) {
+                driver.Delete();
+                report.AppendLine(
+                  "Status: Opening driver failed after reinstall");
+              }
+            } else {
+              report.AppendLine("Status: Installing driver \"" +
+                fileName + "\" failed" +
+                (File.Exists(fileName) ? " and file exists" : ""));
+              report.AppendLine();
+              report.Append("Exception: " + Marshal.GetExceptionForHR(
+                Marshal.GetHRForLastWin32Error()).Message);
+            }
           }
         } else {
           report.AppendLine("Status: Extracting driver failed");
diff -r daa9590e1bee -r 25ef2c489ce8 Properties/AssemblyVersion.cs
--- a/Properties/AssemblyVersion.cs	Sat Jul 14 19:24:04 2012 +0000
+++ b/Properties/AssemblyVersion.cs	Tue Jul 17 16:10:59 2012 +0000
@@ -10,5 +10,5 @@
 
 using System.Reflection;
 
-[assembly: AssemblyVersion("0.4.0.16")]
-[assembly: AssemblyInformationalVersion("0.4.0.16 Alpha")]
\ No newline at end of file
+[assembly: AssemblyVersion("0.4.0.17")]
+[assembly: AssemblyInformationalVersion("0.4.0.17 Alpha")]
\ No newline at end of file