Browse Source

Move installer projects to new repo

Eric Reed 12 years ago
parent
commit
ef0ed773b8
40 changed files with 0 additions and 3068 deletions
  1. 0 10
      MediaBrowser.Installer/App.config
  2. 0 8
      MediaBrowser.Installer/App.xaml
  3. 0 11
      MediaBrowser.Installer/App.xaml.cs
  4. 0 39
      MediaBrowser.Installer/Code/DownloadAnimation.xaml
  5. 0 68
      MediaBrowser.Installer/Code/DownloadAnimation.xaml.cs
  6. BIN
      MediaBrowser.Installer/Code/Images/computer_256.png
  7. BIN
      MediaBrowser.Installer/Code/Images/internet-globe.jpg
  8. BIN
      MediaBrowser.Installer/Code/Images/mb3logo800.png
  9. 0 43
      MediaBrowser.Installer/Code/ModelExtensions.cs
  10. 0 119
      MediaBrowser.Installer/Code/PackageInfo.cs
  11. 0 21
      MediaBrowser.Installer/Code/PackageType.cs
  12. 0 21
      MediaBrowser.Installer/Code/PackageVersionClass.cs
  13. 0 73
      MediaBrowser.Installer/Code/PackageVersionInfo.cs
  14. 0 277
      MediaBrowser.Installer/Code/ShellLinkNative.cs
  15. 0 348
      MediaBrowser.Installer/Code/ShellShortcut.cs
  16. BIN
      MediaBrowser.Installer/Icon.ico
  17. 0 58
      MediaBrowser.Installer/MainWindow.xaml
  18. 0 642
      MediaBrowser.Installer/MainWindow.xaml.cs
  19. 0 214
      MediaBrowser.Installer/MediaBrowser.Installer.csproj
  20. BIN
      MediaBrowser.Installer/MediaBrowser.Installer_1_TemporaryKey.pfx
  21. BIN
      MediaBrowser.Installer/MediaBrowser.Installer_TemporaryKey.pfx
  22. 0 50
      MediaBrowser.Installer/Properties/AssemblyInfo.cs
  23. 0 71
      MediaBrowser.Installer/Properties/Resources.Designer.cs
  24. 0 117
      MediaBrowser.Installer/Properties/Resources.resx
  25. 0 30
      MediaBrowser.Installer/Properties/Settings.Designer.cs
  26. 0 7
      MediaBrowser.Installer/Properties/Settings.settings
  27. 0 52
      MediaBrowser.Installer/Properties/app.manifest
  28. 0 10
      MediaBrowser.Installer/mbt.config
  29. 0 5
      MediaBrowser.Installer/packages.config
  30. 0 6
      MediaBrowser.Uninstaller/App.config
  31. 0 8
      MediaBrowser.Uninstaller/App.xaml
  32. 0 11
      MediaBrowser.Uninstaller/App.xaml.cs
  33. 0 59
      MediaBrowser.Uninstaller/MainWindow.xaml
  34. 0 312
      MediaBrowser.Uninstaller/MainWindow.xaml.cs
  35. 0 110
      MediaBrowser.Uninstaller/MediaBrowser.Uninstaller.csproj
  36. 0 55
      MediaBrowser.Uninstaller/Properties/AssemblyInfo.cs
  37. 0 63
      MediaBrowser.Uninstaller/Properties/Resources.Designer.cs
  38. 0 117
      MediaBrowser.Uninstaller/Properties/Resources.resx
  39. 0 26
      MediaBrowser.Uninstaller/Properties/Settings.Designer.cs
  40. 0 7
      MediaBrowser.Uninstaller/Properties/Settings.settings

+ 0 - 10
MediaBrowser.Installer/App.config

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
-  <appSettings>
-    <add key="product" value="server" />
-    <add key="class" value="Dev" />
-  </appSettings>
-    <startup> 
-        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
-    </startup>
-</configuration>

+ 0 - 8
MediaBrowser.Installer/App.xaml

@@ -1,8 +0,0 @@
-<Application x:Class="MediaBrowser.Installer.App"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             StartupUri="MainWindow.xaml">
-    <Application.Resources>
-         
-    </Application.Resources>
-</Application>

+ 0 - 11
MediaBrowser.Installer/App.xaml.cs

@@ -1,11 +0,0 @@
-using System.Windows;
-
-namespace MediaBrowser.Installer
-{
-    /// <summary>
-    /// Interaction logic for App.xaml
-    /// </summary>
-    public partial class App : Application
-    {
-    }
-}

+ 0 - 39
MediaBrowser.Installer/Code/DownloadAnimation.xaml

@@ -1,39 +0,0 @@
-<UserControl x:Class="MediaBrowser.Installer.Code.DownloadAnimation"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             mc:Ignorable="d" Height="129.167" Width="421.27">
-    <UserControl.Resources>
-        <Style TargetType="Ellipse">
-            <Setter Property="Fill" Value="LightGray" />
-            <Setter Property="Width" Value="8" />
-            <Setter Property="Height" Value="8" />
-        </Style>
-    </UserControl.Resources>
-    <Canvas Height="58" Width="275">
-        <Ellipse Canvas.Left="63" Canvas.Top="23" />
-        <Ellipse Canvas.Left="77" Canvas.Top="23" />
-        <Ellipse Canvas.Left="91" Canvas.Top="23" />
-        <Ellipse Canvas.Left="105" Canvas.Top="23" />
-        <Ellipse Canvas.Left="119" Canvas.Top="23" />
-        <Ellipse Canvas.Left="133" Canvas.Top="23" />
-        <Ellipse Canvas.Left="147" Canvas.Top="23" />
-        <Ellipse Canvas.Left="161" Canvas.Top="23" />
-        <Ellipse Canvas.Left="175" Canvas.Top="23" />
-        <Ellipse Canvas.Left="189" Canvas.Top="23" />
-        <Ellipse Canvas.Left="203" Canvas.Top="23" />
-        <Ellipse Canvas.Left="217" Canvas.Top="23" />
-        <Canvas Canvas.Left="17" Canvas.Top="19" 
-		Name="SlidingCanvas" Height="17" Width="46">
-            <Ellipse Canvas.Left="4" Canvas.Top="4" Fill="Orange" />
-            <Ellipse Canvas.Left="18" Canvas.Top="4" Fill="Orange" />
-            <Ellipse Canvas.Left="32" Canvas.Top="4" Fill="Orange" />
-        </Canvas>
-        <Image Canvas.Left="-42" Canvas.Top="-19" 
-		Source="Images\internet-globe.jpg" Stretch="None" Height="94" Width="100" RenderTransformOrigin="0.341,0.403" />
-        <Image Canvas.Left="231" Canvas.Top="-25" 
-		Source="Images\computer_256.png" Height="100" Width="100" Stretch="None" />
-    </Canvas>
-            
-</UserControl>

+ 0 - 68
MediaBrowser.Installer/Code/DownloadAnimation.xaml.cs

@@ -1,68 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-using System.Windows.Threading;
-
-namespace MediaBrowser.Installer.Code
-{
-    /// <summary>
-    /// Interaction logic for DownloadAnimation.xaml
-    /// </summary>
-    public partial class DownloadAnimation : UserControl
-    {
-        private int _i;
-        private readonly double _startPos;
-        private readonly DispatcherTimer _timer;
-
-        public DownloadAnimation()
-        {
-            _i = 0;
-            InitializeComponent();
-
-            // Store start position of sliding canvas
-            _startPos = Canvas.GetLeft(SlidingCanvas);
-
-            // Create animation timer
-            _timer = new DispatcherTimer {Interval = TimeSpan.FromMilliseconds(100)};
-            _timer.Tick += TimerTick;
-        }
-
-        public void StartAnimation()
-        {
-            _timer.Start();
-        }
-
-        public void StopAnimation()
-        {
-            _timer.Stop();
-        }
-
-        private void TimerTick(object sender, EventArgs e)
-        {
-            _i++;
-
-            if (_i < 16)
-            {
-                // Move SlidingCanvas containing the three colored dots 14 units to the right
-                Canvas.SetLeft(SlidingCanvas, Canvas.GetLeft(SlidingCanvas) + 14);
-            }
-            else
-            {
-                // Move SlidingCanvas back to its starting position and reset counter
-                _i = 0;
-                Canvas.SetLeft(SlidingCanvas, _startPos);
-            }
-        }
-    }
-}

BIN
MediaBrowser.Installer/Code/Images/computer_256.png


BIN
MediaBrowser.Installer/Code/Images/internet-globe.jpg


BIN
MediaBrowser.Installer/Code/Images/mb3logo800.png


+ 0 - 43
MediaBrowser.Installer/Code/ModelExtensions.cs

@@ -1,43 +0,0 @@
-
-using System.Collections.Generic;
-
-namespace MediaBrowser.Installer.Code
-{
-    /// <summary>
-    /// Class ModelExtensions
-    /// </summary>
-    static class ModelExtensions
-    {
-        /// <summary>
-        /// Values the or default.
-        /// </summary>
-        /// <param name="str">The STR.</param>
-        /// <param name="def">The def.</param>
-        /// <returns>System.String.</returns>
-        public static string ValueOrDefault(this string str, string def = "")
-        {
-            return string.IsNullOrEmpty(str) ? def : str;
-        }
-
-        /// <summary>
-        /// Helper method for Dictionaries since they throw on not-found keys
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <typeparam name="U"></typeparam>
-        /// <param name="dictionary">The dictionary.</param>
-        /// <param name="key">The key.</param>
-        /// <param name="defaultValue">The default value.</param>
-        /// <returns>``1.</returns>
-        public static U GetValueOrDefault<T, U>(this Dictionary<T, U> dictionary, T key, U defaultValue)
-        {
-            U val;
-            if (!dictionary.TryGetValue(key, out val))
-            {
-                val = defaultValue;
-            }
-            return val;
-
-        }
-
-    }
-}

+ 0 - 119
MediaBrowser.Installer/Code/PackageInfo.cs

@@ -1,119 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace MediaBrowser.Installer.Code
-{
-    /// <summary>
-    /// Class PackageInfo
-    /// </summary>
-    public class PackageInfo
-    {
-        /// <summary>
-        /// Gets or sets the name.
-        /// </summary>
-        /// <value>The name.</value>
-        public string name { get; set; }
-
-        /// <summary>
-        /// Gets or sets the short description.
-        /// </summary>
-        /// <value>The short description.</value>
-        public string shortDescription { get; set; }
-
-        /// <summary>
-        /// Gets or sets the overview.
-        /// </summary>
-        /// <value>The overview.</value>
-        public string overview { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance is premium.
-        /// </summary>
-        /// <value><c>true</c> if this instance is premium; otherwise, <c>false</c>.</value>
-        public bool isPremium { get; set; }
-
-        /// <summary>
-        /// Gets or sets the rich desc URL.
-        /// </summary>
-        /// <value>The rich desc URL.</value>
-        public string richDescUrl { get; set; }
-
-        /// <summary>
-        /// Gets or sets the thumb image.
-        /// </summary>
-        /// <value>The thumb image.</value>
-        public string thumbImage { get; set; }
-
-        /// <summary>
-        /// Gets or sets the preview image.
-        /// </summary>
-        /// <value>The preview image.</value>
-        public string previewImage { get; set; }
-
-        /// <summary>
-        /// Gets or sets the type.
-        /// </summary>
-        /// <value>The type.</value>
-        public PackageType type { get; set; }
-
-        /// <summary>
-        /// Gets or sets the target filename.
-        /// </summary>
-        /// <value>The target filename.</value>
-        public string targetFilename { get; set; }
-
-        /// <summary>
-        /// Gets or sets the owner.
-        /// </summary>
-        /// <value>The owner.</value>
-        public string owner { get; set; }
-
-        /// <summary>
-        /// Gets or sets the category.
-        /// </summary>
-        /// <value>The category.</value>
-        public string category { get; set; }
-
-        /// <summary>
-        /// Gets or sets the catalog tile color.
-        /// </summary>
-        /// <value>The owner.</value>
-        public string tileColor { get; set; }
-
-        /// <summary>
-        /// Gets or sets the feature id of this package (if premium).
-        /// </summary>
-        /// <value>The feature id.</value>
-        public string featureId { get; set; }
-
-        /// <summary>
-        /// Gets or sets the registration info for this package (if premium).
-        /// </summary>
-        /// <value>The registration info.</value>
-        public string regInfo { get; set; }
-
-        /// <summary>
-        /// Gets or sets the price for this package (if premium).
-        /// </summary>
-        /// <value>The price.</value>
-        public float price { get; set; }
-
-        /// <summary>
-        /// Gets or sets whether or not this package is registered.
-        /// </summary>
-        /// <value>True if registered.</value>
-        public bool isRegistered { get; set; }
-
-        /// <summary>
-        /// Gets or sets the expiration date for this package.
-        /// </summary>
-        /// <value>Expiration Date.</value>
-        public DateTime expDate { get; set; }
-
-        /// <summary>
-        /// Gets or sets the versions.
-        /// </summary>
-        /// <value>The versions.</value>
-        public List<PackageVersionInfo> versions { get; set; }
-    }
-}

+ 0 - 21
MediaBrowser.Installer/Code/PackageType.cs

@@ -1,21 +0,0 @@
-namespace MediaBrowser.Installer.Code
-{
-    /// <summary>
-    /// Enum PackageType
-    /// </summary>
-    public enum PackageType
-    {
-        /// <summary>
-        /// All
-        /// </summary>
-        All,
-        /// <summary>
-        /// The system
-        /// </summary>
-        System,
-        /// <summary>
-        /// The user installed
-        /// </summary>
-        UserInstalled
-    }
-}

+ 0 - 21
MediaBrowser.Installer/Code/PackageVersionClass.cs

@@ -1,21 +0,0 @@
-namespace MediaBrowser.Installer.Code
-{
-    /// <summary>
-    /// Enum PackageVersionClass
-    /// </summary>
-    public enum PackageVersionClass
-    {
-        /// <summary>
-        /// The release
-        /// </summary>
-        Release = 0,
-        /// <summary>
-        /// The beta
-        /// </summary>
-        Beta = 1,
-        /// <summary>
-        /// The dev
-        /// </summary>
-        Dev = 2
-    }
-}

+ 0 - 73
MediaBrowser.Installer/Code/PackageVersionInfo.cs

@@ -1,73 +0,0 @@
-using System;
-using System.Runtime.Serialization;
-
-namespace MediaBrowser.Installer.Code
-{
-    /// <summary>
-    /// Class PackageVersionInfo
-    /// </summary>
-    public class PackageVersionInfo
-    {
-        /// <summary>
-        /// Gets or sets the name.
-        /// </summary>
-        /// <value>The name.</value>
-        public string name { get; set; }
-
-        /// <summary>
-        /// Gets or sets the version STR.
-        /// </summary>
-        /// <value>The version STR.</value>
-        public string versionStr { get; set; }
-
-        /// <summary>
-        /// The _version
-        /// </summary>
-        private Version _version;
-        /// <summary>
-        /// Gets or sets the version.
-        /// Had to make this an interpreted property since Protobuf can't handle Version
-        /// </summary>
-        /// <value>The version.</value>
-        public Version version
-        {
-            get { return _version ?? (_version = new Version(versionStr.ValueOrDefault("0.0.0.1"))); }
-        }
-
-        /// <summary>
-        /// Gets or sets the classification.
-        /// </summary>
-        /// <value>The classification.</value>
-        public PackageVersionClass classification { get; set; }
-
-        /// <summary>
-        /// Gets or sets the description.
-        /// </summary>
-        /// <value>The description.</value>
-        public string description { get; set; }
-
-        /// <summary>
-        /// Gets or sets the required version STR.
-        /// </summary>
-        /// <value>The required version STR.</value>
-        public string requiredVersionStr { get; set; }
-
-        /// <summary>
-        /// Gets or sets the source URL.
-        /// </summary>
-        /// <value>The source URL.</value>
-        public string sourceUrl { get; set; }
-
-        /// <summary>
-        /// Gets or sets the source URL.
-        /// </summary>
-        /// <value>The source URL.</value>
-        public Guid checksum { get; set; }
-
-        /// <summary>
-        /// Gets or sets the target filename.
-        /// </summary>
-        /// <value>The target filename.</value>
-        public string targetFilename { get; set; }
-    }
-}

+ 0 - 277
MediaBrowser.Installer/Code/ShellLinkNative.cs

@@ -1,277 +0,0 @@
-/**************************************************************************
-*
-* Filename:     ShellLinkNative.cs
-* Author:       Mattias Sjögren (mattias@mvps.org)
-*               http://www.msjogren.net/dotnet/
-*
-* Description:  Defines the native types used to manipulate shell shortcuts.
-*
-* Public types: enum SLR_FLAGS
-*               enum SLGP_FLAGS
-*               struct WIN32_FIND_DATA[A|W]
-*               interface IPersistFile
-*               interface IShellLink[A|W]
-*               class ShellLink
-*
-*
-* Copyright ©2001-2002, Mattias Sjögren
-* 
-**************************************************************************/
-
-using System;
-using System.Runtime.InteropServices;
-using System.Text;
-using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
-
-namespace MediaBrowser.Installer.Code
-{
-  // IShellLink.Resolve fFlags
-  [Flags()]
-  public enum SLR_FLAGS
-  {
-    SLR_NO_UI = 0x1,
-    SLR_ANY_MATCH = 0x2,
-    SLR_UPDATE = 0x4,
-    SLR_NOUPDATE = 0x8,
-    SLR_NOSEARCH = 0x10,
-    SLR_NOTRACK = 0x20,
-    SLR_NOLINKINFO = 0x40,
-    SLR_INVOKE_MSI = 0x80
-  }
-
-  // IShellLink.GetPath fFlags
-  [Flags()]
-  public enum SLGP_FLAGS
-  {
-    SLGP_SHORTPATH = 0x1,
-    SLGP_UNCPRIORITY = 0x2,
-    SLGP_RAWPATH = 0x4
-  }
-
-  [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
-  public struct WIN32_FIND_DATAA
-  {
-    public int dwFileAttributes;
-    public FILETIME ftCreationTime;
-    public FILETIME ftLastAccessTime;
-    public FILETIME ftLastWriteTime;
-    public int nFileSizeHigh;
-    public int nFileSizeLow;
-    public int dwReserved0;
-    public int dwReserved1;
-    [MarshalAs(UnmanagedType.ByValTStr, SizeConst=MAX_PATH)]
-    public string cFileName;
-    [MarshalAs(UnmanagedType.ByValTStr, SizeConst=14)]
-    public string cAlternateFileName;
-    private const int MAX_PATH = 260;
-  }
-
-  [StructLayoutAttribute(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
-  public struct WIN32_FIND_DATAW
-  {
-    public int dwFileAttributes;
-    public FILETIME ftCreationTime;
-    public FILETIME ftLastAccessTime;
-    public FILETIME ftLastWriteTime;
-    public int nFileSizeHigh;
-    public int nFileSizeLow;
-    public int dwReserved0;
-    public int dwReserved1;
-    [MarshalAs(UnmanagedType.ByValTStr, SizeConst=MAX_PATH)]
-    public string cFileName;
-    [MarshalAs(UnmanagedType.ByValTStr, SizeConst=14)]
-    public string cAlternateFileName;
-    private const int MAX_PATH = 260;
-  }
-
-  [
-    ComImport(),
-    InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
-    Guid("0000010B-0000-0000-C000-000000000046")
-  ]
-  public interface IPersistFile
-  {
-    #region Methods inherited from IPersist
-
-    void GetClassID(
-      out Guid pClassID);
-
-    #endregion
-
-    [PreserveSig()]
-    int IsDirty();
-
-    void Load(
-      [MarshalAs(UnmanagedType.LPWStr)] string pszFileName,
-      int dwMode);
-
-    void Save(
-      [MarshalAs(UnmanagedType.LPWStr)] string pszFileName,
-      [MarshalAs(UnmanagedType.Bool)] bool fRemember);
-
-    void SaveCompleted(
-      [MarshalAs(UnmanagedType.LPWStr)] string pszFileName);
-
-    void GetCurFile(
-      out IntPtr ppszFileName);
-
-  }
-
-  [
-    ComImport(),
-    InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
-    Guid("000214EE-0000-0000-C000-000000000046")
-  ]
-  public interface IShellLinkA
-  {
-    void GetPath(
-      [Out(), MarshalAs(UnmanagedType.LPStr)] StringBuilder pszFile,
-      int cchMaxPath,
-      out WIN32_FIND_DATAA pfd,
-      SLGP_FLAGS fFlags);
-
-    void GetIDList(
-      out IntPtr ppidl);
-
-    void SetIDList(
-      IntPtr pidl);
-
-    void GetDescription(
-      [Out(), MarshalAs(UnmanagedType.LPStr)] StringBuilder pszName,
-      int cchMaxName);
-
-    void SetDescription(
-      [MarshalAs(UnmanagedType.LPStr)] string pszName);
-
-    void GetWorkingDirectory(
-      [Out(), MarshalAs(UnmanagedType.LPStr)] StringBuilder pszDir,
-      int cchMaxPath);
-
-    void SetWorkingDirectory(
-      [MarshalAs(UnmanagedType.LPStr)] string pszDir);
-
-    void GetArguments(
-      [Out(), MarshalAs(UnmanagedType.LPStr)] StringBuilder pszArgs,
-      int cchMaxPath);
-
-    void SetArguments(
-      [MarshalAs(UnmanagedType.LPStr)] string pszArgs);
-
-    void GetHotkey(
-      out short pwHotkey);
-
-    void SetHotkey(
-      short wHotkey);
-
-    void GetShowCmd(
-      out int piShowCmd);
-
-    void SetShowCmd(
-      int iShowCmd);
-
-    void GetIconLocation(
-      [Out(), MarshalAs(UnmanagedType.LPStr)] StringBuilder pszIconPath,
-      int cchIconPath,
-      out int piIcon);
-
-    void SetIconLocation(
-      [MarshalAs(UnmanagedType.LPStr)] string pszIconPath,
-      int iIcon);
-
-    void SetRelativePath(
-      [MarshalAs(UnmanagedType.LPStr)] string pszPathRel,
-      int dwReserved);
-
-    void Resolve(
-      IntPtr hwnd,
-      SLR_FLAGS fFlags);
-
-    void SetPath(
-      [MarshalAs(UnmanagedType.LPStr)] string pszFile);
-
-  }
-
-  [
-    ComImport(),
-    InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
-    Guid("000214F9-0000-0000-C000-000000000046")
-  ]
-  public interface IShellLinkW
-  {
-    void GetPath(
-      [Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszFile,
-      int cchMaxPath,
-      out WIN32_FIND_DATAW pfd,
-      SLGP_FLAGS fFlags);
-
-    void GetIDList(
-      out IntPtr ppidl);
-
-    void SetIDList(
-      IntPtr pidl);
-
-    void GetDescription(
-      [Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszName,
-      int cchMaxName);
-
-    void SetDescription(
-      [MarshalAs(UnmanagedType.LPWStr)] string pszName);
-
-    void GetWorkingDirectory(
-      [Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszDir,
-      int cchMaxPath);
-
-    void SetWorkingDirectory(
-      [MarshalAs(UnmanagedType.LPWStr)] string pszDir);
-
-    void GetArguments(
-      [Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszArgs,
-      int cchMaxPath);
-
-    void SetArguments(
-      [MarshalAs(UnmanagedType.LPWStr)] string pszArgs);
-
-    void GetHotkey(
-      out short pwHotkey);
-
-    void SetHotkey(
-      short wHotkey);
-
-    void GetShowCmd(
-      out int piShowCmd);
-
-    void SetShowCmd(
-      int iShowCmd);
-
-    void GetIconLocation(
-      [Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszIconPath,
-      int cchIconPath,
-      out int piIcon);
-
-    void SetIconLocation(
-      [MarshalAs(UnmanagedType.LPWStr)] string pszIconPath,
-      int iIcon);
-
-    void SetRelativePath(
-      [MarshalAs(UnmanagedType.LPWStr)] string pszPathRel,
-      int dwReserved);
-
-    void Resolve(
-      IntPtr hwnd,
-      SLR_FLAGS fFlags);
-
-    void SetPath(
-      [MarshalAs(UnmanagedType.LPWStr)] string pszFile);
-
-  }
-
-
-  [
-    ComImport(),
-    Guid("00021401-0000-0000-C000-000000000046")
-  ]
-  public class ShellLink  // : IPersistFile, IShellLinkA, IShellLinkW 
-  {
-  }
-
-}

+ 0 - 348
MediaBrowser.Installer/Code/ShellShortcut.cs

@@ -1,348 +0,0 @@
-/**************************************************************************
-*
-* Filename:     ShellShortcut.cs
-* Author:       Mattias Sjögren (mattias@mvps.org)
-*               http://www.msjogren.net/dotnet/
-*
-* Description:  Defines a .NET friendly class, ShellShortcut, for reading
-*               and writing shortcuts.
-*               Define the conditional compilation symbol UNICODE to use
-*               IShellLinkW internally.
-*
-* Public types: class ShellShortcut
-*
-*
-* Dependencies: ShellLinkNative.cs
-*
-*
-* Copyright ©2001-2002, Mattias Sjögren
-* 
-**************************************************************************/
-
-using System;
-using System.Diagnostics;
-using System.Drawing;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Windows.Forms;
-
-
-namespace MediaBrowser.Installer.Code
-{
-	/// <remarks>
-	///   .NET friendly wrapper for the ShellLink class
-	/// </remarks>
-	public class ShellShortcut : IDisposable
-	{
-    private const int INFOTIPSIZE = 1024;
-    private const int MAX_PATH = 260;
-
-    private const int SW_SHOWNORMAL = 1;
-    private const int SW_SHOWMINIMIZED = 2;
-    private const int SW_SHOWMAXIMIZED = 3;
-    private const int SW_SHOWMINNOACTIVE = 7;
-
-
-  #if UNICODE
-    private IShellLinkW m_Link;
-  #else
-    private IShellLinkA m_Link;
-  #endif
-    private string m_sPath;
-
-    ///
-    /// <param name='linkPath'>
-    ///   Path to new or existing shortcut file (.lnk).
-    /// </param>
-    ///
-    public ShellShortcut(string linkPath)
-    {
-      IPersistFile pf;
-
-      m_sPath = linkPath;
-
-    #if UNICODE
-      m_Link = (IShellLinkW) new ShellLink();
-    #else
-      m_Link = (IShellLinkA) new ShellLink();
-    #endif
-
-      if ( File.Exists( linkPath ) ) {
-        pf = (IPersistFile)m_Link;
-        pf.Load( linkPath, 0 );
-      }
-
-    }
-
-    //
-    //  IDisplosable implementation
-    //
-    public void Dispose()
-    {
-      if ( m_Link != null ) {
-        Marshal.ReleaseComObject( m_Link );
-        m_Link = null;
-      }
-    }
-
-    /// <value>
-    ///   Gets or sets the argument list of the shortcut.
-    /// </value>
-    public string Arguments
-    {
-      get
-      {
-        StringBuilder sb = new StringBuilder( INFOTIPSIZE );
-        m_Link.GetArguments( sb, sb.Capacity );
-        return sb.ToString();
-      }
-      set { m_Link.SetArguments( value ); }
-    }
-
-    /// <value>
-    ///   Gets or sets a description of the shortcut.
-    /// </value>
-    public string Description
-    {
-      get
-      {
-        StringBuilder sb = new StringBuilder( INFOTIPSIZE );
-        m_Link.GetDescription( sb, sb.Capacity );
-        return sb.ToString();
-      }
-      set { m_Link.SetDescription( value ); }
-    }
-
-    /// <value>
-    ///   Gets or sets the working directory (aka start in directory) of the shortcut.
-    /// </value>
-    public string WorkingDirectory
-    {
-      get
-      {
-        StringBuilder sb = new StringBuilder( MAX_PATH );
-        m_Link.GetWorkingDirectory( sb, sb.Capacity );
-        return sb.ToString();
-      }
-      set { m_Link.SetWorkingDirectory( value ); }
-    }
-
-    //
-    // If Path returns an empty string, the shortcut is associated with
-    // a PIDL instead, which can be retrieved with IShellLink.GetIDList().
-    // This is beyond the scope of this wrapper class.
-    //
-    /// <value>
-    ///   Gets or sets the target path of the shortcut.
-    /// </value>
-    public string Path
-    {
-      get
-      {
-      #if UNICODE
-        WIN32_FIND_DATAW wfd = new WIN32_FIND_DATAW();
-      #else
-        WIN32_FIND_DATAA wfd = new WIN32_FIND_DATAA();
-      #endif
-        StringBuilder sb = new StringBuilder( MAX_PATH );
-
-        m_Link.GetPath( sb, sb.Capacity, out wfd, SLGP_FLAGS.SLGP_UNCPRIORITY );
-        return sb.ToString();
-      }
-      set { m_Link.SetPath( value ); }
-    }
-
-    /// <value>
-    ///   Gets or sets the path of the <see cref="Icon"/> assigned to the shortcut.
-    /// </value>
-    /// <summary>
-    ///   <seealso cref="IconIndex"/>
-    /// </summary>
-    public string IconPath
-    {
-      get
-      {
-        StringBuilder sb = new StringBuilder( MAX_PATH );
-        int nIconIdx;
-        m_Link.GetIconLocation( sb, sb.Capacity, out nIconIdx );
-        return sb.ToString();
-      }
-      set { m_Link.SetIconLocation( value, IconIndex ); }
-    }
-
-    /// <value>
-    ///   Gets or sets the index of the <see cref="Icon"/> assigned to the shortcut.
-    ///   Set to zero when the <see cref="IconPath"/> property specifies a .ICO file.
-    /// </value>
-    /// <summary>
-    ///   <seealso cref="IconPath"/>
-    /// </summary>
-    public int IconIndex
-    {
-      get
-      {
-        StringBuilder sb = new StringBuilder( MAX_PATH );
-        int nIconIdx;
-        m_Link.GetIconLocation( sb, sb.Capacity, out nIconIdx );
-        return nIconIdx;
-      }
-      set { m_Link.SetIconLocation( IconPath, value ); }
-    }
-
-    /// <value>
-    ///   Retrieves the Icon of the shortcut as it will appear in Explorer.
-    ///   Use the <see cref="IconPath"/> and <see cref="IconIndex"/>
-    ///   properties to change it.
-    /// </value>
-    public Icon Icon
-    {
-      get
-      {
-        StringBuilder sb = new StringBuilder( MAX_PATH );
-        int nIconIdx;
-        IntPtr hIcon, hInst;
-        Icon ico, clone;
-
-
-        m_Link.GetIconLocation( sb, sb.Capacity, out nIconIdx );
-        hInst = Marshal.GetHINSTANCE( this.GetType().Module );
-        hIcon = Native.ExtractIcon( hInst, sb.ToString(), nIconIdx );
-        if ( hIcon == IntPtr.Zero )
-          return null;
-
-        // Return a cloned Icon, because we have to free the original ourselves.
-        ico = Icon.FromHandle( hIcon );
-        clone = (Icon)ico.Clone();
-        ico.Dispose();
-        Native.DestroyIcon( hIcon );
-        return clone;
-      }
-    }
-
-    /// <value>
-    ///   Gets or sets the System.Diagnostics.ProcessWindowStyle value
-    ///   that decides the initial show state of the shortcut target. Note that
-    ///   ProcessWindowStyle.Hidden is not a valid property value.
-    /// </value>
-    public ProcessWindowStyle WindowStyle
-    {
-      get
-      {
-        int nWS;
-        m_Link.GetShowCmd( out nWS );
-
-        switch ( nWS ) {
-          case SW_SHOWMINIMIZED:
-          case SW_SHOWMINNOACTIVE:
-            return ProcessWindowStyle.Minimized;
-          
-          case SW_SHOWMAXIMIZED:
-            return ProcessWindowStyle.Maximized;
-
-          default:
-            return ProcessWindowStyle.Normal;
-        }
-      }
-      set
-      {
-        int nWS;
-
-        switch ( value ) {
-          case ProcessWindowStyle.Normal:
-            nWS = SW_SHOWNORMAL;
-            break;
-
-          case ProcessWindowStyle.Minimized:
-            nWS = SW_SHOWMINNOACTIVE;
-            break;
-
-          case ProcessWindowStyle.Maximized:
-            nWS = SW_SHOWMAXIMIZED;
-            break;
-
-          default: // ProcessWindowStyle.Hidden
-            throw new ArgumentException("Unsupported ProcessWindowStyle value.");
-        }
-
-        m_Link.SetShowCmd( nWS );
-      
-      }
-    }
-
-    /// <value>
-    ///   Gets or sets the hotkey for the shortcut.
-    /// </value>
-    public Keys Hotkey
-    {
-      get
-      {
-        short wHotkey;
-        int dwHotkey;
-
-        m_Link.GetHotkey( out wHotkey );
-
-        //
-        // Convert from IShellLink 16-bit format to Keys enumeration 32-bit value
-        // IShellLink: 0xMMVK
-        // Keys:  0x00MM00VK        
-        //   MM = Modifier (Alt, Control, Shift)
-        //   VK = Virtual key code
-        //       
-        dwHotkey = ((wHotkey & 0xFF00) << 8) | (wHotkey & 0xFF);
-        return (Keys) dwHotkey;
-      }
-      set
-      {
-        short wHotkey;
-
-        if ( (value & Keys.Modifiers) == 0 )
-          throw new ArgumentException("Hotkey must include a modifier key.");
-
-        //    
-        // Convert from Keys enumeration 32-bit value to IShellLink 16-bit format
-        // IShellLink: 0xMMVK
-        // Keys:  0x00MM00VK        
-        //   MM = Modifier (Alt, Control, Shift)
-        //   VK = Virtual key code
-        //       
-        wHotkey = unchecked((short) ( ((int) (value & Keys.Modifiers) >> 8) | (int) (value & Keys.KeyCode) ));
-        m_Link.SetHotkey( wHotkey );
-
-      }
-    }
-
-    /// <summary>
-    ///   Saves the shortcut to disk.
-    /// </summary>
-    public void Save()
-    {
-      IPersistFile pf = (IPersistFile) m_Link;
-      pf.Save( m_sPath, true );
-    }
-
-    /// <summary>
-    ///   Returns a reference to the internal ShellLink object,
-    ///   which can be used to perform more advanced operations
-    ///   not supported by this wrapper class, by using the
-    ///   IShellLink interface directly.
-    /// </summary>
-    public object ShellLink
-    {
-      get { return m_Link; }
-    }
-
-
-  #region Native Win32 API functions
-    private class Native
-    {
-      [DllImport("shell32.dll", CharSet=CharSet.Auto)]
-      public static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);
-
-      [DllImport("user32.dll")]
-      public static extern bool DestroyIcon(IntPtr hIcon);
-    }
-  #endregion
-
-	}
-}

BIN
MediaBrowser.Installer/Icon.ico


+ 0 - 58
MediaBrowser.Installer/MainWindow.xaml

@@ -1,58 +0,0 @@
-<Window
-        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        xmlns:Code="clr-namespace:MediaBrowser.Installer.Code" x:Class="MediaBrowser.Installer.MainWindow"
-        Title="Install Media Browser Server" Height="383.481" Width="663.057" ResizeMode="NoResize" WindowStyle="None">
-    <Border BorderBrush="DarkGray" BorderThickness="2" Margin="0,0,0,0">
-        <Grid Margin="-2,0,0,0">
-            <Image x:Name="imgLogo" HorizontalAlignment="Center" Height="172" Margin="10,10,57,0" VerticalAlignment="Top" Width="590" Source="Code/Images/mb3logo800.png" Opacity="0.5"/>
-            <Grid HorizontalAlignment="Left" Height="153" Margin="0,173,0,0" VerticalAlignment="Top" Width="662" Background="Gray">
-                <TextBlock x:Name="lblStatus" HorizontalAlignment="Left" Margin="12,14,0,18" Width="637" FontSize="36" Foreground="#FFE6D7D7" Text="Status" TextWrapping="WrapWithOverflow"/>
-                <Rectangle Fill="#FF49494B" HorizontalAlignment="Left" Height="13" Stroke="Black" VerticalAlignment="Bottom" Width="662"/>
-                <Rectangle x:Name="rectProgress" Fill="#FF0A0ABF" HorizontalAlignment="Left" Height="13" Stroke="Black" VerticalAlignment="Bottom" Width="0"/>
-            </Grid>
-                <Button x:Name="btnCancel" Content="Cancel" HorizontalAlignment="Left" Margin="552,336,0,0" Width="97" FontSize="14" Click="btnCancel_Click" Height="31" VerticalAlignment="Top"/>
-        </Grid>
-        
-    </Border>
-    <Window.Resources>
-        <!--Metro Button-->
-        <Style TargetType="{x:Type Button}" BasedOn="{x:Null}">
-            <Setter Property="Background" Value="Transparent"/>
-            <Setter Property="Foreground" Value="#222222"/>
-            <Setter Property="FontSize" Value="16"/>
-            <Setter Property="Padding" Value="10,5,10,5"/>
-            <Setter Property="BorderBrush" Value="#222222"/>
-            <Setter Property="BorderThickness" Value="2"/>
-            <Setter Property="Template">
-                <Setter.Value>
-                    <ControlTemplate TargetType="{x:Type Button}">
-                        <!-- We use Grid as a root because it is easy to add more elements to customize the button -->
-                        <Grid x:Name="Grid">
-                            <Border x:Name="Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"/>
-
-                            <!-- Content Presenter is where the text content etc is placed by the control -->
-                            <!-- The bindings are useful so that the control can be parameterized without editing the template -->
-                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
-                        </Grid>
-
-                        <!--Each state sets a brush on the Border in the template -->
-                        <ControlTemplate.Triggers>
-                            <Trigger Property="IsPressed" Value="true">
-                                <Setter Property="Background" Value="#222222" TargetName="Border"/>
-                                <Setter Property="BorderBrush" Value="#222222" TargetName="Border"/>
-                                <Setter Property="Foreground" Value="White"/>
-                                <Setter Property="FontSize" Value="16"/>
-                            </Trigger>
-                            <Trigger Property="IsEnabled" Value="true"/>
-                            <Trigger Property="IsEnabled" Value="false">
-                                <Setter Property="BorderBrush" Value="#7f222222" TargetName="Border"/>
-                                <Setter Property="Foreground" Value="#7f222222"/>
-                            </Trigger>
-                        </ControlTemplate.Triggers>
-                    </ControlTemplate>
-                </Setter.Value>
-            </Setter>
-        </Style>
-    </Window.Resources>
-</Window>

+ 0 - 642
MediaBrowser.Installer/MainWindow.xaml.cs

@@ -1,642 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Configuration;
-using System.Diagnostics;
-using System.IO;
-using System.Net;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Linq;
-using Ionic.Zip;
-using MediaBrowser.Installer.Code;
-using Microsoft.Win32;
-using ServiceStack.Text;
-
-namespace MediaBrowser.Installer
-{
-    /// <summary>
-    /// Interaction logic for MainWindow.xaml
-    /// </summary>
-    public partial class MainWindow : Window
-    {
-        protected PackageVersionClass PackageClass = PackageVersionClass.Release;
-        protected Version RequestedVersion = new Version(4,0,0,0);
-        protected Version ActualVersion;
-        protected string PackageName = "MBServer";
-        protected string RootSuffix = "-Server";
-        protected string TargetExe = "MediaBrowser.ServerApplication.exe";
-        protected string TargetArgs = "";
-        protected string FriendlyName = "Media Browser Server";
-        protected string Archive = null;
-        protected bool InstallPismo = true;
-        protected string RootPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MediaBrowser-Server");
-        protected string EndInstallPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MediaBrowser-Server");
-
-        protected bool IsUpdate = false;
-
-        protected bool SystemClosing = false;
-
-        protected string TempLocation = Path.Combine(Path.GetTempPath(), "MediaBrowser");
-
-        protected WebClient MainClient = new WebClient();
-
-        public MainWindow()
-        {
-            try
-            {
-                GetArgs();
-                InitializeComponent();
-                DoInstall(Archive);
-            }
-            catch (Exception e)
-            {
-                MessageBox.Show("Error: " + e.Message + " \n\n" + e.StackTrace);
-            }
-        }
-
-        private void btnCancel_Click(object sender, RoutedEventArgs e)
-        {
-            this.Close();
-        }
-
-        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
-        {
-            if (!SystemClosing && MessageBox.Show("Cancel Installation - Are you sure?", "Cancel", MessageBoxButton.YesNo) == MessageBoxResult.No)
-            {
-                e.Cancel = true;
-            }
-            if (MainClient.IsBusy)
-            {
-                MainClient.CancelAsync();
-                while (MainClient.IsBusy)
-                {
-                    // wait to finish
-                }
-            }
-            MainClient.Dispose();
-            ClearTempLocation(TempLocation);
-            base.OnClosing(e);
-        }
-
-        protected void SystemClose(string message = null)
-        {
-            if (message != null)
-            {
-                MessageBox.Show(message, "Error");
-            }
-            SystemClosing = true;
-            this.Close();
-        }
-
-        protected void GetArgs()
-        {
-            //cmd line args should be name/value pairs like: product=server archive="c:\.." caller=34552
-            var cmdArgs = Environment.GetCommandLineArgs();
-            var args = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
-            foreach (var pair in cmdArgs)
-            {
-                var nameValue = pair.Split('=');
-                if (nameValue.Length == 2)
-                {
-                    args[nameValue[0]] = nameValue[1];
-                }
-            }
-            Archive = args.GetValueOrDefault("archive", null);
-            if (args.GetValueOrDefault("pismo","true") == "false") InstallPismo = false;
-
-            var product = args.GetValueOrDefault("product", null) ?? ConfigurationManager.AppSettings["product"] ?? "server";
-            PackageClass = (PackageVersionClass) Enum.Parse(typeof (PackageVersionClass), args.GetValueOrDefault("class", null) ?? ConfigurationManager.AppSettings["class"] ?? "Release");
-            RequestedVersion = new Version(args.GetValueOrDefault("version", "4.0"));
-
-            var callerId = args.GetValueOrDefault("caller", null);
-            if (callerId != null)
-            {
-                // Wait for our caller to exit
-                try
-                {
-                    var process = Process.GetProcessById(Convert.ToInt32(callerId));
-                    process.WaitForExit();
-                }
-                catch (ArgumentException)
-                {
-                    // wasn't running
-                }
-
-                IsUpdate = true;
-            }
-
-            //MessageBox.Show(string.Format("Called with args: product: {0} archive: {1} caller: {2}", product, Archive, callerId));
-            
-            switch (product.ToLower())
-            {
-                case "mbt":
-                    PackageName = "MBTheater";
-                    RootSuffix = "-Theater";
-                    TargetExe = "MediaBrowser.UI.exe";
-                    FriendlyName = "Media Browser Theater";
-                    RootPath = EndInstallPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MediaBrowser" + RootSuffix);
-                    EndInstallPath = Path.Combine(RootPath, "system");
-                    break;
-
-                case "mbc":
-                    PackageName = "MBClassic";
-                    RootSuffix = "-WMC";
-                    TargetExe = "ehshell.exe";
-                    TargetArgs = @"/nostartupanimation /entrypoint:{CE32C570-4BEC-4aeb-AD1D-CF47B91DE0B2}\{FC9ABCCC-36CB-47ac-8BAB-03E8EF5F6F22}";
-                    FriendlyName = "Media Browser Classic";
-                    RootPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MediaBrowser" + RootSuffix);
-                    EndInstallPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "ehome");
-                    break;
-
-                default:
-                    PackageName = "MBServer";
-                    RootSuffix = "-Server";
-                    TargetExe = "MediaBrowser.ServerApplication.exe";
-                    FriendlyName = "Media Browser Server";
-                    RootPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MediaBrowser" + RootSuffix);
-                    EndInstallPath = Path.Combine(RootPath, "system");
-                    break;
-            }
-
-
-        }
-
-        /// <summary>
-        /// Execute the install process
-        /// </summary>
-        /// <returns></returns>
-        protected async Task DoInstall(string archive)
-        {
-            lblStatus.Text = string.Format("Installing {0}...", FriendlyName);
-
-            // Determine Package version
-            var version = archive == null ? await GetPackageVersion() : null;
-            ActualVersion = version != null ? version.version : new Version(3,0);
-
-            // Now try and shut down the server if that is what we are installing and it is running
-            var procs = Process.GetProcessesByName("mediabrowser.serverapplication");
-            var server = procs.Length > 0 ? procs[0] : null;
-            if (!IsUpdate && PackageName == "MBServer" && server != null)
-            {
-                lblStatus.Text = "Shutting Down Media Browser Server...";
-                using (var client = new WebClient())
-                {
-                    try
-                    {
-                        client.UploadString("http://localhost:8096/mediabrowser/System/Shutdown", "");
-                        try
-                        {
-                            server.WaitForExit(30000); //don't hang indefinitely
-                        }
-                        catch (ArgumentException)
-                        {
-                            // already gone
-                        }
-                    }
-                    catch (WebException e)
-                    {
-                        if (e.Status == WebExceptionStatus.Timeout || e.Message.StartsWith("Unable to connect",StringComparison.OrdinalIgnoreCase)) return; // just wasn't running
-
-                        MessageBox.Show("Error shutting down server. Please be sure it is not running before hitting OK.\n\n" + e.Status + "\n\n" + e.Message);
-                    }
-                }
-            }
-            else
-            {
-                if (!IsUpdate && PackageName == "MBTheater")
-                {
-                    // Uninstalling MBT - shut it down if it is running
-                    var processes = Process.GetProcessesByName("mediabrowser.ui");
-                    if (processes.Length > 0)
-                    {
-                        lblStatus.Text = "Shutting Down Media Browser Theater...";
-                        try
-                        {
-                            processes[0].Kill();
-                        }
-                        catch (Exception ex)
-                        {
-                            MessageBox.Show("Unable to shutdown Media Browser Theater.  Please ensure it is not running before hitting OK.\n\n" + ex.Message, "Error");
-                        }
-                    }
-                    
-                }
-            }
-
-            // Download if we don't already have it
-            if (archive == null)
-            {
-                lblStatus.Text = string.Format("Downloading {0} (version {1})...", FriendlyName, version.versionStr);
-                try
-                {
-                    archive = await DownloadPackage(version);
-                }
-                catch (Exception e)
-                {
-                    SystemClose("Error Downloading Package - " + e.GetType().FullName + "\n\n" + e.Message);
-                    return;
-                }
-            }
-
-            if (archive == null) return;  //we canceled or had an error that was already reported
-
-            if (Path.GetExtension(archive) == ".msi")
-            {
-
-                // 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...";
-                var retryCount = 0;
-                var success = false;
-                while (!success && retryCount < 3)
-                {
-                    try
-                    {
-                        ExtractPackage(archive);
-                        success = true;
-                        // We're done with it so delete it (this is necessary for update operations)
-                        TryDelete(archive);
-                    }
-                    catch (Exception e)
-                    {
-                        if (retryCount < 3)
-                        {
-                            retryCount++;
-                            Thread.Sleep(500);
-                        }
-                        else
-                        {
-                            // Delete archive even if failed so we don't try again with this one
-                            TryDelete(archive);
-                            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...";
-                    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);
-            try
-            {
-                Process.Start(Path.Combine(EndInstallPath, TargetExe), TargetArgs);
-            }
-            catch (Exception e)
-            {
-                SystemClose("Error Executing - "+Path.Combine(EndInstallPath, TargetExe) + " " + TargetArgs + "\n\n" +e.GetType().FullName+"\n\n"+e.Message);
-                return;
-            }
-
-            SystemClose();
-
-        }
-
-        private bool TryDelete(string file)
-        {
-            try
-            {
-                File.Delete(file);
-            }
-            catch (FileNotFoundException)
-            {
-            }
-            catch (Exception e)
-            {
-                return false;
-            }
-
-            return true;
-        }
-
-        private void PismoInstall()
-        {
-            // Kick off the Pismo installer and wait for it to end
-            var pismo = new Process();
-            pismo.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
-            pismo.StartInfo.FileName = Path.Combine(RootPath, "Pismo", "pfminst.exe");
-            pismo.StartInfo.Arguments = "install";
-            pismo.Start();
-            pismo.WaitForExit();
-
-        }
-
-        protected async Task<PackageVersionInfo> GetPackageVersion()
-        {
-            try
-            {
-                // get the package information for the server
-                var json = await MainClient.DownloadStringTaskAsync("http://www.mb3admin.com/admin/service/package/retrieveAll?name=" + PackageName);
-                var packages = JsonSerializer.DeserializeFromString<List<PackageInfo>>(json);
-
-                var version = packages[0].versions.Where(v => v.classification <= PackageClass).OrderByDescending(v => v.version).FirstOrDefault(v => v.version <= RequestedVersion);
-                if (version == null)
-                {
-                    SystemClose("Could not locate download package.  Aborting.");
-                    return null;
-                }
-                return version;
-            }
-            catch (Exception e)
-            {
-                SystemClose(e.GetType().FullName + "\n\n" + e.Message);
-            }
-
-            return null;
-        }
-
-        /// <summary>
-        /// Download our specified package to an archive in a temp location
-        /// </summary>
-        /// <returns>The fully qualified name of the downloaded package</returns>
-        protected async Task<string> DownloadPackage(PackageVersionInfo version)
-        {
-            var success = false;
-            var retryCount = 0;
-            var archiveFile = Path.Combine(PrepareTempLocation(), version.targetFilename);
-
-            try
-            {
-                while (!success && retryCount < 3)
-                {
-
-                    // setup download progress and download the package
-                    MainClient.DownloadProgressChanged += DownloadProgressChanged;
-                    try
-                    {
-                        await MainClient.DownloadFileTaskAsync(version.sourceUrl, archiveFile);
-                        success = true;
-                    }
-                    catch (WebException e)
-                    {
-                        if (e.Status == WebExceptionStatus.RequestCanceled)
-                        {
-                            return null;
-                        }
-                        if (retryCount < 3 && (e.Status == WebExceptionStatus.Timeout || e.Status == WebExceptionStatus.ConnectFailure || e.Status == WebExceptionStatus.ProtocolError))
-                        {
-                            Thread.Sleep(500); //wait just a sec
-                            PrepareTempLocation(); //clear this out
-                            retryCount++;
-                        }
-                        else
-                        {
-                            throw;
-                        }
-                    }
-                }
-
-                return archiveFile;
-            }
-            catch (Exception e)
-            {
-                SystemClose(e.GetType().FullName + "\n\n" + e.Message);
-            }
-            return "";
-
-        }
-
-        void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
-        {
-            rectProgress.Width = (this.Width * e.ProgressPercentage)/100f;
-        }
-
-        /// <summary>
-        /// Extract the provided archive to our program root
-        /// It is assumed the archive is a zip file relative to that root (with all necessary sub-folders)
-        /// </summary>
-        /// <param name="archive"></param>
-        protected void ExtractPackage(string archive)
-        {
-            // Delete old content of system
-            var systemDir = Path.Combine(RootPath, "System");
-            var backupDir = Path.Combine(RootPath, "System.old");
-            if (Directory.Exists(systemDir))
-            {
-                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
-            var retryCount = 0;
-            var success = false;
-            while (!success && retryCount < 3)
-            {
-                try
-                {
-                    using (var fileStream = File.OpenRead(archive))
-                    {
-                        using (var zipFile = ZipFile.Read(fileStream))
-                        {
-                            zipFile.ExtractAll(RootPath, ExtractExistingFileAction.OverwriteSilently);
-                            success = true;
-                        }
-                    }
-                }
-                catch (Exception e)
-                {
-                    if (retryCount < 3)
-                    {
-                        Thread.Sleep(250);
-                        retryCount++;
-                    }
-                    else
-                    {
-                        //Rollback
-                        RollBack(systemDir, backupDir);
-                        throw new ApplicationException(string.Format("Could not extract {0} to {1} after {2} attempts.\n\n{3}", archive, RootPath, retryCount, e.Message));
-                    }
-                }
-            }
-        }
-
-        protected void RollBack(string systemDir, string backupDir)
-        {
-            if (Directory.Exists(backupDir))
-            {
-                if (Directory.Exists(systemDir)) Directory.Delete(systemDir);
-                Directory.Move(backupDir, systemDir);
-            }
-        }
-
-        /// <summary>
-        /// Create a shortcut in the current user's start menu
-        ///  Only do current user to avoid need for admin elevation
-        /// </summary>
-        /// <param name="targetExe"></param>
-        protected void CreateShortcuts(string targetExe)
-        {
-            // get path to all users start menu
-            var startMenu = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu),"Media Browser 3");
-            if (!Directory.Exists(startMenu)) Directory.CreateDirectory(startMenu);
-            var product = new ShellShortcut(Path.Combine(startMenu, FriendlyName+".lnk")) {Path = targetExe, Description = "Run " + FriendlyName};
-            product.Save();
-
-            if (PackageName == "MBServer")
-            {
-                var path = Path.Combine(startMenu, "MB Dashboard.lnk");
-                var dashboard = new ShellShortcut(path) 
-                {Path = @"http://localhost:8096/mediabrowser/dashboard/dashboard.html", Description = "Open the Media Browser Server Dashboard (configuration)"};
-                dashboard.Save();
-                
-            }
-            CreateUninstaller(Path.Combine(Path.GetDirectoryName(targetExe) ?? "", "MediaBrowser.Uninstaller.exe")+ " "+ (PackageName == "MBServer" ? "server" : "mbt"), targetExe);
-
-        }
-
-        /// <summary>
-        /// Create uninstall entry in add/remove
-        /// </summary>
-        /// <param name="uninstallPath"></param>
-        /// <param name="targetExe"></param>
-        private void CreateUninstaller(string uninstallPath, string targetExe)
-        {
-            var parent = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", true);
-            {
-                if (parent == null)
-                {
-                    var rootParent = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion", true);
-                    {
-                        if (rootParent != null)
-                        {
-                            parent = rootParent.CreateSubKey("Uninstall");
-                            if (parent == null)
-                            {
-                                MessageBox.Show("Unable to create Uninstall registry key.  Program is still installed sucessfully.");
-                                return;
-                            }
-                        }
-                    }
-                }
-                try
-                {
-                    RegistryKey key = null;
-
-                    try
-                    {
-                        const string guidText = "{4E76DB4E-1BB9-4A7B-860C-7940779CF7A0}";
-                        key = parent.OpenSubKey(guidText, true) ??
-                              parent.CreateSubKey(guidText);
-
-                        if (key == null)
-                        {
-                            MessageBox.Show(String.Format("Unable to create uninstaller entry'{0}\\{1}'.  Program is still installed successfully.", @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", guidText));
-                            return;
-                        }
-
-                        key.SetValue("DisplayName", FriendlyName);
-                        key.SetValue("ApplicationVersion", ActualVersion);
-                        key.SetValue("Publisher", "Media Browser Team");
-                        key.SetValue("DisplayIcon", targetExe);
-                        key.SetValue("DisplayVersion", ActualVersion.ToString(2));
-                        key.SetValue("URLInfoAbout", "http://www.mediabrowser3.com");
-                        key.SetValue("Contact", "http://community.mediabrowser.tv");
-                        key.SetValue("InstallDate", DateTime.Now.ToString("yyyyMMdd"));
-                        key.SetValue("UninstallString", uninstallPath);
-                    }
-                    finally
-                    {
-                        if (key != null)
-                        {
-                            key.Close();
-                        }
-                    }
-                }
-                catch (Exception ex)
-                {
-                    MessageBox.Show("An error occurred writing uninstall information to the registry.");
-                }
-            }
-        }        
-        
-        /// <summary>
-        /// Prepare a temporary location to download to
-        /// </summary>
-        /// <returns>The path to the temporary location</returns>
-        protected string PrepareTempLocation()
-        {
-            ClearTempLocation(TempLocation);
-            Directory.CreateDirectory(TempLocation);
-            return TempLocation;
-        }
-
-        /// <summary>
-        /// Clear out (delete recursively) the supplied temp location
-        /// </summary>
-        /// <param name="location"></param>
-        protected void ClearTempLocation(string location)
-        {
-            if (Directory.Exists(location))
-            {
-                Directory.Delete(location, true);
-            }
-        }
-
-    }
-}

+ 0 - 214
MediaBrowser.Installer/MediaBrowser.Installer.csproj

@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{3879F78A-D6F6-45E5-B2A8-D8DCF2DABB74}</ProjectGuid>
-    <OutputType>WinExe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>MediaBrowser.Installer</RootNamespace>
-    <AssemblyName>MediaBrowser.Installer</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <WarningLevel>4</WarningLevel>
-    <IsWebBootstrapper>true</IsWebBootstrapper>
-    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
-    <PublishUrl>http://www.mb3admin.com/downloads/dev/server/</PublishUrl>
-    <Install>false</Install>
-    <InstallFrom>Web</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <SupportUrl>http://community.mediabrowser.tv</SupportUrl>
-    <ProductName>Media Browser Installer</ProductName>
-    <PublisherName>Media Browser Team</PublisherName>
-    <SuiteName>Media Browser</SuiteName>
-    <OpenBrowserOnPublish>false</OpenBrowserOnPublish>
-    <ApplicationRevision>64</ApplicationRevision>
-    <ApplicationVersion>0.1.1.%2a</ApplicationVersion>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <PublishWizardCompleted>true</PublishWizardCompleted>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <PlatformTarget>x86</PlatformTarget>
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup>
-    <ManifestCertificateThumbprint>45143DAA4FF6F1512702FCBADCB0D7C1AB7E39FB</ManifestCertificateThumbprint>
-  </PropertyGroup>
-  <PropertyGroup>
-    <ManifestKeyFile>MediaBrowser.Installer_1_TemporaryKey.pfx</ManifestKeyFile>
-  </PropertyGroup>
-  <PropertyGroup>
-    <GenerateManifests>true</GenerateManifests>
-  </PropertyGroup>
-  <PropertyGroup>
-    <SignManifests>true</SignManifests>
-  </PropertyGroup>
-  <PropertyGroup>
-    <TargetZone>LocalIntranet</TargetZone>
-  </PropertyGroup>
-  <PropertyGroup>
-    <ApplicationManifest>Properties\app.manifest</ApplicationManifest>
-  </PropertyGroup>
-  <PropertyGroup>
-    <ApplicationIcon>Icon.ico</ApplicationIcon>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Ionic.Zip, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\DotNetZip.1.9.1.8\lib\net20\Ionic.Zip.dll</HintPath>
-    </Reference>
-    <Reference Include="ServiceStack.Text, Version=3.9.43.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\ServiceStack.Text.3.9.43\lib\net35\ServiceStack.Text.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xaml">
-      <RequiredTargetFramework>4.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="WindowsBase" />
-    <Reference Include="PresentationCore" />
-    <Reference Include="PresentationFramework" />
-  </ItemGroup>
-  <ItemGroup>
-    <ApplicationDefinition Include="App.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </ApplicationDefinition>
-    <Page Include="Code\DownloadAnimation.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-    <Page Include="MainWindow.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
-    <Compile Include="..\SharedVersion.cs">
-      <Link>Properties\SharedVersion.cs</Link>
-    </Compile>
-    <Compile Include="App.xaml.cs">
-      <DependentUpon>App.xaml</DependentUpon>
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Code\DownloadAnimation.xaml.cs">
-      <DependentUpon>DownloadAnimation.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="Code\ModelExtensions.cs" />
-    <Compile Include="Code\PackageInfo.cs" />
-    <Compile Include="Code\PackageType.cs" />
-    <Compile Include="Code\PackageVersionClass.cs" />
-    <Compile Include="Code\PackageVersionInfo.cs" />
-    <Compile Include="Code\ShellLinkNative.cs" />
-    <Compile Include="Code\ShellShortcut.cs" />
-    <Compile Include="MainWindow.xaml.cs">
-      <DependentUpon>MainWindow.xaml</DependentUpon>
-      <SubType>Code</SubType>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Properties\AssemblyInfo.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-    <None Include="mbt.config">
-      <SubType>Designer</SubType>
-    </None>
-    <None Include="MediaBrowser.Installer_1_TemporaryKey.pfx" />
-    <None Include="packages.config" />
-    <None Include="Properties\app.manifest" />
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-    <AppDesigner Include="Properties\" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="App.config">
-      <SubType>Designer</SubType>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include=".NETFramework,Version=v4.5">
-      <Visible>False</Visible>
-      <ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Visual.C++.10.0.x86">
-      <Visible>False</Visible>
-      <ProductName>Visual C++ 2010 Runtime Libraries %28x86%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Code\Images\computer_256.png" />
-    <Resource Include="Code\Images\internet-globe.jpg" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Code\Images\mb3logo800.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Icon.ico" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

BIN
MediaBrowser.Installer/MediaBrowser.Installer_1_TemporaryKey.pfx


BIN
MediaBrowser.Installer/MediaBrowser.Installer_TemporaryKey.pfx


+ 0 - 50
MediaBrowser.Installer/Properties/AssemblyInfo.cs

@@ -1,50 +0,0 @@
-using System.Reflection;
-using System.Resources;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Windows;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("MediaBrowser.Server.Installer")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Microsoft")]
-[assembly: AssemblyProduct("MediaBrowser.Server.Installer")]
-[assembly: AssemblyCopyright("Copyright © Microsoft 2013")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-//In order to begin building localizable applications, set 
-//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
-//inside a <PropertyGroup>.  For example, if you are using US english
-//in your source files, set the <UICulture> to en-US.  Then uncomment
-//the NeutralResourceLanguage attribute below.  Update the "en-US" in
-//the line below to match the UICulture setting in the project file.
-
-//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
-
-
-[assembly: ThemeInfo(
-    ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
-    //(used if a resource is not found in the page, 
-    // or application resource dictionaries)
-    ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
-    //(used if a resource is not found in the page, 
-    // app, or any theme specific resource dictionaries)
-)]
-
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//

+ 0 - 71
MediaBrowser.Installer/Properties/Resources.Designer.cs

@@ -1,71 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.17929
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace MediaBrowser.Installer.Properties
-{
-
-
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class Resources
-    {
-
-        private static global::System.Resources.ResourceManager resourceMan;
-
-        private static global::System.Globalization.CultureInfo resourceCulture;
-
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal Resources()
-        {
-        }
-
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager
-        {
-            get
-            {
-                if ((resourceMan == null))
-                {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MediaBrowser.Server.Installer.Properties.Resources", typeof(Resources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture
-        {
-            get
-            {
-                return resourceCulture;
-            }
-            set
-            {
-                resourceCulture = value;
-            }
-        }
-    }
-}

+ 0 - 117
MediaBrowser.Installer/Properties/Resources.resx

@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>

+ 0 - 30
MediaBrowser.Installer/Properties/Settings.Designer.cs

@@ -1,30 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.17929
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace MediaBrowser.Installer.Properties
-{
-
-
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
-    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
-    {
-
-        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
-        public static Settings Default
-        {
-            get
-            {
-                return defaultInstance;
-            }
-        }
-    }
-}

+ 0 - 7
MediaBrowser.Installer/Properties/Settings.settings

@@ -1,7 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
-  <Profiles>
-    <Profile Name="(Default)" />
-  </Profiles>
-  <Settings />
-</SettingsFile>

+ 0 - 52
MediaBrowser.Installer/Properties/app.manifest

@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
-  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
-    <security>
-      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
-        <!-- UAC Manifest Options
-            If you want to change the Windows User Account Control level replace the 
-            requestedExecutionLevel node with one of the following.
-
-        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
-        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
-        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
-
-            Specifying requestedExecutionLevel node will disable file and registry virtualization.
-            If you want to utilize File and Registry Virtualization for backward 
-            compatibility then delete the requestedExecutionLevel node.
-        -->
-        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
-      </requestedPrivileges>
-      <applicationRequestMinimum>
-        <defaultAssemblyRequest permissionSetReference="Custom" />
-        <PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
-      </applicationRequestMinimum>
-    </security>
-  </trustInfo>
-  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
-    <application>
-      <!-- A list of all Windows versions that this application is designed to work with. 
-      Windows will automatically select the most compatible environment.-->
-      <!-- If your application is designed to work with Windows Vista, uncomment the following supportedOS node-->
-      <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>-->
-      <!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node-->
-      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
-      <!-- If your application is designed to work with Windows 8, uncomment the following supportedOS node-->
-      <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>-->
-    </application>
-  </compatibility>
-  <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
-  <!-- <dependency>
-    <dependentAssembly>
-      <assemblyIdentity
-          type="win32"
-          name="Microsoft.Windows.Common-Controls"
-          version="6.0.0.0"
-          processorArchitecture="*"
-          publicKeyToken="6595b64144ccf1df"
-          language="*"
-        />
-    </dependentAssembly>
-  </dependency>-->
-</asmv1:assembly>

+ 0 - 10
MediaBrowser.Installer/mbt.config

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
-  <appSettings>
-    <add key="product" value="mbt" />
-    <add key="class" value="Release" />
-  </appSettings>
-    <startup> 
-        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
-    </startup>
-</configuration>

+ 0 - 5
MediaBrowser.Installer/packages.config

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="DotNetZip" version="1.9.1.8" targetFramework="net45" />
-  <package id="ServiceStack.Text" version="3.9.43" targetFramework="net45" />
-</packages>

+ 0 - 6
MediaBrowser.Uninstaller/App.config

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
-    <startup> 
-        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
-    </startup>
-</configuration>

+ 0 - 8
MediaBrowser.Uninstaller/App.xaml

@@ -1,8 +0,0 @@
-<Application x:Class="MediaBrowser.Uninstaller.Execute.App"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             StartupUri="MainWindow.xaml">
-    <Application.Resources>
-         
-    </Application.Resources>
-</Application>

+ 0 - 11
MediaBrowser.Uninstaller/App.xaml.cs

@@ -1,11 +0,0 @@
-using System.Windows;
-
-namespace MediaBrowser.Uninstaller
-{
-    /// <summary>
-    /// Interaction logic for App.xaml
-    /// </summary>
-    public partial class App : Application
-    {
-    }
-}

+ 0 - 59
MediaBrowser.Uninstaller/MainWindow.xaml

@@ -1,59 +0,0 @@
-<Window x:Class="MediaBrowser.Uninstaller.MainWindow"
-        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        Title="Uninstall Media Browser" Height="412.686" Width="633.955" WindowStyle="None">
-    <Grid>
-        <Image HorizontalAlignment="Center" Height="154" Margin="35,15,35,0" VerticalAlignment="Top" Width="541" Source="/MediaBrowser.Uninstaller;component/Code/Images/mb3logo800.png" Opacity="0.5"/>
-        <Label x:Name="lblHeading" Content="Uninstall " HorizontalAlignment="Left" Margin="51,169,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.478,-2.753" Height="44" Width="533" FontSize="24"/>
-        <Button x:Name="btnUninstall" Content="Uninstall" HorizontalAlignment="Left" Margin="505,356,0,0" VerticalAlignment="Top" Width="91" IsDefault="True" RenderTransformOrigin="0.991,-1.041" Click="btnUninstall_Click"/>
-        <Button x:Name="btnCancel" Content="Cancel" HorizontalAlignment="Left" Margin="412,356,0,0" VerticalAlignment="Top" Width="75" IsCancel="True" Click="btnCancel_Click"/>
-        <Grid x:Name="grdOptions" HorizontalAlignment="Left" Height="108" Margin="86,231,0,0" VerticalAlignment="Top" Width="353">
-            <CheckBox x:Name="cbxRemoveAll" Content="Remove All Traces" HorizontalAlignment="Left" Margin="0,3,0,0" VerticalAlignment="Top" Checked="cbxRemoveAll_Checked" Unchecked="cbxRemoveAll_Checked" FontSize="18"/>
-            <CheckBox x:Name="cbxRemoveCache" Content="Delete Cache Files" HorizontalAlignment="Left" Margin="16,32,0,0" VerticalAlignment="Top" FontSize="18"/>
-            <CheckBox x:Name="cbxRemoveConfig" Content="Delete Configuration and Log Files" HorizontalAlignment="Left" Margin="16,56,0,0" VerticalAlignment="Top" FontSize="18"/>
-            <CheckBox x:Name="cbxRemovePlugins" Content="Delete Plug-ins" HorizontalAlignment="Left" Margin="16,82,0,0" VerticalAlignment="Top" FontSize="18"/>
-            
-        </Grid>
-        <Button x:Name="btnFinished" Content="Finish" HorizontalAlignment="Left" Margin="505,356,0,0" VerticalAlignment="Top" Width="91" IsDefault="True" RenderTransformOrigin="0.991,-1.041" Click="BtnFinished_OnClick"  Visibility="Hidden"/>
-
-    </Grid>
-    <Window.Resources>
-        <!--Metro Button-->
-        <Style TargetType="{x:Type Button}" BasedOn="{x:Null}">
-            <Setter Property="Background" Value="Transparent"/>
-            <Setter Property="Foreground" Value="#222222"/>
-            <Setter Property="FontSize" Value="16"/>
-            <Setter Property="Padding" Value="10,5,10,5"/>
-            <Setter Property="BorderBrush" Value="#222222"/>
-            <Setter Property="BorderThickness" Value="2"/>
-            <Setter Property="Template">
-                <Setter.Value>
-                    <ControlTemplate TargetType="{x:Type Button}">
-                        <!-- We use Grid as a root because it is easy to add more elements to customize the button -->
-                        <Grid x:Name="Grid">
-                            <Border x:Name="Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"/>
-
-                            <!-- Content Presenter is where the text content etc is placed by the control -->
-                            <!-- The bindings are useful so that the control can be parameterized without editing the template -->
-                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
-                        </Grid>
-
-                        <!--Each state sets a brush on the Border in the template -->
-                        <ControlTemplate.Triggers>
-                            <Trigger Property="IsPressed" Value="true">
-                                <Setter Property="Background" Value="#222222" TargetName="Border"/>
-                                <Setter Property="BorderBrush" Value="#222222" TargetName="Border"/>
-                                <Setter Property="Foreground" Value="White"/>
-                                <Setter Property="FontSize" Value="16"/>
-                            </Trigger>
-                            <Trigger Property="IsEnabled" Value="true"/>
-                            <Trigger Property="IsEnabled" Value="false">
-                                <Setter Property="BorderBrush" Value="#7f222222" TargetName="Border"/>
-                                <Setter Property="Foreground" Value="#7f222222"/>
-                            </Trigger>
-                        </ControlTemplate.Triggers>
-                    </ControlTemplate>
-                </Setter.Value>
-            </Setter>
-        </Style>
-    </Window.Resources></Window>

+ 0 - 312
MediaBrowser.Uninstaller/MainWindow.xaml.cs

@@ -1,312 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Net;
-using System.Reflection;
-using Microsoft.Win32;
-using System.IO;
-using System.Threading;
-using System.Windows;
-
-namespace MediaBrowser.Uninstaller
-{
-    /// <summary>
-    /// Interaction logic for MainWindow.xaml
-    /// </summary>
-    public partial class MainWindow : Window
-    {
-        protected string Product = "Server";
-        protected string RootSuffix = "-Server";
-
-        public MainWindow()
-        {
-
-            var args = Environment.GetCommandLineArgs();
-            var product = args.Length > 1 ? args[1] : null;
-            if (product == null)
-            {
-                MessageBox.Show("Please use 'Programs and Features' to uninstall.");
-                Close();
-            }
-            else
-            {
-                var callerId = args.Length > 2 ? args[2] : null;
-                if (callerId != null)
-                {
-                    // Wait for our caller to exit
-                    try
-                    {
-                        var process = Process.GetProcessById(Convert.ToInt32(callerId));
-                        process.WaitForExit();
-                    }
-                    catch (ArgumentException)
-                    {
-                        // wasn't running
-                    }
-                }
-                else
-                {
-                    // No caller - means we were called directly and need to move to temp file and execute there
-                    //copy the real program to a temp location so we can delete everything here (including us)
-                    var us = Assembly.GetExecutingAssembly().Location;
-                    var tempExe = Path.Combine(Path.GetTempPath(), Path.GetFileName(us) ?? "Mediabrowser.Uninstaller.exe");
-                    File.Copy(us,tempExe,true);
-                    //get our pid to pass to the uninstaller so it can wait for us to exit
-                    var pid = Process.GetCurrentProcess().Id;
-                    //kick off the copy
-                    Process.Start(tempExe, product + " " + pid);
-                    //and shut down
-                    Close();
-                }
-
-                InitializeComponent();
-
-
-                switch (product)
-                {
-                    case "server":
-                        Product = "Server";
-                        RootSuffix = "-Server";
-                        break;
-
-                    case "mbt":
-                        Product = "Theater";
-                        RootSuffix = "-Theater";
-                        break;
-
-                    default:
-                        MessageBox.Show("Please Use 'Programs and Features' to uninstall.");
-                        Close();
-                        break;
-
-                }
-
-                lblHeading.Content = this.Title = "Uninstall Media Browser " + Product;
-                
-            }
-
-        }
-
-        private void btnCancel_Click(object sender, RoutedEventArgs e)
-        {
-            Close();
-        }
-
-        private void cbxRemoveAll_Checked(object sender, RoutedEventArgs e)
-        {
-            if (cbxRemoveAll.IsChecked == true)
-            {
-                cbxRemoveCache.IsChecked = cbxRemoveConfig.IsChecked = cbxRemovePlugins.IsChecked = true;
-            }
-
-            cbxRemoveCache.IsEnabled = cbxRemoveConfig.IsEnabled = cbxRemovePlugins.IsEnabled = !cbxRemoveAll.IsChecked.Value;
-        }
-
-        private void btnUninstall_Click(object sender, RoutedEventArgs e)
-        {
-            // First remove our shortcuts
-            lblHeading.Content = "Removing Shortcuts...";
-            btnCancel.IsEnabled = btnUninstall.IsEnabled = false;
-            grdOptions.Visibility = Visibility.Hidden;
-
-            var startMenu = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu), "Media Browser 3");
-            var linkName = "Media Browser " + Product + ".lnk";
-            RemoveShortcut(Path.Combine(startMenu, linkName));
-            RemoveShortcut(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup),linkName));
-            linkName = "Uninstall " + linkName;
-            RemoveShortcut(Path.Combine(startMenu, linkName));
-            if (Product == "Server")
-            {
-                RemoveShortcut(Path.Combine(startMenu, "MB Dashboard.lnk"));
-                var procs = Process.GetProcessesByName("mediabrowser.serverapplication");
-                var server = procs.Length > 0 ? procs[0] : null;
-                if (server != null)
-                {
-                    using (var client = new WebClient())
-                    {
-                        lblHeading.Content = "Shutting Down Media Browser Server...";
-                        try
-                        {
-                            client.UploadString("http://localhost:8096/mediabrowser/system/shutdown", "");
-                            try
-                            {
-                                server.WaitForExit();
-                            }
-                            catch (ArgumentException)
-                            {
-                                // already gone
-                            }
-                        }
-                        catch (WebException ex)
-                        {
-                            if (ex.Status != WebExceptionStatus.ConnectFailure && !ex.Message.StartsWith("Unable to connect", StringComparison.OrdinalIgnoreCase))
-                            {
-                                MessageBox.Show("Error shutting down server.  Please be sure it is not running before hitting OK.\n\n" + ex.Status + "\n\n" + ex.Message);
-                            }
-                        }
-                    }
-                }
-            }
-            else
-            {
-                // Installing MBT - shut it down if it is running
-                var processes = Process.GetProcessesByName("mediabrowser.ui");
-                if (processes.Length > 0)
-                {
-                    lblHeading.Content = "Shutting Down Media Browser Theater...";
-                    try
-                    {
-                        processes[0].Kill();
-                    }
-                    catch (Exception ex)
-                    {
-                        MessageBox.Show("Unable to shutdown Media Browser Theater.  Please ensure it is not running before hitting OK.\n\n" + ex.Message, "Error");
-                    }
-                }
-            }
-            // if the startmenu item is empty now - delete it too
-            if (Directory.GetFiles(startMenu).Length == 0)
-            {
-                try
-                {
-                    Directory.Delete(startMenu);
-                }
-                catch (DirectoryNotFoundException)
-                {
-                }
-                catch (Exception ex)
-                {
-                    {
-                        MessageBox.Show(string.Format("Error attempting to remove shortcut folder {0}\n\n {1}", startMenu, ex.Message), "Error");
-                    }
-                }
-            }
-
-            var rootPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MediaBrowser" + RootSuffix);
-
-            lblHeading.Content = "Removing System Files...";
-            if (cbxRemoveAll.IsChecked == true)
-            {
-                // Just remove our whole directory
-                RemovePath(rootPath);
-            }
-            else
-            {
-                // First remove the system
-                RemovePath(Path.Combine(rootPath, "System"));
-                RemovePath(Path.Combine(rootPath, "MediaTools"));
-
-                // And then the others specified
-                if (cbxRemoveCache.IsChecked == true)
-                {
-                    lblHeading.Content = "Removing Cache and Data Files...";
-                    RemovePath(Path.Combine(rootPath, "cache"));
-                    RemovePath(Path.Combine(rootPath, "data"));
-                }
-                if (cbxRemoveConfig.IsChecked == true)
-                {
-                    lblHeading.Content = "Removing Config Files...";
-                    RemovePath(Path.Combine(rootPath, "config"));
-                    RemovePath(Path.Combine(rootPath, "logs"));
-                }
-                if (cbxRemovePlugins.IsChecked == true)
-                {
-                    lblHeading.Content = "Removing Plugin Files...";
-                    RemovePath(Path.Combine(rootPath, "plugins"));
-                }
-            }
-
-            // Remove reference to us
-            RemoveUninstall();
-
-            // Remove pismo
-            try
-            {
-                UnInstallPismo();
-            }
-            catch
-            {
-                // No biggie - maybe they uninstalled it themselves
-            }
-
-            // and done
-            lblHeading.Content = string.Format("Media Browser {0} Uninstalled.", Product);
-            btnUninstall.Visibility = Visibility.Hidden;
-            btnFinished.Visibility = Visibility.Visible;
-        }
-
-        private void UnInstallPismo()
-        {
-            // Kick off the Pismo uninstaller and wait for it to end
-            var pismo = new Process();
-            pismo.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
-            pismo.StartInfo.FileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "pfm.exe");
-            pismo.StartInfo.Arguments = "uninstall pfm-license-mediabrowser.txt";
-            pismo.Start();
-            pismo.WaitForExit();
-        }
-
-        private void RemoveUninstall()
-        {
-
-            using (var parent = Registry.CurrentUser.OpenSubKey(
-                @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", true))
-            {
-                if (parent == null)
-                {
-                    MessageBox.Show("Uninstall registry key not found.");
-                    return;
-                }
-                try
-                {
-                    const string guidText = "{4E76DB4E-1BB9-4A7B-860C-7940779CF7A0}";
-                    parent.DeleteSubKey(guidText,false);
-
-                }
-                catch (Exception ex)
-                {
-                    throw new Exception(
-                        "An error occurred removing uninstall information from the registry.",
-                        ex);
-                }
-            }
-        }
-
-        private static
-            void RemoveShortcut(string path)
-        {
-            try
-            {
-                File.Delete(path);
-            }
-            catch (FileNotFoundException)
-            {
-            } // we're trying to get rid of it anyway
-            catch (Exception ex)
-            {
-                MessageBox.Show(string.Format("Error attempting to remove shortcut {0}\n\n {1}", path, ex.Message), "Error");
-            }
-
-        }
-
-        private static void RemovePath(string path)
-        {
-            try
-            {
-                Directory.Delete(path, true);
-            }
-            catch (DirectoryNotFoundException)
-            {
-            }
-            catch (Exception ex)
-            {
-                MessageBox.Show(string.Format("Error attempting to remove progam folder {0}\n\n {1}", path, ex.Message), "Error");
-            }
-            
-        }
-
-        private void BtnFinished_OnClick(object sender, RoutedEventArgs e)
-        {
-            Close();
-        }
-    }
-}

+ 0 - 110
MediaBrowser.Uninstaller/MediaBrowser.Uninstaller.csproj

@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{FACAF749-3E28-46DD-B613-654FCD434959}</ProjectGuid>
-    <OutputType>WinExe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>MediaBrowser.Uninstaller</RootNamespace>
-    <AssemblyName>MediaBrowser.Uninstaller</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="System.Xaml">
-      <RequiredTargetFramework>4.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="WindowsBase" />
-    <Reference Include="PresentationCore" />
-    <Reference Include="PresentationFramework" />
-  </ItemGroup>
-  <ItemGroup>
-    <ApplicationDefinition Include="App.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </ApplicationDefinition>
-    <Page Include="MainWindow.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
-    <Compile Include="App.xaml.cs">
-      <DependentUpon>App.xaml</DependentUpon>
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="MainWindow.xaml.cs">
-      <DependentUpon>MainWindow.xaml</DependentUpon>
-      <SubType>Code</SubType>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Properties\AssemblyInfo.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-    <AppDesigner Include="Properties\" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="App.config" />
-  </ItemGroup>
-  <ItemGroup />
-  <ItemGroup>
-    <Resource Include="..\MediaBrowser.Installer\Code\Images\mb3logo800.png">
-      <Link>Code\Images\mb3logo800.png</Link>
-    </Resource>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

+ 0 - 55
MediaBrowser.Uninstaller/Properties/AssemblyInfo.cs

@@ -1,55 +0,0 @@
-using System.Reflection;
-using System.Resources;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Windows;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("MediaBrowser.Uninstaller")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Media Browser Team")]
-[assembly: AssemblyProduct("MediaBrowser.Uninstaller")]
-[assembly: AssemblyCopyright("Copyright © Media Browser Team 2013")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-//In order to begin building localizable applications, set 
-//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
-//inside a <PropertyGroup>.  For example, if you are using US english
-//in your source files, set the <UICulture> to en-US.  Then uncomment
-//the NeutralResourceLanguage attribute below.  Update the "en-US" in
-//the line below to match the UICulture setting in the project file.
-
-//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
-
-
-[assembly: ThemeInfo(
-    ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
-    //(used if a resource is not found in the page, 
-    // or application resource dictionaries)
-    ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
-    //(used if a resource is not found in the page, 
-    // app, or any theme specific resource dictionaries)
-)]
-
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers 
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]

+ 0 - 63
MediaBrowser.Uninstaller/Properties/Resources.Designer.cs

@@ -1,63 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.17929
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace MediaBrowser.Uninstaller.Properties {
-    using System;
-    
-    
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class Resources {
-        
-        private static global::System.Resources.ResourceManager resourceMan;
-        
-        private static global::System.Globalization.CultureInfo resourceCulture;
-        
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal Resources() {
-        }
-        
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager {
-            get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MediaBrowser.Uninstaller.Properties.Resources", typeof(Resources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-        
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture {
-            get {
-                return resourceCulture;
-            }
-            set {
-                resourceCulture = value;
-            }
-        }
-    }
-}

+ 0 - 117
MediaBrowser.Uninstaller/Properties/Resources.resx

@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>

+ 0 - 26
MediaBrowser.Uninstaller/Properties/Settings.Designer.cs

@@ -1,26 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.17929
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace MediaBrowser.Uninstaller.Properties {
-    
-    
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
-    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
-        
-        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-        
-        public static Settings Default {
-            get {
-                return defaultInstance;
-            }
-        }
-    }
-}

+ 0 - 7
MediaBrowser.Uninstaller/Properties/Settings.settings

@@ -1,7 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
-  <Profiles>
-    <Profile Name="(Default)" />
-  </Profiles>
-  <Settings />
-</SettingsFile>