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;
            }
        }