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