![]() |
InnoSetup: User fragen, ob Datei deinstalliert werden soll
Hi,
ich verwende InnoSetup zur Installation hab dazu folgende Frage bzw Problem: Mein Programm speichert Programmeinstellungen in einer ini-Datei. Nun möchte ich beim Deinstallieren den User fragen, ob er diese Datei behalten bzw. löschen möchte. Dabei bin ich so vorgegangen: [code=pre][UninstallDelete] Type: filesandordirs; Name: {userappdata}\MeinProgram\; Check: FragMich
Code:
Das Problem: Die Frage wird bei der Installation und nicht bei der Deinstallation aufgerufen.
function FragMich: boolean;
begin Result := (MsgBox('Soll die Datei gelöscht werden?', mbConfirmation,MB_YESNO) = IDYES); end; Wie geht es richtig? Gruß Thomas [edit=sakura] CODE-Tags. Mfg, sakura[/edit] |
Re: InnoSetup: User fragen, ob Datei deinstalliert werden so
Ich habe schon im
![]() Wende dich doch notfalls mal an das deutsche ![]() Edit: Ah, ich sehe schon. Du hast die Frage schon dort gestellt. Sorry. :oops: |
Re: InnoSetup: User fragen, ob Datei deinstalliert werden so
Wie versprochen habe ich mir das noch mal angeguckt und eine Lösung gefunden. Dass "[UninstallDelete]" schon bei der Installation aufgerufen wird, ist kein Wunder und auch kein Fehler. Vllt. weißt du ja, dass Inno Setup für jede Datei und jeden Registryeintrag usw. die LOG-Datei ergänzt, damit der Uninstaller später auch weiß, was er entfernen soll. Da der Uninstaller ja aber nicht wissen kann, ob dein Programm später noch selbst Dateien anlegt, gibst du deren Namen üblicherweise in der Sektion "[UninstallDelete]" an. Während der Installation werden diese Namen dann auch bloß in die LOG-Datei geschrieben, damit der Uninstaller später Bescheid weiß.
Aber es muss ja nun unbedingt eine Abfrage sein, ;), also brauchst du eine der neuen Uninstaller-Ereignisfunktionen: [code=pre]
Code:
Ich behaupte jetzt einfach mal, dass es die erst ab Inno Setup 5 gibt. :) Ich gehe aber davon aus, dass du ohnehin immer die aktuellste Version benutzt.
procedure CurUninstallStepChanged(CUS: TUninstallStep);
var S : string; begin if(CUS = usUninstall) then begin S := ExpandConstant('{app}\test.ini'); if(fileexists(S)) and (MsgBox('Wollen Sie die Datei "' + S + '" entfernen?',mbConfirmation,MB_YESNO) = IDYES) then begin DeleteFile(S); end; end; end; Einziger Schwachpunkt: Es funktioniert nicht mit mehrsprachigen Setups, weil man im Inno Setup-Deinstaller nicht auf die "[CustomMessages]"-Sektion zugreifen kann. Als Lösung würde mir höchstens einfallen, den passenden Sprachstring bei der Installation in die Registry zu schreiben und dann bei der Abfrage darauf zuzugreifen. |
Re: InnoSetup: User fragen, ob Datei deinstalliert werden so
Hab noch eine Frage dazu:
Bei meinem Script kann der User in den Komponenten wählen, ob er das Programm für alle User oder nur für den aktuelle User installieren möchte. Wenn der User "Alle User" ausgewählt hat, dann starte ich ein selbstgeschriebenes Programm, welches für die Deinstallation alle INI-Dateien sorgt. Wenn der User "Nur aktuellen User" ausgewählt hat, dann soll die von Dir erstellte Procedure aufgerufen werden. Wie kann ich nun steuern, dass je nach Einstellung mein Programm oder deien Prozedure aufgerufen wird? Gruß Thomas |
Re: InnoSetup: User fragen, ob Datei deinstalliert werden so
Leg doch einen Eintrag in der Registry ab, den du beim Start des Deinstallers abfragst. Müsste doch neuerdings mit Inno Setup 5 gehen.
|
Re: InnoSetup: User fragen, ob Datei deinstalliert werden so
ich habe das selbe problem.
der user soll beim installieren wählen, ob eine datei gelöscht werden soll oder nicht. das mit der sprache ist halb so wild. (wenn es aber doch mittlerweile gehen sollte, bitte melden) jedenfalls habe ich das mal mit dem geposteten code versucht. es fragt zwar ab, aber die datei wird so oder so gelöscht. also habe ich bei der datei den flag "uninsneveruninstall" gesetzt Source: datei.ini; DestDir: {app}; Flags: uninsneveruninstall; damit wirklich das script entscheidet, ob die datei gelöscht wird oder nicht. so klappt das ganze. jedoch bleibt dann ein lehrer ordner übrig. den müsste man dann auch per code gleich mitlöschen. gibt es dafür einen befehl? |
Re: InnoSetup: User fragen, ob Datei deinstalliert werden so
Zitat:
Zitat:
![]() Zitat:
|
Re: InnoSetup: User fragen, ob Datei deinstalliert werden so
Zitat:
Zitat:
[UninstallDelete] Type: dirifempty; Name: {app} jetzt gehts :) dann also nur noch auf lösung 705 warten, dann ist alles perfekt ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz