diff --git a/MediaBrowser.Installer/MainWindow.xaml.cs b/MediaBrowser.Installer/MainWindow.xaml.cs
index 344a9b769..ee87e9bf2 100644
--- a/MediaBrowser.Installer/MainWindow.xaml.cs
+++ b/MediaBrowser.Installer/MainWindow.xaml.cs
@@ -241,60 +241,85 @@ namespace MediaBrowser.Installer
if (archive == null) return; //we canceled or had an error that was already reported
- // Extract
- lblStatus.Text = "Extracting Package...";
- try
+ if (Path.GetExtension(archive) == ".msi")
{
- ExtractPackage(archive);
- // We're done with it so delete it (this is necessary for update operations)
- try
- {
- File.Delete(archive);
- }
- catch (FileNotFoundException)
+
+ // Create directory for our installer log
+ if (!Directory.Exists(RootPath)) Directory.CreateDirectory(RootPath);
+ var logPath = Path.Combine(RootPath, "Logs");
+ if (!Directory.Exists(logPath)) Directory.CreateDirectory(logPath);
+
+ // Run in silent mode and wait for it to finish
+ // First uninstall any previous version
+ lblStatus.Text = "Uninstalling any previous version...";
+ var logfile = Path.Combine(RootPath, "logs", "UnInstall.log");
+ var uninstaller = Process.Start("msiexec", "/x \"" + archive + "\" /quiet /le \"" + logfile + "\"");
+ if (uninstaller != null) uninstaller.WaitForExit();
+ // And now installer
+ lblStatus.Text = "Installing " + FriendlyName;
+ logfile = Path.Combine(RootPath, "logs", "Install.log");
+ var installer = Process.Start(archive, "/quiet /le \""+logfile+"\"");
+ installer.WaitForExit(); // let this throw if there is a problem
+ }
+ else
+ {
+ // Extract
+ lblStatus.Text = "Extracting Package...";
+ try
{
+ ExtractPackage(archive);
+ // We're done with it so delete it (this is necessary for update operations)
+ try
+ {
+ File.Delete(archive);
+ }
+ catch (FileNotFoundException)
+ {
+ }
+ catch (Exception e)
+ {
+ SystemClose("Error Removing Archive - " + e.GetType().FullName + "\n\n" + e.Message);
+ return;
+ }
}
catch (Exception e)
{
- SystemClose("Error Removing Archive - " + e.GetType().FullName + "\n\n" + e.Message);
+ SystemClose("Error Extracting - " + e.GetType().FullName + "\n\n" + e.Message);
return;
}
- }
- catch (Exception e)
- {
- SystemClose("Error Extracting - " + e.GetType().FullName + "\n\n" + e.Message);
- return;
- }
- // Create shortcut
- lblStatus.Text = "Creating Shortcuts...";
- var fullPath = Path.Combine(RootPath, "System", TargetExe);
- try
- {
- CreateShortcuts(fullPath);
- }
- catch (Exception e)
- {
- SystemClose("Error Creating Shortcut - "+e.GetType().FullName+"\n\n"+e.Message);
- return;
- }
-
- // Install Pismo
- if (InstallPismo)
- {
- lblStatus.Text = "Installing ISO Support...";
+ // Create shortcut
+ lblStatus.Text = "Creating Shortcuts...";
+ var fullPath = Path.Combine(RootPath, "System", TargetExe);
try
{
- PismoInstall();
+ CreateShortcuts(fullPath);
}
catch (Exception e)
{
- SystemClose("Error Installing ISO support - "+e.GetType().FullName+"\n\n"+e.Message);
+ SystemClose("Error Creating Shortcut - "+e.GetType().FullName+"\n\n"+e.Message);
+ return;
}
- }
- // Now delete the pismo install files
- Directory.Delete(Path.Combine(RootPath, "Pismo"), true);
+ // Install Pismo
+ if (InstallPismo)
+ {
+ lblStatus.Text = "Installing ISO Support...";
+ try
+ {
+ PismoInstall();
+ }
+ catch (Exception e)
+ {
+ SystemClose("Error Installing ISO support - "+e.GetType().FullName+"\n\n"+e.Message);
+ }
+ }
+
+ // Now delete the pismo install files
+ Directory.Delete(Path.Combine(RootPath, "Pismo"), true);
+
+
+ }
// And run
lblStatus.Text = string.Format("Starting {0}...", FriendlyName);
diff --git a/MediaBrowser.Installer/MediaBrowser.Installer.csproj b/MediaBrowser.Installer/MediaBrowser.Installer.csproj
index 7f21f1d78..fee14ee9b 100644
--- a/MediaBrowser.Installer/MediaBrowser.Installer.csproj
+++ b/MediaBrowser.Installer/MediaBrowser.Installer.csproj
@@ -31,7 +31,7 @@
Media Browser Team
Media Browser
false
- 58
+ 64
0.1.1.%2a
false
true