Zunächst: nach InstallFinalize gibt es keinen Rollback mehr.
OK! gecheckt!
Windows Instalelr kann den Rückgabewert von exes nicht sinnvoll auswerten, du
müsstest also was außenrum stricken.
Also etwa ein Script das mein Setup aufruft und je nach Erfolg oder Misserfolg (result = objshell.run <mein Setup>0, true) gebe ich das result zurück (bsp. in ein weiteres Property).
Alternative wäre, den VLC als Prerequisite zu installieren. Da kann im Anschluss
die Bedingung (vorhandensein eines Registry-Eintrags zum Beispiel) nochmal
geprüft werden und bei fehlen (= VLC Setup fehlgeschlagen) die Installation des
Haupt-Setup unterbunden werden.
Wäre eine Möglichkeit. Danke! Wie bekomme ich dann aber das Prerequisite in mein Setup gepackt oder zumindest in eine CAB?
Den VLC bei der Deinstallation auch wieder zu deinstallieren halte ich für
problematisch. Beispiel:
Deine Applikation installiert den VLC.
Applikation XY benötigt ebenfalls den VLC. Er ist bereits vorhanden -
prima.
Deine Applikation wird deinstalliert.
Applikation XY funktioniert nicht mehr, und dein setup hat sie kaputt
gemacht.
Ja, da kann ich nicht widersprechen, diese Abhängigkeiten gibt es soweit meine Erfahrung reicht bei Redistributables, Dotnet FrameWork usw., wäre aber ein eher spezieller Fall bei Standallone-Produkten wie VLC, IrvanView, 7-Zip, usw.
Wir betreiben SCCM 2007 / 2012 und da passiert grundsätzlich nichts anderes. Da bei uns jedes Produkt (auch z.b. eine VC++ Redistributable...leider) eine TAG bekommt (je nach Installationsmethode mehr oder weniger umständlich, sprich, bei MSI mit Transform, bei Legacy-Setup mit RegKey, usw.), war der logische Schritt das ganze zu vereinheitlichen und, weil wir vertraglich eine Bringschuld haben nachzuweisen wer und wann diese Installation durchgeführt hat/wurde (SCCM-Log reicht nicht), haben wir entschieden dies auch für Installationen zu machen die außerhalb des SCCM aufgebracht werden, sprich, manuelles Setup durch den FirstLevel (Die klicken nur zu gerne das Setup und nicht das InstallationsScript).
Wenn diese menschlichen Fehler ausgeschlossen werden können, kann man dann auch behaupten: "Kein Tag? Na dann kommt's nicht von uns, sondern eventuell von einem User mit administrativen Rechten"
Soweit die Theorie.