6 Replies Latest reply on Sep 29, 2015 2:58 AM by asch68

    If Anweisung....hm

    asch68 Expert
      Guten Morgen,

      ich verrenne mich hier gerade ein wenig.....Brett vor´m Kopf oder so...

      *************************************************
      !Prüfen ob OpenEdge 10.2B deinstalliert ist
      If Exist('"C:\Program Files\InstallShield Installation Information\{69E3F70C-32B2-47A8-A70D-653D16ECEFC2}\setup.exe"')
      _goto Exit
      !
      ! ExecuteEx('\\demuc029\proalpha\bin\install\client\0. pa-client_TS.bat','','')/?
      _MsgBoxEx('Prüfung OK!?','Prüfung','',mbOKCancel,'','')
      !
      ! Installation wird abgebrochen
      _: Exit
      ! ExitProc(Failed)
      Else
      *************************************************

      Der Plan ist recht einfach, ich muss testen ob diese Datei vorhanden ist.
      Ist sie vorhanden, dann klappte die Deinstallation nicht und ich kann die neue Software nicht drauf installieren.
      Irgendwie bekomme ich es aber nur so hin, das ich die Testmeldung erhalte oder nicht, egal, ob die Datei da ist, oder gelöscht wurde.

      Was mache ich hier falsch?
      Das IF und Else habe ich schon in alle Varianten verschoben.

      Ich prüfe doch mit der IF die Datei ab, ist sie da, dann ab zu goto :Exit.
      Ist sie nicht da, dann Meldungsfenster....

      Danke

      Andreas
        • 1. Re: If Anweisung....hm
          derniwi Master
          Hallo Andreas,

          nutze bitte die Code-Tags: [ CODE ] und [ /CODE ] (ohne Leerstellen), dann wird das hier einfachre.

          Zum Problem:
          !Prüfen ob OpenEdge 10.2B deinstalliert ist
          If Exist('%ProgramFilesDir%\InstallShield Installation Information\{69E3F70C-32B2-47A8-A70D-653D16ECEFC2}\setup.exe')
          ExitProc(Failed)
          Else
          Set('returncode','0')
          ExecuteEx('\\demuc029\proalpha\bin\install\client\ 0. pa-client_TS.bat','returncode','20')/?
          MsgBoxEx('Prüfung OK!?','Prüfung','',mbOKCancel,'','')
          If %returncode%='0'
            ExitProc(Done)
          Else
            ExitProcEx(Failed,'Fehler bei Installation: %returncode%')


          So sollte das klappen. Ein Goto brauchst du nicht.

          Dein Code macht folgendes:
          !Prüfen ob OpenEdge 10.2B deinstalliert ist
          If Exist('"C:\Program Files\InstallShield Installation Information\{69E3F70C-32B2-47A8-A70D-653D16ECEFC2}\setup.exe"')  !Prüfung, soweit ok
          goto Exit !Sprung, weil Fehler, wäre auch ok
          !
          ! ExecuteEx('\\demuc029\proalpha\bin\install\client\ 0. pa-client_TS.bat','','')/?
          MsgBoxEx('Prüfung OK!?','Prüfung','',mbOKCancel,'','') !Das hier wird nicht mehr erreicht, weil dieser Befehl innerhalb der If-Abrfage steht
          !
          ! Installation wird abgebrochen
          : Exit !und das wäre wieder ok
          ! ExitProc(Failed)
          Else !nach diesem Else sollte dann der Installations-Teil kommen



          Wenn Du also auf Deinen Code bestehst, dann wäre dieser wie folgt:
          !Prüfen ob OpenEdge 10.2B deinstalliert ist
          If Exist('"C:\Program Files\InstallShield Installation Information\{69E3F70C-32B2-47A8-A70D-653D16ECEFC2}\setup.exe"')
          goto ExitFehler
          Else
          ! ExecuteEx('\\demuc029\proalpha\bin\install\client\ 0. pa-client_TS.bat','','')/?
          MsgBoxEx('Prüfung OK!?','Prüfung','',mbOKCancel,'','')
          goto ExitOK
          !
          ! Installation wird abgebrochen
          : ExitFehler
          ExitProc(Failed)
          !
          : ExitOK
          ExitProc(Done)


          Aber ich würde bei ExecuteEx immer den ReturnCode abfragen. Siehe oben. Aber je nach Installer kann auch ein Wert ungleich 0 einen Erfolg der Installation kennzeichen. Bei MSI wäre z.B. ein 3010 ein OK, aber ein Neustart ist notwendig.

          Gruß
          Nils
          • 2. Re: If Anweisung....hm
            asch68 Expert
            Hi Nils,

            danke für die Scripte.
            Aber ich habe noch festgestellt, das er gar nicht in den Verzeichnis sucht, also auch nicht finden kann, ob die Datei existiert oder nicht....
            Mache ich das auf einem anderen Verzeichnis, zum Beispiel eine Datei auf c:\temp\... dann funktioniert das perfekt.
            Nun muss ich mal schauen, ob ich noch eine Datei finde, die ich abfragen kann.

            Andreas
            • 3. Re: If Anweisung....hm
              derniwi Master
              Hallo Andreas,

              soweit ich weiß, funktioniert die Suche nach einer Datei aber relativ problemlos.
              Was sagt denn das Protokoll mit Debug-Level?

              Gruß
              Nils
              • 4. Re: If Anweisung....hm
                asch68 Expert
                Hi Nils,

                das macht er ja auch, solange ich nicht in diesem Installationsverzeichnis suche.

                Ich habe das jetzt mit der UID der Registriy im "Windows Uninstall" gelöst, hier funktioniert es.

                Vielen Dank und Gruß
                Andreas
                • 5. Re: If Anweisung....hm
                  derniwi Master
                  Ich habe das Skript nochmal angepaßt und die doppelten Anführungszeichen rausgenommen, ich glaube, dier stören bei der Suche.

                  Ich meine mich zu erinnern, dass das schonmal ein Problem war.
                  • 6. Re: If Anweisung....hm
                    asch68 Expert
                    Hi Nils,

                    Du hattest Recht.....raus mit den Dingern und nun funzt es.....

                    Vielen Dank

                    Andreas