Empfehlungen zum Aufräumen in CSIDL_APPDATA
-
Hallo zusammmen,
Die Frage hat vielleicht nicht direkt mit der WinAPI zu tun, aber mit der Installation und Deinstallation von Programmen auf Windows. Ich möchte gerne wissen, wie die Richtlinien von Microsoft bezüglich dem AppData Ordner sind. Sollte ein Programm, welches seine Einstellungen im jeweiligen User AppData Ordner abgelegt hat, bei der Deinstallation wieder alles löschen?
Ich hinterlasse ehrlich gesagt ungerne Müll auf einem PC, aber sehe auch ein paar Schwierigkeiten von dieser Stelle den Müll zu entfernen. Ich habe ja womöglich gar nicht die Rechte dazu und wenn, dann müsste ich alle einzelne User durchgehen und überprüfen ob was drin ist?
Was empfiehlt Microsoft? Was macht ihr?
Grüssli
-
Gute Frage.
Ich bin ziemlich sicher, irgendwo bei Microsoft gelesen zu haben, wir sollen den "Müll" dort zurücklassen. Die Quelle finde ich allerdings nicht wieder. Eine andere Möglichkeit sehe ich auch nicht, zumal das Setupprogramm u. U. gar keinen Zugriff auf alle Userordner hat. Außerdem ist nicht auszuschließen, dass der User persönlich oder ein Plugin o. ä. zusätzliche Daten in dem Ordner hinterlassen hat, über deren Verlust er evtl. betrübt wäre.Über einen Link zu einer eindeutigen Aufklärung dieser Frage seitens Microsoft würde ich mich auch freuen.
-
http://msdn.microsoft.com/en-us/library/ee915058.aspx
Uninstall
- Uninstall should remove all traces of a program, including the following:
- Program files, including the setup program.
- Start menu entries.
- Desktop icons and Quick Launch icons (if any).
- Registry settings.
- File associations.- Uninstall should leave behind the following:
- User created files, such as document files.
- Shared dynamic-link libraries stored in the System folder.Also, wenn es keine User-Created-Files sind, dann kannst Du sie löschen. Sonst nicht.
Ansonsten siehe auch hier:
Windows 7 Logo Program
http://msdn.microsoft.com/en-us/windows/dd203105.aspx
-
Jochen Kalmbach schrieb:
Also, wenn es keine User-Created-Files sind, dann kannst Du sie löschen. Sonst nicht.
Verstehe ich das somit richtig:
Wenn mein Programm durch eine Aktion des Users ein File in seinem AppData Ordner erstellt wird, obwohl er dies vielleicht nicht direkt mitbekommt, dann soll dieses File nach der Deinstallation bestehen bleiben? Also nur das, was das Setup installiert, soll auch wieder entfernt werden.Somit ist es erlaubt, "Einstellungsmüll" zu hinterlassen?
Grüssli
-
Das ist eine gute Frage, die ich mir auch schon gestellt habe

Vielleicht sagt das Logo-Programm ja dazu mehr... hab jetzt aber nicht nachgeschaut...
-
Jochen Kalmbach schrieb:
Vielleicht sagt das Logo-Programm ja dazu mehr... hab jetzt aber nicht nachgeschaut...
Ich habe mir die Technical Requirements durchgelesen, wollte ich sowieso schon immer mal tun, aber da steht nicht gerade viel über die Deinstallation. Grundsätzlich ist es sogar nur einen einzigen Satz:
Applications must properly implement a clean, reversible, installation.
Der nächste Satz dreht sich bereits um den Fehlerfall bei der Installation und bei allem danach geht es um die Installation und korrekte Verwendung der Ordner usw. usf.
Naja, jedenfalls danke schon mal für die Links. Sind interessant, aber leider in dem Punkt etwas oberflächlich

Aber vielleicht können wir das Problem auch mal anders angehen:
Sagen wir, dass ich tatsächlich der Administrator bin und ein Programm installiere. Daher habe ich auch die Rechte bei jedem User reinzuschauen, bzw. darin entsprechende Ordner und Files anzulegen. Ich erlaube auch jedem das Programm zu verwenden.
Jetzt kann es aber passieren, dass nach der Installation ein neuer Benutzer erstellt wird. Der soll ja auch das Programm verwenden können, daher hat wohl das Programm dafür zu sorgen, dass entsprechende Ordner und Files im Benutzerverzeichnis angelegt werden.
Wenn nun der Administrator wieder das Programm deinstallieren will, hat die Deinstallationsroutine gar keine Möglichkeit zu erkennen, wer nun diese Files und Ordner im neuen Benutzerverzeichnis angelegt hat. Es ist daher gar nicht möglich, die Sache sauber aufzuräumen.Ausser das Programm würde irgendwie die Einstellungen für den Uninstall verändern, aber das kann ja verdammt kompliziert werden und ist, denke ich, daher eher unwahrscheinlich, dass dies der korrekte Weg sein soll.
Die meisten Programme haben bei mir auch bisher ihren Müll hinterlassen. Wobei das natürlich schon auch positives haben kann. Wenn man das Programm wieder installiert, sind wieder alle Einstellungen von vorher vorhanden.
Grüssli
-
Und theoretisch kannst Du das nicht mal als Admin...
Stell die vor die Benutzerdaten werden wirklick extern gehalten (zentral) in einem Server. Dann kannst Du nicht aufräumen. Denn Du bist höchtens lokaler Admin.Für CISDL_APPDATA gibt es keine Lösung die Daten zu deinstallieren. Außer Deine Software lässt ein "Mül-Programm" zurück, dass die Daten entsorgt. Dami ist es aber selber wieder ein Relikt, dass sich selber entsorgen muss...

Wir löschen auch keine Konfigurationsdateien, bei der Deinstallation.
Und ich halte dieses Verhalten auch für korrekt. Dies hat uns noch niemals Probleme bei der Windows Kompatibilität oder Zertifizierung für irgendein Produkt bereitet.
-
Martin Richter schrieb:
Und theoretisch kannst Du das nicht mal als Admin...
Stell die vor die Benutzerdaten werden wirklich extern gehalten (zentral) in einem Server. Dann kannst Du nicht aufräumen. Denn Du bist höchtens lokaler Admin.Hmm, stimmt

Martin Richter schrieb:
Für CISDL_APPDATA gibt es keine Lösung die Daten zu deinstallieren.
Ist aber irgendwie ... blöd. Ich hinterlasse ungerne Müll auf einem Zielcomputer. Aber immerhin kann ich den schwarzen Peter Windows zuschieben.
Muss ich die Sache halt dokumentieren, vielleicht als Hinweis bei der Deinstallation hinsetzen. Allenfalls könnte man ein Programm zum Download anbieten, welches die Daten vom aktuellen User rauslöscht. Könnte man sogar bei der Deinstallation optional ausführen lassen und die Deinstallationsroutine löscht dieses Programm dann hinterher.
Nicht ganz sauber aber bei Einzel-Systemen würde es schon ausreichen.
Grüssli
-
Ein User des Systems könnte die Anwendung ja auch als Portable-Version benutzen - Der würde sich ärgern wenn plötzlich z.B. seine Einstellungen weg sind obwohl er die Anwendung eigentlich noch nutzt.
Ein Deinstallationsprogramm müsste ja theoretisch jeden User fragen ob es die Einstellungen entfernen darf, stelle ich mir schlecht lösbar vor...
-
Eine wirkliche Lösung gibt es hier nicht.
Für den Benutzer, der deinstalliert kann man fragen.
Ansonten muss man es dokumentieren!Es kann auch nicht die Lösung sein zu warten, bis sich ein anderer Anwender wieder anmeldet um den Cleanup durchzuführen. Niemand weiß wann alle endlich angemeldet waren und das Cleanup-Programm endlich sich selbst vernichten darf.