AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein InnoSetup: User fragen, ob Datei deinstalliert werden soll

InnoSetup: User fragen, ob Datei deinstalliert werden soll

Ein Thema von schitho · begonnen am 11. Jan 2005 · letzter Beitrag vom 21. Jun 2005
Antwort Antwort
Benutzerbild von schitho
schitho

Registriert seit: 14. Dez 2002
Ort: Wien
47 Beiträge
 
Delphi 7 Professional
 
#1

InnoSetup: User fragen, ob Datei deinstalliert werden soll

  Alt 11. Jan 2005, 21:50
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:
function FragMich: boolean;
begin
 Result := (MsgBox('Soll die Datei gelöscht werden?', mbConfirmation,MB_YESNO) = IDYES);
end;
Das Problem: Die Frage wird bei der Installation und nicht bei der Deinstallation aufgerufen.

Wie geht es richtig?

Gruß
Thomas

[edit=sakura] CODE-Tags. Mfg, sakura[/edit]
Sorry! Bin leider noch immer ein Delphi-Neuling
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: InnoSetup: User fragen, ob Datei deinstalliert werden so

  Alt 11. Jan 2005, 22:04
Ich habe schon im DF gelesen, dass es nicht funktioniert. Wundert mich aber, da eben "UninstallRun" nur bei der Deinstallation aufgerufen werden soll(te). Zumindest dachte ich das bisher. Evtl. ist das auch ein kleines Problem mit "UninstallRun". Ich werde nebenbei noch mal in die Hilfe gucken und schauen was dort gesagt wird.

Wende dich doch notfalls mal an das deutsche Inno Setup-Forum. Evtl. haben die Jungs einen Tipp für dich, da sie sich ja nur IS verschrieben haben. Außerdem will schätzungsweise auch ihr Board mit Fragen gefüllt werden.


Edit: Ah, ich sehe schon. Du hast die Frage schon dort gestellt. Sorry.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: InnoSetup: User fragen, ob Datei deinstalliert werden so

  Alt 14. Jan 2005, 10:18
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:
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;
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.

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.
  Mit Zitat antworten Zitat
Benutzerbild von schitho
schitho

Registriert seit: 14. Dez 2002
Ort: Wien
47 Beiträge
 
Delphi 7 Professional
 
#4

Re: InnoSetup: User fragen, ob Datei deinstalliert werden so

  Alt 19. Jan 2005, 19:59
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
Sorry! Bin leider noch immer ein Delphi-Neuling
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: InnoSetup: User fragen, ob Datei deinstalliert werden so

  Alt 19. Jan 2005, 20:33
Leg doch einen Eintrag in der Registry ab, den du beim Start des Deinstallers abfragst. Müsste doch neuerdings mit Inno Setup 5 gehen.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#6

Re: InnoSetup: User fragen, ob Datei deinstalliert werden so

  Alt 20. Jun 2005, 20:31
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?
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: InnoSetup: User fragen, ob Datei deinstalliert werden so

  Alt 21. Jun 2005, 18:17
Zitat von CodeX:
ich habe das selbe problem.
Nein, hast du nicht. Das Problem des Beitragserstellers ist, dass sein Programm erst zur Laufzeit eine INI-Datei erzeugt. Dein Skript kopiert die INI aber schon zur Installation. Damit landet sie im LOG des Uninstallers und wird natürlich deinstalliert. Die Abfrage spielt also insofern wirklich keine Rolle. Wenn du Ja sagst, wird die Datei eben bloß eher gelöscht.

Zitat:
das mit der sprache ist halb so wild. (wenn es aber doch mittlerweile gehen sollte, bitte melden)
Geht noch nicht. Ist als #705 noch offen.

Zitat:
jedoch bleibt dann ein lehrer ordner übrig. den müsste man dann auch per code gleich mitlöschen.
gibt es dafür einen befehl?
Dafür gibt´s [UninstallDelete]. Beachte den Warnhinweis in der Hilfedatei und benutze es wirklich nur um bestimmte leere Ordner bzw. bestimmte Dateien zu löschen.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#8

Re: InnoSetup: User fragen, ob Datei deinstalliert werden so

  Alt 21. Jun 2005, 18:51
Zitat von MathiasSimmack:
..., dass sein Programm erst zur Laufzeit eine INI-Datei erzeugt. Dein Skript kopiert die INI aber schon zur Installation.
ok, stimmt. habe ich übersehen.
Zitat:
Dafür gibt´s [UninstallDelete]. Beachte den Warnhinweis in der Hilfedatei und benutze es wirklich nur um bestimmte leere Ordner bzw. bestimmte Dateien zu löschen.
habe das jetzt zusätzlich zu dem, was ich oben geschrieben habe, noch folgendes gemacht:
[UninstallDelete]
Type: dirifempty; Name: {app}

jetzt gehts

dann also nur noch auf lösung 705 warten, dann ist alles perfekt
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz