11 Replies Latest reply on Mar 2, 2010 1:43 PM by dkoenig

    Neustart per System_Reset-Befehl wird nicht ausgelöst

    Ratzratz Expert
      Hallo Zusammen,

      ich habe wieder mal ein seltsames Problem.

      Ich will per eScript den Virenscanner aktualisieren (von OfficeScan 8 auf OfficeScan 10). Die Zielrechner sind XP SP3.

      Ich will das so machen, daß erst geprüft wird, ob OS 8 noch drauf ist und falls ja, dieses zuerst deinstalliert wird. Danach ist dann aber ein Neustart erforderlich, bevor OS 10 installiert werden kann.

      Ich verwende dazu das eScript, das im Anhang beigefügt ist.

      Ich will, daß nach Deinstallation von OS 8 sofort (deshalb ist EndInstallerSession drin) ein Neustart ausgelöst wird und das Paket als noch unausgeführt gehalten wird (deshalb das ExitProcEx(Undone ...)), damit nach Neustart mit der Installation von OS 10 weitergemacht wird.

      Leider erfolgt jedoch nach System_Reset und EndInstallerSession kein Neustart. Der PC läuft einfach weiter und macht nichts. Ich installiere alles per ServiceInstaller. Es ist kein Benutzer angemeldet.
      Da das Paket per ExitProcEx(Undone ...) abgebrochen wird, bleibt es in der eMMC-Konsole ewig auf gelb, bis jemand manuell neustartet. Erst dann wird OS 10 installiert. Das ist aber nicht Sinn der Sache.

      In der NISRV32_13.LOG findet sich folgendes:
      ...
      09:51:49.212 2        ->   Execute('\\OSCESERV\trend\Autopcc.exe')/?/TS
      09:51:49.228 1           Network OS: Active Directory
      09:51:49.557 2         Execute: '\\OSCESERV\trend\Autopcc.exe'
      09:51:49.619 2         Waiting for process...

      09:53:09.526 2        ->   System_Reset/TS
      09:53:09.526 1         System restart requested
      09:53:09.526 1         Current request session termination flags: 'REBOOT|RESTART_WINDOWS'

      09:53:09.526 2        ->   EndInstallerSession/TS
      09:53:09.526 1         Current request session termination flags: 'REBOOT|RESTART_WINDOWS|END_INSTALLER_SESSION'

      09:53:09.526 2        ->   ExitProcEx(Undone,'Es wurde ein altes OfficeScan 8.0 gefunden und deinstalliert, was einen Neustart erfordert, bevor OfficeScan 10 installiert werden kann!')
      09:53:09.541 2         ER: Creating event manager
      09:53:09.541 1         ER: file name is C:\Programme\NetInst\ExR\Event.erl
      09:53:09.541 1         ER: user name is enteoRS
      09:53:09.541 1        Logging up ExR event 3003 (0x00000bbb)

      09:53:09.541 1        ExR is allowed to send data.
      09:53:09.541 1        Loading SI.dll ...

      09:53:09.541 1        SI: Starting ExRSend.exe ...
      09:53:09.557 2        SI: Rewriting SI client state data...
      09:53:09.557 1         SI: Reading client state...
      09:53:09.573 1         SI: Writing possible changes of client state...
      09:53:09.651 2        xniFPS: '{8CCD4C07-0845-4AD2-BCB8-8182EF267030}' is installed
      09:53:09.651 2        FPS.dll: Closing the file package '\\?\C:\Programme\Gemeinsame Dateien\enteo\RepositoryCache\92956\rev\1\'.
      09:53:09.651 1        xniFPS: Switching package folder for package 'TrendMicro OfficeScan 10.0.0.1783' to 'C:\Programme\Gemeinsame Dateien\enteo\RepositoryCache\92956\rev\1\'.

      09:53:09.651 2        ---->Installation of TrendMicro OfficeScan 10.0.0.1783 has not completed on exit.

      09:53:09.651 1      > Action 'Executing project db:master\TrendMicro OfficeScan 10.0.0.1783 [ExecFlags: 0x002010 (install, ws, )]' failed (Action took 80313 ms.)
      09:53:09.667 2     SwmsTpExtenderScript: Installation or Uninstallation of eScriptPackage ESCRIPTPACKAGE.92956 ({8CCD4C07-0845-4AD2-BCB8-8182EF267030}) failed
      09:53:09.682 2    SwmsTpExtenderScript: Run of Job JOB:POLICYINSTANCE.83321 was interrupted by ExitProcUndone: PolicyInstance POLICYINSTANCE.83321 will get NotProcessed
      09:53:09.682 2    Run of Job JOB:POLICYINSTANCE.83321 finished undone
      09:53:09.682 2   Cleaning up Run of Job JOB:POLICYINSTANCE.83321...
      09:53:09.682 1    SWMSRT: Checking if policies should run for the trigger 'Undone script'.
      09:53:09.698 1     FPSClnt.dll: --------------- FpsClientAnnounceFilePackageState interface called ---------------
      09:53:09.714 1     FPSClnt.dll: --------------- FpsClientAnnounceFilePackageState finished ---------------
      09:53:09.714 2    SWMSRT: Handling Reboot
      09:53:09.714 2      SWMSRT: Reboot not allowed: Job failed or undone
      09:53:09.714 1      System reboot flag cleared
      09:53:09.714 1      Current request session termination flags: 'END_INSTALLER_SESSION'
      09:53:09.714 2    Cleaned up Run of Job JOB:POLICYINSTANCE.83321 successfully


      09:53:09.714 1  -------------------------------------------------------------------------------


      09:53:09.714 1  SWMSRT: Checking if policies should run for the trigger 'End of installation session'.
      09:53:09.714 1  niMW: Leaving maintenance window.
      09:53:09.714 1  niMW: Current session termination flags: 'END_INSTALLER_SESSION'. No restart requested. Installation is completed.
      09:53:09.714 1  niMW: Leavind maintenance window...
      09:53:09.714 1  niMW: LeaveMW sequence has been executed.
      ...

      Die Zeile „09:53:09.526 1         Current request session termination flags: 'REBOOT|RESTART_WINDOWS|END_INSTALLER_SESSION'
      „ sagt doch eindeutig, dass Windows neugestartet und die aktuelle Sitzung unterbrochen wird. So wie es sein soll.

      Die Zeile „09:53:09.714 2      SWMSRT: Reboot not allowed: Job failed or undone“ sagt, dass eine Neustart nicht erlaubt sei. Warum nicht?????
      Die Zeile „09:53:09.714 1      System reboot flag cleared“ sagt, dass er das Neustart-Flag gelöscht hat. Der Neustart wurde also vom enteo abgesagt.
      Warum ????? Ich habe keinerlei Beschränkungen bzgl. Neustarts drin etc.

      In der Zeile „09:53:09.714 1  niMW: Current session termination flags: 'END_INSTALLER_SESSION'. No restart requested. Installation is completed.“ wird behauptet er, dass kein Neustart angefragt wurde, was definitiv falsch ist!


      Meine Frage ist also. Warum bekomme ich nach System_Reset und EndInstallerSession meinen Neustart nicht, zumal ich diese beiden Befehle bisher eigentlich als recht zuverlässig kennengelernt habe (bis hin zu unaufgeforderten Neustarts ohne Anfrage beim Benutzer etc.)

      Gruß
      M. Metzger
        • 1. Re: Neustart per System_Reset-Befehl wird nicht ausgelöst
          FHLynx Apprentice
          Hi

          Ohne genauer nachzuschauen warum das so nicht funktioniert,
          was spricht dagegen 2 Projekte daraus zu machen.
          Deinstallation mit Projekt a, falls notwendig und dann mit S_Reset und EndInstaller zu arbeiten um anschliessend V10 mit Projekt b zu installieren?


          Gruß
          Dennis T.
          • 2. Re: Neustart per System_Reset-Befehl wird nicht ausgelöst
            Ratzratz Expert
            Hallo Dennis,

            eigentlich spricht nichts dagegen.
            Ich halte es aber für die sauberere Lösung, das in einem Paket zu erledigen und habe das an anderer Stelle bereits erfolgreich gemacht. Mir ist also nicht klar, warum das hier nicht funktioniert.

            Gruß
            M. Metzger
            • 3. Re: Neustart per System_Reset-Befehl wird nicht ausgelöst
              PaddyM Specialist
              Servus Ratzratz,

              probier mal folgende Reihenfolge:

              System_Reset
              ExitProc(Undone)
              EndInstallerSession


              Außerdem muss in den Eigenschaften des Pakets "Software steuert neustart" ausgewählt sein.
              Dann sollte es funktionieren.

              c ya
              Paddy
              • 4. Re: Neustart per System_Reset-Befehl wird nicht ausgelöst
                FHLynx Apprentice

                Hallo Dennis,

                eigentlich spricht nichts dagegen.
                Ich halte es aber für die sauberere Lösung, das in einem Paket zu erledigen und habe das an anderer Stelle bereits erfolgreich gemacht. Mir ist also nicht klar, warum das hier nicht funktioniert.



                Ich glaub daran streiten sich auch hier im Forum die Geister welches die sauberere Lösung ist. Vom Design her ist System_Reset und EnInstaller meiner Auffassung aber nicht dazu gedacht innerhalb eines Paketes neu zu starten, sondern zwischen 2 Paketen.
                Wenn innerhalb eines Paketes neu gestartet werden muss, wobei mir grad kein Anwendungsfall einfällt der sich nicht durch zwei getrennte Pakete lösen lässt, dann tut´s auch  Undone + shutdown -r -t x.

                Gruß
                Dennis T.
                • 5. Re: Neustart per System_Reset-Befehl wird nicht ausgelöst
                  Ratzratz Expert
                  Hallo Paddy,

                  danke, das wars.
                  Man muß die Neustartsteuerung auf "Software steuert neustart" setzen. Dann wird der Neustart durchgeführt.

                  Bei den anderen Paketen mit Neustart hatte ich das auch so eingestellt. Deshalb haben die wohl auch immer funktioniert.

                  Gruß
                  M. Metzger
                  • 6. Re: Neustart per System_Reset-Befehl wird nicht ausgelöst
                    Markus.Zierer Expert
                    Hallo,

                    Meines Wissens nach existiert zwar der System_Reset Befehl noch, es hies aber bereits in der V 5.x, diesen nach Möglichkeit nicht mehr zu benutzen. Verwende statt dessen den Befehl "InitiateSystemShutdown". Der funktioniert zuverlässiger.
                    • 7. Re: Neustart per System_Reset-Befehl wird nicht ausgelöst
                      Frank.Scholer Master
                      Hallo Markus,

                      Meines Wissens nach existiert zwar der System_Reset Befehl noch, es hies aber bereits in der V 5.x, diesen nach Möglichkeit nicht mehr zu benutzen.

                      Von wem hieß es das denn? - ist mir so nicht bekannt...

                      Der Unterschied zwischen "System_Reset" und "InitiateSystemShutdown" ist nämlich, dass ersterer einfach das NetInstall-interne "RestartFlag" setzt (also das Gegenteil von "ClearRestartFlags" ist), das von der NetInstall Runtime beim Beenden ausgewertet wird und falls gesetzt, wird ein Neustart eingeleitet. Wenn's aber vorher noch was zu tun gibt (z.B. SSI-Scripts auszuführen o.ä.), dann wird das noch getan.

                      Beim "InitiateSystemShutdown" wird die entsprechende Windows-API für nen Reboot aufgerufen (dieselbe API, die von SHUTDOWN.EXE aufgerufen wird) und damit kannst du - wenn du nicht aufpasst - NetInstall auch einfach "abschiessen", wenn z.B. noch SSI-Script laufen, während das System dann schon runterfährt.

                      Aus diesem Grund nehme ich eigentlich immer "System_Reset"...

                      Gruß Frank
                      • 8. Re: Neustart per System_Reset-Befehl wird nicht ausgelöst
                        Ratzratz Expert
                        Hallo Frank,

                        deshalb wollte ich das auch nicht mit dem "Undone + shutdown -r -t x" machen.
                        Ich denke auch, daß es besser ist, sowas wie Neustart mit integrierten enteo-Befehlen zu machen. Wobei man dann allerdings fragen muß, warum InitiateSystemShutdown nicht auch so wie System_reset implementiert ist, wenn man damit Netinstall abschießen kann, bevor alle anstehenden Aufgaben erledigt sind.

                        Gruß
                        M. Metzger
                        • 9. Re: Neustart per System_Reset-Befehl wird nicht ausgelöst
                          Frank.Scholer Master
                          Hi,

                          Wobei man dann allerdings fragen muß, warum InitiateSystemShutdown nicht auch so wie System_reset implementiert ist, wenn man damit Netinstall abschießen kann, bevor alle anstehenden Aufgaben erledigt sind.


                          Weil's ja dann völlig sinnfrei wäre ;-) - warum wollte man zwei verschiedene Befehle haben, die genau das gleiche tun...?
                          Es gibt schon Situationen, wo das abschießen sinnvoll sein kann, und dann isses ja gut, wenn man einen Befehl hat, womit man das tun kann. Aber wie geschrieben, sehe ich es so, dass es eher die Ausnahme ist/sein sollte.

                          Gruß Frank
                          • 10. Re: Neustart per System_Reset-Befehl wird nicht ausgelöst
                            Markus.Zierer Expert
                            Hallo Frank,

                            Wer genau das gesagt, weis ich nicht mehr. Aber zu deiner Ausführung muss ich folgendes anmerken:

                            Ja, der InitiateSystemShutdown geht auf die WindowsAPI. Das ist richtig. Es ist aber trotzdem so, dass ein Aufruf dieses Befehls erstmal bewirkt, dass NetInstall einen Neustart initiiert, sobald alle Tasks abgeschlossen sind. Der Grund warum ich grundsätzlich diesen Befehl bevorzuge ist eben die Tatsache, dass der Neustart über das WindowsAPI ausgelöst wird. Ich habe bei den 5.x Versionen des öfteren beobachten können, dass NetInstall das System eben nicht immer booten konnte.

                            Und zum Thema abschiessen der enteo Dienste kann ich sagen, dass es auch mit InitiateSystemShutdown nicht möglich ist, sich das System abzuschiessen. Beim Aufruf des Kommandos werden zuerst alle noch anstehenden Installersession abgearbeitet bevor der Neustart getriggert wird. Und ein EndInstallerSession bewirkt eben dass Nach der abarbeitung des aktuellen Skripts der Rechner neu gestartet wird.
                            • 11. Re: Neustart per System_Reset-Befehl wird nicht ausgelöst
                              dkoenig Apprentice
                              Also um auch noch mein Best practice hier unterzubringen:
                              Wenn man mal versucht, eine Maschine neu zu starten oder sich abzumelden, wenn der Installer läuft, wird man feststellen, das das so nicht funktioniert. Der Installer verhindert nämlich genau diese Tasks aus naheliegenden Gründen (er will ja sein Installationsgedöns fertig bekommen).
                              Leider scheint das auch den Installer manchmal nicht zu interessieren, wenn selber den Shutdown/Logoff/reboot auslöst.
                              Deswegen mache ich dass immer wie folgt:

                              - Execute(%winsysdir%\shutdown.exe -r -t 30 -c "bla" -f)    (Achtung hier die 64 Bit redirection deaktivieren)

                              - EndInstallerSession

                              - ExitProcDone oder ExitProcUndone, je nachdem ob man nach dem Reboot in das Paket wieder rein will.

                              Nun hat der Installer Zeit (eben die 30 Sekunden die beim shutdown.exe eingestellt sind, sich in Ruhe zu beenden. Das tut so eigentlich immer. Wichtig ist noch, die Befehle auf Maschinenbezogen zu stellen, damit der Reboot beim login des Users nicht zieht.

                              Gruss Dave