Hallo,
das PS-Skript kenne ich... :-)
Etwas aufpassen muss man natürlich wieder bei 64-Bit-Systemen und 32-Bit Programmen.
Warum nutzen manche Programme "msiexec.exe /i"? Naja, die haben die Deinstallation innerhalb eines Dialgos eingebaut, der auch Reparatur und Änderungen des Paketes ermöglicht. Weiterhin ist die Deinstallation über den Uninstall-String meist mit einem Dialog und einem Abschluss-Fenster versehen, so dass man hier evtl. noch ein "/passive /quiet / norestart" einbauen muss. Meist ginge das am Ende der Zeile... meist...
Es gibt auch Programme, die mehrfach installiert sein können, z.B. Java als Version 6, 7, 8... da hilft das Skript dann auch gut.
Für normale MSI-Pakete kann man auch schauen, ob man für Anpassungen den Parameter "%CurrentPackage.MsiPackageProps.ProductCode%" verwendet. Dann muss man bei Aktualisierungen des DSM-MSI-Paketes aber auch den Produktcode des verwendeten MSI-Packages aktualisieren.
Letztlich kommt es auf die Art der MSI-Installation an. Wenn das mit den internen Befehlen sauber funktioniert, dann kann man ein solches Paket auch nicht über die Systemsteuerung entfernen. Und natürlich kommt es auf die Rechte der Benutzer an. Sind die lokale Administratoren, dann ist es oft sehr kompliziert... ansonsten schaue ich bei allen Anwendungen, dass es keine automatische Aktualisierung durch das Programm selbst gibt. Das ist beim Flash-Player schon etwas doof, aber nicht so ganz schlimm, da dieser in der Regel nicht entfernt wird. Bei anderen Programmen kann es da schon schwieriger werden, wenn wir die neue Version noch nicht freigegeben, aber die Anwender sich ein Update installiert haben... und ärgerlich ist es, wenn eine Anwendung kein Update / Upgrade unterstützt, sondern hier zuerst die Deinstallation der vorherigen Version ausführt bzw. man die alte Version zuerst entfernen muss.
Gruß
Nils