Was genau macht der SCCM-Client, wenn er eine MSI für ein System installiert?


7

Ich habe mit einer bestimmten .msi ( AppleApplicationSupport.msi) gearbeitet. Ich habe es auf zwei verschiedene Arten installiert, was ich für gleichwertig hielt. Die Ergebnisse unterscheiden sich jedoch wie folgt.

PSEXEC -i -s cmd

Die Installation über eine psexec -i -s cmdEingabeaufforderung und das Ausführen msiexec /i AppleApplicationSupport.msiführt zu dem gewünschten Ergebnis:

  • "Apple Application Support (32-Bit)" wird unter "Software" angezeigt.
  • "Apple Application Support (32-Bit)" kann deinstalliert werden

Vom SCCM-Client installierter MSI-Bereitstellungstyp

Das Erstellen und Installieren eines MSI-Bereitstellungstyps mit dem SCCM-Client führt zu folgenden Ergebnissen:

  • In "Software" wird nichts angezeigt.
  • SCCM erkennt nicht, dass es installiert wurde
  • "Apple Application Support (32-bit)" app gefunden , lassen sich mit gwmi -Class Win32_Productjedoch, läuft $app.Uninstall()es nicht deinstallieren.

Was ist der Unterschied?

Ich dachte, dass ein für ein System installierter MSI-Bereitstellungstyp dem Ausführen msiexecüber eine psexec -i -s cmdBefehlszeile entspricht. Offensichtlich sind sie nicht gleich.

  1. Was genau macht der SCCM-Client, wenn er einen MSI Technology-Bereitstellungstyp für ein System installiert? Kann ich diesen Vorgang ohne Beteiligung von SCCM replizieren?

  2. Entspricht die Ausführung des Installationsprogramms eines Script Installer-Bereitstellungstyps durch den SCCM-Client wirklich einem Aufruf von msiexecfrom psexec -i -s cmd? Mit anderen Worten, sollte ich für Bereitstellungstypen msiexecdes Skriptinstallationsprogramms eine Parität zwischen der Ausführung durch den SCCM-Client und der msiexecAusführung von erwarten psexec -i -s cmd?


Hinzugefügt nach der Antwort von kce:

  1. Wie schafft es SCCM, die MSI zu installieren, ohne dass sie unter "Software" angezeigt wird?

Ich vermute, dass dies etwas mit der Installation von msiexec für einen einzelnen Benutzer anstelle aller Benutzer zu tun hat. Diese Entscheidung hängt ab von "Zugriffsberechtigungen des Benutzers, ob für die Installation der Anwendung erhöhte Berechtigungen erforderlich sind, dem Wert der ALLUSERS-Eigenschaft, dem Wert der MSIINSTALLPERUSER-Eigenschaft und der Version des Betriebssystems". ( ref ). Diese Liste von Variablen in Kombination mit der Unfähigkeit, getrennt von SCCM zu testen, ist Grund genug für mich, den MSI-Bereitstellungstyp insgesamt zu vermeiden.
Alx9r

Woher wissen Sie, dass die App erfolgreich mit SCCM installiert wurde? War der Rückkehrcode 0?
MDMoore313

@ BigHomie Ich bin mir ziemlich sicher, dass der msiexec-Fehlercode 0 war. Ich würde es nicht "erfolgreich" nennen. Ich weiß mit Sicherheit, dass die SCCM-Installation etwas Dauerhaftes bewirkt hat , da (1) sie in den Ergebnissen von gwmi -Class Win32_Productund (2) nachfolgenden Versuchen, dieselbe MSI (un) zu installieren, zu einer Reihe von "bereits installierten" Fehlern führt.
Alx9r

Bei der Installation von MSI-Dateien habe ich es mir zur Gewohnheit gemacht, IMMER eine Protokolldatei mit "/l*vc:\windows\temp\app.log" zu schreiben. Dies ist eine einfachere Möglichkeit, um zu verfolgen, was in Ihren beiden Szenarien passiert.
Bin

@ Bin ordnungsgemäß notiert.
Alx9r

Antworten:


4
  1. Was genau macht der SCCM-Client, wenn er einen MSI Technology-Bereitstellungstyp für ein System installiert? Kann ich diesen Vorgang ohne Beteiligung von SCCM replizieren?

Soweit mir bekannt ist, führt der SCCM-Client die im Bereitstellungstyp angegebene Installationszeichenfolge aus, führt sie jedoch im Kontext von NT AUTHORITY \ SYSTEM aus. Sie können die Installation approximieren, aber nicht duplizieren, indem Sie dieselbe Installationszeichenfolge von einem Konto ausführen, das Mitglied von BUILTIN \ Administrators ist. MSIEXECkann entweder als 32-Bit- oder als 64-Bit-Prozess ausgeführt werden, je nachdem, ob Sie das Kontrollkästchen "Installations- und Deinstallationsprogramm als 32-Bit-Prozess auf 64-Bit-Clients ausführen" aktivieren oder nicht.


  1. Entspricht die Ausführung des Installationsprogramms eines Script Installer-Bereitstellungstyps durch den SCCM-Client wirklich einem Aufruf von mssexxec von psexec -i -s cmd? Mit anderen Worten, sollte ich für Bereitstellungstypen des Skriptinstallationsprogramms eine Parität zwischen msiexec erwarten, das vom SCCM-Client ausgeführt wird, und msiexec, das von psexec -i -s cmd ausgeführt wird?

Hmmm. Gute Frage. Der Client sollte nur die Installationszeichenfolge ausführen, aber es wäre für mich nicht sonderlich überraschend, wenn er eine tiefere, dunklere Magie ausführen würde. Das einzige, woran ich in Ihrer Situation denken kann, das den Unterschied verursachen könnte, ist die Bitterkeit des Prozesses, unter dem Sie das Installationsprogramm ausführen. Ich denke, der SCCM-Client verwendet fast immer 64-Bit, aber cmd.exe ist 32-Bit, oder?

In meiner Antwort finden Sie weitere allgemeine Hinweise zum Umgang mit Problemen bei der Softwareinstallation.

Viel Glück.


Dies bestätigt vieles, was ich bereits verstanden habe, erklärt jedoch nicht, wie SCCM es schafft, die MSI-Datei zu installieren, ohne dass sie in Software angezeigt wird.
Alx9r

Das Hinzufügen oder Entfernen von Programmen ist etwas Besonderes - ich kann mich nicht erinnern, warum, aber es hat etwas mit den neu generierten WMI-Klassen zu tun? Ist es möglich, dass Ihre Software ordnungsgemäß installiert wird, sich jedoch nicht unter "Software" registriert oder entfernt? @bighomie - Was denkst du?

Ah. Außer Acht lassen. Ich hatte es umgekehrt. Ich dachte Win32_Product vs. Win32_AddRemovePrograms. blogs.technet.com/b/askds/archive/2012/04/19/…

2

Zusätzlich zu dieser Antwort von @kce auf Kunstwerke sind die einzigen mageren, simplen Dinge, die ich hinzufügen muss, folgende

  • Ich behandle alle Pakete gleich

Im Allgemeinen vermeide ich "Anwendungen", es sei denn, ich bin gezwungen, mich mit ihnen zu befassen. Dies ist normalerweise der Fall, wenn ich eine App-V-Bereitstellung erstelle. Ansonsten halte ich mich an Pakete, sie sind weniger Kopfschmerzen, wie Sie gesehen haben oder sehen werden.

In SCCM habe ich ein Paket für meine MSI-Dateien erstellt, das ich für jedes andere Installationsprogramm verwenden würde. Wie kce sagte, wird es unter dem Systemkonto installiert. Wenn ich jedoch ein Paket im Vergleich zum Standard-MSI-Handler erstelle, habe ich eine genauere Kontrolle über die installierte Installationszeichenfolge, z. B. im msiexec /i "my.msi" /qb /vVergleich zum Standard. Meine Anwendungen wurden im Wesentlichen immer in Hinzufügen / Entfernen angezeigt, wo sie angezeigt worden wären, wenn ich sie manuell installiert hätte. Theoretisch sollte der Bereitstellungstyp der SCCM-Anwendung für .msi fantastisch funktionieren, aber in der Praxis kann die Verwendung von etwas anderem zu besseren Ergebnissen führen. Da Anwendungen für diese Version von SCCM neu sind, müssen wahrscheinlich einige Probleme behoben werden.

Bonus

Wenn Sie wirklich herausfinden möchten, ob dies mit dem Installationskonto zusammenhängt, verwenden Sie den Schalter psexec, um den Befehl unter dem Systemkonto auszuführen.


Ich bin damit einverstanden, alle Pakete gleich zu behandeln. Ich bin auch skeptisch gegenüber dem MSI-Bereitstellungstyp . Ich folge jedoch nicht Ihrer Präferenz für Anwendungen gegenüber Paketen. Ich habe noch kein Problem festgestellt, dessen Hauptursache ein grundlegendes Problem mit dem Anwendungsmodell ist. Der Bereitstellungstyp des Skriptinstallationsprogramms scheint wie erwartet zu funktionieren. Haben Sie spezielle Probleme mit Anwendungen, über die ich Bescheid wissen sollte?
Alx9r

@ alx9r Ja. Es gibt mehr als eine Möglichkeit, eine Katzenanwendung zu häuten. Anscheinend. Ich liebe das Anwendungsprogrammmodell, die bessere Erkennungslogik, die Überlegenheit, den Anwendungskatalog usw. Für beschissene (äh "kreative") MSI-Installer verwende ich einfach den Bereitstellungstyp des Skriptinstallationsprogramms und rufe msiexec direkt auf (oder alx9r könnte psexec verwenden).

@kce Ich verwende psexec nur zum Testen von Paketinstallationen auf dem System. Auf diese Weise kann die Paketinstallation separat von SCCM überprüft werden.
Alx9r

1
@ alx9r Sicher. Sinn ergeben. Aber wenn es über psexec funktioniert, aber nicht über SCCM, könnten Sie etwas Super-Hackiges tun und einfach den Client psxexec aufrufen lassen ... Ich kann dies tun oder auch nicht ... :(

2
@kce Diese Idee macht mich traurig.
Alx9r
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.