Viele Produkte (z.B. Office, Adobe Reader, …) werden mit Hilfe eines Windows Installer Patchs (MSP) aktualisiert. Damit die Installation und (evtl.) Deinstallation des Patches automatisiert von statten gehen können werden die entsprechenden Parameter benötigt. Ich möchte diese in Verbindung mit der Erstellung einer SCCM-Update-Applikation kurz darstellen.

 

Verwendetes Beispiel-Update
Als Beispiel-Update verwende ich ein ganz simples Office 2013 Update (KB2837655).
image

 

Hinweis
Zur Ermittlung aller benötigten Informationen für das Deployment empfiehlt es sich den Patch einmal per Hand auf einem Rechner zu installieren.

 

Installation
Die Installation erfolgt über den Microsoft Windows Installer (msiexec.exe) mit folgenden Paramenten.

Install-String:
msiexec.exe /p patchfile_kb2837655.msp REINSTALL=ALL REINSTALLMODE=omus /q /norestart
image
Installation program: msiexec.exe /p patchfile_kb2837655.msp REINSTALL=ALL REINSTALLMODE=omus /q /norestart

 

Ermittlungsmethode (Detection Method)
Ob die Installation erfolgreich durchgeführt wurde, kann bei MSI-Installationen mit Hilfe des MSI-Product-Codes abgefragt werden. Dies geht bei der MSP-Installation leider nicht. Stattdessen kann ein Registry-Key, welcher sich im Pfad „HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products“ befindet abgefragt werden. Dieser kann wie folgt ermittelt werden.

Zum Registry-Pfad „HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products“ navigieren und dort nach dem Namen des Updates suchen.
image

image

 

Suchergebnis
image
Im Registry-Ordner „00005109E60070400000000000F01FEC“ befinden sich Informationen zum Produkt, welches aktualisiert wurde.
Der untergeordnete Ordner „Patches“ enthält Informationen über die für dieses Produkt installierten Patches.
Die Informationen zum Update „KB2837655“ befinden sich demnach im Ordner „5889BEBE149EBA4469A0EF9407CA1B1F“.

 

SCCM Detection Rule
Nach der Ermittlung des Registry-Keys kann nun eine Detection Rule erstellt werden.
image
Hive: HKEY_LOCAL_MACHINE
Key: SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00005109E60070400000000000F01FEC\Patches\ 5889BEBE149EBA4469A0EF9407CA1B1F
Value: DisplayName
Data Type: String
Value: Update for Microsoft Office 2013 (KB2837655) 32-Bit Edition

 

Deinstallation
Bevor die Deinstallationsparameter zusammen getragen werden, sollte überprüft werden ob das Update deinstalliert werden kann / darf. Dies kann in den Registry-Updateinformationen (siehe Detection Method) nachgesehen werden.
Nur wenn der Registry-Key „Uninstallable“ den Wert „1“ besitzt kann das Update deinstalliert werden.

Wenn der Patch deinstalliert werden kann, werden zwei wichtige Informationen benötigt:

1. Der MSI-Product-Code des aktualisierten Produktes
(Hier: Office ProPlus 2013)
Dieser kann oft aus dem „UninstallString“ des Produktes entnommen werden …
image
Registry-Pfad: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00005109E60070400000000000F01FEC\InstallProperties
-> Product-Code: {90150000-006E-0407-0000-0000000FF1CE}

2. Der MSP-Update-Code des Patches (MSP) (hier KB2837655)
image
-> Update-Code: {EBEB9885-E941-44AB-960A-FE4970ACB1F1}

Nachdem beide Informationen ermittelt sind, kann nun der Uninstall-String wie folgt zusammengebaut werden.

Uninstall-String:
msiexec.exe /I {90150000-006E-0407-0000-0000000FF1CE} MSIPATCHREMOVE={EBEB9885-E941-44AB-960A-FE4970ACB1F1} /q /norestart
(Erst MSI-Product-Code, dann MSP-Update-Code.)
image
Uninstall program: msiexec.exe /I {90150000-006E-0407-0000-0000000FF1CE} MSIPATCHREMOVE={EBEB9885-E941-44AB-960A-FE4970ACB1F1} /q /norestart

 

Weitere Infos:
MSIEXEC (MSP): http://support.attachmate.com/techdocs/1885.html