Преглед изворни кода

Implement delete on uninstall

Eric Reed пре 12 година
родитељ
комит
81974c44d2

+ 1 - 1
MediaBrowser.Installer/MediaBrowser.Installer.csproj

@@ -29,7 +29,7 @@
     <PublisherName>Media Browser Team</PublisherName>
     <PublisherName>Media Browser Team</PublisherName>
     <SuiteName>Media Browser</SuiteName>
     <SuiteName>Media Browser</SuiteName>
     <OpenBrowserOnPublish>false</OpenBrowserOnPublish>
     <OpenBrowserOnPublish>false</OpenBrowserOnPublish>
-    <ApplicationRevision>15</ApplicationRevision>
+    <ApplicationRevision>16</ApplicationRevision>
     <ApplicationVersion>0.1.1.%2a</ApplicationVersion>
     <ApplicationVersion>0.1.1.%2a</ApplicationVersion>
     <UseApplicationTrust>false</UseApplicationTrust>
     <UseApplicationTrust>false</UseApplicationTrust>
     <PublishWizardCompleted>true</PublishWizardCompleted>
     <PublishWizardCompleted>true</PublishWizardCompleted>

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

@@ -14,6 +14,7 @@
             <CheckBox x:Name="cbxRemovePlugins" Content="Delete Plug-ins" HorizontalAlignment="Left" Margin="16,68,0,0" VerticalAlignment="Top"/>
             <CheckBox x:Name="cbxRemovePlugins" Content="Delete Plug-ins" HorizontalAlignment="Left" Margin="16,68,0,0" VerticalAlignment="Top"/>
             
             
         </Grid>
         </Grid>
+        <Button x:Name="btnFinished" Content="Uninstall" HorizontalAlignment="Left" Margin="505,341,0,0" VerticalAlignment="Top" Width="75" IsDefault="True" RenderTransformOrigin="0.991,-1.041" Click="BtnFinished_OnClick"  Visibility="Hidden"/>
 
 
     </Grid>
     </Grid>
 </Window>
 </Window>

+ 57 - 1
MediaBrowser.Uninstaller.Execute/MainWindow.xaml.cs

@@ -13,6 +13,7 @@ namespace MediaBrowser.Uninstaller.Execute
     public partial class MainWindow : Window
     public partial class MainWindow : Window
     {
     {
         protected string Product = "Server";
         protected string Product = "Server";
+        protected string RootSuffix = "-Server";
 
 
         public MainWindow()
         public MainWindow()
         {
         {
@@ -27,10 +28,12 @@ namespace MediaBrowser.Uninstaller.Execute
             {
             {
                 case "server":
                 case "server":
                     Product = "Server";
                     Product = "Server";
+                    RootSuffix = "-Server";
                     break;
                     break;
 
 
                 case "mbt":
                 case "mbt":
                     Product = "Theater";
                     Product = "Theater";
+                    RootSuffix = "-UI";
                     break;
                     break;
 
 
                 default:
                 default:
@@ -93,10 +96,42 @@ namespace MediaBrowser.Uninstaller.Execute
                 }
                 }
             }
             }
 
 
+            var rootPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MediaBrowser" + RootSuffix);
+
+            if (cbxRemoveAll.IsChecked == true)
+            {
+                // Just remove our whole directory
+                RemovePath(rootPath);
+            }
+            else
+            {
+                // First remove the system
+                lblHeading.Content = "Removing System Files...";
+                RemovePath(Path.Combine(rootPath, "System"));
+
+                // 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"));
+                }
+                if (cbxRemovePlugins.IsChecked == true)
+                {
+                    lblHeading.Content = "Removing Plugin Files...";
+                    RemovePath(Path.Combine(rootPath, "plugins"));
+                }
+            }
 
 
             // and done
             // and done
             lblHeading.Content = string.Format("Media Browser {0} Uninstalled.", Product);
             lblHeading.Content = string.Format("Media Browser {0} Uninstalled.", Product);
-            btnUninstall.Content = "Finish";
+            btnUninstall.Visibility = Visibility.Hidden;
+            btnFinished.Visibility = Visibility.Visible;
         }
         }
 
 
         private static void RemoveShortcut(string path)
         private static void RemoveShortcut(string path)
@@ -112,7 +147,28 @@ namespace MediaBrowser.Uninstaller.Execute
             {
             {
                 MessageBox.Show(string.Format("Error attempting to remove shortcut {0}\n\n {1}", path, ex.Message), "Error");
                 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();
+        }
     }
     }
 }
 }