diff options
40 files changed, 0 insertions, 3068 deletions
diff --git a/MediaBrowser.Installer/App.config b/MediaBrowser.Installer/App.config deleted file mode 100644 index 558196382..000000000 --- a/MediaBrowser.Installer/App.config +++ /dev/null @@ -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>
\ No newline at end of file diff --git a/MediaBrowser.Installer/App.xaml b/MediaBrowser.Installer/App.xaml deleted file mode 100644 index 84c9b11d4..000000000 --- a/MediaBrowser.Installer/App.xaml +++ /dev/null @@ -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> diff --git a/MediaBrowser.Installer/App.xaml.cs b/MediaBrowser.Installer/App.xaml.cs deleted file mode 100644 index 3e1230d44..000000000 --- a/MediaBrowser.Installer/App.xaml.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Windows; - -namespace MediaBrowser.Installer -{ - /// <summary> - /// Interaction logic for App.xaml - /// </summary> - public partial class App : Application - { - } -} diff --git a/MediaBrowser.Installer/Code/DownloadAnimation.xaml b/MediaBrowser.Installer/Code/DownloadAnimation.xaml deleted file mode 100644 index 26a0ca677..000000000 --- a/MediaBrowser.Installer/Code/DownloadAnimation.xaml +++ /dev/null @@ -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> diff --git a/MediaBrowser.Installer/Code/DownloadAnimation.xaml.cs b/MediaBrowser.Installer/Code/DownloadAnimation.xaml.cs deleted file mode 100644 index 8fa890816..000000000 --- a/MediaBrowser.Installer/Code/DownloadAnimation.xaml.cs +++ /dev/null @@ -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); - } - } - } -} diff --git a/MediaBrowser.Installer/Code/Images/computer_256.png b/MediaBrowser.Installer/Code/Images/computer_256.png Binary files differdeleted file mode 100644 index 42f3c22fa..000000000 --- a/MediaBrowser.Installer/Code/Images/computer_256.png +++ /dev/null diff --git a/MediaBrowser.Installer/Code/Images/internet-globe.jpg b/MediaBrowser.Installer/Code/Images/internet-globe.jpg Binary files differdeleted file mode 100644 index 26d064d7b..000000000 --- a/MediaBrowser.Installer/Code/Images/internet-globe.jpg +++ /dev/null diff --git a/MediaBrowser.Installer/Code/Images/mb3logo800.png b/MediaBrowser.Installer/Code/Images/mb3logo800.png Binary files differdeleted file mode 100644 index fbc769a6f..000000000 --- a/MediaBrowser.Installer/Code/Images/mb3logo800.png +++ /dev/null diff --git a/MediaBrowser.Installer/Code/ModelExtensions.cs b/MediaBrowser.Installer/Code/ModelExtensions.cs deleted file mode 100644 index 66e51ec11..000000000 --- a/MediaBrowser.Installer/Code/ModelExtensions.cs +++ /dev/null @@ -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; - - } - - } -} diff --git a/MediaBrowser.Installer/Code/PackageInfo.cs b/MediaBrowser.Installer/Code/PackageInfo.cs deleted file mode 100644 index adfe54dd6..000000000 --- a/MediaBrowser.Installer/Code/PackageInfo.cs +++ /dev/null @@ -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; } - } -} diff --git a/MediaBrowser.Installer/Code/PackageType.cs b/MediaBrowser.Installer/Code/PackageType.cs deleted file mode 100644 index 964025a73..000000000 --- a/MediaBrowser.Installer/Code/PackageType.cs +++ /dev/null @@ -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 - } -}
\ No newline at end of file diff --git a/MediaBrowser.Installer/Code/PackageVersionClass.cs b/MediaBrowser.Installer/Code/PackageVersionClass.cs deleted file mode 100644 index d046e5c60..000000000 --- a/MediaBrowser.Installer/Code/PackageVersionClass.cs +++ /dev/null @@ -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 - } -}
\ No newline at end of file diff --git a/MediaBrowser.Installer/Code/PackageVersionInfo.cs b/MediaBrowser.Installer/Code/PackageVersionInfo.cs deleted file mode 100644 index d26c217ca..000000000 --- a/MediaBrowser.Installer/Code/PackageVersionInfo.cs +++ /dev/null @@ -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; } - } -} diff --git a/MediaBrowser.Installer/Code/ShellLinkNative.cs b/MediaBrowser.Installer/Code/ShellLinkNative.cs deleted file mode 100644 index d603fe3a5..000000000 --- a/MediaBrowser.Installer/Code/ShellLinkNative.cs +++ /dev/null @@ -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 - { - } - -} diff --git a/MediaBrowser.Installer/Code/ShellShortcut.cs b/MediaBrowser.Installer/Code/ShellShortcut.cs deleted file mode 100644 index 33b60732c..000000000 --- a/MediaBrowser.Installer/Code/ShellShortcut.cs +++ /dev/null @@ -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 - - } -} diff --git a/MediaBrowser.Installer/Icon.ico b/MediaBrowser.Installer/Icon.ico Binary files differdeleted file mode 100644 index 4acd8f921..000000000 --- a/MediaBrowser.Installer/Icon.ico +++ /dev/null diff --git a/MediaBrowser.Installer/MainWindow.xaml b/MediaBrowser.Installer/MainWindow.xaml deleted file mode 100644 index 06727dfae..000000000 --- a/MediaBrowser.Installer/MainWindow.xaml +++ /dev/null @@ -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> diff --git a/MediaBrowser.Installer/MainWindow.xaml.cs b/MediaBrowser.Installer/MainWindow.xaml.cs deleted file mode 100644 index 6e4ad1258..000000000 --- a/MediaBrowser.Installer/MainWindow.xaml.cs +++ /dev/null @@ -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); - } - } - - } -} diff --git a/MediaBrowser.Installer/MediaBrowser.Installer.csproj b/MediaBrowser.Installer/MediaBrowser.Installer.csproj deleted file mode 100644 index fee14ee9b..000000000 --- a/MediaBrowser.Installer/MediaBrowser.Installer.csproj +++ /dev/null @@ -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>
\ No newline at end of file diff --git a/MediaBrowser.Installer/MediaBrowser.Installer_1_TemporaryKey.pfx b/MediaBrowser.Installer/MediaBrowser.Installer_1_TemporaryKey.pfx Binary files differdeleted file mode 100644 index 0b1fff555..000000000 --- a/MediaBrowser.Installer/MediaBrowser.Installer_1_TemporaryKey.pfx +++ /dev/null diff --git a/MediaBrowser.Installer/MediaBrowser.Installer_TemporaryKey.pfx b/MediaBrowser.Installer/MediaBrowser.Installer_TemporaryKey.pfx Binary files differdeleted file mode 100644 index 18ec3ef6b..000000000 --- a/MediaBrowser.Installer/MediaBrowser.Installer_TemporaryKey.pfx +++ /dev/null diff --git a/MediaBrowser.Installer/Properties/AssemblyInfo.cs b/MediaBrowser.Installer/Properties/AssemblyInfo.cs deleted file mode 100644 index 66ed12d73..000000000 --- a/MediaBrowser.Installer/Properties/AssemblyInfo.cs +++ /dev/null @@ -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 -//
\ No newline at end of file diff --git a/MediaBrowser.Installer/Properties/Resources.Designer.cs b/MediaBrowser.Installer/Properties/Resources.Designer.cs deleted file mode 100644 index 27baf2785..000000000 --- a/MediaBrowser.Installer/Properties/Resources.Designer.cs +++ /dev/null @@ -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; - } - } - } -} diff --git a/MediaBrowser.Installer/Properties/Resources.resx b/MediaBrowser.Installer/Properties/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/MediaBrowser.Installer/Properties/Resources.resx +++ /dev/null @@ -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>
\ No newline at end of file diff --git a/MediaBrowser.Installer/Properties/Settings.Designer.cs b/MediaBrowser.Installer/Properties/Settings.Designer.cs deleted file mode 100644 index a5c537464..000000000 --- a/MediaBrowser.Installer/Properties/Settings.Designer.cs +++ /dev/null @@ -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; - } - } - } -} diff --git a/MediaBrowser.Installer/Properties/Settings.settings b/MediaBrowser.Installer/Properties/Settings.settings deleted file mode 100644 index 033d7a5e9..000000000 --- a/MediaBrowser.Installer/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version='1.0' encoding='utf-8'?> -<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)"> - <Profiles> - <Profile Name="(Default)" /> - </Profiles> - <Settings /> -</SettingsFile>
\ No newline at end of file diff --git a/MediaBrowser.Installer/Properties/app.manifest b/MediaBrowser.Installer/Properties/app.manifest deleted file mode 100644 index 887fa2b9d..000000000 --- a/MediaBrowser.Installer/Properties/app.manifest +++ /dev/null @@ -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>
\ No newline at end of file diff --git a/MediaBrowser.Installer/mbt.config b/MediaBrowser.Installer/mbt.config deleted file mode 100644 index b94d81797..000000000 --- a/MediaBrowser.Installer/mbt.config +++ /dev/null @@ -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>
\ No newline at end of file diff --git a/MediaBrowser.Installer/packages.config b/MediaBrowser.Installer/packages.config deleted file mode 100644 index 8d0ce68b4..000000000 --- a/MediaBrowser.Installer/packages.config +++ /dev/null @@ -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>
\ No newline at end of file diff --git a/MediaBrowser.Uninstaller/App.config b/MediaBrowser.Uninstaller/App.config deleted file mode 100644 index 8e1564635..000000000 --- a/MediaBrowser.Uninstaller/App.config +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<configuration> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> - </startup> -</configuration>
\ No newline at end of file diff --git a/MediaBrowser.Uninstaller/App.xaml b/MediaBrowser.Uninstaller/App.xaml deleted file mode 100644 index 59eab9383..000000000 --- a/MediaBrowser.Uninstaller/App.xaml +++ /dev/null @@ -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> diff --git a/MediaBrowser.Uninstaller/App.xaml.cs b/MediaBrowser.Uninstaller/App.xaml.cs deleted file mode 100644 index 165eb4ff8..000000000 --- a/MediaBrowser.Uninstaller/App.xaml.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Windows; - -namespace MediaBrowser.Uninstaller -{ - /// <summary> - /// Interaction logic for App.xaml - /// </summary> - public partial class App : Application - { - } -} diff --git a/MediaBrowser.Uninstaller/MainWindow.xaml b/MediaBrowser.Uninstaller/MainWindow.xaml deleted file mode 100644 index 99a5052ba..000000000 --- a/MediaBrowser.Uninstaller/MainWindow.xaml +++ /dev/null @@ -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> diff --git a/MediaBrowser.Uninstaller/MainWindow.xaml.cs b/MediaBrowser.Uninstaller/MainWindow.xaml.cs deleted file mode 100644 index 1db83a319..000000000 --- a/MediaBrowser.Uninstaller/MainWindow.xaml.cs +++ /dev/null @@ -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(); - } - } -} diff --git a/MediaBrowser.Uninstaller/MediaBrowser.Uninstaller.csproj b/MediaBrowser.Uninstaller/MediaBrowser.Uninstaller.csproj deleted file mode 100644 index a9db3ee9b..000000000 --- a/MediaBrowser.Uninstaller/MediaBrowser.Uninstaller.csproj +++ /dev/null @@ -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>
\ No newline at end of file diff --git a/MediaBrowser.Uninstaller/Properties/AssemblyInfo.cs b/MediaBrowser.Uninstaller/Properties/AssemblyInfo.cs deleted file mode 100644 index 613589a7d..000000000 --- a/MediaBrowser.Uninstaller/Properties/AssemblyInfo.cs +++ /dev/null @@ -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")] diff --git a/MediaBrowser.Uninstaller/Properties/Resources.Designer.cs b/MediaBrowser.Uninstaller/Properties/Resources.Designer.cs deleted file mode 100644 index e1a3952e3..000000000 --- a/MediaBrowser.Uninstaller/Properties/Resources.Designer.cs +++ /dev/null @@ -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; - } - } - } -} diff --git a/MediaBrowser.Uninstaller/Properties/Resources.resx b/MediaBrowser.Uninstaller/Properties/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/MediaBrowser.Uninstaller/Properties/Resources.resx +++ /dev/null @@ -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>
\ No newline at end of file diff --git a/MediaBrowser.Uninstaller/Properties/Settings.Designer.cs b/MediaBrowser.Uninstaller/Properties/Settings.Designer.cs deleted file mode 100644 index 2223bc305..000000000 --- a/MediaBrowser.Uninstaller/Properties/Settings.Designer.cs +++ /dev/null @@ -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; - } - } - } -} diff --git a/MediaBrowser.Uninstaller/Properties/Settings.settings b/MediaBrowser.Uninstaller/Properties/Settings.settings deleted file mode 100644 index 033d7a5e9..000000000 --- a/MediaBrowser.Uninstaller/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version='1.0' encoding='utf-8'?> -<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)"> - <Profiles> - <Profile Name="(Default)" /> - </Profiles> - <Settings /> -</SettingsFile>
\ No newline at end of file |
