By Andreas Nick on Mittwoch, 23. Dezember 2020
Category: App-V

Microsoft Edge (Chromium) mit App-V virtualisieren

Diesen Artikel habe ich ursprünglich in mehreren Teilen auf meinem englischen Blog https://www.andreasnick.com veröffentlicht. Insbesondere einem Bekannten ist es zu verdanken, dass nun auch eine deutsche Version vorliegt und hier veröffentlicht wird. Ich selber lese lieber technische Artikel auf deutsch nur ist die Interessengruppe etwas kleiner. Nun heute, am 23.12. als kleines Vorweihnachtsgeschenk an die Community endlich auch die deutsche Version dazu wie der geniale Microsoft Edge mit App-V zu virtualisieren ist.

Microsoft hat vor einigen Monaten einen neuen Edge-Browser auf der Basis des Google Engine Chromium herausgebracht. Dieser wird über eine bestehende Installation installiert, kann aber auch auf Serversystemen die bisher keinen Edge-Browser hatten nachinstalliert werden. Interessant ist, dass dieser Edge problemlos auf älteren Systemen wie Server 2012 R2 oder Windows 8.1 installiert werden kann. Schön ist, dass sich der neue Edge-Browser leicht mit App-V virtualisieren lässt. Wir haben seit dem Release eine App-V variante der Anwendung im Einsatz und bisher keine Probleme damit. 

Anmerkung: Das Dokument Edge mit App-V virtualisieren ist insbesondere Thorsten @endi24 zu verdanken. Vielen Dank für den Support! Weiterhin danke ich @bsplittg für das Testen des Paketes

Das Paket funktioniert auf aktuellen und auf allen älteren Microsoft-Betriebssystemen, wenn es mit einem klassischen (nicht ADK) Sequencer (App-V 5.1) erstellt wird. Dabei kann das Edge App-V Paket parallel zu einem vorhanden Edge funktionieren. Ein App-V Edge-Browser hat, wenn man möchte, eigene Einstellungen. Beispielsweise eine eigene Startseite oder eine andere Suchmaschine.
Das alles gilt nur für Windows-Systeme. Denn den neuen Edge-Browser gibt es auch für MacOS!

Zu finden ist dieser Browser als online Installation unter:
https://www.microsoft.com/en-us/edge

Bzw. in Deutschland unter:
https://www.microsoft.com/de-de/edge

Weiterhin findet sich eine Insider Version unter:
https://www.microsoftedgeinsider.com/de-de/download/

Für uns ist jedoch die offline Variante vom neuen Edge am interessantesten. Diese ist hier zu finden:
https://www.microsoft.com/en-us/edge/business/download

 Zum Zeitpunkt dieses Blogs ist die Version 87 (Current) die aktuelle „Stable" Version, die wir für das App-V Paketnutzen wollen. Als Voraussetzung für die Paketierung mit App-V empfiehlt sich offline Version der Anwendung. Es gibt aktuell keine MSIX Version zum Download. Microsoft scheint hier selber nicht so auf die neue Technik zu setzen, obwohl Office 365 bald darüber verteilt werden soll. Wir bekommen ein klassisches MSI Paket „MicrosoftEdgeEnterpriseX64.msi" für die Installation.


Edge installiert sich vollständig nach: 
„c:\Program Files x86\Microsoft\Edge"
„c:\Program Files x86\Microsoft\Edgeupdate"


Microsoft speichert Benutzerdaten per Standard für Edge unter %localappdata%\Microsoft\Edge\User Data
Das ist übel, da es sich hierbei nicht um einen Roaming Pfad handelt. FSLogix Benutzer sind hier fein raus. Für App-V können wir den Pfad mit in das Paket integrieren.
Der Ordner kann über einen Startparameter geändert werden und so beispielsweise nach %AppData% umgelenkt werden (wenn benötigt).
„C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir=%AppData%:\ChromeFilesBusiness. Das wird in der Sequenzierungsphase Beachtung finden.
Dennoch ist es problematisch, diese Dateien im App-V Paket zu haben. Wenn sich die PackageID ändert, wird App-V Dateien an anderer Stelle suchen und der Benutzer verliert seine Konfiguration. Am besten ist das Exkludieren von AppData und die Konfiguration des Edge über eine Gruppenrichtlinie! Wir belassen es hier dennoch im Paket.

Anmerkung: Eine 64 Bit Version von Edge wird dennoch nach c:\Programm Files (x86) installiert!​

Es wird ein DCOM Subsystem gefunden, welches nicht virtualisiert werden kann. Meistens werden diese in den Anwendungen nicht benötigt.
{1FCBE96C-1697-43AF-9140-2897C7C69767} (LocalService)
Wenn wir nach der Komponente suchen, erkennen wir, dass es sich um den Edge Elevation Service handelt.

 In Chrome ist der Elevation_Service ist eine eigenständige ausführbare Datei, die vom Chrome-Browser auf dem Computer des Benutzers installiert wird. Wir finden diese unter „C:\Program Files (x86)\Microsoft\Edge\Application\87.0.664.66\elevation_service.exe"

Genutzt wird dieser Service in Edge, um Komponenten und Updates zu installieren, die höhere Rechte benötigen. Beides wollen wir in einem App-V Paket nicht. Im Gegenteil - diese Dienste deaktivieren oder löschen wir.

Edge auf Terminalservern 

Auf einem Server oder Desktop, auf dem der Citrix VDA installiert ist, führt der Start eines des Edge zu einem weißen Fenster. Das passiert nicht mit dem App-V Paket. Wer hier näheres wissen will findet dazu hier einen Blog:


https://jkindon.com/2019/09/17/deploying-brave-and-microsoft-edge-dev-browsers-in-citrix-cvad-environments/

Weiterhin besteht eventuell ein Problem mit der Edge Sandbox. Hier kann es passieren, dass Audio (Mikrofon) nicht sauber unterstützt wird. Diese kann über die Edge Gruppenrichtlinien deaktiviert werden. Bisher habe ich dazu verschiedene Aussagen gehört. Das Problem scheint nicht generell zu bestehen oder ist versionsabhängig.
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge
AudioSandboxEnabled = 0


Oder der Aufruf (Verknüpfung) mit :
–disable-features=AudioServiceSandbox

 Edge und FSLogix

Wir verschieben im späteren Verlauf die Benutzerdaten von Edge in den Roaming Teil. Hier hat Microsoft scheinbar auch das schlechte Konzept von Crome übernommen, alles nach AppDataLocal zu speichern. FSLogix hat hier kein Problem und dieser Teil kann vielleicht ignoriert werden. 

 Profilmanagement

Zum Profilmanagement gibt es hier einen schönen Artikel. U.a. werden Citrix Profilemanager und VMWare DEM betrachtet. Zu beachten ist, dass das App-V Rezept unten alles nach %Appdata% umleitet. Daher ändern sich die Pfade. Wir müssen eher Pfade exkludieren. Im Besonderen den FSLogix den Cache Pfad!

Exclusion wenn nach AppDataLocal gespeichert wird:
Appdata\Local\Google\Chrome\User Data\Default\Cache

Exclusion für FSLogix und Microsoft Roaming Profiles wenn nach AppData gespeichert wird:
Appdata\Roaming\Microsoft\Edge\Default\Cache

Optional:
Appdata\\ Microsoft\Edge\User Data\Default\JumpListIconsMostVisited
Appdata\ \ Microsoft\Edge\User Data\Default\JumpListIconsRecentClosed
AppData\\ Microsoft\Edge\User Data\Default\Media Cache

Empfohlene Konfigurationseinstellungen 

Dienste werden deaktiviert:

Einstellungen 

Bei Bedarf weitere Sprachen hinzufügen.
Edge://settings/languages

Bei Bedarf weitere Sprachen hinzufügen.
Edge://settings/languages

Neue Sprachen:

Hintergrundeinstellungen 

Edge://settings/System
Edge startet Hintergrunddienste nach dem beenden des Browsers und kommuniziert ständig (wie auch Chrome). Das ist für mich ein unerwünschtes Verhalten. Insbesondere für ein App-V Paket. Bei Terminalservern wirkt sich die Konfiguration zusätzlich negativ aus. Hintergrundaktivitäten sind hier besser zu deaktivieren.

Der Sequencer 

Wenn das Paket auch auf älteren Systemen funktionieren soll, müsst ihr zwingend einen App-V 5.1 Sequencer nutzen. Für aktuelle Umgebungen empfehle ich den Sequencer aus dem ADK 1807.

Ausschlusselemente (App_V Template):

Insbesondere kann der Ordner [{ProgramFilesX86}]\Microsoft\Edge\Application\81.0.416.53\Installer gelöscht werden. Hier liegt noch einmal ein vollständiges Setup. Andere Elemente sind [{SystemX86}], [{Windows}]\Serviceprofiles (Dienste) und [{AppVPackageDrive}]\Boot (warum auch immer etwas am BCD verändert wird?).

Löschen: alle MSI Files unter C:\Windows\Installer. Achtung: nicht alles löschen. Hier können wichtige Exe Dateien, DLLs und Icons liegen.

Sequenzierungsanleitung

Sc Delete MicrosoftEdgeElevationService
Sc Delete Edgeupdate
sc Delete edgeupdatem

Achtung Firewalleinstellungen: Die können bei Bedarf mit einem Script gesetzt werden (Ein Beispiel aus meinem deutschen Blog: 
https://www.software-virtualisierung.de/app-v/windows-firewall-ports-automatisch-fuer-ein-app-v-paket-oeffnen.html)

Weitere Referenzen:
https://www.askwoody.com/2020/privacy-update-brave-is-the-most-private-browser-edge-blabs-like-crazy/

 App-V Edge Probleme, der IE Mode und das Fonts Subsystem

Seit unserem ersten Blog zu dem Thema sind inzwischen Monate vergangen. In dieser Zeit hat sich der Edge als App-V Anwendung als sehr stabil erwiesen. Wenn ich dann von Zeit zu Zeit lese, dass mal wieder eine neue kritische Sicherheitslücke auftaucht, können wir mir dem virtuellen Edge schnell darauf reagieren.
An dieser Stelle mache ich gerne noch einmal darauf aufmerksam, dass wir regelmäßig den Edge und andere Browser für unsere Kunden erstellen. Das mit bekannten AppV Bugfixen und mit kundenspezifischen Einstellungen. Bei Interesse sprecht mich bitte darauf an. Beispielsweise auf Twitter @Nickinformation

 Microsoft Edge Internet Explorer Mode

 Generell funktioniert der IE Mode mit dem neuen Edge. Dabei wird der Internet Explorer in das Edge Fenster integriert. Leider öffnet der Edge Browser immer ein neues Fenster und integriert den Internet Explorer nicht in das Edgefenster. Aussehen soll das wie in der folgenden Abbildung. Dabei zeigt der Edge ein kleines Internet Explorer Symbol neben der Adressleiste.

Erst nachdem man den Edge einmal als Administrator gestartet at funktioniert alles korrekt.
Auf das Problem aufmerksam gemacht hat mich Ben Splittgerber @_qwertzu
Im Weiteren folgt hier auch die Lösung.

Konfiguriert wird der IE Mode über eine Gruppenrichtlinie. Entweder per User oder für den Computer: Computer → Administrative Templates → Microsoft Edge → Configure Internet Explorer Integration. Hier auf „Internet Explorer Mode" stellen.

Weiterhin über die Sitelist.xml. Diese mit dem Tool „Enterprise Mode Site List Manager (schema v.2)" erstellt werden. https://www.microsoft.com/en-us/download/details.aspx?id=49974
Dort wird u.a. festgelegt, wie eine Webseite aus der Sitelist dargestellt wird. Es ist auch möglich eine IE Webseite immer im IE zu starten.
Die Liste legt ihr in eine Freigabe. Anschließend konfiguriert ihr wieder eine Gruppenrichtlinie. Entweder per User oder für den Computer: Computer → Administrative Templates → Microsoft Edge → Configure the Enterprise Site List. Abschließend den SMB Pfad auf die Freigabe eintragen.

Nun funktioniert das Ganze aber noch nicht als App-V Paket. Ich habe das Problem analysiert. Sobald man sich auf eine „Internet Explorer" Seite begibt, möchte Edge administrative Rechte haben. Werden diese gewährt, funktioniert alles. Das ist für ein App-V Paket kein Problem. App-V Anwendungen dürfen in Ihrem Dateisystem und in der App-V Registrierung administrative Aktionen durchführen. Es ist ja nicht das ganze System betroffen. Es muss ein Ein Fehlalarm sein!
Und tatsächlich, nach einer eingehenden Analyse mit dem Sysinternals Procmon konnte der Übeltäter schnell gefunden werden:

Gib deinen Text hier ein ...

Es scheint zwingend notwendig zu sein, dass unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Edgeintegration der vollständige Pfad mit einer VersionID für Edge eingetragen wird. C:\\Program Files (x86)\\Microsoft\\Edge\\Application reicht nicht aus. Ein Integrationspunkt würde vielleicht funktionieren aber würde dann dafür sorgen, dass der Key nur dann funktioniert, wenn wir das Paket global veröffentlichen.

Die Lösung ist recht einfach. Wir erweitern die DeploymentConfig.xml um den folgenden Skriptteil. 

Ich habe hier den einfachsten Ansatz gewählt. Damit wird kein Skript im App_V Paket benötigt. Komplexer geht natürlich immer.
Damit wird der Registrierungsschlüssel mit dem Start von Edge gesetzt und der IE Mode funktioniert.
Alternativ könne man mit einem Editor, der die VersioID nicht ändert diesen Schlüssel direkt im Paket setzen.

 Das App-V Fonts Subsystem und Edge

Es gibt in letzter Zeit ein Problem mit dem Fonts Subsystem, welches zu einem Crash des Edge geführt hat. Gefunden hat das Problem @Royessers

Das Problem kann leicht gelöst werden, indem das Font Subsystem in der DeploymentConfig.xml deaktiviert wird.

Die neue DeploymentConfig.xml muss anschließend im PublishingServer importiert werden.

Zusammenspiel mit Office 365 

Die Zusammenspiel mit Office 365 klappt herforragend, wenn der folgende Registrierungsschlüssel gesetzt ist:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClickToRun\OverRide]
"AllowJitvInAppvVirtualizedProcess"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ClickToRun\OverRide]
"AllowJitvInAppvVirtualizedProcess"=dword:00000001

Probleme mit einem lokalen Office 

Wenn ein Microsoft Office lokal installiert ist, kann es zu Problemen mit den Protokolltreibern kommen. Beispielsweise das Öffnen eines Excel Dokuments in Sharepoint. Das ist einer der Gründe, warum Anwendungen, die mit Office interagieren am besten auf einem Sequencer mit einem lokal installierten Office sequenziert werden. Es geht auch anderes. Die das folgende Skript „simuliert" ein lokales Office und sollte vor der Paketierung von Edge auf dem Sequencer ausgeführt werden.

Related Posts

Leave Comments