App Layering

Debuggen von Layerintegritätsmeldungen

Wenn Sie die Verpackungsmaschine herunterfahren und Shutdown für Finalizeausführen, wird aufgerufen, uniservice.exe um den aktuellen Layerintegritätsstatus zu erhalten. Herunterfahren für Finalize überprüft, ob die erforderlichen Prozesse noch ausstehen. Wenn ein erforderlicher Prozess nicht heruntergefahren wird, erhalten Sie eine Meldung über das ausstehende Problem. App Layering schreibt diese Informationen in die folgenden Protokolldateien:

C:\Program Files\Unidesk\Uniservice\Log\LayerIntegrity.txt C:\Program Files\Unidesk\Uniservice\Log\UniBilcLogs_X.txt

Sie können nicht genau wissen, welche UniBilcLogs Datei verwendet wird, also suchen Sie nach der Datei mit dem neuesten Zeitstempel. Suchen Sie nach “Integrität”.

Vielleicht denken Sie, dass Sie die Layerintegritätsprüfung umgehen können, indem Sie den Computer herunterfahren und abschließen. Wenn Sie es jedoch versuchen, stoppt die App Layering Appliance die Aufgabe und kehrt Sie zum Verpackungscomputer zurück. Das Script Shutdown for Finalize muss den Prozess zur Layerfinalisierung abschließen.

Warnmeldungen zur Layerintegrität

In den folgenden Layerintegritätsmeldungen erfahren Sie, welche Vorgänge in der Warteschlange abgeschlossen werden müssen, bevor ein Layer fertiggestellt werden kann:

  • “Ein RunOnce-Skript steht aus - bitte überprüfen Sie die Verpackungsmaschine und starten Sie sie neu.”
  • “Ein Neustart nach der Installation steht aus - bitte überprüfen Sie die Verpackungsmaschine und starten Sie sie neu.”
  • “Im Hintergrund läuft ein ngen Microsoft-Betrieb. “
  • “Ein MSI-Installationsvorgang wird ausgeführt - bitte überprüfen Sie die Verpackungsmaschine.”
  • “Ein Neustart steht zur Aktualisierung der Treiber auf der Bootdisk aus. Überprüfen Sie die Verpackungsmaschine und starten Sie sie neu.”
  • “Eine Microsoft ngen Operation ist erforderlich.”
  • “Software Center Client ist für die Ausführung konfiguriert, aber die SMSCFG.INI ist noch vorhanden.”

Sie können keine Layerintegritätsmeldungen umgehen, indem Sie den Computer herunterfahren. Die App Layering-Software stoppt und bringt Sie zur Verpackungsmaschine zurück, bis alle Prozesse abgeschlossen sind.

Wenn ein Microsoft NGen-Vorgang läuft, können Sie versuchen, ihn zu beschleunigen, wie im nächsten Abschnitt beschrieben.

“Ein RunOnce-Skript steht aus”

Wenn Sie einen Layer erstellen oder ihm eine Version hinzufügen, können Sie ein Skript angeben, das ausgeführt werden soll, wenn sich ein Benutzer zum ersten Mal anmeldet, nachdem sein Desktop gestartet (oder neu gestartet wird). Sie können beispielsweise ein Skript “Einmal ausführen” verwenden, um das Setup für eine Anwendung abzuschließen. Ein Run Once-Skript ist eine .bat Datei .cmd oder, die auf einem Layer installiert ist.

Nachdem ein Run-Once-Skript auf einem Image ausgeführt wurde, löscht Windows normalerweise die zugeordneten Registrierungsschlüssel, wenn es neu gestartet wird. In dieser Meldung wird angezeigt, dass Windows keinen Schlüssel für ein Run Once-Skript von einem der folgenden Speicherorte gelöscht hat:

HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ RunOnce HKEY_LOCAL_MACHINE\ SOFTWARE\ Wow6432Node\ Microsoft\ Windows\ CurrentVersion\ RunOnce

So beheben Sie dieses Problem:

  • Wenn die Skriptdatei nicht mehr vorhanden ist, löschen Sie den Registrierungsschlüssel.
  • Wenn das in der Nachricht referenzierte Skript vorhanden ist, führen Sie das Skript manuell aus, und löschen Sie dann den Registrierungsschlüssel.

“Ein Neustart nach der Installation steht aus”

Diese Nachricht stammt aus einem der folgenden Registrierungsschlüssel:

  • HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired
  • HKLM\SYSTEM\CURRENTCONTROLSET\SERVICES\NETLOGON\Start
  • HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\ACTIVECOMPUTERNAME
  • HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\COMPUTERNAME
  1. Wenn einer dieser Einträge angezeigt wird, starten Sie den Neustart. Starten Sie bei Bedarf mehrmals neu, bis Sie sicher sind, dass es sich bei der Meldung nicht um eine echte Neustartanforderung handelt.

  2. Wenn das Problem bei Net Logon liegt, starten Sie den Unidesk Service for Message Management.

  3. Überprüfen Sie, ob einer der ersten drei Registrierungsschlüssel aus der vorherigen Liste vorhanden ist:

    • HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending
    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired
  4. Ändern Sie einen dieser Schlüssel manuell, um Ihren Anforderungen gerecht zu werden. Wenn Sie die Schlüssel nicht benötigen, können Sie sie löschen.

  5. Suchen Sie nach Änderungen im NetLogon Schlüssel, um zu sehen, ob:

    • Der Wert unterscheidet sich von dem, was er beim Start war.
    • Der Computername unterscheidet sich vom aktiven Computernamen.

    Wenn es eine Diskrepanz gibt, korrigieren Sie die Einstellung.

  6. Stellen Sie fest, ob ein Domänenbeitrittsvorgang noch auf einen Neustart wartet.

    • HKLM\SYSTEM\CURRENTCONTROLSET\SERVICES\NETLOGON\Start
    • HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\ACTIVECOMPUTERNAME
    • HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\COMPUTERNAME

    Sie können diese drei Registrierungsschlüssel nicht ändern, aber einige Software kann den NETLOGON\Start Schlüssel bei jedem Neustart ändern.

Nach dem Bereinigen der ersten drei Schlüssel, die in Schritt #1 aufgeführt sind, erhalten Sie beim Neustart immer noch die Aufforderung. Sie können die Layerintegritätsprüfungen ignorieren. Dies ist jedoch ein letzter Ausweg und wird normalerweise nicht empfohlen. Weitere Informationen zum Ignorieren von Layerintegritätsprüfungen finden Sie im Abschnitt “Letzter Ausweg” am Ende dieses Artikels.

“Im Hintergrund läuft ein ngen Microsoft-Betrieb”

Diese Nachricht sagt Ihnen, dass eine Vordergrund- oder NGEN Hintergrundoperation noch läuft. Bei einer NGEN Operation werden .Net Assemblys in native Images kompiliert. Die Meldung bedeutet, dass der Prozess noch im Gange ist. Sie können den Fortschritt beobachten.

Warnung:

Starten Sie nicht neu, da dies dazu führen kann, dass der Prozess von vorn beginnt.

Um den Fortschritt im Vordergrund zu beobachten, lauf ngen eqi 3. Oder warte und fahre ngen queue status regelmäßig, um zu sehen, wie der Prozess voranschreitet. Denken Sie daran, dass das Laufen den Hintergrundprozess ngen queue status verlangsamt, da der Hintergrundprozess jedes Mal unterbrochen wird, wenn Sie seinen Status im Vordergrund überprüfen.

Es ist wichtig, dass die NGEN Prozesse abgeschlossen werden. Seien Sie geduldig. Wenn Sie den Prozess beenden oder in der Mitte neu starten, können Sie am Ende teilweise geschriebene .Net Assemblys erhalten.

Wenn ein Hintergrundprozess wie MSCORSVW.EXE (der NET Runtime Optimization Service) nicht innerhalb eines Tages abgeschlossen ist, suchen Sie nach veralteten Hintergrundprozessen. Ein Neustart könnte helfen.

Nachdem die folgenden Dienste ausgeführt wurden, können Sie fortfahren:

  • ngen.exe
  • ngentask.exe
  • mscorsvw.exe

“Ein MSI-Installationsvorgang wird ausgeführt”

Diese Meldung besagt, dass ein Systemmutex (gegenseitiges Ausschlussobjekt) mit dem Namen Global\_MSIExecute existiert. Der MSI-Installer Global\_MSIExecute stellt sicher, dass immer nur ein Installationsprogramm ausgeführt wird. Wenn Sie sicher sind, dass keine MSI-Installationen stattfinden, besteht möglicherweise eine Sperre für eine Ressource. Gehen Sie zurück in die Layer und finden Sie heraus, welcher Prozess gesperrt ist.

“Ein Neustart steht zur Aktualisierung der Treiber auf der Bootdisk aus”

In dieser Meldung wird angezeigt, dass ein Dienst oder Treiber geändert oder installiert wurde, der beim Systemstart gestartet werden soll. Es ist wichtig, dass der geänderte Treiber erfolgreich gestartet werden kann.

Normalerweise müssen Sie einmal neu starten, und der Treiber funktioniert einwandfrei. Wir haben bei einigen Gelegenheiten gesehen, wie Software (wie Microsoft Defender oder McAfee) versucht, ihre Treiberdatei bei jedem Start zu ändern, und diese Integritätsprüfung jedes Mal auslöst. Keine Neustarts löschen Sie es. Möglicherweise müssen Sie die Option zur Umgehung der Layerintegritätsprüfung verwenden, wie im folgenden Abschnitt “Letzter Ausweg” erläutert.

“ein NGen Microsoft-Vorgang ist erforderlich”

In dieser Meldung wird Ihnen mitgeteilt, dass eine Anwendung auf der Verpackungsmaschine installiert wurde und dass Artikel auf einer Prioritätsstufe von 3aktualisiert werden sollen.

Bei dieser Prioritätsstufe wird der Vorgang nur ausgeführt, wenn sich die CPU im Leerlauf befindet, und er wartet, bis keine Aktivität mehr vorhanden ist.

Um sicherzustellen, dass die Anwendung auf dem veröffentlichten Image optimal ausgeführt wird, blockiert App Layering den Finalisierungsprozess, da der NGEN Prozess auf dem Verpackungscomputer statt auf jedem Computer ausgeführt werden muss, auf dem Computer, auf dem die App bereitgestellt wird.

Mit einer NGEN eqi 3 (Prioritätsstufe 3) können Sie entweder:

  • Führen Sie die unfertigen Vorgänge in beiden der folgenden Verzeichnisse aus:

    • c:\windows\microsoft.net\framework\vYY.MM.Build
    • c:\windows\microsoft.net\framework64\v4.0.30319
  • Warten Sie. Die NGEN Operation läuft in der Regel nach 15 Minuten Leerlaufzeit von selbst.

Zu den untersuchten Werten gehören:

  • HKLM\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots\WorkPending
  • HKLM\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots\WorkPending

Ein Wert von 1 bedeutet, dass Arbeitsaufgaben in der Warteschlange stehen, um verarbeitet zu werden.

“Software Center Client ist für die Ausführung konfiguriert, aber die SMSCFG.INI ist noch vorhanden…”

In dieser Meldung wird Ihnen mitgeteilt, dass dieser Computer als Dienst ccmexec.exe konfiguriert wurde und nicht als deaktiviertkonfiguriert ist.

Da wir wissen, dass alle auf einer Verpackungsmaschine erstellten Layer ordnungsgemäß versiegelt werden müssen, um sie in einer VDI-Umgebung ordnungsgemäß bereitzustellen, prüfen wir, ob die nicht vorhanden SMSCFG.iniist. Es gibt eine Befehlsdatei, die Sie am Ende des Layers ausführen können. Wir haben die Befehle zur Ausführung in einer Batch-Befehlsdatei bereitgestellt, die Sie verwenden können, um den Layer zu versiegeln. Melden Sie sich als Administrator in einem Befehlsfenster an, um dieses Skript auszuführen:

c:\windows\setup\scripts\SEALSCCMCLIENT.cmd

Beschleunigung eines NGen Microsoft-Vorgangs

Die NGEN ausführbare Datei ist der Microsoft Native Image Generator. Es ist Teil des .NET Systems. Ngen kompiliert .NET Byte-Code in native Images neu und erstellt die Registrierungseinträge. Windows bestimmt, wann ausgeführt werden soll, NGEN basierend auf dem, was installiert wird und was Windows in der Konfiguration erkennt. Wann NGEN läuft, lass es immer abschließen. Ein unterbrochener NGEN Vorgang kann zu nicht funktionierenden .NET Baugruppen oder anderen Problemen im .NET System führen.

Sie haben die Wahl, darauf zu warten, dass der NGEN Prozess im Hintergrund abgeschlossen wird, oder ihn in den Vordergrund zu zwingen. Sie können auch den Status des NGEN Vorgangs überprüfen, wie in den folgenden Schritten beschrieben. Jedes Mal, wenn Sie den Warteschlangenstatus überprüfen, erstellen Sie jedoch eine Vordergrundaktivität, die dazu führen kann, dass die Hintergrundverarbeitung vorübergehend angehalten wird.

Wenn Sie den NGEN Prozess in den Vordergrund rücken, können Sie den Fortschritt anzeigen. Sie können den Layer abschließen, wenn der Prozess abgeschlossen ist.

  1. Bringt eine NGEN Operation in den Vordergrund. Normalerweise NGEN ist eine Hintergrundoperation und pausiert, wenn Vordergrundaktivitäten vorliegen. Wenn Sie die Aufgabe in den Vordergrund stellen, können Sie die Aufgabe so schnell wie möglich erledigen. Gehen Sie hierzu folgendermaßen vor:
    1. Öffnen Sie eine Eingabeaufforderung als Administrator.
    2. Wechseln Sie zum Microsoft.NET Framework-Verzeichnis für die derzeit verwendete Version:

      cd C:\Windows\Microsoft.NET\FrameworkNN\vX.X.XXXXX

    3. Geben Sie den NGEN Befehl ein, um die Elemente in der Warteschlange auszuführen: ngen eqi 3 <!--NeedCopy-->
    4. Dies bringt die NGEN Aufgabe in der Eingabeaufforderung in den Vordergrund und listet die zu kompilierenden Assemblys auf.

      Hinweis:

      Wenn Sie mehrere “Kompilierungsfehler” erhalten, sehen Sie im Task-Manager nach, ob eine Instanz von ausgeführt MSCORSVW.EXE wird. Wenn dies der Fall ist, lassen Sie es abschließen oder erneut ausführen NGEN eqi 3. Starten Sie nicht neu, um die Aufgabe zu beenden. Die Aufgabe muss abgeschlossen sein.

  2. Überprüfen Sie den Status einer NGEN Operation
    1. Öffnen Sie eine Eingabeaufforderung als Administrator.
    2. Überprüfen Sie den Status, indem Sie diesen Befehl ausführen: NGEN queue status
    3. Wenn Sie den folgenden Status erhalten, NGEN ist der abgeschlossen, und Sie können den Layer finalisieren. Das .NET Runtime Optimization Service ist gestoppt,

Letzte Ausweg für die Behandlung eines Problems mit der Layerintegrität (NICHT empfohlen)

Wenn Sie einen Layer haben, der einfach nicht abgeschlossen werden kann, können Sie einen Registrierungsschlüssel verwenden, um zu sagen, dass ein Layer seine Layerintegritätsprüfungen ignorieren soll.

Achtung: Benutzen Sie diesen Schlüssel nur als letztes Mittel! App Layering blockiert Sie unter diesen Umständen von der Fertigstellung. Das Abschließen eines Layers kann sowohl dem Layer als auch den Images, die die Layer enthalten, irreparabel schaden. Versuchen Sie immer zuerst, das Problem innerhalb von Windows zu lösen!

So ignorieren Sie Layerintegritätsmeldungen auf einem Layer (nicht empfohlen):

  1. Führen Sie diesen Schlüssel aus regedit.exe und erstellen Sie:

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Uniservice: "BypassLayerCheck"=DWORD 1<!--NeedCopy-->

    Der Wert spielt keine Rolle. Wichtig ist, dass der Wert existiert. Dieser Schritt blockiert Layerintegritätsprüfungen für einen Layer. Damit kann der Layer endgültig abgeschlossen werden, unabhängig davon, welchen Schaden sie für den Layer und die Layerimages verursachen kann.