5 Replies Latest reply on Apr 14, 2012 10:41 AM by Andy74

    ExitProc in einem Softwareset

    Andy74 Expert
      Hallo zusammen,

      Ich habe hier ein Software Set für Office 2010, welches mehrere einzelne Scripte enthält.

      Unter anderem Ein Script, welches als erstes ausgeführt wird und in dem der Anwender gefragt wird, ob die Installation jetzt starten soll, und in dem auch geprüft wird, ob gerade irgend welche älteren Office anwendungen geöffnet sind.

      Wenn der Anwender nicht möchte oder nicht alle alten Office Anwendungen geschlossen wurden, wird dieses eine Script mit einem "ExitProc (Undone)" beendet.

      Nur leider werden die anderen Projekte in diesem Softwareset anschließend trotzdem ausgeführt. Obwohl die anderen Projekte als "NICHT optional" im Software Set markiert sind.

      Wie kann man denn erreichten, dass das gesamte Software Set beim ExitProc (Undone) als nicht ausgeführt beendet wird?
        • 1. Re: ExitProc in einem Softwareset
          info@offlimits-it.com Expert
          Warum machst du das nicht alles in einem Paket?
          • 2. Re: ExitProc in einem Softwareset
            NicoS1 Master
            Hallo Andy,

            100% sicher bin ich nicht, aber hier mal ein paar Ansätze:

            1. Schau mal nach ob das Paket innerhalb des Sets als "optional" geflaggt ist. Wenn es das NICHT ist, würde ich erwarten, dass das ganze Set abbricht bei einem exitProc... aber wie gesagt... wissen tu ichs nicht, nur erwarten

            2. Ein "EndInstallerSession" vor dem exitProc(undone) sollte das Problem auch beheben, mit dem Nachteil, dass andere Pakete die nach dem Software Set eventuell zur Installation anstehen auch nicht ausgeführt werden.

            3. Ich glaube mit einem SetGlobalVar kannst du eine Variable definieren, die du im ganzen Set nutzen kannst. Also könnte man, wenn der User es nicht will, eine Variable setzen vor dem exitproc(undone), und die in jedem weiteren Paket des Software Sets am Anfang abprüfen, und dort auch mit exitProc rausspringen.

            Letzteres wäre zwar die aufwendigste, aber auch sauberste Lösung.
            • 3. Re: ExitProc in einem Softwareset
              Andy74 Expert
              [[email protected];36957]Warum machst du das nicht alles in einem Paket?

              Naja, das Software Set besteht auf 6 einzelnen Paketen.
              Da wir "Office 2010 Pro Plus" und "office 2010 Standard" im Einsatz haben, können so einzelne Bestandteile (z.B. Konfiguration) in beiden Software Sets verwendet werden.

              Dann sind da auch noch Anwendungen dabei, die in beiden Sets gebracht werden (Silverlight, Classis Menü, usw.)

              Außerdem sind die Software Sets ja genau für so etwas gedacht, dann muss man sie auch sinnvoll nutzen können



              Hallo Andy,

              100% sicher bin ich nicht, aber hier mal ein paar Ansätze:

              1. Schau mal nach ob das Paket innerhalb des Sets als "optional" geflaggt ist. Wenn es das NICHT ist, würde ich erwarten, dass das ganze Set abbricht bei einem exitProc... aber wie gesagt... wissen tu ichs nicht, nur erwarten

              2. Ein "EndInstallerSession" vor dem exitProc(undone) sollte das Problem auch beheben, mit dem Nachteil, dass andere Pakete die nach dem Software Set eventuell zur Installation anstehen auch nicht ausgeführt werden.

              3. Ich glaube mit einem SetGlobalVar kannst du eine Variable definieren, die du im ganzen Set nutzen kannst. Also könnte man, wenn der User es nicht will, eine Variable setzen vor dem exitproc(undone), und die in jedem weiteren Paket des Software Sets am Anfang abprüfen, und dort auch mit exitProc rausspringen.

              Letzteres wäre zwar die aufwendigste, aber auch sauberste Lösung.



              Punkt 1.)
              Ja, ist als NICHT optional markiert.

              Punkt 2.)
              EndInstallerSession ist wie du schon sagtest wirklich nicht sinnvoll.

              Punkt 3.)
              Vermutlich eine brauchbare Idee
              Wobei ich dann glaube eher ein ExitProc (Undone) mache und in den anderen Paketen einem den Befehl "If IsInstalled" teste.
              • 4. Re: ExitProc in einem Softwareset
                Klaus Salger Expert
                Hi Andy,

                dass weitere Komponenten eines Software Sets installiert werden nachdem eine nicht-optionale Komponente nicht erfolgreich installiert werden konnte ist aus meiner Sicht zunächst mal fragwürdig (ein Bug?). Ich sehe jedenfalls keinen Sinn in diesem Verhalten.

                Man hat allerdings eine Möglichkeit dieses Verhalten zu beeinflussen. Und zwar mit der Option "Erlaube weitere Paket-Installation(en), wenn ein Paket nicht installiert werden kann" in der Konfigurationstabelle "AutoInstall-Einstellungen".
                Wenn die auf "Nein" eingestellt ist, bricht das Software Set bei der ersten nicht erfolgreich abgeschlossenen Komponente ab.

                Die Konfiguration bewirkt, dass nicht nur die anderen Komponenten eines Software Sets, sondern auch alle anderen nachfolgenden Pakete nicht installiert werden, was aus meiner Sicht aber auch sinnvoll ist. Vor allem dann, wenn über die Installationsreihenfolge Abhängigkeiten abgebildet werden.
                Abhängigkeiten über die Installationsreihenfolge abzubilden ist generell kein wirklich sauberer Weg, in DSM ist es aber absolut üblich und notwendig wenn man nicht das alte, leider intransparente Komponentenmodell verwendet. Wenn also die Installation eines Pakets schief geht, muss man vorsichtshalber davon ausgehen, dass nachfolgende Pakete davon abhängig sein könnten und muss alle weiteren Installationen verhindern.

                Die Alternative, Logik in die beteiligten Pakete einzubauen, die dann die Installation steuert mag ein funktionierender Workarround sein, ich würde solche Konstruktionen aber grundsätzlich vermeiden wenn es irgendwie geht. Das widerspricht aus meiner Sicht der ganzen Logik von DSM, ist vollkommen intransparent und unflexibel. Ideal wäre ja wenn ein Paket sich mit oder ohne Software Set auf beliebige Computer zuweisen ließe.
                Eine Client-seitige Voraussetzung mit IsInstalled zu verwenden ist immer noch unschön aber immerhin etwas transparenter.

                Eine wirklich gute Lösung für das Problem kann nur FrontRange schaffen, indem das Handling von Abhängigkeiten vernünftig geregelt wird. Z.B. indem Komponenten die Transparenz von Software Sets bekommen oder Software Sets das alte Komponentenmodell auch funktionell vollständig ersetzen.

                Ciao
                  Klaus
                • 5. Re: ExitProc in einem Softwareset
                  Andy74 Expert
                  Danke für den Tipp, werde mir die Autoinstall Einstellung ebenfalls einmal anschauen.