Fehlerbild
Bei der Installation bzw. Neuinstallation des Microsoft Configuration Manager Reporting Services Point (SRSRP) wurde die Rolle durch MCM wiederholt als fehlerhaft erkannt. Obwohl die Installation von srsrp.msi laut srsrpsetup.log mit Return Code 0 erfolgreich abgeschlossen wurde, scheiterte die anschließende Registrierung der SRSRP-Komponente.
Typisches Fehlerbild:
Installing ...\srsrp.msi SRSRPINSTALLDIR="D:\SMS_SRSRP"
srsrp.msi exited with return code: 0
Installation was successful.
Cannot register D:\SMS_SRSRP\srsserver.dll, it doesn't exist
Cannot register SRSRP interop DLL D:\SMS_SRSRP\srsserver.dll.
Installation cannot continue.
Fatal MSI Error - srsrp.msi could not be installed.
Auffällig war eine Inkonsistenz zwischen dem von MCM erwarteten Installationsverzeichnis und dem durch Windows Installer verwendeten bzw. aus einer vorherigen Installation bekannten Pfad.
Ursache
Die Analyse ergab, dass nach einer vorherigen Installation bzw. fehlgeschlagenen Deinstallation des Reporting Services Point noch eine Windows-Installer-Registrierung des Pakets „ConfigMgr Reporting Services Point“ vorhanden war.
Das MSI-Logging zeigte unter anderem:
Product registered: entering maintenance mode
ProductState = 5
CcmSwitchToRepairMode
REINSTALL = ALL
Damit wurde srsrp.msi von Windows Installer nicht als vollständige Neuinstallation behandelt, sondern als Maintenance-/Repair-Vorgang eines bereits registrierten Produkts. In diesem Zustand konnten alte Installationsinformationen, insbesondere die bisherige Verzeichniszuordnung, weiterverwendet werden. Dies führte letztlich dazu, dass MCM srsserver.dll in einem anderen Verzeichnis erwartete, als die MSI-Installation verwendete.
Fehlerbehebung
Zur Bereinigung wurde folgende Reihenfolge durchgeführt:
- Die MCM-Rolle Reporting Services Point regulär über die MCM-Konsole entfernt.
- Mit einem PowerShell-Skript wurde das verbliebene MSI-Paket „ConfigMgr Reporting Services Point“ ermittelt und dessen ProductCode dokumentiert.
$Installer = New-Object -ComObject WindowsInstaller.Installer$Installer.Products() | ForEach-Object {
$ProductCode = $_
try {
$ProductName = $Installer.ProductInfo($ProductCode, 'ProductName')
if ($ProductName -like '*ConfigMgr*Reporting*Services*Point*') {
[PSCustomObject]@{
ProductName = $ProductName
ProductCode = $ProductCode
Version = $Installer.ProductInfo($ProductCode, 'VersionString')
LocalPackage = $Installer.ProductInfo($ProductCode, 'LocalPackage')
}
}
}
catch {
# Nicht lesbare MSI-Produkte überspringen
}
} | Format-List
- Danach wurde das weiterhin registrierte MSI-Paket anhand des zuvor ermittelten ProductCodes explizit über Windows Installer deinstalliert.
msiexec.exe /x {Productcode} /L*v C:\Temp\SRSRP_Uninstall.log
- Nach der Bereinigung wurde der Reporting Services Point erneut über MCM installiert.
Nach dieser Vorgehensweise wurde die Rolle vollständig und fehlerfrei installiert. Die zuvor wiederkehrenden Installationsversuche und Fehler bei der Registrierung von srsserver.dll traten nicht mehr auf.
Fazit
Bei SRSRP-Installationsfehlern, bei denen srsrp.msi erfolgreich mit Return Code 0 endet, anschließend jedoch srsserver.dll nicht gefunden bzw. registriert werden kann, sollte neben der MCM-Rollenkonfiguration auch der Windows-Installer-Status des „ConfigMgr Reporting Services Point“ geprüft werden.
Eine verbliebene MSI-Registrierung kann dazu führen, dass eine vermeintliche Neuinstallation als Repair/Reinstall einer alten Installation ausgeführt wird. Als funktionierende Lösung hat sich die Reihenfolge bestätigt.
- MCM-Rolle entfernen
- MSI-Produkt identifizieren
- verbliebenes MSI-Paket deinstallieren
- MCM-Rolle neu installieren