Announcement

Collapse
No announcement yet.

Inno Setup Funktionaufruf bei Deinstallation Fehler

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Inno Setup Funktionaufruf bei Deinstallation Fehler

    Hallo liebe Entwickler und Gurus des Forums,

    brauche Eure Hilfe, beim Aufruf einer Funktion bei Deinstallation im Inno Setup Skript 5.9. hat eine Variable immer false Wert, obwohl die bei der Installation auf True gesetzt ist.

    Teil vom Code Section
    [Code]
    function InitializeSetup(): Boolean;
    var
    VARIABLE : Boolean;
    begin
    VARIABLE:= true;
    ...
    end:

    procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
    begin

    if (CurUninstallStep = usAppMutexCheck ) then
    begin
    if (VARIABLE) then
    begin
    Funktion(); //kommt an der Stelle gar nicht rein
    end;
    end;

    Die Variable ist immer FALSE, warum??? ich setze die Variable bei der Initialize auf True. Was habe ich vergessen oder was muss ich beacheten, damit den Wert auch bei Deinstallation übernommen wird.

    Vielen Dank im Voraus.

    Gruß

    Lessy

  • #2
    VARIABLE hast du als locale Variable in InitializeSetup definiert. Damit die auch woanders bekannt ist sollte die außerhalb der function definiert werden direkt im [Code] Block.
    Eigentlich sollte VARIABLE nicht mal in CurUninstallStepChanged nicht mal bekannt sein. Heißt dein Code sollte vom Innosetup Compiler abgelehnt werden. Hast du vielleicht VARIABLE mehrmals definiert?

    Comment


    • #3
      Erstmal Danke für die Antwort,

      ist richtig, nabe falsch übertragen hier in Forum, also definiert ist im Code und nicht in InitializeSetup, in InitializeSetup ist auf true gesetzt, siehe Code

      [Code]

      var
      VARIABLE : Boolean;

      function InitializeSetup(): Boolean;
      ...
      begin
      VARIABLE:= true;
      ...
      end;

      procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
      begin

      if (CurUninstallStep = usAppMutexCheck ) then
      begin
      if (VARIABLE) then
      begin
      Funktion(); //kommt an der Stelle gar nicht rein
      end;
      end;

      So steht im Skript, lässt sich kompilieren, aber die Variable liefert false trotzdem...

      Comment


      • #4
        Beim Deinistallieren wird InitializeSetup nicht ausgeführt sondern InitializeUninstall.

        Solltest du hoffen du könntest eine Variable die zum Zeitpunkt der Installation gesetzt wurde beim späteren Deinstallieren einfach wieder so benutzen muss ich dich enttäuschen. Denn Wert musst du schon irgendwo selbst persistieren (z.B. in de Registry) das macht InnoSetup für dich nicht automatisch.

        Comment


        • #5
          das habe ich befürchtet...das war aber trotzdem hilfsreich, muss anderes umsetzen. danke!

          Comment


          • #6
            Hallo Ralf,
            gibt es ein paar Beispiele oder mit welchen Funktionen kann das am besten realisiert werden?
            Wäre sehr dankebar für jeden Tipp und für jede Hilfe!

            Gruß

            Lessy

            Comment


            • #7
              http://www.jrsoftware.org/ishelp/ind...criptfunctions
              Schau dir dort mal die Registry Section dort an.

              Mit einer der RegWrite* Methoden schreibst du deinen Wert beim Installieren in die Registry und mit der äquivalenten RegQuery* Methode schaust du beim Deinstallieren nach was denn da so drin steht. Wenn du willst kannst du dann noch anschließend mit RegDeleteValue in der Registry aufräumen.




              Comment


              • #8
                Vielen Dank!
                Hats geklappt!

                Comment

                Working...
                X