private void bgwUninstall_DoWork(object sender, DoWorkEventArgs e) { var context = (e.Argument as setupContext); try { string baseDir = AppDomain.CurrentDomain.BaseDirectory; //Zu entfernende Dateien ermitteln string[] files = Directory.GetFiles(baseDir, "*", SearchOption.AllDirectories); int currentFile = 0; //Versuchen Dateien zu löschen foreach (string file in files) { try { //Versuchen das native Abbild der Datei zu entfernen if (file.EndsWith(".exe") || file.EndsWith(".dll")) { nativeImages.Uninstall(file); } File.Delete(file); currentFile++; bgwUninstall.ReportProgress(Percent(currentFile, files.Length)); } catch { } } //Programm aus der Systemregistrierung entfernen ProgramsAndFeaturesHelper.Remove(context.Product); //Settings löschen if (context.removeSettings) { string settingsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "updateSystem.NET"); if (Directory.Exists(settingsPath)) { Directory.Delete(settingsPath, true); } } //Verknüpfungen entfernen string scDesktop = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "updateSystem.NET Administration.lnk"); string scStartMenu = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Programs), "updateSystem.NET Administration.lnk"); if (File.Exists(scDesktop)) { File.Delete(scDesktop); } if (File.Exists(scStartMenu)) { File.Delete(scStartMenu); } //Dateitypeverknüpfungen entfernen (nur in Releaseversion) if (context.Product.GetType() == typeof(productRTM)) { if (FileAssociation.IsAssociated(".udprojx")) { FileAssociation.DeleteAssociation(".udprojx"); } if (FileAssociation.IsAssociated(".udproj")) { FileAssociation.DeleteAssociation(".udproj"); } FileAssociation.refreshDesktop(); } } catch (Exception exc) { e.Result = exc; } }