2009-07-13 12 views
2

Ich habe ein Fenster .net-Anwendung mit dem Namen "XYZ", ich habe einen benutzerdefinierten Ordner mit dem Namen "ABC" erstellt (Ordner kann irgendwo anders als Anwendungspfad sein) bei der Verwendung meiner Anwendung nach der Installation.Wie lösche Ordner bei der Deinstallation in C# .NET-Anwendung?

Wenn ich die Anwendung zu deinstallieren alle Ordner entfernt werden, aber "ABC" Ordner bleiben dort.

Wie kann ich "ABC" Ordner löschen, der sich nicht auf dem Anwendungspfad befindet?

Antwort

9

Sie haben für das benutzerdefinierte Aktionen zu verwenden:

  1. eine neue Bibliothek hinzufügen („CustomActions-“), um das Setup-Projekt
  2. Add => = neues Element> Installer Klasse
  3. wechseln Sie zu Codeansicht und überschreiben Sie die Uninstall-Methode

Code:

public override void Uninstall(IDictionary savedState) 
{ 
    base.Uninstall(savedState); 

    // Delete folder here. 
} 

Wenn Sie nicht über Ihre eigene DeleteFolder Methode schreiben einen Verweis auf Microsoft.VisualBasic hinzufügen:

Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory("C:\\MyFiles", Microsoft.VisualBasic.FileIO.DeleteDirectoryOption.DeleteAllContents); 
  1. Fügen Sie den Projektausgang (Primary Output) des CustomActions- Projekt auf das Setup-Projekt .
  2. Rechts Ihr Setup-Projekt klicken und klicken Sie auf Ansicht => Benutzerdefinierte Aktionen
  3. Rechts klicken uninstall => Benutzerdefinierte Aktion hinzufügen => Anwendungsordner => Primäre Ausgabe von CustomActions-

Hinweis: Ein gutes Beispiel hierfür ist befindet sich here. Sie erklären dieses Beispiel genauer. Etwas, das in dieser Antwort zunächst nicht offensichtlich war, war die Tatsache, dass Sie die Installer-Klassenvorlage innerhalb des APPLICATIONS-Projekts hinzufügen mussten, NICHT das SETUP-Projekt der Anwendung. Grundsätzlich ruft das Setup-Projekt die Procs Install() und Uninstall() von jeder Anwendung auf, die den benutzerdefinierten Aktionen im Setup-Projekt hinzugefügt wurde. Die Idee ist, diese beiden Procs zu überschreiben, um Code zu injizieren, um Ihre Gebote zu erfüllen ...

+0

Ist es möglich, das ursprüngliche Installationsverzeichnis von der SavedState [] Sammlung zu bekommen? Ich möchte keinen Pfad in meine App fest codieren, sondern möchte stattdessen versuchen, das ursprüngliche Installationsverzeichnis zu löschen. Der Versuch, das aktuelle Verzeichnis zu überprüfen, endet im Verzeichnis "C: \ Windows \ SysWOW64". : / –

0

erstellen Custom Installer, können Sie hier für mehr detailes EDIT Hier ist besser link, die Probe in VB.NET lesen, aber es ist nicht schwer zu verstehen;)

0

Wie pro meines Wissens Wenn Sie ein Installationsprogramm verwenden, um die App & zu installieren, wird der Ordner von Ihrer App erstellt & nicht das Installationsprogramm, dann wird es nicht gelöscht.

Stattdessen müssen Sie eine benutzerdefinierte Aktion verwenden, die bei der Deinstallation ausgeführt wird und diese löscht. Oder erstellen Sie eine benutzerdefinierte C# -App, die nur ausgeführt wird, wenn eine Deinstallation durchgeführt wird und der Ordner gelöscht wird. (Ich nehme an, Sie einige professionelle Installer wie Installshield verwenden)

Verwandte Themen