IvicaE hat geschrieben:Lange Rede kurzer Sinn:
gibt es eine Möglichkeit Office unabhängig der bereits installierten Version (Standard/ProPlus) zu deinstallieren?
Du kannst in der msp-datei einstellen das vorherige Versionen deinstalliert werden sollen, das müsste editions-unabhängig sein.
ansonsten such einfach in der Registry nach den entsprechenden GUID's unter
Code: Alles auswählen
HKLM\SOFTWARE\Windows\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Die GUID ist wie folgt aufgebaut:
MajorVersion 14 entspricht 2010.
Edition sollte als String dem entsprechen was du auf dem Datenträger als Verzeichnisnamen mit der Endung .WW vorfindest.
Einfach eine Stringliste mit allen denkbaren installierten Varianten bauen:
Code: Alles auswählen
DefStringList $GUIDs$
Set $GUIDs$ = CreateStringList("Office14.STANDARD","Office14.PROPLUS")
For %GUID% in $GUIDs$ do Sub_uninstall_office
In der Subroutine Sub_uninstall_office definierst du wie gewohnt die Deinstallation, die Variable %GUID% entspricht jeweils einer zu deinstallierenden Variante.
Wenn eine Variante nicht auf dem PC gefunden wurde, sollte MSI den ExitCode 1605 zurückgeben, dieser darf dann entsprechend nicht als Fehler behandelt werden
Die Befehlszeite zur Deinstallation kannst du aus dem UninstallString des enstsprechenden Registry-Schlüssels entnehmen.
Code: Alles auswählen
[Sub_uninstall_office]
Message "Deinstalliere %GUID%"
Set $UninstallString$ = GetRegistryStringValue32("[HKLM\SOFTWARE\Windows\Microsoft\Windows\CurrentVersion\Uninstall\%GUID%] UninstallString")
WinBatch_uninstall_office /32bit /WaitOnClose
Set $ExitCode$ = GetLastExitCode
Switch $ExitCode$
Case "0"
Comment "INFO "+$ExitCode$+": Setup successful"
EndCase
Case "1641"
Comment "INFO "+$ExitCode$+": Setup successful, requires restart"
ExitWindows /Reboot
EndCase
Case "3010"
Comment "INFO "+$ExitCode$+": Setup successful, requires restart"
ExitWindows /Reboot
EndCase
Case "1605"
Comment "INFO "+$ExitCode$+": This action is only valid for products that are currently installed."
EndCase
DefaultCase
LogError "ERROR "+$ExitCode$+": Unknown error"
IsFatalError "MSI error "+$ExitCode$
Endcase
EndSwitch
[WinBatch_uninstall_office]
$UninstallString$
Edit: Es fehlte die Angabe der %GUID%-Variable beim Auslesen des UninstallString aus der Registry.