Beruflich Dokumente
Kultur Dokumente
Eichenweg 9
3123 Belp
076 347 77 24
www.realpackaging.ch
Datum: 28.07.2015
Version Wer
Beschreibung
14.03.11
V1.0
Dominik Oberlin
Initialversion
01.02.12
V1.1
Dominik Oberlin
15.08.12
V1.2
Dominik Oberlin
26.01.15
V1.3
Dominik Oberlin
03.02.15
V1.4
Dominik Oberlin
Div Erweiterungen
24.03.1528.07.15
V1.5
Dominik Oberlin
www.realpackaging.ch
Inhaltsverzeichnis
1
1.1
1.2
1.3
1.4
Vorwort .................................................................................................................... 6
Ziel und Zweck dieses Dokumentes ............................................................................. 6
Abgrenzungen............................................................................................................ 6
Legende ..................................................................................................................... 6
Vorarbeiten ................................................................................................................ 6
2
2.1
2.2
2.3
2.4
3
3.1
3.2
3.3
3.3.1
3.3.2
3.3.3
3.3.4
3.4
3.4.1
3.4.2
3.5
3.5.1
3.5.2
3.6
3.7
3.7.1
3.7.2
3.7.3
3.7.4
3.8
3.9
3.9.1
3.9.2
3.9.3
3.9.4
3.9.5
3.9.6
3.10
3.10.1
3.11
3.12
3.13
3.14
3.14.1
2/122
www.realpackaging.ch
4
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13
4.14
4.15
4.16
4.17
4.18
5
5.1
5.2
5.3
5.3.1
6
6.1
6.2
6.3
6.3.1
6.3.2
6.3.3
6.3.4
6.3.5
6.3.6
6.3.7
6.3.8
6.3.9
6.3.10
6.3.11
6.3.12
6.4
6.4.1
6.4.2
6.4.3
6.4.4
6.5
6.6
3/122
www.realpackaging.ch
6.7
6.7.1
6.8
6.8.1
6.8.2
6.9
6.9.1
6.10
6.11
6.12
6.13
6.14
6.14.1
6.14.2
6.14.3
6.14.4
6.15
6.15.1
6.15.2
6.16
6.16.1
6.16.2
6.16.3
6.16.4
6.16.5
6.16.6
6.16.7
6.16.8
6.16.9
6.16.10
6.16.11
6.17
6.17.1
6.17.2
6.17.3
6.17.4
6.18
6.19
7
7.1
7.1.1
7.2
7.2.1
7.2.2
7.3
7.3.1
7.4
7.4.1
4/122
7.4.2
7.4.3
7.4.4
7.4.5
7.4.6
7.4.7
7.4.8
7.4.9
7.4.10
www.realpackaging.ch
5/122
www.realpackaging.ch
1 Vorwort
In der Softwarepaketierung und bei der Installation und Verwaltung von Softwarepaketen
spielen einfaches Handling, eine transparente Implementation, Effizienz und klare sowie
bersichtliche Schnittstellen eine grosse Rolle. Mit dem Real Packaging Package-Launcher
erstellen Sie robuste Softwarepakete mit automatisierbaren Schnittstellen und verwalten Ihre
Updates und Upgrades. Dabei bietet er zahlreiche Erleichterungen und Automatismen, die die
Paketerstellung vereinfachen, eine transparente Softwareverwaltung ermglichen und den
Support vereinfachen. Das Servicemodell verfolgt neben vielen anderen Vorteilen vor allem ein
Hauptziel: Die Optimierung des Softwarebereitstellungs- und Verteilungsprozesses.
1.1
Das vorliegende Dokument dient als Referenz und Grundlage im Zusammenhang mit Fragen
aus dem Bereich des Package-Launchers. Es werden alle Einstellungen und Verfahren aufgezeigt,
welche zu einer erfolgreichen Anwendung von Softwarepakettransaktionen erforderlich sind.
1.2
Abgrenzungen
Die abgebildeten Einstellungen und Methoden zielen auf einen reibungslosen Betrieb in der
Softwarepaketierung und im -Deployment des aktuellen Unternehmens, um Softwarepakete zu
installieren und zu deinstallieren. Die hier skizzierten Softwarepakete erwarten in ihrem Design
gewisse Schnittstellen und knnen in dieser Form nur mit dem Package-Launcher betrieben
werden.
Zum Lieferumfang des Package-Launchers gehren Scripts, um die Qualitt des erstellten
Softwarepakete zu prfen und das Paket auf logische Konstistenzen zu prfen. Zudem werden
mit einem weiteren Sciptloader SCCMCreateApp_Link.vbs alle Objekte in der SCCM-Infrastruktur
erstellt. Auf die Verwendung dieser Scripts wird in diesem Dokument nicht oder nur ansatzweise
eingegangen.
1.3
Legende
1.4
Vorarbeiten
Der Package-Launcher verwendet lokale Elemente. Vor Benutzung des Package-Launchers muss
gewhrleistet sein, dass das Softwarepaket RealPackaging-PackageLauncher-2012 lokal
installiert ist.
6/122
www.realpackaging.ch
Der Package-Launcher besteht aus verschiedenen Elementen, die nur in sich als Ganzes einen
logischen Zusammenhang ergeben. Viele der Elemente sind zur optionalen Verwendung
gedacht und werden sich daher nicht in jedem Softwarepaket wiederfinden. Grundstzlich
bernimmt das Startmodul, das SCCM-Launcher.vbs das Auslesen des Paket-Wurzelverzeichnisses und das bergeben der Kommandozeile an LocalLauncher.EXE. Dieser erledigt
schliesslich die zentralen Aufgaben. Nach Bedarf wird zudem auf die optionalen, durch den
Software-Paketierer zur Verfgung gestellten Umgebungsscripte zugegriffen.
2.2
7/122
Revisionsupdates
Softwarepaket
2.3
www.realpackaging.ch
8/122
2.4
www.realpackaging.ch
Transaktionaler Installationsprozess
Der Package-Launcher berprft seine Umgebung vor der Ausfhrung von schreibenden
und lschenden Operationen nach Richtlinien, die zur erfolgreichen nderung des
Installationsstatus eingehalten werden mssen. Sollten Abhngigkeiten fehlen oder
andere Richtlinien verletzt werden, wird dies an SCCM und im History.LOG rapportiert
und die laufende Operation bricht ohne nderung ab.
MSI-Installationen erfolgen durch den Windows Installer von Grund auf transaktional.
Die durch den Softwarepaketierer applizierten Implementationen in PostInstall_00x.wse
lsen im Fehlerfall ein Rollback aus, damit der Zustand vor der Installation
wiederhergestellt wird. Nachfolgeprozesse werden nicht mehr ausgefhrt.
Folgende Ttigkeiten kommen mit der Verwendung des Package-Launchers in ihrem Grundsatz
zur Anwendung:
9/122
www.realpackaging.ch
Lokales Zwischenspeichern des Softwarepaketes, wenn dies in der INI-Datei vermerkt ist
und Entfernen lokal zwischengespeicherter Softwarepakete bei der vollstndigen
Deinstallation, sowie beim Upgrade.
Mglichkeit der Prfung nach Softwarepaketen, die vorgngig installiert sein mssen.
Mglichkeit der Prfung nach Softwarepaketen, die nicht lokal installiert sein drfen.
Untersttzung von Updates in Form von Revisionen und automatischen Upgrades durch
den Package-Launcher.
Untersttzung von Installationselementen, die vor, bzw. solche die nach der
Hauptinstallation erfolgen sollen (PreInstall_00x.wse und PostInstall_00x.wse)
Auslesen und Anwenden von allgemeinen Einstellungen und Vorgaben ber eine INIDatei, die den Namen des Softwarepaketes trgt.
3.2
und
Produktionsumgebung
beim
10/122
Client
2. Wahl
3. Wahl
4. Wahl
5. Wahl
GE
ML
EN
FR
IT
FR
ML
GE
EN
IT
IT
ML
FR
GE
EN
EN
ML
GE
FR
IT
www.realpackaging.ch
Ist beispielsweise die lokale Plattform x64 und die verwendete Spracheinstellung GE, existieren
aber mit dem x64-Bezeichner nur zwei Unterverzeichnisse mit der Bezeichnung x64-EN und x64FR, dann wird x64-EN angewendet. Wird fr den aktuellen Plattformbezeichner kein einziges
Unterverzeichnis gefunden, so wird bei x64 (und nur bei x64!) die Suche nach x86-Paketen
erweitert.
Sollte gar kein regelkonformes Verzeichnis gefunden werden, protokolliert dies der PackageLauncher im History.LOG mit der folgenden Fehlermeldung:
"Package folder for this language not found! (GE)"
Achtung
Diese Meldung kann auch daher kommen, wenn im Explorer das Softwarepaket per
Doppelklick ausgefhrt wird und im Kontext des Administrators nach Besttigung der UACMeldung kein Zugriff auf den Ablagepfad des Softwarepakets mglich ist!
Beispiele:
Aktuelle
Plattform
Aktuelle
Sprache
x86
GE
x86
GE
x64
FR
x86
FR
3.3
Kommandozeilenoptionen
Die Kommandozeilenoptionen, die mit dem Start des Package-Launchers bergeben werden
knnen, sind kombinierbar und fehlertolerant. Beim Aufruf spielt es grsstenteils keine Rolle in
welcher Reihenfolge die Optionen eingegeben werden, ob gross- oder klein geschrieben wird
und ob "/" oder "-" als Optionenkennzeichner
verwendet werden. Sogar in sich
ausschliessende Varianten (/x und /i - Deinstallation und Installation) sind in gewissem Masse
zulssig: Dann gewinnt einfach die letzte bergebene Option der ausschliessenden Optionen.
Neben den uns gebruchlichen Varianten sind auch die Optionen des Windows Installers in
seiner Terminologie zulssig. Zustzliche Windows Installer Properties fr MSI-Installationen
knnen im Testumfeld einfach angefgt werden (PROPERTY=VALUE). Generell bersteuern
Kommandozeilen-Optionen die Einstellungen, die in der INI-Datei abgespeichert sind. Mit /?
werden die Kommandozeilenoptionen angezeigt.
11/122
www.realpackaging.ch
3.3.1
Option
Beschreibung
/i
ohne Parameter
/i:00x
Kommandozeile
/i:004
/i:005
/i:003
Auswirkung
installiert ab Revision 004
Fehlermeldung in History.LOG
- 003 wird repariert
- 004 wird installiert (UPDATE, wenn
Installiert und/oder reinstalliert Produkt bis und mit Revision 00x. Diese Option
erlaubt die Verteilung des Produktes losgelst von der Installation
durchzufhren. Wird ein Job so initiiert, so hat man Gewhr, dass bis zu der mit
00x angegebenen Revision, unabhngig weiterer verfgbarer Source installiert
wird.
Bspl.
Paket-Source
verfgbar
005
005
004
Kommandozeile Auswirkung
/i:-004
installiert bis Revision 004
/i:-009
installiert bis und mit Revision 005,
dann Fehler im History.LOG
/i:-005
Fehler im History.LOG
/i:00x /i:-00x
/s (/q)
/e
/f
/x
12/122
www.realpackaging.ch
Sollte bei der Deinstallation ein Fehler auftreten, so gilt das Produkt nachwievor
als installiert und zwar bis zur letzten erfolgreich deinstallierten Revision minus
001.
Achtung: Die Deinstallation kann, muss aber nicht mit dem Startmodul SCCMLauncher.vbs initiiert werden. Die bevorzugte Methode ist, LocalLauncher.EXE
direkt anzusprechen. Dies ermglicht die Deinstallation von Softwarepaketen
ohne verfgbare Source.
Bspl:
%WINDIR%\Package-Launcher\Bin\LocalLauncher.EXE Adobe-Reader-9.3 /x
/x:-00x
/g
Kommandozeile
/x:-003
Auswirkung
deinstalliert Revision 005, dann 004, dann 003
MainLanguage
ForcedMainLanguage
INI-Eintrge
PROPERTY
VARIANTEN
13/122
3.3.2
www.realpackaging.ch
Kommandozeilen-Beispiele
Aufruf
Doppelklick auf
..\Pack\SCCM-Launcher.vbs
Auswirkung
Sofern das Paket noch nicht installiert wurde, wird
das Paket in allen in der Paket-Source verfgbaren
Revisionen installiert.
Ist das Produkt hingegen in einer kleineren Revision,
als in der Paket-Source verfgbar, auf dem System
installiert, so wird ein Revisionsupdate ab der
installierten Revision bis zu der in der Paket-Source
verfgbaren Revision durchgefhrt.
Ist das Produkt in der gleichen Revision, wie die
maximal in der Paket-Source verfgbaren Revision
installiert, so wird eine Reparatur aller Revisionen
bis zu der in der Paket-Source verfgbaren Revision
ausgelst.
..\Pack\SCCM-Launcher.vbs /i
Das selbe Verhalten wie oben abgebildet.
..\Pack\SCCM-Launcher.vbs /i INSTALLDIR=D:\ Paket wird in allen verfgbaren Revisionen installiert.
Die Installation erfolgt mit der erweiterten Property
INSTALLDIR, welche auf D:\ gesetzt wird.
..\Pack\SCCM-Launcher.vbs /i:-003
Ist das Paket noch nicht auf dem Client installiert,
so wird das Paket bis und mit Revision 003
vollstndig installiert.
Ist das Paket bereits in einer Revision < 003 auf
dem System vorhanden, so wird ein Revisionsupdate bis 003 ausgefhrt.
Ist das Paket bereits in der Revision 003 auf dem
System vorhanden, so wird eine Reparatur bis und
mit 003 ausgefhrt.
Ist das Paket sogar mit einer hheren Revision auf
dem System installiert, so resultiert ein Abbruch mit
Fehlerausweisung im History.LOG:
ERROR: Given Last Revision (003) is < installed
Revision (004)
..\Pack\SCCM-Launcher.vbs /i:003 /s
Das Paket wird ab Revision 003 silent ohne Benutzerinterface installiert. Ist 003 grsser als die installierte
Revision + 1, dann wird mit Fehler abgebrochen.
..\Pack\SCCM-Launcher.vbs /i:002 /i:-003
Das Paket wird ab Revision 002 bis Revision 003 installiert. Fr alle zu installierenden Revisionen, die bereits
auf dem System installiert sind wird eine Reparatur
ausgelst, fr alle anderen Revisionen, die zudem >
001 sind wird ein UPDATE (Revisionsupdate) ausgelst.
..\Pack\SCCM-Launcher.vbs /x
oder
%WINDIR%\Package..\Bin\LocalLauncher.EXE
Byron-SALZ-1.0.3 /x
..\Pack\SCCM-Launcher.vbs /x:-003
14/122
www.realpackaging.ch
3.3.3
Installation:
SCCM-Launcher.vbs /i /q
Revisionsupdate:
SCCM-Launcher.vbs /q /i:00x
Deinstallation:
%WINDIR%\Package-Launcher\Bin\LocalLauncher.EXE
Byron-SALZ-1.0.3
/x /q
Die Parameter unterscheiden sich in den angebrachten SCCM-Beispielen neben der Initialrevision
bei Revisionsupdates nur durch den Silent-Switch. Dadurch wird verhindert, dass bei SCCM-Jobs
dem Benutzer eine Fortschrittsanzeige angezeigt wird (Beispielsweise durch PostInstall_00xCustomActions).
Deinstallationen knnen mit dem lokalen Launcher ohne Verfgbarkeit der Paket-Source
ausgefhrt werden. Auf einen Download durch SCCM kann somit verzichtet werden. Das
Uninstall-Advertisement wird durch das Script Create_SCCM_Package_Link.vbs (SCCM 2007)
daher mit der Option ohne vorherigen Download erstellt:
Rckgabewerte
Fehler im Befehlszeilenaufruf
999
1618
15/122
www.realpackaging.ch
In der Registry legt der Package-Launcher unter HKLM\Software\Real Packaging\PackageLauncher\Packages\<PackageName>\MsiExecReturn zudem den Rckgabewert der letzten nicht
erfolgreich ausgefhrten Windows Installer Transaktion des entsprechenden Pakets ab.
3.4
Der Package-Launcher weist ein genaues Fehlermanagement auf und ermglicht die schnelle
Erkennung von allen Installationsfehlern an einem zentralen Ort oder ber SCCM. Ein Fehler
wird immer via LogWriter.EXE im History.LOG ausgewiesen und in die Registry geschrieben.
Viele Erkenntnisse aus dem Paketierungsbetrieb flossen in die Erarbeitung des PackageLaunchers. So ist es beispielsweise technisch nicht mglich, dass der Package-Launcher ber eine
zweite Instanz versucht, gleichzeitig eine zweite Installation auf dem gleichen Client zu starten
und so das transaktionale Modell unterlaufen knnte. Dieser Fehler wird vorher abgefangen.
Auch Installationen von Produkten, die mit gleichem ProductCode bereits (oder noch?) auf dem
System installiert sind (bspl. Handinstallationen), seien diese fr den Computer oder fr einen
Benutzer installiert, werden erkannt und knnen wahlweise automatisch deinstalliert werden
oder zum dokumentierten Abbruch der aktuellen Installation fhren. Auf die durch solche Fehler
entstehende mhsame Fehlersuche kann daher knftig verzichtet werden. Problematisch wren
solche Situationen vor allem dort gewesen, wo das Produkt in einer vernderten Fassung
(keine erweiterten CustomActions, andere Einstellungen, etc.), beispielsweise wie vom Hersteller
geliefert, ausserhalb der Mechanismen des Unternehmens (Package-Launcher) installiert wrden
und dann das gleiche Produkt in Form eines Package-Launcher-Installationspakets htte
installiert werden sollen. Dadurch, dass Windows Installer bei der Installation des
Installationspakets auf die gecachete Variante zugreifen wrde, knnte nicht selten ein Zustand
oder Abbruchsverhalten entstehen, welches schwer analysierbar und auch reparierbar wre.
Daher wird per Standard im Einsatz mit dem Package-Launcher ein solcher Zustand im
History.LOG ausgewiesen und die aktuelle Operation abgebrochen.
Bei einem entstandenen Fehler durch den Windows Installer Installationsprozess erfolgt durch
den Pakage-Launcher die Auswertung der Windows Installer Protokolldatei. Der ermittelte
Reintext der Fehlermeldung wird nun an SCCM rapportiert und ebenfalls in der Datei
History.LOG ausgewiesen. Dies gestattet einen einfacheren Support, kann in SCCM aber auch zu
Statistikzwecken verwendet werden. Zudem wird erst dadurch eine robuste Verwaltung der
Softwareinstallationen mittels SCCM mglich.
3.4.1
History.LOG
Die
zentrale
Protokolldatei
zeigt
bersichtlich
den
Transaktionsverlauf
aller
Softwareinstallationen dar. Ob, wann und wie eine Transaktion ausgefhrt wurde, dies alles
finden wir in der zentralen Datei %WINDIR%\Logs\History.LOG. Aufgrund des transaktionalen
Modells finden wir denn auch in der Regel genau eine Zeile pro Transaktion. Der Aufbau sieht
folgendermassen aus:
16/122
www.realpackaging.ch
Neben dem Status Error und Success kann der Software-Paketierer mittels Vorlagen im
PreInstall_00x.wse und PostInstall_00x.wse auch noch eine Informationszeile (Information)
ausgeben. Andere Statusmeldungen sind nicht erlaubt. Das History.LOG wird durch das externe
Programm %WINDIR%\Package-Launcher\Bin\LogWriter.EXE geschrieben. Dadurch wird
externen Prozessen der schreibende Zugriff auf das History.LOG ermglicht. Mittels
%WINDIR%\Package-Launcher\Bin\LogViewer.EXE kann die Protokolldatei in bersichtlicher
Form angezeigt werden.
3.4.2
In der folgenden Tabelle werden einige History.LOG Fehlermeldungen beschrieben. Und zwar
nur solche, die nicht aufgrund einer MSI-Fehlermeldung entstehen (alphabetisch aufsteigend
sortiert):
Fehlermeldung
Bedeutung
17/122
www.realpackaging.ch
Ein in der INI-Datei unter Incompatibilities vermerktes Softwarepaket wurde auf diesem Client
installiert vorgefunden.
Eine in der INI-Datei unter Dependence bergebene Applikationsabhngigkeit ist auf dem
Client nicht installiert.
18/122
www.realpackaging.ch
This package requires a reboot after the installation of following products: Byron-HIP-1.0
Gemss Vorgabe in der INI-Datei muss eine Abhngigkeit installiert und danach ein Reboot ausgelst sein, damit dieses Softwarepaket installiert
werden kann. Diese Bedingung trifft auf diesem
Client nicht zu.
19/122
3.5
www.realpackaging.ch
INI-Datei
In der INI-Datei des Softwarepakets werden Einstellungen definiert, die fr die Installation des
Softwarepakets relevant sind. Die INI-Datei wird im Wurzelverzeichnis des Softwarepakets
abgebildet und trgt den Namen des Softwarepakets. Bspl. Byron-HIP-1.0.INI. Wie mit den
wichtigsten Bezeichnern umgegangen wird und wie sie im Softwarepaket eingesetzt werden,
finden Sie im Kapitel 6.14 INI-Datei des Softwarepakets.
3.5.1
Anbei finden sich die gngigen Keys unter der Section Install. Fr alle nicht unter der Section
Install zu verwendenden Keys ist die Section in Klammer angegeben:
Key
InstallFile
Einsatz
Optional
Beschreibung
Hier kann die Bezeichnung der MSI-Datei angegeben werden. Der Wert ist
optional. D.h., wenn er leer ist, dann wird vom Package-Launcher die erstbeste
MSI-Datei verwendet, die im Revisionsverzeichnis vorgefunden wird. Ist der
Eintrag angegeben, so wird primr nach der MSI-Datei gesucht, die wie
angegeben benannt ist. Nur wenn keine solche gefunden wird, wird die Suche
auf andere Dateinamen ausgeweitet.
Eine Mglichkeit der Verwendung ist die, dass man im selben
Revisionsverzeichnis neben einer Installations-MSI, noch eine MSI verwendet,
die zur Installation von UserSettings vorgesehen ist und bei der durch den
Package-Launcher initiierten Installation selbst nicht zu installieren ist. Der
Package-Launcher wird dann angewiesen, die andere, im selben Verzeichnis
befindliche MSI-Datei zu installieren.
Beispiel
InstallFile=install.msi
Key
CopyLocal
Einsatz
Optional (TrueFalse)
Beschreibung
Steht der Eintrag auf True, dann wird die Source des kompletten
Softwarepaketes lokal nach %WINDIR%\Package-Launcher\Cache\<PackageName> kopiert.
Bei einer Active-Setup-Implementation kann so zum Beispiel gewhrleistet
werden, dass die Source nach der Installation fr die Benutzerkonfiguration
zur Verfgung steht.
Achtung: Es kann nur ein komplettes Paket zwischengespeichert werden! Die
lokale Source wird bei einer kompletten Deinstallation automatisch entfernt.
Beispiel
CopyLocal=True
20/122
www.realpackaging.ch
Key
Reboot
Einsatz
Optional (TrueFalse)
Beschreibung
Steht der Eintrag auf True, dann wird nach der Installation des
Softwarepaketes der Eintrag MakeReboot in der Registry gesetzt. Dieser Key
wird vom Package-Launcher Restart Manager verwendet, um den Benutzer
dafr aufzufordern, einen Neustart des Computers auszulsen. Im
abgemeldeten Zustand wird der Neustart automatisch ausgelst.
Achtung: Wird keine Revision am Bezeichner angegeben, so erfordert das
Schreiben des Registrykeys nach Beendigung der kompletten Installation. Soll
der Key nur bei einer spezifischen Revision geschrieben werden, so kann dies
mittels Reboot_00x=True bewerkstelligt werden.
Beispiel
Reboot_002=True
Key
Logoff
Einsatz
Optional (TrueFalse)
Beschreibung
Steht der Eintrag auf True, dann wird nach der Installation des
Softwarepaketes der Registry-Eintrag MakeLogoff in der Registry gesetzt.
Dieser Key wird vom Package-Launcher Restart Manager verwendet, um den
Benutzer dafr aufzufordern, sich neu anzumelden.
Beispiel
Logoff=True
Key
Dependence
Einsatz
Optional
Beschreibung
Beispiel
Dependence=Adobe-AcrobatReader Acresso-InstallScriptMSIEngine
Key
DependenceReboot
Einsatz
Optional
Beschreibung
Wie Primrfunktion aus Dependence, nur muss gewhrleistet sein, dass nach
der Installation dieser Abhngigkeit bis zur Installation dieses Produktes
mindestens ein Reboot des Computers ausgefhrt wird.
Ergibt die Prfung durch den Package-Launcher False, dann wird folgende
Meldung ins History.LOG geschrieben: This package requires a reboot after the
installation of following products: PackageName-Version
21/122
www.realpackaging.ch
Key
TaskSequence
Einsatz
Optional
Beschreibung
ber den Bezeichner TaskSequence ist es mglich, einen zum DependenceEintrag abweichenden Aufbau der Abhngigkeiten anzufhren, die fr die
automatische Erstellung der Customized Task Sequence beim berfhren des
Softwarepakets verwendet werden (SCCM 2007) und fr RPI-Installationen
gelten soll. Die Abhngigkeiten werden der Reihe nach ausgewertet.
Wird der Eintrag nicht verwendet, so wird stattdessen der DependenceEintrag interpretiert.
Beispiel
Dependence=SAP-SAPGUI
TaskSequence= Microsoft-VCRedist-2008 SAP-SAPGUI
Key
Incompatibilities
Einsatz
Optional
Beschreibung
Ist mit den Paketnamen zu ergnzen, welche nicht installiert sein drfen. Der
Paketname kann auch nur ein Teilstring der Applikation enthalten. Die
verschiedenen zu dieser Applikation inkompatiblen Paketnamen sind mit
einem Leerzeichen aneinanderzufgen. Die Incompatibilities knnen mit dem
AND Operator verknpft werden (siehe 6.14 INI-Datei des Softwarepakets )
Beispiel
Incompatibilities=iTunes QuickTime
Key
Upgrade
Einsatz
Optional
Beschreibung
Beispiel
Upgrade=Adobe-AcrobatReader Acresso-InstallScriptMSIEngine
Key
RemoveIncompatibleMsi RemoveIncompatibleMsiUPG
Einsatz
Optional
Beschreibung
Entfernt Produkte, die mit dem selben ProductCode ausserhalb der Mechanismen des Package-Launchers installiert sind (RemoveIncompatibleMsi), bzw.
entfernt im Rahmen eines Package-Upgrades alle MSI-Installationen, die den
selben UpgradeCode (RemoveIncompatibleMsiUPG) verwenden.
Beispiel
RemoveIncompatibleMsi=True
22/122
www.realpackaging.ch
Key
MsiInstallProperties
Einsatz
Optional
Beschreibung
Beispiel
MsiInstallProperties=SERVER=SB0004
Key
MsiRepairProperties
Einsatz
Optional
Beschreibung
Beispiel
MsiRepairProperties=REINSTALLMODE=vomus
(Das MSI wird recached)
Key
Einsatz
Optional
Beschreibung
Beispiel
MsiRemoveProperties=SERVERDELETE=SB0004
Key
MsiPatchProperties
Einsatz
Optional
Beschreibung
Beispiel
23/122
www.realpackaging.ch
Key
UpgradeExitIfFailed
Einsatz
Optional (TrueFalse)
Beschreibung
Beispiel
UpgradeExitIfFailed =True
Key
PlatformLangChange
Einsatz
Optional
Beschreibung
Beispiel
PlatformLangChange=True
Key
UpgradeProperty
Einsatz
Optional
Beschreibung
Beispiel
UpgradeProperty=REBOOT=ReallySuppress
Key
UpgradeInRevision
Einsatz
Optional (TrueFalse)
Beschreibung
Soll eine Revision einen Major-Upgrade der Revision 001 durchfhren und
wurde in der Revision 001 ein Pre- oder PostInstall verwendet, so verhindert
dieser Bezeichner, wenn er auf True gesetzt ist, dass beim Installieren der
neuen Revision die Inhalte aus dem Scripts, Security und Cache Verzeichnisses
im Rahmen des Upgrades gelscht werden.
INSTALL
INSTALL
REMOVE
INSTALL
Beispiel
001
002
001
003
UpgradeInRevision=True
24/122
www.realpackaging.ch
Key
ScriptAdditionalUpgrades
Einsatz
Optional
Beschreibung
Beispiel
ScriptAdditionalUpgrades=Byron-HIP
Key
ScriptUpgradeCode
Einsatz
Erforderlich
Beschreibung
Beispiel
ScriptUpgradeCode={1F6435C5-429D-42E5-B0B7-CBEAEE66EA0F}
Key
MultiVariants
Einsatz
Optional (TrueFalse)
Beschreibung
Wird ein Instanzvariantenpaket erstellt, welches die Installation von verschiedenen Ausprgungen von ein und demselben Paket untersttzt (siehe Kapitel
7.1.1 Instanzvarianten), dann ist dieser Bezeichner auf True zu setzen.
Beispiel
MultiVariants=True
Key
ReadMsiSectionPropertiesByREMOVE
Einsatz
Optional (TrueFalse)
Beschreibung
Beispiel
ReadMsiSectionPropertiesByREMOVE=True
25/122
www.realpackaging.ch
Key
ExecuteFile
Einsatz
Optional
Beschreibung
Achtung: Wird keine Revision am Bezeichner angegeben, so wird in allen vorgefundenen Revisionsverzeichnissen nach dem Namen der in der INI
angegebenen Datei gesucht. Werden in Revisionsverzeichnissen unterschiedliche Namen von Scripts verwendet, so kann dies mit dem Bezeichner
ExecuteFile_00x=<Name.ext> bewerkstelligt werden. Es wird generell der
Einsatz des Revisionspostfixes empfohlen.
26/122
www.realpackaging.ch
Beispiel
ExecuteFile=install.cmd "%CACHE%\Files"
ExecuteFile_003=installx.cmd "%ProgramFiles%\Datango"
ExecuteFile_004=regedit /s "%SOURCE%\test.reg"
Key
PreScript/PostScript
Einsatz
Optional
Beschreibung
Beispiele
[Install]
PostScript_001=config.cmd
PreScript_002=REG.exe ADD HKLM\Software\Lithium /v WarpSpeed /d "1" /f
PostScript_003=%WINDIR%\sysnative\cmd.exe /c "C:\Program Files\XF\hf.exe"
PostScript_004=powershell.exe "%CACHE%\MyScript.ps1"
[UnInstall]
ExecuteFile=cmd /c exit
Key
Einsatz
Optional
Beschreibung
Hier kann ein Script oder lokales Programm angegeben werden, welches
ausgefhrt werden soll. Dieses Script wird in der Registry
in
HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\ im ActiveSetup eingetragen. So sind Benutzerressourcen applizierbar. Bei Verwendung
eines im Paketverzeichnis abgelegten Scripts, ist zustzlich die Anweisung
CopyLocal=True notwendig.
In der INI-Datei werden neben Standard-Environmentvariablen folgende
Variablen untersttzt:
%SOURCE%, %CACHE%, %PACKAGE%, %REVISION%, %LANGUAGE%,
%LOGFILE%, %VARIANTSECTION%, %TASK%
%SOURCE% enthlt den Sourcepfad der aktuellen Installation, bzw. deren
Installation. Bspl. C:\Windows\ccmcache\4\ x86-ML\002. Wird CopyLocal=True
verwendet, dann wird der zwischengespeicherte und fr die Installation
massgebliche Pfad zurckgegeben: Bspl. C:\Windows\APSPack\Cache\TWIFBMS-1.0\x86-ML\002.
27/122
www.realpackaging.ch
%CACHE% enthlt bei Verwendung von CopyLocal=True das Revisionsverzeichnis des zwischengespeicherten Pfades. Wird CopyLocal=True nicht
verwendet, ist die Variable leer.
In einem Script werden diese Environmentvariablen nicht direkt untersttzt,
knnen aber via Kommandozeilenparameter dem Script bekannt gemacht
werden. Der Revisionstoken _00x ist fr diesen Bezeichner zwingend!
Beispiel
Key
Einsatz
Optional (TrueFalse)
Beschreibung
Beispiel
EnableMSU=True
Key
REPAIR
Einsatz
Optional (EnableDisableDisableWithRetValue0)
Beschreibung
Soll eine Reparatur in einem Paket nicht oder nicht mehr untersttzt werden,
so kann dies mittels dem neuen Bezeichner REPAIR in der INI-Datei des Softwarepakets realisiert werden. So sind auch nachtrglich in einer knftigen Revision entstehende Anforderungen umsetzbar, indem einfach der Bezeichner
der Install-Sektion hinzugefgt wird. Ist REPAIR=Disable, dann wird der Text
REPAIR is not supported! in die Datei History.LOG geschrieben. Der Zuweisungswert DisableWithRetValue0 veanlasst hierbei, dass dem bergeordneten Prozess (SW-Verteilungswerkzeug) der Exit-Code 0 zurckgegeben wird.
Beispiel
REPAIR=Disable
Key
Einsatz
Optional
Beschreibung
Prft vor der Transaktion, ob der oder die angegebenen Prozesse gestartet
sind. Ist bei der Installation einer der angegebenen Prozesse gestartet, so wird
dies in der Datei History.LOG quittiert und der Exit-Code 1618 zurckgegeben.
Dieser definiert in SCCM 2012 den Fast Retry exit code, was SCCM 2012 dazu
veranlasst, das Paket vor einem policy refresh nochmals zu installieren.
Der Bezeichner soll nur Prozessnamen ohne Pfadangaben enthalten. Mehrere
Prozesse knnen wie gewohnt durch ein Leerzeichen voneinander getrennt
werden. Prozessnamen mit Leerzeichen sind in Anfhrungszeichen
einzufassen. Der Bezeichner ist taskabhngig, kann also in der Install und der
UnInstall-Sektion angewendet werden.
Beispiel
28/122
www.realpackaging.ch
Key
Einsatz
Optional (FalseTrueEnhanced)
Beschreibung
Beispiel
CommitRebootExitCode=True
Key
UpgradeAfterPreInst
Einsatz
Optional (TrueFalse)
Beschreibung
Sollen bei einer Paketinstallation im Rahmen eines Upgrades noch VOR einer
allflligen Deinstallation eines Vorproduktes, gewisse programmatische
Aufgaben ausgefhrt werden, so kann dies im neuen Softwarepaket mittels
einer herkmmlichen PreInstall_001.EXE oder PreScript_001 realisiert werden,
wenn zustzlich der Bezeichner UpgradeAfterPreInst=True in der INI-Datei
angegeben wurde. Dadurch wird sichergestellt, dass chronologisch zuerst das
PreInstall_001.exe/PreScript_001 (aus Rev. 001) ausgefhrt und erst danach
die Deinstallation des Vorgngerproduktes ber den Upgrade ausgefhrt wird.
Beispiel
UpgradeAfterPreInst=True
Key
Einsatz
Optional (FalseTrueEnhanced)
Beschreibung
Standardmssig steht diese Einstellung auf False auch wenn der Bezeichner
fehlt. So werden Downgrades von Paketen verhindert, indem der Downgrade
mit der folgenden History-Meldung quittiert wird:
This package doesnt support to
PackageName) (exit with return code 0)
downgrade!
(Upgrade
targets
AllowDowngrade=True
29/122
www.realpackaging.ch
Key
FastRetry
Einsatz
Optional (number)
Beschreibung
Unter SCCM 2012 kann mittels des Fast Retry Return value im Deployment
Type automatisch eine Neuinstallation der Application vorgenommen werden,
ohne auf den nchsten Deployment Evaluation Cycle warten zu mssen.
FastRetry=1620
Key
Einsatz
Optional (TrueFalse)
Beschreibung
30/122
www.realpackaging.ch
Key
Einsatz
Beschreibung
Beispiel
AppVAutoStopProcesses=False
Key
Einsatz
Optional, Pattern
Beschreibung
Fett geschriebene Texte sind Standardeinstellungen, die verwendet werden, wenn die Oder-Ausprgung in der Deklaration fehlt.
AppShutdown=MSI;file1.exe;file2.exe;.
Der Parameter "f:" fr 'force' vor der Datei bedeutet, dass die Datei.exe
forciert ohne Dialog gekillt wird. In diesem Fall kann es sich auch um einen
Systemprozess oder einen Prozess, deren Schliessen erhhte Rechte erfordert,
handeln!
False: Ohne jegliche Angabe in der INI, der Registry oder in der
Kommandozeile, verwendet der Package-Launcher AppShutdown=MSI. Soll
grundstzlich kein Dialog erscheinen, lsst sich das mit AppShutdown=False
bewerkstelligen.
Beispiel
[Install]
AppShutdown=MSI;myfile.exe;AWStream.exe
31/122
www.realpackaging.ch
Key
Einsatz
Beschreibung
Eine Anpassung des Wertes MaxExecuteTimeRTM macht nur beim Einsatz von
SCCM Wartungsfenster Sinn. Hingegen dient der Eintrag ExecuteTimeRTM zur
Anzeige im Softwarecenter und kann individuell pro Paket abgefllt werden.
Die Bezeichner MaxExecuteTime_00x und ExecuteTime_00x dienen demselben
Ziel, mit dem Unterschied, dass diese fr die Applications der Revisionsupdates
vorgesehen sind.
Die Spannbreite bewegt sich zwischen 15 720 Minuten.
Beispiel
3.5.2
[Install]
MaxExecuteTime_004=60
ExecuteTime_004=40
Sectionproperties
Neben den Implementationen in MsiInstallProperties (siehe letztes Kapitel) ist es auch mglich,
Propertyausfhrungen ber sogenannte Sectionproperties zu gestalten. Diese erlauben
insbesondere mit Paketvarianten (siehe Kapitel 7.1 Paketvarianten) eine differenziertere
Steuerung von Windows Installer Properties. Die Sektion 99-STANDARD wird fr alle
Standardpakete ohne Variantenbezeichner eingelesen und die dort abgebildeten Properties zum
Installationszeitpunkt allen im Paket platzierten MSIs bergeben. Auf die massgebliche Sektion
kann kann aber auch in WiseScript und in allen anderen Scripts ber die Variable
%VARIANTSECTION% zugegriffen werden. Dadurch ist es mglich, die dort platzierten
Variablen einzulesen und auszuwerten. Es knnen zudem bedingte Anweisungen in Scripts
durch die Ausprgung der Variablen %VARIANTSECTION% realisiert werden (bspl. IF
"%VARIANTSECTION%"=="99-ADMIN" GOTO ADMIN)
Sind Properties erforderlich, die ein oder mehrere Leerzeichen enthalten, so ist der Propertyinhalt
in Anfhrungszeichen einzufassen.
Bspl. CONFIG= "User 2"
32/122
3.6
www.realpackaging.ch
Es gibt zwei Verfahren, um einen Upgrade auszulsen. Den Major-Upgrade, der sich
vornehmlich der Techniken der Windows Installer Technologie bedient und der PackageUpgrade, welcher die Deinstallation von Softwarepaketen selber verwaltet. Das dringend
empfohlene und fr den Softwarepaketierer einfacher zu realisierende und transparentere
Verfahren stellt der Package-Upgrade dar. Die Steuerung der Art des Upgrades wird ber die INIDatei des Softwarepakets gesteuert. Die massgeblichen Items sind folgende:
Upgrade=<Package-Family>
ScriptAdditionalUpgrades=<Package-Family>
ScriptUpgradeCode={GUID}
AddProperties.vbs liest die Zeilen ein und appliziert der MSI/MST-Datei in der Revision 001 die
fr den Major-Upgrade erforderlichen Erweiterungen, sofern der Eintrag unter Upgrade leer ist
(und nur dann!). Unter ScriptUpgradeCode wird durch AddProperties.vbs der zentrale
UpgradeCode fr alle Revisionen dieses Softwarepakets und fr die gesamte Produktefamilie
abgelegt. Jede Revision aus der kompletten Produktefamilie verwendet sprach- und
Plattformbergreifend den selben UpgradeCode!
Achtung: Der Eintrag ScriptUpgradeCode sollte durch den Softwarepaketierer nicht manipuliert
werden! Das Servicemodell des Scriptes AddProperties.vbs verwaltet diesen Eintrag selbstndig!
Beim Package-Upgrade, dem Standardverfahren, werden in der INI-Datei ber den Bezeichner
Upgrade einfach die Namen der Softwarepakete oder Softwarefamilien angefgt, die man im
Rahmen des Upgrades vorgngig deinstallieren mchte. Hier mssen nicht komplette
Bezeichnungen der Softwarepakete ausgeschrieben werden. Es knnen auch Teilstrings
appliziert werden. Zwischen zwei Anwendungen, bzw. Anwendungsfamilien ist ein Leerzeichen
einzufgen:
Bspl:
Upgrade=Byron-HIP Adobe-Reader
(deinstalliert Byron-HIP und Adobe-Reader unabhngig der lokal installierten Version im Rahmen
eines Package-Upgrades)
Achtung: Das Verfahren des Package-Upgrades ist das bevorzugte Modell zur Anwendung
von Upgrades! Als Bezeichner knnen fr nicht Package-Launcher-kompatible Softwarepakete
auch {ProductCodes} angefgt werden!
33/122
3.7
www.realpackaging.ch
Namensrichtlinien
Das Softwarepaket wird in der Regel mit dem Programm CreatePackage.EXE erstellt. Dadurch
wird gewhrleistet, dass die richtige Struktur eingehalten wird. Viele Fehler werden hier bereits
abgefangen.
3.7.1
Die Namensbezeichnung der MSI-Dateien im Revisionsverzeichnis ist frei. Die Bezeichnung der
allgemeinen Transformationen (MST-Datei) ist ebenfalls frei. Wird durch den Conflict Explorer
2009 eine Transformation erstellt, so sollte diese ResolveConflicts.MST bezeichnet verwenden.
Eine so benannte Datei wird dann durch den Package-Launcher automatisch als letzte
Transformation angewendet.
3.7.2
Die Wise-Scripts sind nur mit den folgenden Namen im Revisionsverzeichnis gltig:
PreInstall_00x.EXE und PostInstall_00x.EXE, wobei das 00x mit der tatschlichen Revision
anzupassen ist, welches der Revisionsbezeichnung, bzw. dem Verzeichnisnamen entspricht.
3.7.3
Eine Vorlage des Securitybatches wird durch CreatePackage.EXE in das Verzeichnis Work
kopiert. Bei dieser Vorlage muss nur noch die Revision von 00x auf die tatschliche Revision
angepasst und im Bedarfsfall in das Revisionsverzeichnis kopiert werden. Folgende
Namensbezeichnung ist einzuhalten:
<Package>_00x.CMD, bspl. Byron-HIP-1.0_001.cmd
3.7.4
Die Build-Datei trgt den Namen des Softwarepakets, gefolgt vom Revisions-Bezeichner und der
Erweiterung .BLD.
34/122
3.8
www.realpackaging.ch
Achtung: Viele Variablen (INST, SCRIPTS, etc.) werden standardmssig zum weiteren Gebrauch
vorabgefllt. Diese sind in der Kopfzeile der Vorlagen nher erklrt. Sollte die Variable %INST%
verwendet werden (Copy local), so ist darauf zu achten, dass diese nicht in jedem
Installationstask den selben Wert aufweist:
Beispiele:
%INST%
PreInstall_00x
PostInstall_00x
INSTALL
..\Pack\x86-GE\001
%WIN%\Package-Launcher\Scripts\Byron-Salz-1.0.3
REPAIR
..\Pack\x86-GE\001
%WIN%\ Package-Launcher\Scripts\ByronSalz-1.0.3
REMOVE
%WIN%\Package-Launcher\Scripts\ByronSalz-1.0.3
%WIN%\ Package-Launcher\Scripts\ByronSalz-1.0.3
35/122
www.realpackaging.ch
Muss in einem eigenen Programmabschnitt ein Fehler ausgewiesen werden und soll die
Installation mit einem Rckgabewert und der entsprechenden History.LOG Meldung
abschliessen, dann verwenden Sie unbedingt das erste Programm-Snipplet aus dem
VorlagenScript!
3.9
Steht im Unternehmen Wise Package Studio, bzw. WiseScript nicht zur Verfgung, knnen auch
eigene Scripts fr Installationsanweisungen ausserhalb einer MSI-Datei verwendet werden. Dies
ist mittels den Bezeichnern ExecuteFile, PreScript, PostScript und ActiveSetupScript ber die INIDatei realisierbar siehe Kapitel 3.5.1 Zusammenfassung der wichtigsten INI-Eintrge. Hierbei ist
sorgfltig vorzugehen und es sind zwingend die nachgefhrten Richtlinien einzuhalten!
Solche Scripts knnen insbesondere zur Ausfhrung von Legacy-Setups dienen, wenn diese
nicht repaketiert werden sollen und diese nicht einfach Windows Installer Bootstrapper sind,
welche im Hintergrund eigene Hersteller-MSI-Dateien auspacken (siehe Kapitel 4.11
Paketierungsarten). Auch auf lokale Programme kann so direkt zugegriffen werden. Zudem
werden verschiedene Variablen bei der Integration mit den Scriptbezeichnern untersttzt.
3.9.1
1. Verwenden Sie keine Verweise und Anweisungen auf durch den Package-Launcher
untersttzte Ressourcen (MSI, MSP, MST, App-V, MSU, etc.) siehe Kapitel 3.11 Formen von
Ressourcen. Diese Ressourcen sollen direkt vom Package-Launcher angesprochen werden,
da nur dadurch das Fehlerhandling und die Transaktionskonsistenz gewhrleistet sind.
2. Verwalten Sie den Status der Transaktion ber den Rckgabewert! Nur ein Rckgabewert
von 0 aus dem Script interpretiert der Package-Launcher als erfolgreichen Transaktionsabschluss. Prfen Sie nach der Ausfhrung ihrer Installationsanweisungen im Script den
Erfolg ihrer Implementation und setzen Sie wenn ntig den Rckgabewert selber. (Bspl.
fgen Sie bei einem Kommandozeilenbatch Exit 0 als letzte Anweisung hinzu, wenn die
Installationsaufgaben erfolgreich durchgefhrt wurden.)
Gewhrleistet ein von Ihnen in ein Kommandozeilenbatch integriertes Legacy-Setups selber,
dass dieses bei Fehlern einen Rckgabewert <> 0 ausweist und bei einer erfolgreichen
Installation 0 zurckgibt, knnen Sie auch auf die Implementation eines Rckgabewertes am
Schluss des Scripts verzichten. Der Kommandozeilenprozessor bergibt in diesem Fall den
Rckgabewert der ausgefhrten Exe-Datei an den Package-Launcher zurck.
3. Das Ausfhrungsverzeichnis wird vom Package-Launcher vor der Ausfhrung Ihres Scripts
auf das Revisionsverzeichnis gesetzt.
36/122
www.realpackaging.ch
4. Verwenden Sie CopyLocal=True in der INI-Datei des Softwarepakets, wenn im Rahmen einer
Deinstallation auf ein Script im Paket zugegriffen werden soll! Ohne diesen Bezeichner kann
das Paket bei Vorhandensein eines Deinstallationsscripts nicht deinstalliert werden, wenn die
Deinstallation direkt ber LocalLauncher.EXE gesteuert wird (Deinstallation ber SCCM oder
Package-Upgrade).
3.9.2
Erstes Beispiel
In der folgenden Abbildung sehen wir die Eintrge aus der INI-Datei:
In der hier verwendeten Ausfhrung regelt das Legacy-Setup den Rckgabewert selbstndig:
37/122
3.9.3
www.realpackaging.ch
Insgesamt stehen vier verschiedene Scriptbezeichner zur Verfgung, die in der [Install]- und
[UnInstall]-Section verwendet werden knnen.
1. ExecuteFile
Soll ein lokales Programm oder ein einfaches Script ausgefhrt werden, welches in einem
Revisionsverzeichnis abgelegt ist und welches ohne Rcksicht auf den Installationsablauf
anderer Paketressourcen (bspl. MSI im selben Revisionsverzeichnis), installiert werden kann,
ist dies der richtige Bezeichner.
2. PreScript
Mssen Scriptanweisungen vor der Installation von Installationselementen im selben
Revisionsverzeichnis durchgefhrt werden, die durch den Package-Launcher direkt
untersttzt werden (MSI, MSP, MSU, APPV), knnen diese mittels des Bezeichners PreScript
zur Ausfhrung gelangen.
3. PostScript
Mssen Scriptanweisungen nach der Installation von Installationselementen im selben
Revisionsverzeichnis durchgefhrt werden, die durch den Package-Launcher direkt
untersttzt werden (MSI, MSP, MSU, APPV), knnen diese mittels des Bezeichners PostScript
zur Ausfhrung gelangen.
4. ActiveSetupScript
Mittels dieses Bezeichners knnen Scripts, die im Revisionsverzeichnis abgelegt sind, im
Kontext des Benutzers ausgefhrt werden. So werden Benutzerressourcen appliziert.
Hierbei ist es bei Scriptverweisen, die auf ein Script im Paketverzeichnis verweisen (bspl.
ActiveSetupScript_001=%CACHE%\MyActiveSetupScript.cmd) zwingend notwendig, dass
auch CopyLocal=True in der INI-Datei, in der Install-Section gesetzt ist, damit das Script zum
Ausfhrungszeitpunkt lokal verfgbar ist. Bei Verweisen auf lokal existierende
Komponenten
kann
auf
CopyLocal=True
verzichtet
werden
(bspl.
ActiveSetupScript_00=REG.exe ADD HKCU\Software). Beachten Sie, dass Sie in das Script
keine Anweisungen integrieren knnen, die erhhte Rechte bentigen. So ist ein Schreiben
der HKCU-Keys ohne Probleme mglich, nicht aber ein Schreiben der HKLM-Keys, sofern
diese nicht per Security-Batch geffnet wurden.
Das mittels dieses Bezeichners angegebene Script wird bei der nchsten Benutzeranmeldung
einmalig ausgefhrt. Wird das Paket deinstalliert und neu installiert, "zieht" die Active Setup
Implementation auch nach der zweiten Installation, da der Package-Launcher mittels
Versionierung arbeitet. Bei der DeInstallation wird der Active Setup Key durch den PackageLauncher automatisch bereinigt, so dass bei neuen Benutzern danach das Script nicht mehr
ausgefhrt wird. Siehe auch Kapitel 7.4.9 ActiveSetup mit AppShutdown=ALL.
Alle Scriptbezeichner knnen mit oder ohne Revisionszusatz in der INI-Datei angegeben werden
(beispielsweise ExecuteScript=install.cmd oder ExecuteScript_001=install.cmd). Es wird
empfohlen, immer den Revisionszusatz zu verwenden, ausser bei der Planung des Paketes ist
klar, dass alle knftigen Revisionen in ihrem Revisionsverzeichnis immer das selbe Script mit dem
selben Namen verwenden werden.
38/122
www.realpackaging.ch
Achtung
Wird in einer Section eine PreScript-Zuweisung integriert, darf nicht gleichzeitig der Bezeichner
ExecuteFile verwendet werden! In diesem Fall wren auch die fr ExecuteFile vorgesehenen
Anweisungen in das Pre- oder PostScript-Element aufzunehmen.
Alle Scriptbezeichner untersttzen auch die direkte Ausfhrung von Programmen, die lokal auf
dem Computer abgespeichert sind.
Wird in einer Revision nur ein Script bei der Installation angewendet, ohne dass sich weitere
Ressourcen im Revisionsverzeichnis befinden, schlgt die DeInstallation fehl:
Diese Meldung kann umgangen werden, indem in der UnInstall-Section ebenfalls ein Script
angegeben wird. Mit dem folgenden Befehl, der keinen funktionellen Charakter hat, lsst sich
dies bewerkstelligen:
Merke
Wird fr die DeInstallation ein im Paketrevisionsverzeichnis abgelegtes Script bentigt, muss
im Paket in der Install-Section die Anweisung CopyLocal=True stehen, damit das Script bei
der DeInstallation lokal zur Verfgung steht.
39/122
3.9.4
www.realpackaging.ch
Whrend des Installationsprozess kann in der INI-Datei und in Scripts auf zustzliche
Environmentvariablen zugegriffen werden.
Environmentvariable Beschreibung
CACHE
Entspricht dem Revisionsverzeichnis des lokal in %WINDIR%\PackageLauncher\Cache zwischengespeicherten Pakets (bspl. C:\Windows\Package-Launcher\Cache\Acresso-ISSCRIPT-11.5\x86-EN\001).
Wird
CopyLocal=True in der INI-Datei verwendet, ist dies das primre
Ausfhrungsverzeichnis der Installationsressourcen.Steht CopyLocal
auf False ist der Bezeichner leer "".
SOURCE
PACKAGE
REVISION
LOGFILE
VARIANTSECTION
TASK
PRODUCTCODE
40/122
www.realpackaging.ch
Achtung
Auf diese Variablen kann man auch in Windows Installer Properties ber Variantensektionen
der INI-Datei oder ber die Bezeichner MsiInstallProperties, MsiRepairProperties, etc. (Bspl.
MsiInstallProperties=LOCALSOURCE=%CACHE%) platziert in der INI-Datei, zugreifen. Daneben sind sie auch whrend des MSI-Installationsprozess als Environmentvariablen verfgbar.
3.9.5
Soll ein Script abgebrochen werden und mchte man eine spezifische Fehlermeldung in der
Datei History.LOG erstellen, gengt es, im Script folgenden Registrykey zu schreiben:
HKLM\Software\Real Packaging\Package-Launcher\Packages\%PACKAGE%\Error
Wird das Script danach mit einem Exitcode beendet, zeigt der Package-Launcher dies in der
Datei History.LOG an:
3.9.6
Beispiele
1. In diesem Beispiel wird vor der MSI-Installation ein cmd-Batch (install.cmd) ausgefhrt. Bei
der Deinstallation erledigt ein vb-Script (uninstall.vbs) abschliessende Bereinigungsaufgaben.
Beide Scripts befinden sich im Revisionsverzeichnis 001. Durch den Bezeichner
CopyLocal=True wird sichergestellt, dass bei der Ausfhrung von uninstall.vbs die Source
und das Script lokal vorliegend und zwischengespeichert sind.
41/122
www.realpackaging.ch
Revisionsverzeichnis 001
3. Erstellung eines Registrykeys vor Ausfhrung der MSI-Installation in Revision 002 durch
Ausfhrung einer lokalen exe-Datei (REG.exe)
4. Ausfhrung einer Exedatei, die unter x64 im Verzeichnis "C:\Program Files" abgespeichert
ist. Durch Angabe des Alias "sysnative" kann auf x64 Clients aus 32 BIT Prozessen auf das
Verzeichnis C:\Windows\System32 (anstatt auf C:\Windows\SysWOW64) zugegriffen
werden. Durch das x64er cmd.exe wird ein Zugriff auf C:\Program Files (anstatt C:\Program
Files (x86)) mglich.
42/122
www.realpackaging.ch
MST
Windows Installer Transformation. Diese kann nur zusammen mit einer MSIDatei eingesetzt werden. Siehe Kapitel 3.7.1 MSI und MST Dateien
PostInstall
Befindet sich eine Datei mit der Bezeichnung PostInstall_00x.EXE im Revisionsverzeichnis wird diese im Rahmen einer MSI-Installation als Custom Action
ausgefhrt. Das Script AddProperties.vbs integriert diese in die MSI-Datei. Die
Ausfhrung erfolgt im Systemkontext mit erhhten Privilegien nach der
Installation aller Ressourcen durch die MSI-Datei.
MSP
PreInstall
Befindet sich eine Datei mit der Bezeichnung PreInstall_00x.EXE im Revisionsverzeichnis, wird diese vor allen allflligen MSI oder MSP-Installationen ausgefhrt. Befindet sie sich alleine im Verzeichnis, so werden nur die Programmanweisungen, die dort aufgefhrt sind, ausgefhrt. PreInstall-Dateien eignen
sich zudem fr den Aufruf von Legacy-Setups.
Scripts
Befindet sich ein Script im Revisionsverzeichnis und wurde dieses in der INIDatei des Softwarepakets angegeben (ExecuteFile=<Script.ext>), wird dieses
vor allen allflligen MSI oder MSP-Installationen und auch vor einem allflligen
PreInstall_00x.exe ausgefhrt. Befindet es sich alleine im Verzeichnis, so
werden nur die Programmanweisungen, die dort aufgefhrt sind, ausgefhrt.
Script-Dateien eignen sich fr den Aufruf von Legacy-Setups, wenn man nicht
auf die WiseScript-Implementation via PreInstall zurckgegriffen will.
43/122
www.realpackaging.ch
MSU
App-V
Es werden sowohl App-V 4.6, als auch App-V 5 Ressourcen untersttzt . Diese
knnen nativ in das Revisionsverzeichnis 001 kopiert werden. Bei der
Integration von App-V 5 Paketen gibt es zwei Varianten: Die App-V Full
Integration, die ein Streaming untersttzt oder das standalone model, wo
Pakete wie regulre Pakete behandelt werden. Im letzteren Modell kann das
Paket mit den selben Tools verwaltet werden (RPI, History.LOG Viewer), wie
gewhnliche Pakete.
Achtung
MSI oder Legacy?
Das primre Setup-Format sollte aus Grnden der Transparenz, der Erweiterbarkeit, den
Mglichkeiten zur Anpassung und zur Direktmanipulation durch den Paketierer, der
Mglichkeit Softwarekonflikte zu ermitteln und mit dem Conflict Explorer 2009 zu beseitigen,
der Rollback und Reparaturfhigkeit, der Verwaltung durch einen zentralen Dienst, etc. immer
das MSI-Format sein. Ein Ausfhren eines Legacy-Setups wird nur dort empfohlen, wo es sich
beim Setup um eine hardwarenahe Treiberanbindung oder hnliches handelt, die sich nicht
oder nur sehr schwierig mittels Snapshottechniken aufzeichnen und in eine MSI-Datei
berfhren lsst oder wo der Aufwand zur nativen Paketerstellung oder zur Paketerstellung
mittels Snapshottechniken sehr gross ist!
44/122
3.10.1
www.realpackaging.ch
Vereinfachtes Ablaufschema
Small Update
Minor Upgrade
(fr grssere Aktualisierungen, die auch eine Erhhung der Minorversion gerechtfertigen)
Major Upgrade
45/122
www.realpackaging.ch
History.LOG finden und auch das SCCM-Softwareinventar korrekt ausgelst wird. Sogar
Reparaturen (virtuell) der durch den Update ersetzten Revisionen lassen sich ausfhren, ohne
Nebeneffekte auszulsen.
Bei der Anwendung des Updatepakets wird automatisch die Windows Installer Property
MSIENFORCEUPGRADECOMPONENTRULES auf 1 gesetzt, wodurch nur regelkonforme
Aktualisierungen ermglicht werden. Das Aktualisierungspaket muss daher den Richtlinien ber
die Erstellung von minimalen Aktualisierungen entsprechen. Werden die Richtlinien vom
Aktualisierungspaket nicht eingehalten, erscheinen Fehlermeldungen im History.LOG wie diese:
msiexec: Upgrade of feature MainFeature has a missing component.
msiexec: New upgrade feature MainFeature must be a leaf feature.
Die Anwendung der Property MSIENFORCEUPGRADECOMPONENTRULES kann man ber die
MsiInstallProperties bersteuern. Dies wird aber nicht empfohlen! Die Erkennung, ob in einer
Revision eine Minimale Aktualisierung vorliegt oder nicht, erledigt der Package-Launcher
automatisch durch einen Vergleich verschiedener Properties (ProductCode, PackageCode,
PLRevision, PLPackage) zwischen einem allfllig vorliegend installierten Produkt und einem durch
die Revision anzuwendenden Paket. Sollte erkannt werden, dass ein allfllig vorliegend
installiertes Produkt, den gleichen ProductCode registriert hat, wie das anzuwendende Paket, ist
aber der PackageCode gleich oder die Property PLPackage verschieden oder die PLRevision
gleich, so wird dieser Zustand hingegen so interpretiert, dass auf diesem Gert die gleiche
Software durch anderweitige Mechanismen bereits installiert wurde (bspl. Handinstallat ion der
Originalsoftware) und die Transaktion wird mit einer entsprechenden Fehlermeldung im
History.LOG quittiert:
This application is already installed manually or by other processes
Achtung: bei minimalen Aktualisierungen kann keine neue Transformation verwendet werden!
Es wird bei der Anwendung auf allfllig recachte MSTs der Basisinstallation zurckgegriffen,
bzw. wenn bei der Installation einer Initialversion keine Transformation verwendet wurde, dann
wird auch bei der Anwendung des Small Updates oder Minor Upgrades keine Transformation
verwendet. Sollten zustzliche nderungen am Design der MSI innerhalb derselben MSI-Datei
erfolgen, so knnte dies nur durch nur eine Anpassung des Update-MSIs unter Einhaltung der
Richtlinien ber die Erstellung von minimalen Aktualisierungen erfolgen! Minimale
Aktualisierungen bedeuten fr den Paketierer lediglich, dass das Updatepaket innerhalb einer
neuen Revision zu implementieren ist. Es mssen keine Properties definiert oder spezielle
Vorkehrungen vorgenommen werden!
46/122
www.realpackaging.ch
3.13 Build-Datei
Mittels einer speziellen Build-Datei, abgelegt im Revisionsverzeichnis, kann der Build eines
Softwarepakets erhht werden. Eine Build-Datei muss nur dann verwendet werden, wenn
an einer produktiven Revision Vernderungen durch den Paketierer durchgefhrt
werden. Wird bei der Erst-Inbetriebsetzung eines Softwarepakets (RTM) beispielsweise eine
Konfiguration verwendet, die spter nicht im Rahmen eines Revisionsupdates korrigiert werden
kann, sondern die Anpassung des bestehenden Paketes unerlsslich macht, so erstellt der
Softwarepaketierer gleichzeitig eine Build-Datei (PACKAGE_REVISION.BLD) mit einer 4-stelligen
Buildnummer, welche er im angepassten Revisionsverzeichnis anfgt. Die Buildnummer ist ein
Zhler der sich auf das ganze Produkt inkl. aller Revisionen bezieht und pro Anpassung um 1
erhht wird (beginnend mit 0002 bei der ersten Korrektur). Dadurch lassen sich modifizierte
Revisionen spter im Softwareverteilungswerkzeug identifizieren, wodurch Aussagen realisierbar
sind, wer vorher die Software installiert hatte (Build 0001) und wer die neue Variante verwendet
(bspl. Build 0002).
Die Buildnummer wird unter dem Registrykey HKLM\Software\Real Packaging\PackageLauncher\Packages\<PACKAGE>\Build gefhrt und wird bei jeder Operation (INSTALL, REPAIR,
REMOVE), erfolgreich oder nicht, neu geschrieben, solange das Produkt als installiert markiert
ist.
Achtung: Nach einer produktiven Softwareeinfhrung sind in der Regel alle nderungs- und
Erweiterungsantrge kummulativ in einer neuen Revision abzubilden. Nur wenn dieses Vorhaben
nicht realisierbar ist, darf die Vernderung bestehender, bereits produktiver Revisionen in Betracht gezogen werden!
47/122
www.realpackaging.ch
3.14 Software-Inventarisierung
Fr die korrekte Softwareinventarisierung ber SCCM ist der Package-Launcher zustndig. Der
Package-Launcher ist der erste Prozess, der ber die nderung des Installationsstatus einer
Software Bescheid weiss. Er agiert somit als Vermittlerinstanz gegenber SCCM und verwaltet
den Status aller Softwareinstallationen.
Die Aktualisierung des Softwareinventars an SCCM erfolgt als Delta nach jeder SoftwareStatusnderung und nur, wenn die Softwareinstallation nicht im Rahmen einer ComputerErstinstallation (Environmentvariable _SMSTSType=2) erfolgt und der Registrykey
HKLM\SOFTWARE\Real Packaging\Package-Launcher\Packages\StopLauncherInventory nicht mit
einem Wert belegt ist. StopLauncherInventory kann folgende Ausprgungen besitzen:
StopLauncherInventory =
Leer oder False: Inventory wird durch den PackageLauncher ausgefhrt (Standardeinstellung).
StopLauncherInventory = True
StopLauncherInventory = Always
3.14.1
Bei einer MSI-Installation enthlt dieser Key die Fehlermeldung aus der Windows Installer
Protokolldatei als Reintext.
48/122
www.realpackaging.ch
Bei Legacy-Installationen enthlt dieser Key die Fehlermeldung die vom Paketierer
vorgesehen ist und in der PreInstall_00x.EXE abgebildet ist.
Der Package-Launcher protokolliert allgemeine Fehler auch unter diesem Key als
Reintext.
4. HKLM\Softw..\Real Packaging\Package-Launcher\Packages\<PACKAGE>\LastAccess
Der Ausfhrungszeitpunkt der letzten Transaktion dieses Softwarepakets
5. HKLM\Softw..\Real Packaging\Package-Launcher\Packages\<PACKAGE>\Variant
Die Bezeichnung der Paketvariante. Siehe Kapitel 7.1 Paketvarianten
49/122
www.realpackaging.ch
4.1 Zielverzeichnis
In der Regel sollten alle Anwendungen in einem Unterverzeichnis von %ProgramFiles% installiert
werden. Fr die Unterverzeichnisse in %ProgramFiles% werden die Standardvorgaben des
Herstellers verwendet.
In einzelnen Ausnahmefllen, wo dies nicht mglich ist (bspl. Oracle), muss dies entsprechend
dokumentiert werden.
Adobe, Microsoft
Die Anpassungen erfolgen durch den Softwarepaketierer ber eine MST-Datei oder via
Pre/PostInstall.
4.3 Lizenzen
Es knnen nur Programminstallationen automatisiert werden, welche einen interaktionslosen
Installations-, Konfigurations- und ggf. Aktivierungsmechanismus bieten. Dies gilt speziell auch
im Umfeld von Lizenzierungsvorgngen. Whrend des Installationsvorgangs selbst ist es in der
Regel nicht mglich, eine entfernte, aber verfgbare Lizenzquelle (Server) zu prfen (Installation
im Systemkontext!). Sofern die Setup-Routine der Anwendungssoftware ber einen
interaktionslosen Aktivierungsvorgang verfgt, wird dieser in das Softwarepaket integriert. Bei
50/122
www.realpackaging.ch
repaketierten Softwarepaketen ist darauf zu achten, dass die integrierte Lizenzaktivierung nicht
auf den Entwicklungscomputer und Entwicklungsbenutzer beschrnkt, sondern allgemein gltig
ist.
4.4 Namensauflsung
Bentigt eine Anwendung Zugriff auf ein entferntes System, so sollte in den
Verbindungseinstellungen der FQDN des Zielsystems konfiguriert werden. Der jeweilige
Applikationsverantwortliche muss die entsprechenden Daten liefern und im Auftrag verwenden.
Es drfen keine NetBIOS-Namen verwendet werden.
Weiter ist folgendes einzuhalten:
-
51/122
www.realpackaging.ch
Auf die Mglichkeiten zur Lokalisation von Abhngigkeiten wird im Kapitel 6.3.1 Auspacken von
Installationselementen aus einem Bootstrapper nher eingegangen.
Im Kapitel 6.14.3 Umgang mit Abhngigkeiten durch Verwendung des Dependence-Eintrages
finden wir zudem Hinweise, wie die Prfung auf Abhngigkeiten mit einem Softwarepaket
realisiert wird.
Schliesslich muss bei globalen Abhngigkeiten in SCCM noch eine Customized Task Sequence
eingerichtet werden. In dieser werden die voneinander abhngigen SCCM-Pakete/InstallProgramme in der korrekten Reihenfolge fr die Installation zusammengefasst. Das Script
Create_SCCM_Package_Link.vbs (SCCM 2007) erstellt diese Task-Sequenz automatisch anhand
der Dependence-Eintrge.
4.6 Versionshandling
Fr das Versionshandling wird folgende Anwendung empfohlen:
Fr die Softwareablage und durch Scripts anschliessend auch fr SCCM bernommene Namens-,
bzw. Versionsbezeichnung hat der Softwarepaketierer folgende Syntax zu verwenden:
Major.Minor (bspl. 1.1, 12.2, aber auch 10.55)
In der Regel wird die gekrzte technische Version aus der MSI-Datei (Property ProductVersion)
als Basis fr die Versionsbezeichnung verwendet. Bei repaketierten Softwarepaketen kann als
MSI-ProductVersion-Property die im Auftrag, in der Installationssource oder auf der
Herstellerseite angegebene Version verwendet werden, welche schliesslich als Basis fr die
Softwareablage zu verwenden ist.
Allgemeine Namensrichtlinien sind im Kapitel 3.7 Namensrichtlinien dokumentiert.
4.9 Installationskontext
Es werden nur Installationen unter dem Kontext per-machine empfohlen.
52/122
www.realpackaging.ch
4.10 Firewall
Die Ausnahme-Regelung wird global via Group-Policies gesteuert und innerhalb des
Softwarepakets sind keine Ausnahmen zu definieren.
Achtung: In einzelnen Fllen werden auch nur bei der manuellen Installation Verbindungen
gestoppt. Firewall-Ausnahmen sind aber nur erforderlich, wenn diese fr den Betrieb der
Software bentigt werden. In der Paketdokumentation ist auf die Ausnahmeregelung deutlich
hinzuweisen!
Tip: Portinformationen sind beispielsweise ber das Sysinternals-Tool TCPView ermittelbar. Beim
Erscheinen der Firewall-Meldung wird mittels diesem Tool die Art des Protokolls und der Port
einsehbar, auf den ein Programm zugreift.
4.11 Paketierungsarten
Grundstzlich kann ein Softwarepaket auf verschiedene Weise erstellt werden. Prinzipiell ist die
erste Wahl die Verwendung von Hersteller-MSI-Dateien, die im Rahmen eines Customizing
an die Unternehmensbedrfnisse angepasst werden. Oft befinden sich auch in Setup.EXE
Dateien MSI-Dateien, die der Setup-Bootstrapper whrend der Installation auspackt (siehe
Kapitel 6.3 Verwenden eines Hersteller MSIs.
Zwar erlaubt die Repaketierung eines Setups ein einfaches und meist schnelles Erstellen von
Softwarepaketen mit benutzerdefiniertem Verhalten. Es darf aber nicht vergessen werden, dass
ein repaketiertes Setup eine komplett andere Logik, als das Herstellersetup aufweist und auch
nur eine eingefrorene Zustandsnderung von Registrykeys, Dateien, Services, etc. beinhaltet.
Windows Installer Setups sind meist viel komplexer aufgebaut, als dass sie nur eine Summe
dieser besagten Ressourcen wren.
Die Paketierungsart ist unbedingt nach der unten dokumentierten Reihenfolge zu whlen:
1. Hersteller-MSI
2. Snapshot-MSI (Repaketierung)
3. Legacy-Setup, ausgefhrt ber Kommandozeilenparameter via PreInstall oder eigenem Script
53/122
www.realpackaging.ch
Ist die Verwendung eines Hersteller-MSIs nicht mglich (Legacy-Setup) oder ist diese
Paketierungsart nur mit unverhltnismssig grossem Aufwand zu bewerkstelligen, so kann als
zweite Wahl das Paket mittels Techniken der Repaketierung (Snapshot mit Wise Package Studio)
erstellt werden. Bei diesem Verfahren erhlt man eine MSI-Datei, die gegenber einem direkt
aufgerufenen Legacy-Setups immer noch folgende Vorteile bietet (nicht abschliessend):
Die Installation kann auf Softwarekonflikte getestet werden (Conflict Explorer 2009).
Die Verwendung von Legacy-Setups ber einen Aufruf im PreInstall oder eigenem Script
(INI:ExecuteFile) ist nur in Ausnahmefllen zulssig. Fr hardwarenahe Treibersoftware kann dies
eventuell sinnvoller sein, als die Repaketierung des Legacy-Setups.
4.12 Pfadlnge
Die maximale Pfadlnge welche von NTFS untersttzt wird betrgt 32767 Zeichen (individuelle
Elemente im Pfad: max. 255 Zeichen).
Das eigentliche Windows API untersttzt aber nur 260 Zeichen fr die maximale Pfadlnge
(http://msdn.microsoft.com/en-us/library/aa365247.aspx)! Das heisst, dass der Pfad zu den
SCCM Paket-Sourcedateien diesen Wert nicht berschreiten darf.
Bei Hersteller-MSI-Paketen, die externe Dateien in Unterverzeichnissen verwenden, wird zur
Verkrzung der Pfadlnge die Verwendung von MakeCab.vbs empfohlen, damit man
Cabinettdateien erstellen und die extern vorliegende Source anschliessend lschen kann. Die
Ausfhrung ist zu diesem Zweck auf einem fixen Laufwerk empfohlen, damit man nicht auch
bei der Ausfhrung von MakeCab an die Pfadlngengrenzen kommt. Siehe Kapitel 6.3.12
Verwendung von MakeCab.vbs
54/122
www.realpackaging.ch
Architektur-Sprache (x86|x64-ML)
Revisionsverzeichnis mit den Installationsressourcen (MSI, MST, etc.)
Das gleiche Verfahren ist auch anzuwenden, wenn es sich nicht um eine MUI-fhige Software
im klassischen Sinne handelt. D.h., wo die GUI-Sprache der Software zwar nach der Installation
nicht vernderbar ist, wo aber das Installationssetup oder die Hersteller-MSI-Datei mehrere
Sprachvarianten enthlt. In diesem Fall ist durch den Softwarepaketierer ebenfalls der
Registrykey HKLM\Software\APS\MainLanguage auszulesen und die Sprachkomponenten sind
dynamisch je nach Inhalt des Registrykeys zu installieren. Anbei finden Sie ein Beispiel zum
Auslesen des MainLanguage-Registrykeys aus einer MSI-Datei mittels einer MST-Manipulation:
55/122
www.realpackaging.ch
56/122
www.realpackaging.ch
Initialversion
Auftrag:
Umsetzungsbeispiel:
Upgrade
Auftrag einer neuen Software, wo es in der Umgebung des
Unternehmens ein Softwarepaket einer Vorversion gibt und wo
sich die Bedrfnisse nicht in einem Revisionsupdate (siehe unten)
abbilden lassen.
Umsetzungsbeispiel:
Revisionsupdate (Beispiel 1)
Auftrag:
Umsetzungsbeispiel:
57/122
www.realpackaging.ch
Revisionsupdate (Beispiel 2)
Nachdem fr eine Software ein Softwarepaket erstellt und dieses
in die Produktion berfhrt wurde, mssen Anpassungen an
Einstellungen (bspl. Registry, INI, Shortcuts, etc.) vorgenommen
werden.
Umsetzungsbeispiel:
KeepRevision
Auftrag:
Umsetzungsbeispiel:
Achtung:
Die Verwendung von KeepRevisionen sollte nur wenn zwingend ntig, ausnahmsweise
zum Einsatz kommen!
58/122
www.realpackaging.ch
5.1 Entwicklungsumgebung
Fr die Entwicklung der Softwarepakete ist ein eigener Share vorgesehen. Die Erstellung der
Ablagepfade der Paketentwicklung erledigt ein Tool mit dem Namen CreatePackage.EXE. Im
Kapitel 6.2 CreatePackage wird auf die Bedienung dieses Tools eingegangen.
Beispiel der Paketentwicklungsumgebung:
Hersteller
Produktename
Version (Major.Minor)
Dokumentationsverzeichnis
Architektur-Sprache (x86|x64-GE|EN|FR|IT|ML)
Revisionsverzeichnis, chronologisch aufsteigend, beginnend mit 001
(Verzeichnis der Installationsressourcen. Bspl. MSI/MSP/MST)
Verzeichnis mit isolierten Revisions/Pack-Ordner fr SCCM-Revisionsupdate
Sicherungsverzeichnis fr Softwarepaketierer (bspl fr .WSI-Datei)
Vorlagenordner Pre/PostInstall und Securitybatch
5.2 Produktionsumgebung
Die Ablagestruktur der Produktionsumgebung wird durch das Script SCCMCreateApp_Link.vbs
automatisch erstellt und die fr dort erforderlichen Daten kopiert. Hierbei wird der Pack-Ordner
inkl. Unterordner und der Rev-Ordner in einen Ordner/Unterordner des Produktionsshares
berfhrt.
5.3 Namensbezeichnungen
Hersteller:
59/122
www.realpackaging.ch
Softwareinstallation
analysieren/testen.
CreatePackage
ausfhren
Softwarepaket
bauen
Softwarepaket
integrieren
Softwarepaket
testen
Die meisten der nachfolgenden Ausfhrungen dieses Kapitels werden in der Reihenfolge
beschrieben, wie sie im Softwarepaketierungsprozess zum Einsatz kommen.
6.1 Vorarbeiten
Bevor mit der eigentlichen Softwarepaketierung begonnen wird, informiert sich der
Softwarepaketierer, was er zu erledigen hat, indem er den Auftrag und allflligen Mailverkehr
betreffend der zu implementierenden Anwendung studiert. Zudem macht sich der
Softwarepaketierer ein Bild ber die Software, die er zu paketieren hat, indem er diese auf
seiner VM-Guest gem. Anleitung installiert, die Anwendung startet und sich mit allflligen
Eigenschaften des Produktes auseinandersetzt.
6.2 CreatePackage
Mit dem Tool CreatePackage.EXE kann die initiale Ablagestruktur der Softwarepaketentwicklungsumgebung erstellt werden (Revision 001). Zudem werden alle fr den Softwarepaketierer notwendigen Vorlagen und Automatisierungsscripts kopiert.
Wichtige Scripts fr die Arbeiten des Softwarepaketierers:
60/122
www.realpackaging.ch
Im Wurzelverzeichnis des PLPackDEV-Shares befindet sich das Startscript zum Aufruf von
CreatePackage. Mit einem Doppelklick starten Sie das Programm:
Geben Sie anschliessend die erforderlichen Kenndaten ein. Unter Sprache und Architektur
knnen mehrere Optionen gleichzeitig gettigt werden. Wird ein Paket erstellt, welches
mehrsprachig ist oder die Sprachausprgung in einer Softwareeinstellung durch den Benutzer
gewhlt werden kann oder wo die Software die Clientsprache selbstndig erkennt und dadurch
die Spracheinstellungen fr die Software selbstndig vornimmt, ist als Sprachvariante einzig
Mehrsprachig zu whlen.
Die Architekturoptionen beziehen sich auf die Installationsinstanz und das Setup. Zielt das Setup
auf x86 Rechner, ist hier x86 zu whlen (solche Setups knnen auch unter x64 eingesetzt
werden). Ist das Design des Setups hingegen fr x64 Rechner ausgelegt (volle x64er
Kompatibilitt), whlt man x64 (solche Setups knnen nur unter x64 installiert werden).
Paketiert der Paketierer beide Varianten in einem Paket (zwei verschiedene Setups), so sind beide
Optionen auszuwhlen.
Die Option AppV Paket fgt dem Paketnamen zustzlich noch ein (V) an.
61/122
www.realpackaging.ch
62/122
www.realpackaging.ch
Logging=voicewarmupx in HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer) analysiert werden. Unterteilen Sie die Source in die zwei Kategorien
1. Abhngigkeiten
2. Installation der Anwendung
und identifizieren, bzw. trennen Sie lokale von globalen Abhngigkeiten (siehe Kapitel 4.5
Abhngigkeiten (Middlewares)). Prfen Sie zudem, welche der Abhngigkeiten im Umfeld des
Unternehmens schon paketiert sind und notieren Sie deren Namen fr die Implementation in der
zur Zielanwendung gehrenden INI-Datei (Dependence-Eintrag).
6.3.3 Protokolldatei analysieren
Oft werden durch den Bootstrapper auch Properties bergeben, die sich in der temporren
Protokolldatei %TEMP%\MSI?????.LOG wiederfinden (bei eingeschalteter Protokollierung
Logging=voicewarmupx). Diese Datei ist auf die bergebenen Properties im Startbereich unter
Command Line: zu prfen. Die erweiterten Properties knnen spter mittels der INI-Datei oder
der MST-Datei bergeben werden. In dieser Phase sind diese zumindest zu notieren. (Achtung:
CURRENTDIRECTORY, CLIENTUILEVEL, CLIENTPROCESSID, %HOMEPATH, %HOMEDRIVE und
%HOMESHARE knnen dabei ignoriert werden. Diese Properties sind in jeder bergabezeile zu
finden)
6.3.4 In-Place-Update von Patches (Splipstreaming)
Wird ein initiales Softwarepaket erstellt, also nicht ein Update (Revisionsupdate) eines bestehenden produktiven Pakets, und werden beim gelieferten Herstellersetup MSP-Patches mitgeliefert,
bzw. lassen sich diese aus der Setup.EXE auspacken, so kann und sollte die Hersteller-MSI-Datei
gleich mit allen erforderlichen MSP-Dateien chronologisch in Form von In-Place-Updates
gepatcht werden (sofern mglich). Der Vorteil dieses Verfahrens ist der, dass die MSI-Installation
und der Patch spter in einer einzigen Installationstransaktion installiert werden knnen.
1. Zu diesem Zweck ist eine Administrativinstallation zu erstellen:
msiexec /a <msipath\msiname> TARGETDIR=<AdminPoint> /L*v <logdatei> /qbVerwenden Sie unbedingt ein TARGETDIR, welches sich vom Verzeichnis von <msipath>
unterscheidet, ansonsten wird die administrative Installation mit einer Fehlermeldung quittiert.
Achtung: Ist das Attribut-Flag in der Components-Tabelle irgend einer Komponente auf NeverOverwrite (128) gesetzt und sind diese so markierten Komponenten auf dem System registriert,
wo die administrative Installation ausgefhrt wird, so entpackt der Parameter /a die damit
verbundenen Dateien nicht. Bei spteren Zugriffen wrde diese Datei fehlen und man knnte
das Produkt auch nicht mehr fehlerfrei rekompilieren (erneutes Erstellen von Cabinett-Dateien).
2. Schliesslich wird das In-Place-Update auf die Administrativinstallation angewendet:
msiexec /p <msppath\mspname> /a <msipath\msiname>
Dieser Vorgang ist fr jede MSP-Datei in der richtigen Reihenfolge durchzufhren. Die so
entstandenen Ressourcen knnen dann als Basis fr das Softwarepaket verwendet werden und
sind zustzlich im Work-Ordner des Softwarepakets zu sichern. Nach Anwendung eines In-PlaceUpdates ist bei der erstmaligen Installation der so entstandenen MSI-Datei die Anwendung
darauf zu prfen, ob diese den ntigen Patch-Level ausweist!
63/122
www.realpackaging.ch
64/122
www.realpackaging.ch
anschliessend mit Orca in die bestehende STANDARD.MST oder eine neue leere MST-Datei
eingefgt werden. Diese Bereinigungsarbeit ist ntig, damit nicht willkrliche SetupAnpassungen eingefroren werden, die sich aus dem Anpassungsvorgang zum Zeitpunkt des
Betriebs von InstallTailor ergeben. Zudem ist eine bereinigte MST-Datei viel transparenter fr
Nachfolgeaufgaben, als die, die direkt entstehen wrde.
Eine andere Mglichkeit zur Ermittlung von Propertyvernderungen ist die Analyse der
Protokolldatei nach manueller Ausfhrung des Setups (bei eingeschalteter Protokollierung
Logging=voicewarmupx. Alle Vernderungen der Properties, ausser diese die ber
MsiHiddenProperties in der Propertytabelle der MSI-Datei vermerkt sind, sollten so ermittelbar
sein. Die so ermittelten Propertyvernderungen sind dann in die MST-Datei zu bertragen.
6.3.10 ShortCuts
Lschen oder Verndern Sie die Shortcuts nach Vorgaben des Applikationsverantwortlichen und
den Regeln, die im Kapitel 4.2 Startmen und ShortCuts dokumentiert sind. Die Vernderungen
sind in der MST-Datei in der ShortCut-Tabelle anzuwenden. Fr alle Vernderungsabsichten, die
nicht direkt in der MST-Datei durchgefhrt werden knnen, ist die Umsetzung ber die Preoder PostInstall_00x.wse empfohlen.
65/122
www.realpackaging.ch
dateien erstellt werden, ohne dass die MSI-Datei des Herstellers mit Wise Package Studio - unter
der nachteiligen Erweiterung der MSI-Datei mit zustzlichen Anpassungen um vieler Properties
und Tabellen - kompiliert werden muss.
Zur Ausfhrung ist eine Kommandozeile mit dem Script MakeCab.vbs und der Verwendung des
MSI-Pfades in einer DOS-Konsole abzusetzen:
Das Script erstellt dann die Cabinettdateien im Wurzelverzeichnis der MSI-Datei. Die externen
Source-Daten knnen nach der Operation ins Work-Verzeichnis verschoben werden.
Grsse der Cabinettdateien
Standardmssig werden durch das Script 100MB externe Cabinett-Dateien erstellt. Auf Wunsch
kann aber die Grsse mittels einer zweiten Kommandozeilenoption angepasst werden. Hier
wre die Grsse der Cabinett-Datei in Kilobyte anzugeben.
66/122
www.realpackaging.ch
Diese Option sollte bei einer Standardinstallation von Wise Package Studio bereits so eingestellt
sein.
6.4.1.2
67/122
www.realpackaging.ch
Hauptapplikation, mssen als Administrator ausgefhrt werden, um eine allfllige Datei- und
Registrierungsvirtualisierung zu verhindern.
Zudem sind beim Anzeigen der Ressourcen nach dem After-Snapshot, diese auf Eintrge im
VirtualStore zu prfen. Dort vorgefundene Ressourcen im VirtualStore sind zwingend im
Originalverzeichnis/Originalregistryhive zu implementieren! Gegebenenfalls ist der
Repaketierungsprozess neu zu starten.
6.4.1.3
Mergemodule
Mergemodule werden von Real Packaging GmbH beim Repaketierungsprozess in der Umgebung
des Unternehmens nicht empfohlen.
6.4.1.4
68/122
www.realpackaging.ch
(Zu den hier gemachten Angaben gelten die generellen Repackaging Best-Practice Regeln von
Wise Package Studio: wps_repkg_basics_whitepaper.pdf)
Beim nach dem Start von SetupCapture erscheinenden Dialog ist die Einstellung wichtig, dass
die Source-Dateien whrend des Setups kopiert werden (siehe Bild rechts).
69/122
www.realpackaging.ch
Wenn als Ziel (Target Installation) ein lokales .WSI gewhlt wird, so sind diese Ressourcen im
Anschluss der Repaketierung in das Softwarepaketverzeichnis im Work-Ordner (am besten
unter dem entsprechenden Revisionsverzeichnis) abzulegen.
Ist der Initialscan des Computers beendet, kann das Setup als Administrator gestartet und
anschliessend - nur falls erforderlich die Konfiguration der Anwendung ausgebt werden.
Beachten Sie, dass ein Start der Anwendung und anderer Konfigurationswerkzeuge in dieser
Phase immer als Administrator ausgefhrt werden! Ist keine Benutzerkonfiguration oder
Einstellungsnderung innerhalb der Applikation vorzunehmen, so sollte auf den Start der
Anwendung in dieser Phase verzichtet werden. Oftmals werden beim erstmaligen Start div.
Benutzerressourcen durch die Anwendung geschrieben, die man mglicherweise nicht mit in
den Snapshot implementieren mchte, wenn die Zielanwendung eigene Automatismen dazu
verwendet, um diese dem Benutzer zur Verfgung zu stellen.
Zum Schluss berprfen Sie noch die Verknpfungen, ob diese den im Kapitel 4.2 Startmen
und ShortCuts dokumentierten Regeln entsprechen. Korrigieren Sie, sofern ntig.
Mit Next/Next schliessen Sie den Snapshot ab.
70/122
www.realpackaging.ch
6.4.4 Anschlussarbeiten
Die wichtigste Ttigkeit nach einem Snapshot ist die Bereinigung der MSI-Installation. Ziel ist es,
nur diese Ressourcen im erstellten Softwarepaket zu implementieren, die direkt fr die
Anwendungsinstallation notwendig sind. Viele Prozesse, die der Paketierer oder das System
whrend des Aufzeichnungsverfahrens startet, hinterlassen Spuren, die der Softwarepaketierer
jetzt identifizieren und lschen muss.
Achten Sie in dieser Phase auch auf virtualisierte Ressourcen, die mglicherweise durch den
Snapshot aufgezeichnet wurden (siehe Kapitel 6.4.1.2 Keine virtualisierten Daten (VirtualStore)).
Mit Next/Next schliessen Sie schliesslich Ihren Snapshot ab. berprfen Sie hier Ihre Ressourcen
erneut. Kontrollieren Sie auch, ob Ihr Benutzername nativ in irgendwelchen Tabellen
eingetragen wurde und lschen Sie diesen oder verwenden eine variable Benutzerbezeichnung.
Ist der Prozess der Anschlussarbeiten abgeschlossen, so knnen Sie die .WSI-Datei kompilieren
und in das Softwarepaketverzeichnis im Work-Ordner (am besten unter dem entsprechenden
Revisionsverzeichnis) ablegen, sofern dies noch nicht erfolgt ist. Zudem Kopieren Sie die beim
Kompilierungsprozess erstellte MSI-Datei in das Revisionsverzeichnis des Softwarepakets.
Alle weiteren Customizing-Aufgaben sind in der Regel in einer MST-Datei abzuspeichern, damit
die Transparenz und Lesbarkeit gewhrleistet ist.
71/122
www.realpackaging.ch
Die Benutzerressourcen sind in einem eigenen Windows Installer Feature isoliert abzubilden
Dieses Feature ist als Top-Level Feature zu markieren. Als Name des Features eignet sich ein
sprechender Name wie CurrentUser
Der KeyPath der den Benutzerressourcen zugewiesenen Komponenten muss auf einen Registrykey in HKCU verweisen. Dies ist insbesondere auch bei Dateiressourcen so zu bewerkstelligen. Es ist zu gewhrleisten, dass der Registrykey, der als KeyPath verwendet wird, nicht
von der Anwendung oder durch Anwendungselemente selbst geschrieben werden kann
(beispielsweise, wenn der Benutzer die EXE-Datei der Applikation in der Konsole oder ber
Start/Ausfhren startet). Im Zweifelsfall ist ein entsprechender Dummy-Key durch den
Softwarepaketierer in HKCU durch die MST-Anpassung selbst zu implementieren.
Achten Sie auf die Verfgbarkeit aller Benutzerressourcen, auf die das Softwarepaket zum
Zeitpunkt der Benutzerinstallation zugreift. Applikationstests sind daher unbedingt auch im
Kontext des Benutzers, ohne Administratorrechte und ohne Zugriff auf die primre Instal lationssource durchzufhren. Mit dem Bezeichner CopyLocal=True in der INI-Datei des Softwarepakets kann angegeben werden, dass der Package-Launcher die Source des
Softwarepakets vor der Erstinstallation lokal zwischenspeichert (sekundre Installationssource) und die Installation von dort ausfhrt. Siehe Kapitel 6.14.2 Lokaler Cache.
72/122
www.realpackaging.ch
Zur Erstellung und Pflege der MST-Dateien wird Orca empfohlen, da dieses Tool die
Umsetzung der Bedrfnisse sauberer umsetzt. Wise Package Studio erweitert MST-Dateien
mit einer Reihe von Properties und zustzlichen Tabellen, so dass die Lesbarkeit fr andere
Personen und die Wartung darunter leidet.
Generell wendet der Package-Launcher bei der Installation alle im Revisionsverzeichnis des
Softwarepakets befindlichen MST-Dateien an.
Die einfachste Variante liegt vor, wenn zunchst keine MST-Datei vorliegend ist und man
allgemeine Bedrfnisse umsetzen mchte. Hier wre das Script AddProperties.vbs auszufhren.
Dieses erstellt eine Standard-MST-Datei mit der Bezeichnung STANDARD.MST. Fr alle weiteren
Anpassungen knnte diese MST-Datei entsprechend erweitert werden.
Liegt hingegen durch den Hersteller bereits eine MST-Datei mit Anpassungen vor, so ist diese
vorgngig auf STANDARD.MST umzubenennen, bevor weitere Ergnzungen durch den
Softwarepaketierer hinzugefgt werden. Im Allgemeinen ist dies die bevorzugte Variante. Nur,
wenn der Softwarepaketierer, die allgemeinen Anpassungen vom Hersteller gegenber den
eigenen Erweiterungen abgrenzen mchte, behlt er die Hersteller-MST-Datei bei und fgt dem
Softwarepaket mit AddProperties.vbs eine neue STANDARD.MST hinzu.
Vergewissern Sie sich, dass der in der Datei verwendete Revisionsbezeichner dem
Revisionsbezeichner des Revisionsverzeichnisses genau bereinstimmt. Ansonsten wird der
Package-Launcher diese Datei nicht anwenden!
Eine Anpassung implementiert der Softwarepaketierer schliesslich, indem in der CustomizingSection im oberen Teil der Vorlage der Doppelpunkt : am Beginn des Batches entfernt und
das
zu
ffnende
Zielverzeichnis
am
Ende
der
Zeile
anpasst
wird
("%PROGRAM_FILES%\myFolder"). Bei Anpassungsvorhaben, die auf die Registry zielen, ist im
dritten Block der Customizing-Section nach genau gleichem Muster vorzugehen. Hier ist am
Ende der Zeile der zu ffnende Registryhive anzugeben ("HKLM\SOFTWARE\MyApp\User")
73/122
www.realpackaging.ch
Achtung
Wird in einer Nachfolgerevision eine Korrektur des ursprnglichen Batches notwendig, dann
muss eine neue Variante des Batches in das neue Revisionsverzeichnis kopiert werden, die die
alten Inhalte, sowie die Erweiterungen enthlt. Der Package-Launcher kopiert diese neue
CMD-Datei bei der Installation der Revision, sofern die Datei neuer ist, als die lokal
gespeicherte CMD-Datei. Lokal liegt immer nur eine ACL-CMD-Datei pro Softwarepaket vor.
Die Anpassungen werden durch den Package-Launcher im Verzeichnis %WINDIR%\Logs in die
Datei SetAcl.LOG geschrieben.
74/122
www.realpackaging.ch
75/122
www.realpackaging.ch
Der Aufbau der PreInstall_00x.wse und der PostInstall_00x.wse ist praktisch identisch, der
Kontext der Installationsausfhrung aber ein anderer. PreInstall wird vom Package-Launcher
selbst in erster Instanz vor der MSI-Installation ausgefhrt, PostInstall kommt hingegen im
Rahmen der Windows Installer Installation in Form einer Custom Action zum Einsatz.
Hier ist das Fenster/Register abgebildet, wo der Softwarepaketierer die fr die Installation
erforderlichen zustzlichen Bedrfnisse abbildet:
Sie
im
Kapitel
3.8
Verwendung
von
PreInstall_00x.wse,
76/122
www.realpackaging.ch
Achtung: Dieses Vorgehen ersetzt nicht den Test des Installationsablaufs des kompletten
Softwarepakets! Zu beachten ist auch, dass durch dieses Verfahren keine History.LOG-Eintrge
generiert werden.
6.9 PreInstall-Pakete
Softwarepakete ohne MSI-Ressourcen knnen mit dem Package-Launcher mittels einer
PreInstall-Datei abgebildet werden. Beachten Sie, dass auf die Ausfhrung einer PreInstall-Datei
keine PostInstall-Datei folgen muss, bzw. dies im Rahmen eines PreInstall-Paketes ohne
Ausfhrung einer MSI-Datei gar nicht zulssig wre.
Im PreInstall_00x.WSE sind keine Vorkehrungen betreffend dem Kopieren oder Lschen der
Sourcedaten (Setup.EXE) vorzusehen, da dies bei der geschilderten Umsetzung der PackageLauncher selbstndig erledigt.
77/122
www.realpackaging.ch
78/122
www.realpackaging.ch
Feature begrenzt. In solchen Fllen (und nur dann) ist der Block um folgenden Eintrag zu
erweitern. Hier ist der Property ADDLOCAL das gewnschte Feature anzufgen:
wird die Implementation ausgefhrt. Danach sind aber noch die Anweisungen anzufgen, die
der Paketierer whrend der Ausfhrung der Active Setup-Implementation im Benutzerkontext
wnscht. Hierzu ist der Block USERREPAIR entsprechend zu erweitern. Die Implementation
selbst fhrt zu folgendem Active Setup-Eintrag:
"%SCRIPTS%\PostInstall_%REVISION%.EXE" %PACKAGE% %REVISION% USERREPAIR %VARIANT% %VARIANTSECTION%
79/122
www.realpackaging.ch
1. Die HKCU-Registrykeys werden mit Edit Registry in den Block USERREPAIR eingefgt.
80/122
www.realpackaging.ch
Achtung: Wenn ein Pre/Postinstall mit Benutzerressourcen verwendet werden soll, drfen in der
Sektion USERREPAIR keine Aktionen implementiert werden, die administrative Rechte
bentigen!
Das gleiche wie das soeben beschriebene Vorgehen ist anzuwenden, wenn ein Active Setup,
zielend auf ein PreInstall impementiert werden soll. Hier sind die Manipulationen in der Datei
PreInstall_00x.wse anzufgen.
81/122
www.realpackaging.ch
6.14.1 Upgrade-Handling
ber den Bezeichner Upgrade=xxxx bestimmt der Softwarepaketierer, welche Softwarepakete
der Package-Launcher in Form eines Package-Upgrades vor einer Installation entfernen soll. Dies
ist die favorisierte Variante, Softwareprodukte im Rahmen eines Upgrades zu entfernen.
Standardmssig erstellt CreatePackage.EXE einen Paketbezeichner ohne Version, so dass die
Deinstallation aller Softwarepakete aus der gleichen Produktfamilie im Rahmen eines PackageUpgrades erfolgt.
82/122
www.realpackaging.ch
83/122
www.realpackaging.ch
Die verschiedenen Abhngigkeiten sind hier mit einem Leerzeichen aneinanderzufgen. Die
Abhngigkeiten knnen mit dem OR Operator verknpft werden (siehe Kapitel 3.5 INI-Datei).
Wenn der OR-Operator verwendet wird, muss der linke und rechte Bezeichner mit einer
Klammer einfasst werden. Bspl. (Adobe-Reader OR Adobe-Acrobat)
84/122
www.realpackaging.ch
Der Dependence-Eintrag wird auch von SCCMCreateApp whrend der automatischen Erstellung
der SCCM-Objekte ausgelesen. Durch diesen Bezeichner werden alle erforderlichen
Paketabhngigkeiten in der (RTM)-Application platziert.
Merke
Verwenden Sie mit SCCM 2012 keine Abhngigkeiten in einer flachen Hierarchie! Wird
beispielsweise fr eine Software C eine Software B bentigt und fr den einwandfreien
Betrieb der Middleware B wre A erforderlich, so wre die Deklaration Dependence=A B C in
der Software C das falsche Vorgehen! Verwenden Sie stattdessen hierarchische
Abhngigkeiten im Dependence-Eintrag!
Software C: Dependence=B
Software B: Dependence=A
Der Grund hierfr liegt in der Tatsache, dass mit SCCM 2012 und dem Application model nur
so eine korrekte Reihenfolge gesteuert werden kann. Wrden die Abhngigkeiten in einer
flachen Hierarchie angewendet, wre die Reihenfolge nicht vorhersehbar.
Korrekte Dependence-Umsetzung:
85/122
www.realpackaging.ch
Achtung
Die automatische SCCM-Objekterstellung beim berfhren der Pakete in SCCM untersttzt
keine Nicht-Package-Launcher-konformen Softwarepakete! Dies bedeutet, dass alle Eintrge in
der Form von {ProductCodes} beim berfhrungsprozess ausgefiltert werden und in der
Abhngigkeitsimplementation unbercksichtigt bleiben.
Upgrade
Sind mit einem Upgrade auch produktive, Nicht-Package-Launcher-konforme Softwarepakete zu
aktualisieren, so ist nach einem hnlichen Muster vorzugehen. Hier erweitert der
Softwarepaketierer den Upgradebezeichner mit allflligen {ProductCodes} der entsprechenden
produktiven Versionen:
RemoveIncompatibleMsi
RemoveIncompatibleMsi sollte immer gesetzt werden, wenn es das gleiche Softwarepaket auch
in einer nicht Package-Launcher-kompatiblen Version gibt. Dieser Bezeichner sorgt in diesem Fall
dafr, dass die Verteilung des neuen Pakets auf Grundlage des Package-Launchers auf einem
86/122
www.realpackaging.ch
Client, wo noch eine inkompatible Version installiert ist, vorgngig die inkompatible Version
entfernt. Der Bezeichner ist auf RemoveIncompatibleMsi=True zu stellen:
RemoveIncompatibleMsiUPG
Mit dem Bezeichner RemoveIncompatibleMsiUPG kann man per Windows Installer installierte
Produkte automatisch im Rahmen eines Package-Upgrades deinstallieren lassen, wenn diese den
selben UpgradeCode im Paket verwenden. Gerade in Umgebungen, wo mehrere Paketarten
(Package-Launcher Paket und andere Formen der gleichen Pakete) zum Einsatz kommen
knnten, empfiehlt sich dieser Bezeichner.
6.15 AddProperties
AddProperties.vbs ist ein Script, welches bei MSI-Ressourcen alle fr das Unternehmen
erforderlichen Windows Installer Propertyanpassungen vornimmt und Erweiterungen in den
anderen Windows Installer Datenbanktabellen anfgt, die fr den robusten Betrieb mit dem
Package-Launcher notwendig sind. Das Script kann mehrfach per Doppelklick (befindet sich im
Stammverzeichnis des Softwarepakets) ausgefhrt werden. Die Anpassungen werden dann
automatisch in eine MST-Datei geschrieben. Handelt es sich um ein repaketiertes Softwarepaket,
so erscheint ein Benutzerdialog, wo der Softwarepaketierer die Erweiterung auch gleich in die
MSI-Datei bernehmen knnte. Aus Grnden der Transparenz ist auch hier die Wahl einer MSTDatei empfohlen.
87/122
www.realpackaging.ch
Merke
Verwenden Sie in Ihrer Zielrevision keine MSI-Datei, sondern nur andere Ressourcen, dann
knnen Sie auf die Ausfhrung von AddProperties_Link.vbs verzichten.
Inhalt Beispiel
Kurzbeschreibung
ALLUSERS
ROOTDRIVE
C:\
ARPNOREPAIR
ARPNOREMOVE
ARPNOMODIFY
REBOOT
ReallySuppress
Computerneustart verhindern
PLPackageEngineer
Dominik Oberlin
Informations-Property
PLPackage
Adobe-Reader-9.3
PLRevision
001
(ARPSYSTEMCOMPONENT)
{{Fatal error: }}
{{Error [1]. }}
1708
70|PL_Binary|CleanUp
RemoveExistingProducts
NEVER
CA_CleanUpByRemove
UPGRADINGPRODUCTCODE
[Binary Data]
Error
CustomAction
CA_CleanUpByRemove
InstallExecuteSequence
Binary
PL_Binary
88/122
www.realpackaging.ch
6.15.2
Vereinfachte Ausfhrung
Prinzipiell ist fr jede integrierte Revision AddProperties_Link.vbs auszufhren. Existiert nur eine
Revision 001 oder zielen die Anpassungsabsichten auf die letzte Revision, so reicht ein Doppelklick auf das Script:
Bei mehreren neu eingesetzten Revisionen kann alternativ zu dem auf der letzten Seite beschriebenen Verfahren auch nur die Revision als Kommandozeilenoption angefgt werden. Fr jede
Revision ist so vorzugehen.
89/122
www.realpackaging.ch
Achtung
Werden Anweisungen in der PostInstall_00x.wse vorgenommen, um diese im Nachgang der
MSI-Installation vorzusehen, dann ist zwingend nach der Kompilierung der Datei
PostInstall_00x.wse das Script AddProperties_Link.vbs neu auszufhren. Gleich verfahren
Sie, wenn Sie ein PostInstall_00x.exe aus dem Revisionsverzeichnis lschen, welches Sie frher
integriert haben. Durch den erneuten Aufruf entfernen Sie in der MST-Datei die CustomAction-Implementation.
90/122
www.realpackaging.ch
6.16.2
Damit in einer produktiven Umgebung nach dem berfhren und Verteilen eines
Softwarepakets in Form von Applications auch nderungen und Updateerweiterungen an
diesem Paket mglich sind, ohne dass diese Arbeiten inkl. deren Tests die produktive
Ausprgung der Applications stren, sind verschiedene Environments vorgesehen.
Im Allgemeinen sind im Ablauf folgende Schritte zu vollziehen:
1. Der Softwarepaketierer erstellt, ndert oder updatet sein Paket auf dem Development-Share
PLPackDEV
2. Der Softwarepaketierer berfhrt sein fertiges Paket mittels SCCMCreateApp_Link.vbs im
Environment DEV
3. Die Software wird ber die SCCM-Objekte in DEV getestet.
4. Eventuell ergeben sich Korrekturen und die Schritte 1-3 werden wiederholt
5. Ist die Abnahme erfolgreich, erstellt der berfhrungsoperator zum Verteilungszeitpunkt die
SCCM-Objekte mittels SCCMCreateApp_Link.vbs im Environment PRD
6. Der berfhrungsoperator weist bei einer RTM-Integration (Erstberfhrung) die Software
den Benutzern zu
7. Die Applications werden automatisch installiert
91/122
6.16.3
www.realpackaging.ch
Script
Bei der ersten Ausfhrung der Software kann folgende Fehlermeldung einmalig erscheinen:
Danach sind im Fenster zuerst die SCCM-Site, danach das Environment auszuwhlen:
6.16.4
92/122
www.realpackaging.ch
6.16.5
Abhngigkeiten
ist dies darauf zurckzufhren, dass die notwendigen Abhngigkeiten noch nicht berfhrt
wurden. Brechen Sie den Dialog ab und integrieren zuerst die Abhngigkeiten. Danach knnen
Sie abermals das Zielpaket berfhren. Jetzt sollte die Fehlermeldung nicht mehr erscheinen.
Verwenden Sie in der INI-Datei Abhngigkeiten mit dem OR-Operator, werden diese entsprechend der Anweisung und Reihenfolgsprfung im Deployment Type der Application
integriert.
Ausprgung INI-Datei:
93/122
www.realpackaging.ch
Ansicht Dependence im Deployment Type der Application nach der berfhrung des obigen Paketes:
6.16.6
Wird SCCMCreateApp fr ein Paket ein zweites Mal ausgefhrt, so erscheint ein Dialog der
folgendet Art:
Hier haben Sie die Mglichkeit, anzugeben, was genau aktualisiert werden soll. Da
SCCMCreateApp nicht weiss, was Sie zwischen der letzten berfhrung und der jetzt
beabsichtigten Integration fr nderungen angebracht haben, ist dieser Dialog zur korrekten
Umsetzung Ihrer Absichten erforderlich.
Haben Sie Inhalte oder Ressourcen in bestehenden Revisionsverzeichnissen gendert, die zum
Umfang der Erstberfhrung gehrten, so ist die Option Aktualisiere initiale (RTM)
Application zu markieren.
Gab es nderungen in der Anzahl an Revisionen oder vernderten Sie Deploymenteinstellungen
(siehe nchstes Kapitel), so ist die Option Aktualisieren alle (Full) Applications zu markieren.
Bei Refreshoperationen von Revisionsupdates haben Sie zudem die Mglichkeit anzugeben, ob
die Aktualisierung nur die letzte Revision betrifft oder ob Sie auch auf alte Revisionen
(KeepRevision) angewendet werden soll (Aktualisiere alle (00x) Revisionsapplications). In der
Regel sind die standarmssig markierten Optionen richtig.
94/122
www.realpackaging.ch
6.16.7
Update Content
Wenn Sie seit der letzten berfhrung keine nderungen in der Anzahl an Revisionen, im
Deployment (siehe nchstes Kapitel) und in Abhngigkeiten aus der INI-Datei (Dependence) vorgenommen haben und eine Aktualisierung des Pakets mit SCCMCreateApp vorgenommen wird,
so whlen Sie beim angezeigten Dialog Aktualisiere nur Content und schliessen Ihre Eingabe mit OK ab.
Dies entspricht der Funktion Update Content auf dem Deployment Type der Application.
95/122
6.16.8
www.realpackaging.ch
Deploymenteinstellungen
Sollen fr einen Einzelfall die Einstellungen des Deployments gendert werden, kann durch die
Markierung der Option Erweiterte Einstellungen auf einige untersttzte Eigenschaften
zurckgegriffen werden:
Befinden sich App-V-5 Ressourcen im Revisionsverzeichnis 001, kann mittels der Option AppV
Full Integration eine Integration mit Streaming ermglicht werden. Markiert der
berfhrungsoperator diese Option nicht, wird das Paket ber das standalone model wie
bliche Applications integriert.
Sollen Deploymenteinstellungen dauerhaft fr alle knftigen berfhrungen gendert werden,
so sind diese ber Eigenschaften in der Datei SCCMCreateApp.INI (mit Vorsicht) vorzunehmen.
6.16.9
Ein Standard-Applicationprodukt setzt sich initial aus einer Application Manufacturer-NameVersion (RTM) mit dem Content aller Revisionen zum Zeitpunkt der initialen Erstellung, einer
Manufacturer-Name-Version (Full) und einer unversionierten (Full)-Application zuammen. Im
Deployment Type der Full-Applications wird ein symbolischer Content verwendet, der fr eine
erfolgreiche Integration von Applications in Task-Sequenzen erforderlich ist.
Die versionierte (Full)-Application verweist im Deployment Type initial als Abhngigkeit auf die
(RTM)-Application. Die unversionierte (Full)-Application hat eine Abhngigkeit auf die
versionierte (Full)-Application. Produktabhngigkeiten werden durch SCCMCreateApp im
Deployment Type der (RTM)-Application eingebaut.
96/122
www.realpackaging.ch
Revisionsupdate
Bei einem Revisionsupdate wird fr das Update eine neue Application Manufacturer-NameVersion (00x) erstellt.
Ansicht der neuen Updateapplications:
Zustzlich wird die Detection Method im Deployment Type der (Full)-Application auf den Wert
der aktuellen Revision angepasst und dort die bestehende Abhngkeit auf Manufacturer-NameVersion (RTM) gelscht, bzw. durch Manufacturer-Name-Version (003) ersetzt.
Schematische Darstellung der Updates mit Abhngigkeitsverweisen:
Der Vorteil dieser verketteten Integration ist, dass so eine Reihenfolge in der
Abhngigkeitsinstallation vorgegeben werden kann. SCCM 2012 ermglicht standardmssig
keine Steuerung der Reihenfolge von Abhngigkeiten in der selben Hierarchie!
97/122
www.realpackaging.ch
3. Lschen Sie den Ordner des Pakets auf dem Zielenvironment, inkl. der darin befindlichen
PRD-Status.INI.
6.16.11 SCCMCreateApp.INI
In der Datei SCCMCreateApp.INI sind in der Regel keine nderungen vorzunehmen. Zudem
sollten nderungen nur wohlberlegt und mit grosser Vorsicht durchgefhrt werden.
Einige Bezeichner:
Key
AskForEnvironment
Einsatz
Erforderlich: Text;Text
Beschreibung
Mittels dieses Bezeichners knnen die Namen der Development- und der
produktiven Umgebung vorgegeben werden. Standardmssig und empfohlen
sind die Namen wie im Beispiel unten.
Beispiel
AskForEnvironment=DEV;PRD
98/122
www.realpackaging.ch
Key
Scope
Einsatz
Erforderlich: Verbindung
Beschreibung
Beispiel
Scope=\\G0RSRW-SCCMPS01.source.local\root\Sms\Site_P01
Key
Site
Einsatz
Beschreibung
Beispiel
Site=P01
Key
TopLevelFolderCol
Einsatz
Optional: Foldername
Beschreibung
Der Name des Top Level Folders in der Collectionstruktur, worin die Collections
erstellt werden sollen.
Beispiel
TopLevelFolderCol=Software
Key
TopLevelFolderApp
Einsatz
Optional: Foldername
Beschreibung
Der Name des Top Level Folders in der Applicationstruktur, worin die
Applications erstellt werden sollen.
Beispiel
TopLevelFolderApp=Application
Key
ExcludeDistributionPoint
Einsatz
Optional: Name;Name
Beschreibung
Beispiel
ExcludeDistributionPoint=SB032010;SB022010
Key
DEVPRDFolder
Einsatz
Erforderlich: TrueFalse
Beschreibung
Beispiel
DEVPRDFolder=True
99/122
www.realpackaging.ch
Key
ManufacturerFolder
Einsatz
Optional: TrueFalse
Beschreibung
Beispiel
ManufacturerFolder=False
Key
UseColSubFolder
Einsatz
Optional: Pattern;Pattern;Pattern
Beschreibung
Sollen gewisse Collections, die nicht oft gebraucht werden, in einen Subfolder
verschoben werden, kann dies mit diesem Bezeichner bewerkstelligt werden.
Es werden folgende Variablen untersttzt:
[Versioned]
[Unversioned]
[Rev]
Beispiel
UseColSubFolder=(RTM);[Versioned];[Rev]
Key
ExpliciteDontUseSubFolder
Einsatz
Optional: Pattern;Pattern;Pattern
Beschreibung
Beispiel
ExpliciteDontUseSubFolder=(APPV)
Key
UseColSubFolderName
Einsatz
Optional: Name
Beschreibung
Beispiel
UseColSubFolderName=_EXCLUDES
Key
Usercollections
Einsatz
Optional: TrueFalse
Beschreibung
Beispiel
Usercollections=False
100/122
www.realpackaging.ch
Key
DeploymentDefaultScheduleDay=10
Einsatz
Beschreibung
Beispiel
DeploymentDefaultScheduleDay=10
Key
DeploymentRequiredINSTALL
Einsatz
Optional: TrueFalseMixed
Beschreibung
DeploymentRequiredINSTALL=True
Key
DeploymentRequiredUNINSTALL
Einsatz
Optional: TrueFalse
Beschreibung
Beispiel
DeploymentRequiredUNINSTALL=True
101/122
www.realpackaging.ch
Key
SourceDEV
Einsatz
Optional: Share
Beschreibung
Beispiel
SourceDEV=\\SERVER\PLPackDEV
Key
SourcePRD
Einsatz
Erforderlich: Share
Beschreibung
Beispiel
SourceDEV=\\SERVER\PLPackDEV
102/122
www.realpackaging.ch
103/122
www.realpackaging.ch
Der Softwarepaketierer hat nun die Aufgabe mittels dieser bergebenen Variante
Installationsanweisungen zu implementieren. Die Variantenbezeichnung steht jedem PreInstallund PostInstall-Script in Form einer WiseScript-Variablen zur Verfgung (%VARIANT%). So kann
eine bedingte Anweisung aufgrund der Ausprgung dieser Variablen vorgenommen werden:
Fr eine Umsetzung via Scripts (ExecuteFile, PreScripts, PostScripts, etc.) steht zum
Ausfhrungszeitpunkt %VARIANTSECTION% zur Verfgung, woraus die bergebene Variante
ableitbar wird. Aus dem Variantenaufruf ADMIN resultiert 99-ADMIN in der Variable
%VARIANTSECTION%.
Aber auch Ausprgungen von Windows Installer Properties knnen sich je nach vorgesehener
Variante unterscheiden. Hier plaziert der Softwarepaketierer die Properties in der INI-Datei des
Softwarepakets.
Bei der Ausfhrung von SCCM-Launcher.vbs /i ADMIN werden im obigen Beispiel die Windows
Installer Properties auf ADDLOCAL=Admin;Desktop SERVER=fv903773 gesetzt. Zudem steht
dem Pre- und PostInstall neben der Variablen %VARIANT% auch die Variable
%VARIANTSECTION% zur Verfgung. Diese Variable enthlt den Sectionbezeichner 99-ADMIN,
104/122
www.realpackaging.ch
der vom Package-Launcher ausgelesen wurde. Somit kann auch aus einem Pre- und PostInstall
und aus Scripts auf die Inhalte der angewendeten Properties zugegriffen werden.
Ansicht WiseScript mit Beispiel eines Zugriffs auf die Variable %VARIANTSECTION%:
Die Anpassungen fr die Varianten mssen in SCCM manuell gettigt werden. Mit dem
berfhrungsscript SCCMCreateApp_Link.vbs werden zunchst nur die Standardobjekte erstellt.
Diese knnen im Nachgang angepasst werden (ndern der Kommandozeilenoption). Alle
zustzlichen Varianten mssen komplett manuell erstellt werden.
7.1.1
Instanzvarianten
Die Variantengestaltung ist vermutlich eher die Ausnahme als die Regel in der
Softwarepaketierung. Dennoch ergeben sich so zum Teil elegantere Realisierungsmglichkeiten.
Die soeben beschriebene Standardvariantenimplementation geht von einer Entweder-OderInstallation aus. Das bedeutet, dass auf einem Client entweder die eine oder die andere
Ausprgung (Variante) zum Einsatz kommen soll.
Ist es erforderlich, dass zwei Varianten parallel installierbar sein sollen, so kann dies ber
Instanzvarianten realisiert werden. Diese werden im Gegensatz zu den regulren Varianten
durch den Package-Launcher separat und eigenstndig registriert.
105/122
www.realpackaging.ch
2. ndern Sie die Properties ber die Paket-INI-Datei oder verwenden Sie eine Pre/PostInstall fr
die Variantenabbildung gemss dem Vorgehen aus letztem Kapitel.
3. Installieren Sie die Instanzvariante wie gewohnt mit einer Kommandozeilenerweiterung:
5. Fr die SCCM-Integration ist aber bei der Deinstallation der Instanzvariante auf folgende
Kommandozeile zurckzugreifen: "%WINDIR%\Package-Launcher\Bin\LocalLauncher.EXE"
RealPackaging-Demo-1.0-ADMIN /x /q
106/122
www.realpackaging.ch
7.2.1
Der Restart Manager Service ist fr die Verwaltung von Neustarts zustndig, die durch die
Installation oder Deinstallation vom Softwarepaket angefordert wurden. Ein automatischer
Neustart erfolgt nur, wenn niemand am Computer arbeitet (abgemeldeter Client auf dem keine
Remotesitzungen geffnet sind).
Der Restart Manager Service prft einmal pro Minute, ob der Registrykeys HKLM\Software\Real
Packaging\Package-Launcher\MakeReboot einen Zeitstempel enthlt. Sollte diese Bedingung
zutreffen, wird nach 5 mintiger Wartezeit das Gert automatisch neu gestartet, sofern im
Hintergrund keine Installation ausgefhrt wird. Sollte LocalLauncher.EXE oder msiexec.exe noch
Installationsttigkeiten vornehmen, wird mit einer Frequenz von fnf Minuten erneut geprft,
ob die Installationsttigkeit abgeschlossen ist und der Neustart wird dann im Anschluss
ausgefhrt.
Der Restart Manager Service lscht die Registrykeys MakeReboot und MakeLogoff bei jedem
Neustart des Gerts, d.h. wenn dieser vom Service selbst ausgelst, aber auch, wenn dieser vom
Benutzer ausgefhrt wird.
7.2.2
Restart Manager UI
Das Restart Manager User Interface bernimmt die Kommunikation von anstehenden Neustarts
mit dem Benutzer. Diese Kommunikation luft ber BallonTips am rechten Seitenrand des
Computerbildschirms.
7.2.2.1 Neustartmeldung
Folgende Meldung erscheint bei anstehendem Neustart:
107/122
www.realpackaging.ch
7.2.2.2 Neuanmeldemeldung
Folgende Meldung erscheint bei anstehender Neuanmeldung:
7.2.2.3 Warnmeldetypen
Wird ein gewisser Zeitabschnitt berschritten, so ndern die Warnungen von Soft-Warnings zu
Strong-Warnings. Dies ist gekennzeichnet, dass die Warnungen in 6 mal krzeren
Zeitabschnitten erscheinen und die Warnung ein anderes Erscheinungsbild annimmt (rotes
Fehlersymbol)
7.2.2.4 Benutzerdialog
Wird auf den BalloonTip geklickt, erscheint folgender Dialog, worber der Benutzer den
Neustart oder die Neuanmeldung auslsen kann:
Das gleiche Fenster erscheint auch beim Klick auf das Icon im Benachrichtigungsfeld
(Notification area).
108/122
www.realpackaging.ch
7.2.2.6 Sprachausprgungen
Der Package-Launcher Restart Manager untersttzt drei Sprachen Deutsch, English und
Franzsisch:
Die Sprache kann ber die Systemsteuerung umgestellt werden und entspricht der Systemsprache die der aktuelle Benutzer gewhlt hat.
109/122
www.realpackaging.ch
7.2.2.7 Registrykeys
Alle Registrykeys befinden sich unter HKLM\Software\Real Packaging\Package-Launcher. Diese
Registrykeys knnen nach Bedarf ber GPO gendert werden.
RestartManagerUIBehavior
softaggressiveextreme
Mit diesem Key wird das Verhalten des zustzlichen
Benutzerdialogs gesteuert (siehe letztes Kapitel)
RestartManagerUITimer
Zahl (600000)
Frequenz in Millisekunden mit welcher die Prfung auf die
Registrykeys MakeReboot und MakeLogoff
erfolgen soll
und die BalloonTips angezeigt werden (Soft-Warning 6 x
lnger). Standardmssig sind 10 Minuten eingestellt
(600000). Das bedeutet, dass Soft-Warnings jede Stunde
einmal angezeigt werden, Strong-Warnings einmal pro 10
Minuten.
RMSoftWarningInHour
Zahl (8)
Wechsel in Stunden nachdem von Soft-Warnings zu StrongWarnings gewechselt werden soll. Nach 8 Stunden
erscheinen nur noch Strong-Warnings in 6 x krzerer
Frequenz.
Mit einem Klick auf Ok oder Details>> wird die Kenntnisnahme besttigt und das Fenster
verschwindet. Der Klick auf Details>> startet den lokalen History.LOG Viewer, um weitere
Informationen einzuholen.
110/122
www.realpackaging.ch
7.3.1
Um den Package-Launcher Error Wizzard anzuweisen, dass dieser immer erscheinen soll, wenn
ein Fehler in der Installation entdeckt wird (also nicht nur bei der Erstanmeldung, sondern
dauerhaft whrend Betriebszeiten), kann der Registrykeys HKLM\SOFTWARE\Real
Packaging\Package-Launcher\Display Error Wizzard\DisplayError auf True gesetzt werden.
111/122
7.4
www.realpackaging.ch
Der richtige Zeitpunkt zum Installieren und Verteilen von Software ist bis heute eines der
herausfordendsten Themen in der Softwarebereitstellung in Unternehmen. Mit SCCM 2012
lassen sich zwar Wartungsfenster konfigurieren, um die Produktivitt des einzelnen Mitarbeiters
und die des Unternehmens bei Softwareinstallationen mglichst nicht zu beeintrchtigen, bzw.
eine fehlerfreie Installation dadurch zu gewhrleisten, dass diese zu Zeiten durchgefhrt wird,
wo der Benutzer nicht mit Programmen am arbeiten ist. Auch die Installation per Wake On LAN
zielt darauf, die Softwareinstallation zu Zeiten auszufhren, wo der Benutzer nicht angemeldet
ist und es somit whrend der Installationstransaktion zu keiner Beeintrchtigung durch
geffnete Programme kommt.
Es gibt auch Verteilszenarien, wo die Installation im abgemeldeten Clientzustand durchzufhrt
wird oder wo man whrend der Installation selbst den Mechanismen des Windows Installer
Restart Managers oder denen der Pending Files Rename queue (PFR) zum Ersetzen von in-useDateien vertraut.
Oft reichen die letztgenannten Varianten aber nicht aus und es kommt durch Installations- und
Deinstallationsprozesse, zu Zeiten, wo die Benutzer Programme am Computer geffnet haben,
zu Seiteneffekten So, dass
1. die Installation oder Deinstallation mit Fehler und/oder Rollback abgebrochen wird oder
2. die Software nach der Installation mit Fehler im Funktionsumfang reagiert
Mit dem Package-Launcher App Shutdown Manager lassen sich solche Strungen auf elegante
Weise verhindern. Denn er ermglicht das sichere Schliessen von Anwendungen kurz vor der
geplanten Installation. Er lsst sich ber die INI-Datei des Softwarepakets, die Registry und ber
Kommandozeilenoptionen steuern.
7.4.1
Es gibt ein Paket-INI-Bezeichner in der Install und UnInstall-Sektion (wird UnInstall Sektion
weggelassen, wird die Install-Eigenschaft angewendet) mit vier Ausprgungen. Dieser steuert
das Verhalten im Zusammenhang mit Dateien die zu aktualisieren sind, die aber whrend der
Installation vom Benutzer noch in Benutzung stehen.
AppShutdown=[DontAskForSave|AskForSave|Force];[DisableUserDisableShutdown];ALL|MSI;[[f:]Files]|False
Standardoptionen
Objektoptionen
Fett geschriebene Texte sind Standardeinstellungen, die verwendet werden, wenn die Oder-Ausprgung in der Deklaration komplett fehlt.
7.4.2
Standardoptionen
Pattern
DontAskForSave
Einsatz
Optional
Beschreibung
112/122
www.realpackaging.ch
Pattern
AskForSave
Einsatz
Beschreibung
Pattern
Force
Einsatz
Optional
Beschreibung
Pattern
DisableUserDisabledShutdown
Einsatz
Optional
Beschreibung
7.4.3
Objektoptionen
Pattern
ALL
Einsatz
Optional
Beschreibung
Mit diesem Bezeichner wird der Benutzer fr heikle Pakete nach dem
Download der SCCM Pakete oder Applications, whrend der Installation
ber eine fixe Laufzeit darauf hingewiesen, dass er all seine offenen Dokumente speichern soll. Der Hinweis erfolgt nur, wenn Benutzerprogramme
geffnet sind. Die Paketinstallation wartet dann im Hintergrund auf die
Benutzerinteraktion und bricht nicht mit Fehler ab. Die Dialogbox erscheint
Top-Level immer zuvorderst und kann nur durch die Wahl einer der zwei
Buttons zum Verschwinden gebracht werden. Falls der Zeitpunkt fr den
Benutzer ungnstig ist, ermglicht die Wahl auf Installation um 30
Minuten verschieben ein temporres Verbannen des Dialogs in den Hintergrund. Innerhalb 4h muss er die Installation zum Abschluss bringen,
andernfalls die Programme, ohne Dokumente zu speichern, in Eigenregie
heruntergefahren werden. Die letzten verbleibenden 90 Sekunden werden
akustisch untermalt. Nach der Wahl Installation fortsetzen werden
automatisch alle Benutzerprogramme geschlossen und der Benutzer wird
daran gehindert, whrend der kurzen Installation, wieder Programme zu
ffnen. Auch die Desktopshortcuts und der Startknopf verschwinden
temporr. Wird der Dialog in einer Benutzersession des Computers
besttigt, gilt dies auch fr alle andern Benutzersessions auf demselben
Computer, d.h. dass auch deren Anwendungen geschlossen werden!
113/122
www.realpackaging.ch
Pattern
MSI
Einsatz
Beschreibung
Es werden alle in der Installation auf dem Client geplanten Revisionen oder
fr die Deinstallation vorgesehenen MSIs nach ausfhrbaren Exe-Dateien
abgesucht (aus allen MSI-Dateien) . Nur, falls diese automatisch ermittelten
Dateien durch einen Benutzer gerade geffnet sind, wird dieser zum
Schliessen dieser spezifischen Applikation aufgefordert. Ansonsten
entspricht der Vorgang dem letzten Beispiel.
Pattern
[f:]Files
Einsatz
Optional
Beschreibung
Pattern
False
Einsatz
Optional
Beschreibung
Ohne jegliche Angabe in der INI, der Registry oder in der Kommandozeile,
verwendet der Package-Launcher AppShutdown=MSI. Soll generell kein
Dialog erscheinen, lsst sich das mit AppShutdown=False bewerkstelligen.
7.4.4
Dialoge
Sind alle Benutzer abgemeldet, setzt die Installation unverzglich ohne Fortschrittsanzeige und
Dialoge fort. Sind Benutzer angemeldet, aber keine Anwendungen geffnet, setzt die
Installation blicherweise mit der Fortschrittsanzeige fort. Ein Schliessdialog erscheint also nur,
wenn zum Installationszeitpunkt betroffene Benutzeranwendungen geffnet sind.
Schliessdialog
114/122
www.realpackaging.ch
Der Schliessdialog kann durch den Computerbenutzer temporr in den Hintergrund verbannt
werden, wenn dieser vorher noch ungestrt Arbeiten erledigen will. Zu diesem Zweck klickt
dieser auf Installation um 30 Minuten verschieben.
Der Dialog verschwindet danach. Durch einen Klick auf das Icon in der Taskbar kann der Dialog
wieder in den Vordergrund gebracht werden:
Wird whrend 30 Minuten nicht auf das Icon in der Taskbar geklickt, so erscheint danach die
Dialogbox automatisch wieder auf dem Bildschirm. Ein Hinauszgern um jeweils 30 Minuten ist
innerhalb eines Zeitfensters von 4h (Erstdialog der Installationstransaktion) mglich. Danach
erfolgt ein automatisches Schliessen der betroffenen Anwendungen mit anschliessender
Installation des Zielpakets.
Nach dem Klick auf Installation fortsetzen >> oder nach berschreiten der maximalen Wartezeit
von 4h werden alle verbleibenden und betroffenen Anwendungen geschlossen und die
Installation des Zielpakets beginnt.
In dieser Phase wird dem Benutzer der Status der Installation mitgeteilt:
Fortschritssanzeige
Abschlussdialog
Durch einen Doppelklick auf die Statusinformation (im obigen Beispiel beispielsweise auf
) ffnet sich der History.LOG Viewer, um erweiterte Informationen anzuzeigen. Stand die Objektoption in AppShutdown auf ALL, so wird whrend der
Installation ein leerer Bildschirm ohne Startmen und Taskbar angezeigt. Zudem fehlt der OK
Knopf in der Fortschrittsanzeige.
115/122
7.4.5
www.realpackaging.ch
Beispiele
Beispiel
AppShutdown=MSI
Beschreibung
die
auch
ohne
Beispiel
AppShutdown=ALL
Beschreibung
Nach dem Klicken auf Installation fortsetzen werden alle Benutzerprogramme geschlossen, Startmen und Taskbar verschwinden und es wird
bis zum Abschluss der Installation nur noch die Fortschrittsanzeige
angezeigt.
Beispiel
AppShutdown=file1.exe;file2.exe
Beschreibung
116/122
www.realpackaging.ch
Beispiel
AppShutdown=MSI;file1.exe;file2.exe
Beschreibung
Beispiel
AppShutdown=MSI;file1.exe;file2.exe;f:myprog.exe
Beschreibung
Beispiel
AppShutdown=DontAskForSave;MSI
Beschreibung
Beispiel
AppShutdown=Force;ALL
Beschreibung
Hinweis
Prozesse, die mit erhhten Rechten gestartet wurden (UAC elevated), werden nicht
automatisch geschlossen. Hingegen bewirkt die Besttigung des Buttons Installation fortsetzen
ein Schliessen der Benutzerprogramme (Anwendungen mit Fenster) auch ausserhalb der
gerade aktiven Session. Das bedeutet, dass der Benutzer, der den Button klickt, systemweit die
Verantwortung zum Schliessen aller Benutzeranwendungen bernimmt!
Folgende Prozesse werden generell nicht geschlossen (ausser ber das Pattern f:):
cmd.exe, wscript.exe, powershell.exe, plrestartmgrui.exe, logviewer.exe, remote package
installer.exe, psexec.exe, msiexec.exe, (explorer.exe), shellexperiencehost.exe
Fr App-V5 Pakete wird die Zielanwendung automatisch geschlossen. Das Verhalten kann dort
zustzlich ber den Bezeichner AppVAutoStopProcesses gesteuert werden.
117/122
7.4.6
www.realpackaging.ch
Registryeinstellungen
Key
HKLM\Software\Real Packaging\Package-Launcher\ShutdownMgr\ShowProgressDialog
Option
Beschreibung
berdies kann mit dem Registrykey ShowProgressAlways=True die Wirkungsweise von ShowProgressDialog=User oder True verstrkt werden,
indem dann die Fortschrittsanzeige immer bei jeder Transaktion kommt
(nicht nur bei Paketen mit MSI Exe-Ressourcen, Datei- oder ALL-Einstellung).
Hinweis
Die Fortschrittsanzeige kann in jedem Fall durch Klick auf Dialog Beenden,
Whlen von Enter oder der Escape-Taste zum Verschwinden gebracht
werden.
Es wird empfohlen, den Benutzer selber entscheiden zu lassen, ob er diese
Anzeige wnscht (ShowAlwaysProgressDialog=User oder nicht gesetzt). Er
kann die Einstellung im Fortschrittsanzeigedialog ndern.
Key
HKLM\Software\Real Packaging\Package-Launcher\ShutdownMgr\ShowProgressAlways
Option
Beschreibung
118/122
www.realpackaging.ch
Key
HKLM\Software\Real Packaging\Package-Launcher\ShutdownMgr\DisableShutdownGlobal
Option
Disable
Beschreibung
Diese Einstellung wird durch ein allflliges AppShutdown-Pattern DisableUserDisabledShutdown, welches in der Paket-INI, der Kommandozeile oder
der Registry unter HKLM\Software\...\Package-Launcher\ShutdownMgr\AppShutdown angegeben oder eben nicht angegeben wurde, bersteuert.
Key
HKLM\Software\Real Packaging\Package-Launcher\ShutdownMgr\IniWinsAgainstReg
Option
Beschreibung
Beispiel 1
IniWinsAgainstReg=False
AppShutdown=False
Mit diesem Bezeichner wird in Kombination mit dem Registrykey AppShutdown die AppShutdown-Funktionalitt global abgeschaltet. Siehe unten.
Key
HKLM\Software\Real Packaging\Package-Launcher\ShutdownMgr\AppShutdown
Option
Alle Optionen wie in Kapitel 7.4.1 Einstellungen ber die INI-Datei erlutert
Beschreibung
Beispiel 1
Beispiel 2
119/122
7.4.7
www.realpackaging.ch
Der Bezeichner AppShutdown kann ber die INI-Datei (standardmssiges Vorgehen), die Registry
oder ber die Kommandozeile vorgegeben werden. Bei Mehrfachdeklaration gewinnt, falls
vorhanden, die Einstellung aus der Kommandozeile. Danach wird fr gewhnlich mit der
Einstellung aus der INI-Datei fortgefahren und als letztes wird, sofern noch keine AppShutdownEinstellung vorgefunden wurde, die Registry aufgelst. Folgende Reihenfolge wird
standardmssig angewendet, bis zur erst mglichen Zuweisung einer Eigenschaft zu
AppShutdown:
1. Kommandozeile
2. INI-Datei
3. Registry
Die Rnge aus der INI oder Registry knnen dynamisch ber den Registrykey IniWinsAgainstReg
getauscht werden. Wird IniWinsAgainstReg=False angegeben ergibt sich folgende Reihenfolge:
1. Kommandozeile
2. Registry
3. INI-Datei
7.4.8
Kein Benutzer
ist angemeldet
Benutzer
ist angemeldet
PLRestartMgrUI.EXE
LocalLauncher.EXE
120/122
7.4.9
www.realpackaging.ch
Ein zustzlicher Vorteil der Option AppShutdown=ALL ist, dass damit automatisch alle
pendenten ActiveSetup-Implementationen im Anschluss der Installation in allen geffneten
Sitzungen durchgefhrt werden, ohne dass sich der Benutzer abmelden muss. Ein zustzliches
Logoff=True in der Paket-INI erbrigt sich dadurch.
7.4.10
SCCM-Wartungsfenster
Hier kommt die maximal bentigte Zeit fr die Installation der Applications ins Spiel. Im
Deployment Type der Application kann die maximale Zeit definiert werden, die fr die
Installation bentigt wird. Hier handelt es sich um die Zeit fr die betroffene Application, ohne
deren Abhngigkeiten.
121/122
www.realpackaging.ch
Wird eine Application nun ber eine Collection mit Wartungsfenster zugewiesen, ist darauf zu
achten, dass die Summe der maximalen Zeiten der Zielapplication, inkl. deren erforderlichen
Abhngigkeiten, das ber das Wartungsfenster zur Verfgung gestellte Zeitfenster nicht
berschreitet. Wird der Wert berschritten, kann die Application nicht installiert/deinstalliert
werden!
Aus dieser Ausgangslage ergibt sich beim Einsatz von Wartungsfenster schnell mal das
Bedrfnis, mglichst kleine Werte im Deployment Type anzugeben.
Eine Reduktion der Werte unter 275 Minuten bedeutet aber unter Umstnden, dass bei einem
allflligen Schliessdialog des Package-Launcher App Shutdown Managers dieser nicht die volle
Verzgerungszeit (4h) zur Verfgung bekommt. Das kann bedeuten, dass ein stehengelassener
Schliessdialog nach Ablauf der im Deployment Type deklarierten Zeit ungefragt schliesst, ohne
dass die Installation fortgesetzt wird. Eine Fortsetzung der Installation kme wohl erst wieder
beim nchsten verfgbaren Zeitfenster oder nach einem Policyrefresh in Betracht.
Das ist an sich keine Tragdie, wenn dies im Einklang mit den Firmenrichtlinien und der
Verteilungskultur stattfindet. Grundstzlich zielen beide Mechanismen das Wartungsfenster
und die vollstndige Untersttzung des App Shutdown Managers auf eine Reduktion der
betrieblichen Probleme aufgrund der Installationen whrend Betriebszeiten. Es wird empfohlen
die beiden Mechanismen nicht gleichzeitig gemeinsam zu nutzen, sondern sich auf die eine oder
andere Mglichkeit zu beschrnken.
Sollte der Einsatz von SCCM Wartungsfenster im Vordergrund stehen, kann mit dem Paket-INIBezeichner MaxExecuteTimeRTM ein kleinerer Wert, als vorgesehen vorgegeben werden. Die
Spannbreite bewegt sich zwischen 15 720 Minuten. Folgendes Beispiel veranschaulicht den
Einsatz:
[Install]
MaxExecuteTimeRTM=60
Zudem kann in einem solchen Szenario das dauerhafte Abschalten des App Shutdown
Managers zielfhrend sein. Dies knnen Sie mit folgenden Registrykeys erreichen:
HKLM\Software\Real Packaging\Package-Launcher\ShutdownMgr\AppShutdown=False
HKLM\Software\Real Packaging\Package-Launcher\ShutdownMgr\ IniWinsAgainstReg=False
122/122