4 Replies Latest reply on Jun 8, 2006 3:51 AM by Christian1

    [SOLVED] Problem mit &a mp;a mp;a mp;a

    DSMForum Master
      Hallo,

      Mal wieder eine Frage zu den "Feinheiten" von NI (ich schildere mal
      den konkreten Fall, auch wenn es etwas ausführlich ist - das Problem
      hatte ich aber auch schon mit einem anderen Projekt):

      Die Installation des Adobe Distiller mache ich so, wie Timo mir hier in
      der NG vorgeschlagen hat: mittels "setup -r". Das Problem ist, daß ich
      zwar angebe, daß das Projekt auf die Ausführung von "setup.exe" wartet,
      daß dies aber hier nicht klappt, weil die eigentliche Installation
      von Dateien wie "_INS5587MP.exe" oder "_INSDEL.exe" ausgeführt werden.
      Das an sich wäre ok, ABER ich will zum einen die temporären Dateien
      der Installation wieder löschen (direkt vom NI-Server klappt das
      nicht!) und ich muß vor allem die Berechtigungen des Distiller-Druckers
      ändern. Beides kann ich erst, wenn die Installation beendet ist, was
      in diesem Fall tatsächlich erst ca. eine halbe Minute NACH Beendigung
      des Projekts der Fall ist.
      Ich habe auch versucht, die entsprechenden Befehle in ein 2. Skript
      zu packen und dieses mittels "RunOnce" auszuführen, aber wenn ich nach
      Ablauf des Projektes einen Neustart verlange, ist Adobe mit der Ein-
      richtung des Druckers noch gar nicht fertig und die Änderung an der
      Druckerberechtigung geht schief !!!

      OK, was ich gerne hätte/wüsste: Wie schaffe ich es ein (anderes)
      Skript aus dem Install-Projekt aufzurufen OHNE daß zu diesem wieder
      zurückgekehrt wird (und zwar auch mit Service-Rechten) ?
      Eine andere Frage: Gibt es eine Möglichkeit den "Sleep"-Befehl zu
      verstecken (die User müssen ja nicht sehen, daß da eine "Pause"
      stattfindet) ?
      Gibt es eine einfache Möglichkeit in NI zu testen, ob ein Prozess
      schon beendet ist (im ResKit gibt es so was wie das Tool "pstat";
      das müsste ich aber in einer DOS-Session laufen lassen und somit
      wäre es nicht im "Hintergrund", wie ich es gerne hätte) ?

      Ich hoffe, es ist einigermassen klar, wo das Problem liegt.
      Für Antworten, Tipps & Tricks wäre ich sehr dankbar.

      Christian

      ..
        • 1. Re: [SOLVED] Problem mit &a mp;a mp;a mp;a
          Christian1 Apprentice
          Hallo Christian!

          Ich habe das Projekt so noch nicht installiert, es könnte aber
          folgendermaßen klappen:

          1. Execute(service) auf die setup mit dem Parameter.

          Finde heraus, welche Daten zuletzt in die Registrierung geschrieben
          werden. Das müsste dann ja der Drucker sein, oder?

          Als nächstes schreibst Du Dir eine Schleife mit If Exist RegKey und
          dem Sleep Befehl. Du wartest jewils 5 Sekunden darauf, dass der Key
          auftaucht. Wenn er nicht da ist, gehst DU wieder in die Schleife.

          Für die anderen Fragen habe ich keine Idee.

          Ciao, Christian

          ..
          • 2. Re: [SOLVED] Problem mit &a mp;a mp;a mp;a
            Frank.Scholer Master
            Hallo Christian,

            also, das mit Setup.exe ist bei InstallShield basierten Setups immer so
            (daher bringt auch der Schalter: "Auf Ausführung warten" nix, da ja
            Setup.exe schon fertig ist, bevor es richtig los geht).

            Allerdings haben (die meisten - nicht alle!) InstallShield-basierten
            Setups noch eine Menge weitere Switches (vgl.
            http://www.appdeploy.com/tips/detail.asp?id=18).
            Der für dich sicherlich besonders interessant ist, ist der
            "-SMS"-Schalter (Achtung: Case sensitive), der dafür sorgt, dass der
            Setup.exe Prozess solange aktiv bleibt, bis die gesamte Installation
            durch ist (und man somit auch den "Auf Ausführung warten" Schalrer
            setzen kann und irgendwas hinterher im Script machen).

            HTH, Gruß Frank

            Christian Greiner schrieb:
            > Hallo,
            >
            > Mal wieder eine Frage zu den "Feinheiten" von NI (ich schildere mal
            > den konkreten Fall, auch wenn es etwas ausführlich ist - das Problem
            > hatte ich aber auch schon mit einem anderen Projekt):
            >
            > Die Installation des Adobe Distiller mache ich so, wie Timo mir hier in
            > der NG vorgeschlagen hat: mittels "setup -r". Das Problem ist, daß ich
            > zwar angebe, daß das Projekt auf die Ausführung von "setup.exe" wartet,
            > daß dies aber hier nicht klappt, weil die eigentliche Installation
            > von Dateien wie "_INS5587MP.exe" oder "_INSDEL.exe" ausgeführt werden.
            > Das an sich wäre ok, ABER ich will zum einen die temporären Dateien
            > der Installation wieder löschen (direkt vom NI-Server klappt das
            > nicht!) und ich muß vor allem die Berechtigungen des Distiller-Druckers
            > ändern. Beides kann ich erst, wenn die Installation beendet ist, was
            > in diesem Fall tatsächlich erst ca. eine halbe Minute NACH Beendigung
            > des Projekts der Fall ist.
            > Ich habe auch versucht, die entsprechenden Befehle in ein 2. Skript
            > zu packen und dieses mittels "RunOnce" auszuführen, aber wenn ich nach
            > Ablauf des Projektes einen Neustart verlange, ist Adobe mit der Ein-
            > richtung des Druckers noch gar nicht fertig und die Änderung an der
            > Druckerberechtigung geht schief !!!
            >
            > OK, was ich gerne hätte/wüsste: Wie schaffe ich es ein (anderes)
            > Skript aus dem Install-Projekt aufzurufen OHNE daß zu diesem wieder
            > zurückgekehrt wird (und zwar auch mit Service-Rechten) ?
            > Eine andere Frage: Gibt es eine Möglichkeit den "Sleep"-Befehl zu
            > verstecken (die User müssen ja nicht sehen, daß da eine "Pause"
            > stattfindet) ?
            > Gibt es eine einfache Möglichkeit in NI zu testen, ob ein Prozess
            > schon beendet ist (im ResKit gibt es so was wie das Tool "pstat";
            > das müsste ich aber in einer DOS-Session laufen lassen und somit
            > wäre es nicht im "Hintergrund", wie ich es gerne hätte) ?
            >
            > Ich hoffe, es ist einigermassen klar, wo das Problem liegt.
            > Für Antworten, Tipps & Tricks wäre ich sehr dankbar.
            >
            > Christian
            >


            ..
            • 3. Re: [SOLVED] Problem mit &a mp;a mp;a mp;a
              DSMForum Master
              Hallo,

              Erst mal vielen Dank für die vielen Infos - leider hat der richtige
              Hinweis bisher gefehlt :-(

              Wir ihr in den beigefügten Skripten sehen könnt, habe ich es exakt
              so gemacht - trotzdem wird das NI-Skript vor Ende der Installation
              beendet ...
              In dem beigefügten zweiten Skript mache ich dann genau das, was ich
              eigentlich direkt nach der Installation tun möchte - aber aus den
              früher genannten Gründen nicht tun kann.

              Vielleicht hat noch jemand einen Idee ?

              Christian

              ###########################

              SKRIPT 1: INSTALLATION

              !Adobe Acrobat Distiller
              Sleep('3')
              ShowBlueScreen('Installation Acrobat Distiller','Bitte warten - geschätzte
              Dauer: unter 3 Minuten ... Please wait - estimated time: less than 3 minutes ...')
              !
              !Adobe Acrobat Distiller
              Copy('.\Extern$\*.*','%SYSTEMDRIVE%\temp\dist505\*.*')/U/S/TS
              Execute('%SYSTEMDRIVE%\temp\dist505\setup.exe -s SMS')/?/TS
              !Verzeichnis-Berechtigungen ändern -> um Einstellung zu speichern
              ChangeNTFSSecurity('%ProgramFilesDir%\Adobe\Acrobat
              5.0\Distillr\Settings','*.*',cnsSetDirAcl+cnsSetFileAcl+csAddACL)
              S-1-5-11 DRWX
              EndProc/TS
              RegModify('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce','AfterDistiller','%ProgramFilesDir%\Netinst
              iinst32.exe
              /execute:{E9F068AE-DA28-42A4-A536-7969F7FCD2A3}',mrReplace)/TW
              !
              HideBlueScreen


              ###########################

              SKRIPT 2: AUFRÄUMEN

              !Löschen der temporären Installationsdateien des Adobe Distillers 5.05
              Execute('%SYSTEMDRIVE%\temp\dist505\setacl.exe "Acrobat Distiller" /printer /set
              JEDER /full')/?/TS
              RegDeleteKey('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce','AfterDistiller',)/TW
              RemoveDir('%SYSTEMDRIVE%\My Documents')/S/TW
              Delete('%SYSTEMDRIVE%\temp\dist505\*.*')/S/TW
              RemoveDir('%SYSTEMDRIVE%\temp\dist505')/S/TW




              --

              ______________________________________________________________________

              ..
              • 4. Re: [SOLVED] Problem mit &a mp;a mp;a mp;a
                Frank.Scholer Master
                Hallo Christian

                ich geh mal davon aus, du hast das Script nicht abgetippselt, sondern
                per Copy&Paste hier eingefügt. Dann dürfte der entscheidende Fehler
                sein, dass der Execute auch mit "-SMS" und nicht nur mit "SMS"
                aufgerufen werden muss...

                Einen Versuch isses noch Wert...

                Gruß, Frank

                Christian Greiner schrieb:
                > Hallo,
                >
                > Erst mal vielen Dank für die vielen Infos - leider hat der richtige
                > Hinweis bisher gefehlt :-(
                >
                > Wir ihr in den beigefügten Skripten sehen könnt, habe ich es exakt
                > so gemacht - trotzdem wird das NI-Skript vor Ende der Installation
                > beendet ...
                > In dem beigefügten zweiten Skript mache ich dann genau das, was ich
                > eigentlich direkt nach der Installation tun möchte - aber aus den
                > früher genannten Gründen nicht tun kann.
                >
                > Vielleicht hat noch jemand einen Idee ?
                >
                > Christian
                >
                > ###########################
                >
                > SKRIPT 1: INSTALLATION
                >
                > !Adobe Acrobat Distiller
                > Sleep('3')
                > ShowBlueScreen('Installation Acrobat Distiller','Bitte warten -
                > geschätzte Dauer: unter 3 Minuten ... Please wait - estimated time: less
                > than 3 minutes ...')
                > !
                > !Adobe Acrobat Distiller
                > Copy('.\Extern$\*.*','%SYSTEMDRIVE%\temp\dist505\*.*')/U/S/TS
                > Execute('%SYSTEMDRIVE%\temp\dist505\setup.exe -s SMS')/?/TS
                > !Verzeichnis-Berechtigungen ändern -> um Einstellung zu speichern
                > ChangeNTFSSecurity('%ProgramFilesDir%\Adobe\Acrobat
                > 5.0\Distillr\Settings','*.*',cnsSetDirAcl+cnsSetFileAcl+csAddACL)
                >  S-1-5-11    DRWX
                > EndProc/TS
                > RegModify('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce','AfterDistiller','%ProgramFilesDir%\Netinst
                iinst32.exe
                > /execute:{E9F068AE-DA28-42A4-A536-7969F7FCD2A3}',mrReplace)/TW
                > !
                > HideBlueScreen
                >
                >
                > ###########################
                >
                > SKRIPT 2: AUFRÄUMEN
                >
                > !Löschen der temporären Installationsdateien des Adobe Distillers 5.05
                > Execute('%SYSTEMDRIVE%\temp\dist505\setacl.exe "Acrobat Distiller"
                > /printer /set JEDER /full')/?/TS
                > RegDeleteKey('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce','AfterDistiller',)/TW
                >
                > RemoveDir('%SYSTEMDRIVE%\My Documents')/S/TW
                > Delete('%SYSTEMDRIVE%\temp\dist505\*.*')/S/TW
                > RemoveDir('%SYSTEMDRIVE%\temp\dist505')/S/TW
                >
                >
                >
                >


                ..