Sfoglia il codice sorgente

Consolidate uninstaller into one assembly and don't allow run directly

Eric Reed 12 anni fa
parent
commit
e3af179856

+ 0 - 6
MediaBrowser.Uninstaller.Execute/App.config

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

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

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

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

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

+ 1 - 1
MediaBrowser.Uninstaller.Execute/App.xaml → MediaBrowser.Uninstaller/App.xaml

@@ -1,4 +1,4 @@
-<Application x:Class="MediaBrowser.Uninstaller.App"
+<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">

+ 1 - 7
MediaBrowser.Uninstaller.Execute/App.xaml.cs → MediaBrowser.Uninstaller/App.xaml.cs

@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Configuration;
-using System.Data;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Windows;
+using System.Windows;
 
 namespace MediaBrowser.Uninstaller
 {

+ 0 - 0
MediaBrowser.Uninstaller.Execute/MainWindow.xaml → MediaBrowser.Uninstaller/MainWindow.xaml


+ 51 - 31
MediaBrowser.Uninstaller.Execute/MainWindow.xaml.cs → MediaBrowser.Uninstaller/MainWindow.xaml.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Diagnostics;
 using System.Net;
+using System.Reflection;
 using Microsoft.Win32;
 using System.IO;
 using System.Threading;
@@ -20,49 +21,68 @@ namespace MediaBrowser.Uninstaller.Execute
         {
 
             var args = Environment.GetCommandLineArgs();
-            var product = args.Length > 1 ? args[1] : "server";
-            var callerId = args.Length > 2 ? args[2] : null;
-            if (callerId != null)
+            var product = args.Length > 1 ? args[1] : null;
+            if (product == null)
             {
-                // Wait for our caller to exit
-                try
+                MessageBox.Show("Please use 'Programs and Features' to uninstall.");
+                Close();
+            }
+            else
+            {
+                var callerId = args.Length > 2 ? args[2] : null;
+                if (callerId != null)
                 {
-                    var process = Process.GetProcessById(Convert.ToInt32(callerId));
-                    process.WaitForExit();
+                    // Wait for our caller to exit
+                    try
+                    {
+                        var process = Process.GetProcessById(Convert.ToInt32(callerId));
+                        process.WaitForExit();
+                    }
+                    catch (ArgumentException)
+                    {
+                        // wasn't running
+                    }
                 }
-                catch (ArgumentException)
+                else
                 {
-                    // wasn't running
+                    // 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();
                 }
-            }
-            else
-            {
-                Thread.Sleep(1000); // crude method
-            }
 
-            InitializeComponent();
+                InitializeComponent();
 
 
-            switch (product)
-            {
-                case "server":
-                    Product = "Server";
-                    RootSuffix = "-Server";
-                    break;
+                switch (product)
+                {
+                    case "server":
+                        Product = "Server";
+                        RootSuffix = "-Server";
+                        break;
 
-                case "mbt":
-                    Product = "Theater";
-                    RootSuffix = "-Theater";
-                    break;
+                    case "mbt":
+                        Product = "Theater";
+                        RootSuffix = "-Theater";
+                        break;
 
-                default:
-                    MessageBox.Show("Please specify which application to un-install (server or mbt)");
-                    Close();
-                    break;
+                    default:
+                        MessageBox.Show("Please Use 'Programs and Features' to uninstall.");
+                        Close();
+                        break;
 
-            }
+                }
 
-            lblHeading.Content = this.Title = "Uninstall Media Browser " + Product;
+                lblHeading.Content = this.Title = "Uninstall Media Browser " + Product;
+                
+            }
 
         }
 

+ 58 - 14
MediaBrowser.Uninstaller/MediaBrowser.Uninstaller.csproj

@@ -4,13 +4,15 @@
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{8B930005-D5B2-4A78-9377-46AC6EDAB688}</ProjectGuid>
+    <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>
@@ -31,30 +33,72 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
-  <PropertyGroup>
-    <StartupObject />
-  </PropertyGroup>
-  <PropertyGroup>
-    <ApplicationIcon>
-    </ApplicationIcon>
-  </PropertyGroup>
-  <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="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
+    <Reference Include="System.Xaml">
+      <RequiredTargetFramework>4.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="WindowsBase" />
+    <Reference Include="PresentationCore" />
+    <Reference Include="PresentationFramework" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
+    <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.

+ 0 - 36
MediaBrowser.Uninstaller/Program.cs

@@ -1,36 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Uninstaller
-{
-    class Program
-    {
-        static void Main(string[] args)
-        {
-            var product = args.Length > 1 ? args[1] : "server";
-            //copy the real program to a temp location so we can delete everything here (including us)
-            var tempExe = Path.Combine(Path.GetTempPath(), "MediaBrowser.Uninstaller.Execute.exe");
-            var tempConfig = Path.Combine(Path.GetTempPath(), "MediaBrowser.Uninstaller.Execute.exe.config");
-            //using (var file = File.Create(tempExe, 4096, FileOptions.DeleteOnClose))
-            {
-                //copy the real uninstaller to temp location
-                var sourceDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? "";
-                File.WriteAllBytes(tempExe, File.ReadAllBytes(Path.Combine(sourceDir, "MediaBrowser.Uninstaller.Execute.exe")));
-                File.Copy(Path.Combine(sourceDir, "MediaBrowser.Uninstaller.Execute.exe.config"), tempConfig, 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
-            }
-        }
-    }
-}

+ 23 - 4
MediaBrowser.Uninstaller/Properties/AssemblyInfo.cs

@@ -1,6 +1,8 @@
 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
@@ -8,9 +10,9 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyTitle("MediaBrowser.Uninstaller")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyCompany("Media Browser Team")]
 [assembly: AssemblyProduct("MediaBrowser.Uninstaller")]
-[assembly: AssemblyCopyright("Copyright © Microsoft 2013")]
+[assembly: AssemblyCopyright("Copyright © Media Browser Team 2013")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
 
@@ -19,8 +21,25 @@ using System.Runtime.InteropServices;
 // COM, set the ComVisible attribute to true on that type.
 [assembly: ComVisible(false)]
 
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("8730b84d-cebf-4e2a-9a17-4be58bd5c2dc")]
+//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:
 //

+ 2 - 2
MediaBrowser.Uninstaller.Execute/Properties/Resources.Designer.cs → MediaBrowser.Uninstaller/Properties/Resources.Designer.cs

@@ -8,7 +8,7 @@
 // </auto-generated>
 //------------------------------------------------------------------------------
 
-namespace MediaBrowser.Uninstaller.Execute.Properties {
+namespace MediaBrowser.Uninstaller.Properties {
     using System;
     
     
@@ -39,7 +39,7 @@ namespace MediaBrowser.Uninstaller.Execute.Properties {
         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.Execute.Properties.Resources", typeof(Resources).Assembly);
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MediaBrowser.Uninstaller.Properties.Resources", typeof(Resources).Assembly);
                     resourceMan = temp;
                 }
                 return resourceMan;

+ 0 - 0
MediaBrowser.Uninstaller.Execute/Properties/Resources.resx → MediaBrowser.Uninstaller/Properties/Resources.resx


+ 1 - 1
MediaBrowser.Uninstaller.Execute/Properties/Settings.Designer.cs → MediaBrowser.Uninstaller/Properties/Settings.Designer.cs

@@ -8,7 +8,7 @@
 // </auto-generated>
 //------------------------------------------------------------------------------
 
-namespace MediaBrowser.Uninstaller.Execute.Properties {
+namespace MediaBrowser.Uninstaller.Properties {
     
     
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

+ 0 - 0
MediaBrowser.Uninstaller.Execute/Properties/Settings.settings → MediaBrowser.Uninstaller/Properties/Settings.settings


+ 1 - 17
MediaBrowser.sln

@@ -35,9 +35,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Common.Impleme
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Server.Implementations", "MediaBrowser.Server.Implementations\MediaBrowser.Server.Implementations.csproj", "{2E781478-814D-4A48-9D80-BFF206441A65}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Uninstaller.Execute", "MediaBrowser.Uninstaller.Execute\MediaBrowser.Uninstaller.Execute.csproj", "{FACAF749-3E28-46DD-B613-654FCD434959}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Uninstaller", "MediaBrowser.Uninstaller\MediaBrowser.Uninstaller.csproj", "{8B930005-D5B2-4A78-9377-46AC6EDAB688}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Uninstaller", "MediaBrowser.Uninstaller\MediaBrowser.Uninstaller.csproj", "{FACAF749-3E28-46DD-B613-654FCD434959}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -219,20 +217,6 @@ Global
 		{FACAF749-3E28-46DD-B613-654FCD434959}.Release|Win32.ActiveCfg = Release|Any CPU
 		{FACAF749-3E28-46DD-B613-654FCD434959}.Release|x64.ActiveCfg = Release|Any CPU
 		{FACAF749-3E28-46DD-B613-654FCD434959}.Release|x86.ActiveCfg = Release|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Release|Any CPU.Build.0 = Release|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Release|Win32.ActiveCfg = Release|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Release|x64.ActiveCfg = Release|Any CPU
-		{8B930005-D5B2-4A78-9377-46AC6EDAB688}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE