Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

14.01.2012, 16:25

(Deinstallations)Programm soll nach beenden gelöscht werden

Hallo,
Ich habe mir ein kleines Installationsprogramm und Deinstallationsprogramm geschriebe, es funktioniert auch alles.
Meine Frage ist jetzt, wie ich das Deinstallationsprogramm nach Abschluss der Deinstallation automatisch löschen kann, da ich nicht möchte, dass etwas nach der Deinstallation übrig bleibt und ich möchte auch nicht, dass man es manuell löschen muss.
Wie funktioniert das denn bei Programmen wie InstallShield? da bleibt ja, soweit ich weiß, auch nichts nach der Deinstallation übrig.
Programme wie InstallShield oder InnoSetup möchte ich nicht verwenden, da ich jetzt schon so weit gekommen bin und es auch viel schöner finde, etwas selbstentwickeltes zu verwenden.

Schonmal Danke im voraus

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

16.01.2012, 18:08

http://wix.sourceforge.net/ ;)
So wie ich das sehe, ist das aber auch nichts anderes wie besispielsweise InstallShield, womit dann mit XML-Quellcode ein Setup-Programm mit WiX erstellt wird. Meine Frage sollte eher in die Richtung gehen, wie es geschafft wird, dass nach einer Deinstallation auch das Deinstallationsprogramm gelöscht wird (Kann auch jedes beliebige andere Programm sein, aber das ist bei meinem Problem der Fall), falls das überhaupt so ist (ansonsten würde mich interessieren, wie das dann funktioniert).
Ich habe jetzt auf meiner Festplatte einen Ordner InstallShield gefunden, auf den sich auch die Deinstallationsverknüpfungen von verschiedenen Programmen beziehen. Kann es sein, dass von dort das Programm deinstalliert wird und dann für immer ein Programm in diesem Ordner erhalten bleibt?

Ich würde gerne mein eigenes Deinstallationsprogramm verwenden, bei dem im Prinzip nur noch dieser letzte Schritt fehlt.

4

16.01.2012, 18:12

Zitat

Ich habe jetzt auf meiner Festplatte einen Ordner InstallShield gefunden, auf den sich auch die Deinstallationsverknüpfungen von verschiedenen Programmen beziehen. Kann es sein, dass von dort das Programm deinstalliert wird und dann für immer ein Programm in diesem Ordner erhalten bleibt?
Ja, aber es muss nicht unbedingt der InstallShield Ordner sein, es kann auch der Temp oder Windows Ordner sein(Eigentlich egal).

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

16.01.2012, 18:20

http://wix.sourceforge.net/ ;)
So wie ich das sehe, ist das aber auch nichts anderes wie besispielsweise InstallShield, womit dann mit XML-Quellcode ein Setup-Programm mit WiX erstellt wird.

Es wird eine MSI Package erstellt die vom Windows Installer ausgeführt wird. Nachdem der Windows Installer Teil von Windows ist ist, gibts keinen Grund mehr das Setup zu deinstallieren.

Meine Frage sollte eher in die Richtung gehen, wie es geschafft wird, dass nach einer Deinstallation auch das Deinstallationsprogramm gelöscht wird (Kann auch jedes beliebige andere Programm sein, aber das ist bei meinem Problem der Fall), falls das überhaupt so ist (ansonsten würde mich interessieren, wie das dann funktioniert).

Eine exe kann sich nicht direkt selbst löschen. Warum willst du überhaupt das Setup löschen? Mir persönlich würd das als Benutzer eher auf die Nerven gehen...

Ich würde gerne mein eigenes Deinstallationsprogramm verwenden, bei dem im Prinzip nur noch dieser letzte Schritt fehlt.

Warum? MSI ist generell der empfohlene Weg um unter Windos irgendwas zu installieren/deinstallieren. Wenn du mit deinem eigenen Installer wirklich alle Feinheiten aller möglichen Windows Versionen berücksichtigen willst, wird das sehr viel Arbeit werden. Ich denk da an Dinge wie Programmverzeichnisse, Benutzerverzeichnisse, Registry Schlüssel etc. die je nach Windows Version, Edition, Sprache, Hardwarearchitektur unterschiedlich sein können...

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

6

16.01.2012, 19:17

Warum willst du überhaupt das Setup löschen? Mir persönlich würd das als Benutzer eher auf die Nerven gehen...


Also mich würds eher nerven, wenn nach der Deinstallation noch das Deinstalltionsprogramm inkl. Programmordner auf meiner Platte liegt...

@Topic:
Lösung wurde hier schon stückchenweise genannt: Eine Exe kann sich nicht selbst löschen.
Wenn ich so was schreiben würde, dann würde ich zum dafür sorgen, dass das Löschen der Dateien von einem Programm/Script aus dem Temp verzeichnis vorgenommen wird. Dieses wird von Windows regelmäßig gelöscht.

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

7

16.01.2012, 22:13

WiX lässt da eigentlich keine Wünsche offen.
Nach der Installation kann man alles wieder ohne Rückstände von der Festplatte entfernen was installiert wurde. Auch das Programmverzeichnis. Das macht aber nicht immer Sinn. Konfigurationsdateien oder Screenshots, was weiß ich, wollen Nutzer vielleicht auch nach der Deinstallation behalten. Ansonsten stimmt es das eine Exe sich nicht selber löschen kann, man kann von dieser aber eine andere in den Arbeitsspeicher laden, von dort ausführen und beide Exe-Dateien löschen lassen. ;)

8

22.01.2012, 14:34

MSI ist generell der empfohlene Weg um unter Windos irgendwas zu installieren/deinstallieren. Wenn du mit deinem eigenen Installer wirklich alle Feinheiten aller möglichen Windows Versionen berücksichtigen willst, wird das sehr viel Arbeit werden. Ich denk da an Dinge wie Programmverzeichnisse, Benutzerverzeichnisse, Registry Schlüssel etc. die je nach Windows Version, Edition, Sprache, Hardwarearchitektur unterschiedlich sein können...
Ich glaube, ich nehme jetzt tatsächlich WiX.
Lösung wurde hier schon stückchenweise genannt: Eine Exe kann sich nicht selbst löschen.

Wenn ich so was schreiben würde, dann würde ich zum dafür sorgen, dass das Löschen der Dateien von einem Programm/Script aus dem Temp verzeichnis vorgenommen wird. Dieses wird von Windows regelmäßig gelöscht.

Wird das Temp-verzeichnis wirklich automatisch gelöscht? Bei mir (WinXP) sind noch manche alten Dateien vorhanden, ansonsten wäre das natürlich die beste Lösung.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

22.01.2012, 14:42

(...) man kann von dieser aber eine andere in den Arbeitsspeicher laden, von dort ausführen und beide Exe-Dateien löschen lassen. ;)

Das geht? Ohne zugehöriges Executable-image auf der Festplatte kann Code ausgeführt werden unter Windows und das original image gelöscht werden?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

22.01.2012, 15:01

Mit der normalen WinAPI wäre mir kein Weg bekannt.
Zwei Hacks die mir gerade einfallen würden:
Man könnte wohl mit NtCreateSection() + NtCreateProcess() was basteln.
Alternativ könnte man eine dll bauen, mit rundll32 einen Prozess erzeugen, in dem Prozess per VirtualAlloc() executable Pages anfordern, dort den Code draufschreiben, reinspringen, die dll unloaden und die Dateien löschen. Etwaig laufende Virenscanner werden einen dafür vermutlich ganz doll lieb haben.

Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von »dot« (22.01.2012, 15:13)


Werbeanzeige