6 Replies Latest reply on Mar 1, 2011 3:57 AM by LjokajK

    MSI-Installationen stabilisieren

    clu Rookie
      Hallo Leute...

      ich denke das Thema ist kein neues, allerdings habe ich noch keine definitive Aussage hier gefunden... Vielleicht bin ich auch blind.

      Mein Problem ist, dass diverse aufeinander folgende MSI-Installationen (per MSIInstallProduct) immer wieder mal fehlschlagen.

      Und zwar weil immer wieder mal ein "msiexex.exe" Prozess am laufen bleibt, manchmal sogar mehrere.
      Die Meldungen in den NiLogs sind dann z.B.: "MSI-Installer in use... waiting..."
      oder aber ein InstallShield Wizard meldet z.B: "1607:InstallShield Scripting Runtime konnte nicht installiert werden".

      Ich muss dazu sagen, dass ich den Befehl "MSIInstallPRoduct" mit "Per Service ausführen" geflaggt habe. Ist das schon der Fehler?
      Läuft es mit "immer ausführen" tatsächlich stabiler?

      Wie sind denn Eure Erfahrungen... Was wären denn die berühmt berüchtigten "Best PRactices"?

      Vielen Dank vorab!
        • 1. Re: MSI-Installationen stabilisieren
          LjokajK Expert
          Hi,

          also ich flagge meine MSI-Pakete eigentlich nicht und ideses Problem hatte ich somit auch bisher noch nie.
          Hast du es denn schon mal getestet, wenn du keinen Flag setzt?
          • 2. Re: MSI-Installationen stabilisieren
            NicoS1 Master
            Hallo Clu,

            ein Patentrezept gibt es nicht, da je nach Hersteller die MSIs verschiedene Custom Actions haben. Ich persönlich flagge aber auch alle MSIs Computerbezogen als Service, da ich stellenweise immer wieder das Problem habe, das Enteo diese unter dem Benutzeraccount durchführt. Speziell unter Windows 7.

            Was welches MSI als Vorraussetzung hat, musst du individuell per Software klären. Ein paar Beispiele wären:
            - .net Framework in verschiedenen Versionen
            - C++ Runtime in verschiedenen Versionen
            - J# in verschiedenen Versionen
            - InstallShield ScriptEngine

            Ich persönlich hab mir all diese Komponenten einzeln verscriptet und die Pakete jeweils freigegeben (ist wichtig für den nachfolgenden Teil). Dann hab ich mir ein Paket Template angelegt wo ich alle Komponenten per if Abfrage Abfrage... z.B.:

            if not MsiProcuctIsInstalled(GUID)
            - RunEScript(...)

            Und das für alle Komponenten.

            Wenn ich nun ein Paket hab, welches eine bestimmte Vorraussetzung hat, geh ich in mein Template... kopier mir das aus dem Code raus, und setz ihn in das eigentliche Paket rein. Das hat den Vorteil, dass du recht einfach deine Komponenten verwalten und in ein Paket hinzufügen kannst, und diese über die if Abfrage auch nur bei Bedarf installiert und auch gestaged werden.

            Dein einzigste Nachteil ist der, dass du dann bei den Runtime Komponenten keinen Policystatus hast. Sprich du bekommst über Enteo nicht raus, ob ein Rechner jetzt schon eine bestimmte C++ Runtime hat oder nicht. Dafür gäbe es aber immer noch die Inventarisierung ;-)

            RunEscript funktioniert nur, wenn das aufgerufene Paket auch freigegeben ist.

            Dass der MSIInstaller einfach stehen bleibt, da muß ich ehrlich sagen, dass ich das nur bei einem einzigen Softwarepaket hatte. Und das war das .net Framework, und auch nur, wenn es direkt beim ersten Boot nach der Windows XP Installation installiert wurde. Aber auch nur sporadisch. Hier hab ich mir einfach Abhilfe geschaffen, in dem ich als aller erstes Paket nach der OS Installation einen Reboot setze. Seither hab ich keinerlei Probleme mehr mit MSI Paketen, bei einer Rechner Neuinstallation. Weder bei XP, noch bei Windows 7.
            • 3. Re: MSI-Installationen stabilisieren
              clu Rookie
              Hallo Leute,

              erstmal vielen Dank für Eure Rückmeldungen. Hat sehr zum Verständnis beigetragen.

              Jetzt nochmal ne blöde "allgemeine" Frage zu MSI, die eher Windows-gelagert scheint. Ich steh offenbar gleich auf mehreren Schläuchen!
              Mir war bis dato ehrlich gesagt garnicht bewusst, dass es anscheined ein normales Verhalten des Windows Installers ist, dass nach Installationen immer eine Instanz von "misexec.exe" unter dem Kontext von "local system" am laufen bleibt.
              Dies ändert sich bis zu einem Neustart auch nicht (zumindest bei mir).
              Hatte das in diversen Foren nachlesen können...

              Jedenfalls stören sich anscheinend einige Installationen daran.
              Hab bis jetzt noch keinen gescheiten Weg gefunden, das zu handlen. Sollte man den Prozess einfach killen dürfen?

              Wie machts ihr denn des?



              LG

              Clu
              • 4. Re: MSI-Installationen stabilisieren
                dkoenig Apprentice
                Hi,

                Also ich kann nur insofern meinen Senf dazu beitragen, als dass ich versuche alle Abhängigkeiten in einzelnen Paketen vorweg zu lösen und so wenig wie möglich Software über die CustomActions eines MSI auf die Systeme zu verteilen (Das hat dann ähnlich ungünstige Auswirkungen auf deinen Compliance Status wie ein RunEScript Befehl, von dem ich Dir auch abraten würde). Also schau Dir mal am besten mit Orca oder InstEd die Tabelle CustomAction im MSI an, vielleicht wird da irgendein Unterprozess aufgerufen, der sich nicht suaber beeendet.

                Der eine msiexec.exe Prozess der immer läuft ist übrigens soweit völlig Okay, das ist der Windows Installer Dienst selber, der muss auch da sein (also bitte nicht abschiessen, dasnn geht mit Sicherheit was in die Hose).
                Ich persönlich flagge die MSIInstallProduct Befehle nie, höchsten deaktiviere ich den Haken "Benutzerteile installieren" in den Paketeigenschaften. Das hat den gleichen Effekt, ist sogar besser, da dann das gesamte Paket nicht mehr angezogen wird.

                Gruss Dave
                • 5. Re: MSI-Installationen stabilisieren
                  oliverr Apprentice
                  Kurze Zwischenfrage:

                  Hier hab ich mir einfach Abhilfe geschaffen, in dem ich als aller erstes Paket nach der OS Installation einen Reboot setze.



                  Wie hast Du das gemacht (über Installationsreihenfolge?), bzw. fragst Du da noch was ab?

                  Habe nämlich zur Zeit auch vermehrt diese .net Installationsprobleme...
                  • 6. Re: MSI-Installationen stabilisieren
                    NicoS1 Master
                    Richtig. Das Paket hat die Reihenfolgen ID 1... das klappt so weit recht gut.
                    Ein paar Treiber schmuggeln sich dazwischen. Man müsste nur aufpassen, dass Treiber die .net benötigen erst später kommen.

                    Zusätzlich hab ich noch eine if Abfrage drin, die anfragt ob auch wirklich unser Autologon User drin steht.