Zum Inhalt springen

Frage an Programmierer


Gibt`s schon

Empfohlene Beiträge

Hallo,

als Laie hab ich mich schon oft (sehr oft) gefragt ob es denn so schwierig ist eine Deinstallationsroutine zu Programmieren die Tatsächlich das Programm RESTLOS entfernt.

Daher meine Frage. Ist es so schwierig oder will man mit Absicht Reste des Programms auf dem PC lassen?

Vorab schon mal Danke für die Antwort.

Grüßle

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zum einen will man natürlich nicht, dass z.B. Lizenzinformationen beim Deinstallieren gelöscht werden.

Zum anderen könnte das Deinstallieren gemeinsam genutzter Dateien dazu führen, dass andere Programme nicht mehr richtig laufen. Gerade bei Steuerelementen oder dlls könnte dies leicht auftreten. Stell dir vor, du hast ein Programm das eine neue Art eines Grids benutzt. Wenn ein anderes Programm dieses auch benutzt gibt es zuerst kein Probleme. Wenn du nun aber eines dieser Programme deinstallieren würdest, würde auch die "Grid-Datei" gelöscht werden. Die Folge wäre, dass das andere Programm nicht mehr richtig laufen würde.

Der dritte Punkt der mir noch einfällt: Meist werden Dateien nach dem Programmstart bzw. wärend der Laufzeit erstellt: z.B. Spielstände, Ini-Dateien, andere Konfigurations-Dateien und Daten anderer Art. Beim Installieren existierten diese noch nicht, daher weiss das Installations-/Deinstallationsroutine nichts von ihnen und deinstalliert sie auch nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antwort.

Lizenzinformation ja wohl nur bei Programmen welche eine benötigen. Dann ok.

Zu Punkt zwei:

Einige Programme machen wohl aber doch eine Abfrage der Gemeinsamen Komponenten, welche dann bei der Deinstallation angezeigt werden. Z.B. kommt dann die Frage (Sinngemäß) xy.dll scheint von keinem anderen Programm benötigt zu werden. Beibehalten? od. Löschen?

Oder verstehe ich diesen Punkt falsch?

Punkt drei:

Der Programmier wird ja wohl Wissen welche Konfigurations-dateien durch sein Programm erstellt werden. Dann kann er sie auch entfernen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Programmier wird ja wohl Wissen welche Konfigurations-dateien durch sein Programm erstellt werden. Dann kann er sie auch entfernen.
Viele Programme werden nicht von einer einzelnen Person erstellt. Solches Wissen geht im Projekt gern mal verloren.

Die eigentliche Ursache ist aber IMHO, dass die Entwickler die Installations- und Deinstallationsroutinen nicht selbst schreiben, sondern ein Installerpaket dazu benutzen. Der Umgang mit diesen Paketen ist nicht immer ganz problemlos - das mag an den Benutzern oder den Installern liegen - und daher kommt es da häufiger zu Schwierigkeiten, die nur mit viel zeitaufwändigem Testen behoben werden können.

Zeit ist Geld, und gerade das Funktionieren der Deinstallationsroutine steht da ganz weit hinten. Kaum ein Softwareunternehmen wird die meist ohnehin schon knappe Zeit darauf verwenden, dass eine vergleichsweise unwichtige Funktionalität in möglichst vielen Konfigurationen richtig arbeitet, zumal diese Funktionalität nur von "Ex-Kunden in spe" benutzt wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zur ursprünglichen Frage:

Nein, es ist nicht schwierig.

Oft wird es einfach stiefmütterlich behandelt, und das nicht komplette Entfernen beim Deinstallieren ist nicht vorsätzlich verursacht.

Manchmal könnten sicher auch mehr oder weniger ritterliche Gründe eine komplette Entfernung verhindern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

also einmal zu dem halben OT: Wenn du n Trialprogramm hast, werden die Trialinfos mit sicherheit nicht gelöscht, sonst könntest du ja ein Programm 30 Tage nutzen, löschen, installieren und weitere 30 Tage nutzen, lösche, installieren. usw. usw. usw., daher ist es ganz sinnvoll einige Daten nciht zu löschen.

Und nun zum Topic:

Wenn du den Installer dazu schreibst und es im Programm eine eigene Funktion zum anlegen von Dateien gibt, dann kannst du mit 10 Zeilen Code einen Deinstaller schreiben der wirklich alles löscht!

Der Installer muss halt alle Dateien + Pfade in eine datei schreiben, die Funktion zum anlegen von Daten schreibt auch bei jeder neuen Datei den Namen + Pfad rein. Der Deinstaller ließt die Datei aus und löscht dann alles was da drin steht, dann dieses Date iund dann sich selbst.

Aber wie gesagt, das ist ein Programmieraufwand der zwar nicht hoch ist, aber da und keine Firma hat wirklich interesse daran Arbeitszeit darein zu stecken, wenn eh keine da ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nochmals Danke für Eure Antworten.

Wenn ich Euch richtig verstehe ist es also durchaus möglich eine "saubere" Deinstallation zu Programmieren. Es fehlt also meist am Willen oder der Zeit.

Ein Paradebeispiel ist da wohl Symantec. Die scheinen weder über den Willen noch über Zeit zu verfügen.

Eigentlich auch verständlich, wer würde sonst auch noch Geld für irgendwelche Reinigungstools ausgeben. Eine Krähe hackt der and.....

Der Kunde ist König und der König hat das Geld.

Link zu diesem Kommentar
Auf anderen Seiten teilen

"oft wird ja auch irgend ein kryptischer key in der registry abgelegt, naja, meist osgar mehr als nur einer.

tja, dann such die etz raus und lösch sie

da hat nich wirklich jemand bock sich die mühe zu machen."

Lustige Vorstellung.

Wäre das "Legal"?

Man benutzt ja keine Droge o.ä. sondern nur sein Recht in der Registry rumzufummeln.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es gibt aber auch gute Beispiele - ich erinnere mich noch an das gute alte Shareware-Programm Microangelo. Damit konnte man einfach Cursor und Icons jeder Art erstellen. Es war 21 Tage Shareware, hat danach einige Tage immer erinnert, es doch zu kaufen und letztendlich ne ganze Zeit später den Dienst verweigert, wenn kein passender Key angegeben wurde.

Der Deinstaller war allerdings so gut, daß er echt alles zum Programm gehörende restlos entfernte. Dazu gehörten sogar Verknüpfungen im Startmenü, die man manuell in andere Ordner verschoben hatte. Dummerweise war der Deinstaller sogar so gründlich, daß selbst die Trial-Infos gelöscht wurden und man es danach problemlos neu installieren und nutzen konnte ;)...

Link zu diesem Kommentar
Auf anderen Seiten teilen

"oft wird ja auch irgend ein kryptischer key in der registry abgelegt, naja, meist osgar mehr als nur einer.

tja, dann such die etz raus und lösch sie

da hat nich wirklich jemand bock sich die mühe zu machen."

Lustige Vorstellung.

Wäre das "Legal"?

Man benutzt ja keine Droge o.ä. sondern nur sein Recht in der Registry rumzufummeln.

na klar, dafür is die Registry ja auch da.

da stehn lauter infos drin, zB die Versionsnummer des Programms, oder wenns n Browser is zB die zuletzt aufgerufene URL, die wird dann wieder aufgerufen wenn man den browser startet.

oder eben trialinfos

Diverse Pfadangaben welche zu speziellen Dateien führen.

es gibt ja diverse Reg-Cleaner mit denen du deine Registry "aufräumen" kannst.

auf der GameStar DVD/CD is ja immer eine mit dabei und so im Netz gibts da allerhand.

Allerdings, was die Programme in sonstwelchen unternordnern unter C:\Windows\ ablegt, das weiß nur Gott ;)

Man müsste eine Art externes Logtool haben, welches änderungen in Ordnern überwacht und man so zB den gesamten Windowsordner überwachen und sich neue Dateien etc. anzeigen lassen können.

gibts da schon was?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da fäält mir doch spontan Sysinternals ein. Filemon und Regmon bieten diese Funktionen. Die zeichnen dann alle Aktivitäten im Dateisystem und der Registry auf. Also vor nem Setup starten. Nach dem Setup auslesen und Du weisst was der Installer treibt. Das ganze dann noch zur Laufzeit, damit man erkennt was sonst noch so angelegt wird.

Gibts hier:

http://www.sysinternals.com/ntw2k/utilities.shtml#monitor

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier mal ein Beispiel aus einem Install-Script (das dann von einem Programm zur Setup.exe umgewandelt wird):


[Registry]

Root: HKLM; Subkey: Software\Firma\ProgName; ValueType: string;

  ValueName: Version; ValueData: 2.1.2.100; 

  Flags: createvalueifdoesntexist uninsdeletekey

Diese Zeile sorgt dafür, dass ein Registryeintrag angelegt wird. Entscheidend sind hierbei aber die letzten beiden Wörter bzw. nur das letzte. Das sagt dem Installer, dass der Key beim deinstallieren gelöscht werden soll. Wenn man das Prog jetzt nicht so gut kennt oder das einfach vergisst (muss schnell gehen oder was auch immer) bleibt der Key in der Registry stehen. Einen default-Wert gibt es da nicht.

Und wenn man es dann ausprobiert funktioniert die Installation trotzdem. Wer schaut schon durch die Registry bzw. wer kennt sich da überhaupt so wirklich aus?

Es ist IMHO nur der Grund, dass der Eintrag (oder so ein ähnlicher halt) vergessen oder übersehen wurde.

Bei Shared files kann man ruhig ein Löschen anordnen. Man muss nur beim Installieren angeben, dass es ein Shared file ist. In der Registry (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs)

wird nämlich ein Zähler mitgeführt, welches Programm diese Datei braucht. Beim deinstallieren wird der Zähler dann vermindert und wenn 0 kann die Datei auch gelöscht werden. Die Frage kennt ja bestimmt jeder "Datei kann von anderen Programmen genutzt werden. Wollen sie sie wirklich löschen?)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jetzt doch nochmal.

Von YesterDay:

"Die Frage kennt ja bestimmt jeder "Datei kann von anderen Programmen genutzt werden. Wollen sie sie wirklich löschen?"

Genau dies meinte ich im oberen Beitrag.

Zu Grids:

"Hiermit sind einfach Komponenten gemeint, die die Daten auf tabellarische Weise anzeigen."

Ähnlich einer Tabellenkalkulation?

Link zu diesem Kommentar
Auf anderen Seiten teilen

... na sicherlich gibt es Programme die andere Programme wieder loeschen, ich weiss nur nicht, wie diese heissen oder ob sie fast kostenlos sind bzw. unter GPL stehen (so fuer den Hausgebrauch?)

... Hat da irgendwer ein Stichwort, wonach man googleln koennte?

Grids kenne ich leider auch nicht.

Ich stelle mir das Loeschen von Programmen irgendwie so vor, dass das Loeschprogramm einfach den Speicherbereich des benutzten Programmes mehrere Male mit Nullen ueberschreibt und das wars dann auch.

Aber wie macht das so ein Loeschprogramm und wie kennt es die Adressen, die mein zu loeschendes Programm benutzt hat?

... gibts da irgendwie ein pdf irgendwo, wie solche Loeschprogramme im Allgemeinen Funktionieren?

(Meinen Superguru zu Hause kann ich leider nicht fragen, denn der hat gemeint, dass er das Fach an der Uni nicht belegt hat, brrr.)

Liebe Gruesse,

sissy66.

Link zu diesem Kommentar
Auf anderen Seiten teilen

also einmal zu dem halben OT: Wenn du n Trialprogramm hast, werden die Trialinfos mit sicherheit nicht gelöscht, sonst könntest du ja ein Programm 30 Tage nutzen, löschen, installieren und weitere 30 Tage nutzen, lösche, installieren. usw. usw. usw., daher ist es ganz sinnvoll einige Daten nciht zu löschen.

Oder noch einfacher, um sich erst mal irgendwie zu helfen ... einfach das Datum des Rechners zurueckdrehen (/etc/localtime ?).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Sissy.

es ging mir nicht um das Funktionsprinzip des Löschens sondern um die Deinstallation eines Programmes und zwar ohne Rückstände.

Da viele Programme nach der Deinstallation einen Haufen Müll hinterlassen hat es mich interessiert ob es denn soooo schwierig ist eine Saubere Deinstallation zu Programmieren.

Daher

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zum Funktionsprinzip vom Löschen:

Wenn eine Datei einfach gelöscht wird (ohne Zusatztools), wird nur der Eintrag der auf die Datei verweist aus der FAT (File Allocation Table - Dateizuordnungstabelle) entfernt. Die Daten liegen solange an ihrem alten Speicherort bis Sie von neuen Daten überschrieben werden. Sonst hätte Software wie die von Ontrack oder FileRecovery nicht so gute Chancen bei der Wiederherstellung. Bei den Windows Systemen wird die Datei eh nur (abhängig von Einstellung und Grösse, Zugriffsart) in den Papierkorb verschoben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...