Entwickler-Ecke
Programmierwerkzeuge - Inno Setup: Registry-Schlüssel beim Deinstallieren löschen
CodexX - Fr 10.06.05 00:17
Titel: Inno Setup: Registry-Schlüssel beim Deinstallieren löschen
hm, ich krieg das irgendwie nicht hin ...
wenn das programm deinstalliert wird, soll ein bestimmter registry-schlüssel/wert gelöscht werden.
die hilfe hat mir folgendes geflüstert:
RegDeleteValue(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run, Programm);
aber wo kommt das rein?
Delete - Fr 10.06.05 09:46
Dieser Schlüssel wird offenbar nicht von deinem Setup während der Installation angelegt, stimmt´s? Ansonsten würde er nämlich automatisch entfernt werden. Genau das wäre die eleganteste Lösung. Erstell einen leeren Schlüssel, bzw. einen mit gefakten Einträgen, in der [Registry]-Sektion, dann legt das Setup ihn schon beim Installieren an. Vorteil: Er landet in der Log-Datei, und der Uninstaller kann ihn entfernen. ;) Müsste IMHO so aussehen:
Quelltext
1: 2: 3: 4:
| [Registry] Root: HKCU; Subkey: "Software\...\Run"; ValueName: "Programm"; \ ValueType: "string"; ValueData: "{app}\MyApp.exe"; \ Flags: dontcreatekey uninsdeletevalue |
Die Flags sind wichtig. Dabei wird der Schlüssel nicht angelegt, aber beim Deinstallieren wird der Wert entfernt.
Wenn du es aber per Skriptsprache machen willst, dann wäre vllt. die neue Uninstaller-Ereignisfunktion "CurUninstallStepChanged" gut geeignet. Parameter ist ein so genannter TUninstallStep, von denen du mal
usUninstall oder
usPostUninstall ausprobieren solltest. Ersterer wird
vor der Deinstallation ausgelöst, letzterer danach. Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure CurUninstallStepChanged(CurrentUninstallStep: TUninstallStep); begin if CurrentUninstallStep = usUninstall then begin end; end; |
Geht aber erst ab Inno Setup 5, AFAIK.
CodexX - Fr 10.06.05 12:53
MathiasSimmack hat folgendes geschrieben: |
Quelltext 1: 2: 3: 4:
| [Registry] Root: HKCU; Subkey: "Software\...\Run"; ValueName: "Programm"; \ ValueType: "string"; ValueData: "{app}\MyApp.exe"; \ Flags: dontcreatekey uninsdeletevalue |
Die Flags sind wichtig. Dabei wird der Schlüssel nicht angelegt, aber beim Deinstallieren wird der Wert entfernt. |
ah das ist sehr gut! wusste ich nicht.
der autostarteintrag wird wahlweise im programm angelegt und soll auf jeden fall beim deinstallieren wieder entfernt werden.
das geht ja anscheinend mit den flags. ich werde das heute abend mal ausprobieren. melde mich dann nochmal.
danke :)
CodexX - Fr 10.06.05 23:37
also sehr seltsam.
ich habe das genau so gemacht, wie du das geschrieben hast, man kann das ja auch komfortabel mit dem istool machen (da kann man auch die beiden erwähnten flags setzen). jedenfalls wird der key trotzdem bei der installation angelegt :(
ich habe das mit meiner 4.x version ausprobiert, danach extra die neuste 5er drauf gemacht, aber ist das selbe. der wert wird in der registry trotzdem angelegt.
keine ahnung warum. könntest du das vllt mal testen, ob das bei dir auch der fall ist?
Delete - Sa 11.06.05 08:49
Mein Fehler, sorry :oops:. Es reicht die folgende Anweisung:
Quelltext
1: 2: 3:
| [Registry] Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; \ ValueName: "Programm"; Flags: uninsdeletevalue; |
So wird der Eintrag namens "Programm" nicht angelegt, aber beim Deinstallieren wird er entfernt, wenn er vorhanden ist. Getestet mit Inno Setup 5.1.4.
CodexX - Sa 11.06.05 12:40
super, es geht!
vielen dank, matthias :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!