Softwarevirtualisierung mit App V 5 192Unser Buch "Softwarevirtualisierung mit App-V 5"

Das deutsche App-V 5 Buch: 496 Seiten Wissen zu Microsoft App-V 5 (5.1 bis HF6). Ab Windows 7 bis Server 2016 mit Zusatzinhalten zu App-V mit VDI, Terminalservern, XenDesktop und SCCM Mit Fragestellungen zum Contentstore, Skripting, Hochverfügbarkeit usw.

Profi-Haussteuerung

LOGO Profi Haussteuerung FinalProfi-Haussteuerung ist, Smart Home, Alarmanlagen und Videoüberwachung zu einer gesamtheitlichen Lösung zu vereinen. Das Herzstück hierbei bilden die Komponenten HomeMatic vom Marktführer eQ-3.

Profi-Haussteuerung

App-V mit Windows 10 1703 automatische Paketierung (Teil 2)

App-V mit Windows 10 1703 automatische Paketierung (Teil 2)

Im ersten Teil ist der automatischen Rollout eines Sequencers auf einem Hyper-V Host unter VMware Workstation beschrieben (also eine VM in einer VM). In diesem Teil beschreiben wir die neuen Möglichkeiten zu einer automatisierten Sequenzierung mit dem 1703 ADK. Voraussetzung ist eine Umgebung, die mit den Informationen aus Teil 1 aufgebaut wurde. Alle Aktionen müssen wiederum mit einer administrativen PowerShell durchgeführt werden. Wir zeigen, wie der Auto-Sequencer mit einer Steuerungsdatei zu nutzen ist. Weiterhin ein eigenes PowerShell Skript welches alle MSI und Setup.exe Dateien in einem Verzeichnis automatisiert sequenziert.

Weitere Neuerungen für App-V mit Windows 10 Enterprise 1703

Unveröffentlichte Pakete können jetzt automatisch aus dem Cache gelöscht werden. Dazu existiert die neue Konfigurationseinstellung “AutoCleanupEnabled”. Diese Funktion kann über die Gruppenrichtlinie “Enable automatic cleanup of unused appv packages” aktiviert werden oder über PowerShell mit:

Set-AppvClientConfiguration -AutoCleanupEnabled 1

Und in der Registrierung:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\PackageManagement AutoCleanupEnabled

Get-AppvClientPackage -all zeigt diese Pakete nicht mehr an. Zu berücksichtigen ist dabei, dass sich die Bereitstellungszeit für so ein Paket erhöht, wenn es doch einmal benötigt wird.

Ergänzung zu Teil 1

Zunächst einmal eine Ergänzung zum ersten Teil. Ich habe probiert mich mit Connect-AppVSequencerVM nach einem Neustart der VM noch einmal zu verbinden und habe gleich eine Fehlermeldung bekommen. Microsoft hat eine wichtige Variable AutoSequencingRoot nur unter der PowerShell Funktion New-AppVSequencerVM gesetzt. Wenn nun in einer neuen Sitzung keine neue VM angelegt wird, gibt es die Variable nicht. Zuvor hat das funktioniert, weil es sich um die gleiche PowerShell Sitzung gehandelt hat. Dadurch funktioniert in Zeile 9 im Modul „AutoSequencingTelemetry.psm1“ der Join-Path Befehl nicht mehr. Die Funktion Connect-AppVSequencerVM im Modul New-AppVSequencerVM.psm1 kann wie folgt ergänzt werden, damit es nicht zu dem Fehler kommt (Microsoft, here is a bug):

 

function Connect-AppVSequencerVM
{
param(
..
)
process {
Import-module …
Import-module …
Write-Host "set Root for Connect" -ForegroundColor Green #new
$Script:AutoSequencingRoot = "$PSScriptRoot\.." #new
..

Anschließend hat Connect-SequencerVM wieder funktioniert. 

 

Automatisierte Sequenzierung

Für die automatische Sequenzierung von einem oder mehreren Installationspaketen hat Microsoft den neuen Befehl „New-BatchAppVSequencerPackages“ implementiert, der über eine XML Datei steuert, was auf dem remote Sequencer passieren soll. Der offizielle Technet Artikel dazu ist hier zu finden: https://technet.microsoft.com/en-us/itpro/windows/manage/appv-auto-batch-sequencing

Der Aufruf ist wie folgt definiert:

New-BatchAppVSequencerPackages –ConfigFile –VMName -OutputPath

In diesem Artikel haben sich wiederum einige Fehler eingeschlichen, die den Prozess unmöglich machen. Derjenige, der den Artikel geschrieben hat, hat den Vorgang vermutlich nicht getestet. Hier wird es nun korrekt dokumentiert. Das Tag im Artikel ist , die xml Steuerungsdatei wird nicht mit beendet. Die Anweisung „True“ darf nicht großgeschrieben werden. Die Beispieldatei ist somit unbrauchbar und es kommt zu den folgenden Fehlermeldungen:

(The 'Cmdlet' element is invalid - The value 'True' is invalid according to its datatype oder so The element 'Application' has invalid child element 'Name'. List of possible elements expected.

Selbst das Beispiel im Installationsverzeichnis des ADK ist nicht korrekt (sample_config.xml).

Error App V Autosequencer

Die Steuerungsdatei kann mehrere Aufrufe zur Sequenzierung enthalten und kennt die folgenden „korrekten“ Anweisungen:

  • AppName: der Name, den das automatisiert erstellte App-V Paket bekommt
  • InstallerFolder: der Ordner auf dem Host, der die Installationsdatei enthält. Die Datei wird auf den Sequencer kopiert
  • Installer: Setup.exe oder ein MSI in dem InstallerFolder
  • TimeoutInMinutes: Timeout, wenn ein Paket mal hängen sollte
  • Cmdlet: Bei „true“ (klein geschrieben) wird eine Commandline aufgerufen. Mit „false“ wird der Sequencer gestartet. Wenn der Sequencer gestartet wird sind die anderen Anweisungen eigentlich unwichtig, da die Angaben nicht übernommen werden. Die Installationsquellen sind auf dem Sequencer unter „c:\Users\Public\Documents\ProductInstaller“ zu finden, wann man die Funktion nutzen möchte
  • Enabled: „true“, die Anwendung wird sequenziert. „false“ (klein geschrieben), die Anwendung wird nicht sequenziert
    Es dürfen mehrere Blöcke existieren, die innerhalb des Tags „“ definiert werden.

 Es können mehrere Applikationen in der Konfigurationsdatei existieren:

 App V Auto Sequencer Config1a

 Im Folgenden eine funktionierende Beispieldatei:

  App V Auto Sequencer Config2a

Anmerkung: Vor jedem Start die VM manuell auf einen neutralen Snapshot zurücksetzen!

 Mit dem Aufruf wird ein Snapshot der Sequencer VM erstellt und bei jedem Paket zurückgesetzt, die Dateien unter dem Ordner „InstallFolder“ werden automatisch auf den Sequencer kopiert und eine Sequenzierung eingeleitet. Nach Abschluss des Vorgangs wird das erstellte „.appv“ Paket mit alles dazugehörenden Dateien in einen Unterordner im Ordner „OutputPath“ auf den Host kopiert. 

Für diesen Vorgang wird zunächst ein Ordner „c:\Packages“ mit den Unterordnern MSI und Output auf dem Hyper-V Host angelegt. In den MSI-Ordner werden in diesem Beispiel die beiden Pakete XmlNotepad.msi und Free_AppDeploy_Repackager.msi gelegt (andere Dateien sind möglich).

Der Vorgang wird mit eingeleitet:

 

New-BatchAppVSequencerPackages -ConfigFile C:\packages\sequence.xml -VMName SEQ1 -OutputPath C:\packages\output\
Log file: C:\Users\Andreas\AppData\Local\Temp\AutoSequencer\Logs\New-BatchAppVSequencerPackages-04-14-2017-18-43-25.txt
Report file: C:\packages\output\\New-BatchAppVSequencerPackages-report-04-14-2017-18-43-27.txt
Number of applications in the batch 2
-- Start sequencing XmlNotepad  --
Applying checkpoint sequencer-base to VM..
Waiting for VM to finish starting up...
Waiting for VM session......
Copying installer to VM..
Scheduling sequencing task..
DNS Resolving for SEQ1
DNS Resolved SEQ1.localdomain
Waiting for sequencing task to start....
Sequencing task is running..........................
Sequencing task has finished running
-- Done sequencing XmlNotepad --
-- Start sequencing Free_AppDeploy_Repackager  --
Applying checkpoint sequencer-base to VM..
Waiting for VM to finish starting up...
Waiting for VM session......
Copying installer to VM..
Scheduling sequencing task..
DNS Resolving for SEQ1
DNS Resolved SEQ1.localdomain
Waiting for sequencing task to start....
Sequencing task is running.......................
Sequencing task has finished running
-- Done sequencing Free_AppDeploy_Repackager --
Sequencing complete.

Irgendwann ist das Ganze hoffentlich erfolgreich abgeschlossen und die beiden Pakete sind im Outputverzeichnis zu finden:

 

App V Auto Sequencer Outpunt
Zusätzlich existieren zwei Log Dateien in dem Verzeichnis. Weitere Logs sind unter %temp%\AutoSequencer\Logs zu finden.
Im App-V Anwendungsverzeichnis findet sich zusätzlich eine Log.txt. Darin ist zu sehen, dass jedes Paket mit dem FullLoad Parameter erzeugt wird. Was aus meiner Sicht überflüssig ist. Meist wird ein FullLoad über eine Gruppenrichtlinie erzwungen. Oft nutzen wir für unsere Umgebungen den SCS-Mode.

Update

Das Batch Update ermöglicht es, ein ganzes Verzeichnis von App-V Paketen mit einem Aufruf einem Update zu unterziehen. Dabei nutzen wir die gleichen Anweisungen, wie schon bei der Batch Paketierung. Der Technet Artikel dazu ist hier zu finden:

https://technet.microsoft.com/en-us/itpro/windows/manage/appv-auto-batch-updating 

Zusätzlich existiert der Tag Packages unter dem das App-V Paket hinterlegt ist, auf welches das Update angewendet werden soll. Der Tag „Name“ aus dem TechNet Artikel ist wiederum durch AppName zu ersetzen.

  • Packags: Name des App-V Paketes auf dem Sequencer

Automatische Generierung der XML Datei mit PowerShell

Es ist eine kleine Fingerübung für MSI-Dateien in einem Verzeichnis eine passende XML Datei zu generieren. Also, wenn massenhaft MSI-Pakete oder Setup Dateien nach App-V gewandelt werden sollen, kann das beispielsweise mit dem folgenden Skript durchgeführt werden (vereinfacht).

 

<#
	.SYNOPSIS
		Create a xml file to für the 1703 Auto-Sequencer to sequence msi or setup.exe files in a folder 
        Try to sequence every file!
	.PARAMETER  SetupPath
		Path to teh msi (or setup) files on the host
	.PARAMETER  XmlFile
		Output path for the xml file
	.EXAMPLE
		Create-AutoSequencerxml.ps1 -SetupPath c:\Packages\msi
	.LINK
		http://www.software-virtualisierung.de
    -Author
		Andreas Nick 2017
#>

[CmdletBinding()]
param(
	[Parameter(Position=0, Mandatory=$true)]
	[System.IO.FileInfo]$SetupPath,
	[Parameter(Position = 1, Mandatory = $true)]
	[System.IO.FileInfo] $XmlPath
)

# Create a new XML 
[System.XML.XMLDocument]$AppvXML = New-Object System.XML.XMLDocument
[System.XML.XmlNode]$AppvNode = $AppvXML.CreateXmlDeclaration("1.0", $null, $null)
$AppvXML.appendChild($AppvNode)
$AppVApps = [System.XML.XMLElement]$AppvXMLRoot = $AppvXML.CreateElement("Applications")
$AppvXML.appendChild($AppvXMLRoot)

foreach ($file in Get-ChildItem $SetupPath -Recurse -Include *.exe, *.msi)
{
	
	Write-Host "Add application :" $file.FullName -ForegroundColor Blue
	[System.XML.XMLElement]$AppNode = $AppvXML.CreateElement("Application")
	$AppVApps.AppendChild($AppNode)
	$AppNode.AppendChild($AppvXML.CreateElement("AppName")).InnerText = $file.Name.Substring(0, $file.Name.Length - 4)
	$AppNode.AppendChild($AppvXML.CreateElement("InstallerFolder")).InnerText = Split-Path $file.FullName -Parent
	$AppNode.AppendChild($AppvXML.CreateElement("Installer")).InnerText = $file.name
	if ($file.Name -match '.exe$')
	{
		$AppNode.AppendChild($AppvXML.CreateElement("InstallerOptions")).InnerText = "/s"
	}
	else
	{
		$AppNode.AppendChild($AppvXML.CreateElement("InstallerOptions")).InnerText = "/qn"
	}
	
	$AppNode.AppendChild($AppvXML.CreateElement("Cmdlet")).InnerText = "true"
	$AppNode.AppendChild($AppvXML.CreateElement("Enabled")).InnerText = "true"
}

$AppvXML.Save($XmlPath)

Für eine automatische Sequenzierung schaut das wie folgt aus:

 

 

 

Create-AutoSequencerxml.ps1 -SetupPath C:\packages\msi\ -XmlPath C:\packages\autoseq.xml | Out-Null
Add application : C:\packages\msi\Free_AppDeploy_Repackager.msi
Add application : C:\packages\msi\XmlNotepad.msi

New-BatchAppVSequencerPackages -ConfigFile C:\packages\autoseq.xml -VMName SEQ1 -OutputPath C:\packages\output\
Log file: C:\Users\Andreas\AppData\Local\Temp\AutoSequencer\Logs\New-BatchAppVSequencerPackages-04-14-2017-21-43-54.txt
Report file: C:\packages\output\\New-BatchAppVSequencerPackages-report-04-14-2017-21-43-56.txt
Number of applications in the batch 2
-- Start sequencing Free_AppDeploy_Repackager  --
Applying checkpoint sequencer-base to VM..
Waiting for VM to finish starting up...
Waiting for VM session......
Copying installer to VM..
Scheduling sequencing task..
DNS Resolving for SEQ1
DNS Resolved SEQ1.localdomain
Waiting for sequencing task to start.....
Sequencing task is running..........................
Sequencing task has finished running
-- Done sequencing Free_AppDeploy_Repackager --
-- Start sequencing XmlNotepad  --
Applying checkpoint sequencer-base to VM..
Waiting for VM to finish starting up...
Waiting for VM session....

Fazit

 

Im Allgemeinen funktioniert das Verfahren gut. Zwischenzeitlich war die Sequencer VM aber nicht mehr zu gebrauchen, weil eine Anmeldung nicht mehr möglich war (warum auch immer) – die Änderung war im Snapshot und die Vorlage musste neue erstellt werden. Was mit der Anleitung aus Teil 1 wieder sehr schnell ging. Leider scheint die Paketerstellung einige Defizite zu haben denn ein App-V Template (Filetype appvt) kann nicht angegeben werden. Damit fehlt die Möglichkeit, beispielsweise COM Interaktion zu erlauben oder Schreibrechte im VFS. Dafür wird jedes Paket mit dem Fulload Parameter erstellt, ohne die Möglichkeit dieses zu deaktivieren. Naja, wer diese Funktionen möchte, schaut sich bitte meinen Blog zur automatisierten MSI Erstellung an. Statt eines MSI Pakets oder einer Setup.exe ist übrigens ein Skript zur Sequenzierung viel sinnvoller. Dort kann man beispielsweise auch Desktopverknüpfungen automatisiert löschen und es wird zumindest in unseren weiter entwickelten Paketierungsskripten (beispielsweise für den AppBot) auch auf eine deutsche Codepage geachtet.

UE-V (Teil 2) für Windows 10, Version 1607 konfigu...
Auto-Sequencer App-V mit Windows 10 1703 auf VMwar...

Ähnliche Beiträge

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Bereits registriert? Hier einloggen
Gäste
Samstag, 24. Juni 2017

Sicherheitscode (Captcha)

Kontakt

Nick Informationstechnik GmbH
WEB : http://www.nick-it.de
TEL : +49 511 165.810.190
MAIL: info(at)nick-it.de

App-V Workshop

@nickinformation Tweets

Most Popular Post

04. Mai 2015
NITCtxPatcher a patchmanager for Citrix XenApp and XenDesktop 7.x May 2017 The NITCtxPatchManager is back, after some changes from Citrix on the webs...
02. April 2015
NIT-GPOSearch is a free tool to search in the Group Policy (admx, adml) definitions for a specific setting. New in Version 1.2 - search in the domain ...
28. Oktober 2013
English translation created with http://translate.google.de/ ! AppV2Msi a tool that is being created to transform Microsoft App-V 5 Files into a "rea...