Implement delete on uninstall

This commit is contained in:
Eric Reed 2013-02-26 10:07:58 -05:00
parent cf17b01387
commit 81974c44d2
3 changed files with 59 additions and 2 deletions

View file

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

View file

@ -14,6 +14,7 @@
<CheckBox x:Name="cbxRemovePlugins" Content="Delete Plug-ins" HorizontalAlignment="Left" Margin="16,68,0,0" VerticalAlignment="Top"/>
</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>
</Window>

View file

@ -13,6 +13,7 @@ namespace MediaBrowser.Uninstaller.Execute
public partial class MainWindow : Window
{
protected string Product = "Server";
protected string RootSuffix = "-Server";
public MainWindow()
{
@ -27,10 +28,12 @@ namespace MediaBrowser.Uninstaller.Execute
{
case "server":
Product = "Server";
RootSuffix = "-Server";
break;
case "mbt":
Product = "Theater";
RootSuffix = "-UI";
break;
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
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)
@ -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");
}
}
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();
}
}
}