Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

MSI-Installation erfogreich abbrechen?


2 replies to this topic

herrbecht

herrbecht
  • Full Members
  • 59 posts

Posted 07 December 2006 - 10:03

Hallo

ich habe eine Frage:
Wie kann ich meine Installation (Basic-MSI-Projekt) erfolreich abbrechen, also daß msiexec den Return-Code 0 (ERROR_SUCCESS) zurückgibt ???

Ich habe nämlich folgendes Problem: Ich hab in meine Installation eine Versionsprüfung eingebaut, die verhindert, daß man ein altes Paket über ein aktuelleres Installiert (Downgrade). Dabei habe ich das so umgesetzt wie im es in dem Artikel aus dem Windows Installer Platform SDK "How do I prevent an old package from installing over a newer version" beschrieben wurde. Wenn ein Versionskonflikt festfestellt wird, wird die Custom Action vom Typ 19 aufgerufen, die die Installation mit Hinweis und Fehler 1603 (return-Wert) beendet. Ich hab damit kein Problem, aber die Kollegen, die die Pakete verteilen wollen, daß die Installation in diesem Fall 0 zuückgibt... wie kann ich das erreichen?

Bin für jede Hilfe dankbar!!!

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 07 December 2006 - 17:49

Ich fürchte das geht gar nicht, außer du willst in diesem fall alle Aktionen in dem Setup per Condition übergehen.
Es wäre auch nicht richtig, denn 0 bedeutet ja dass die Instalaltion erfolgreich durchgeführt wurde, was nicht der Fall ist.

herrbecht

herrbecht
  • Full Members
  • 59 posts

Posted 07 December 2006 - 18:25

Hallo Stefan

danke erstmal für die schnelle Antwort...

das sehe ich genauso... aber die Kollegen die meine Installation verteilen wollen leider 0 zrückgegeben haben...(Ihr Argument: Es ist ja eine aktuellere Installation vorhanden und deshalb ist alles OK)

und ich kanns selbst kaum glauben aber ich glaube ich habe (nach stundenlangem durchforsten der Windows Installer-Hilfe) eine Lösung gefunden: Man kann eine Installscript-Custom-Action aufrufen und ERROR_NO_MORE_ITEMS zurückgeben. Dann werden alle weiteren Schritte übergangen und die Installation endet mit "...erfolgreich abgeschlossen..." . Hab das in diesem MSI-SDK-Hilfe-Eintrag gefunden: Custom Action Return Values...


und es funktioniert bei meinen bisherigen Tests einwandfrei... hab aber bisher nur mit ADMIN-Rechten und nicht mit SYSTEM-Rechten (wie bei der Softwareverteilung) getestet...

meine InstallScript-Funktion enthält nur eine Zeile:
CODE
function VersionConflict(hMSI)
begin    
     MessageBox("Versionskonflikt!!! Neuere Version schon vorhanden!",INFORMATION);
     return ERROR_NO_MORE_ITEMS;  
end;  


... das ganze müsste aber auch mit c++/dll bzw. vbscript funktionieren...

wollte das nur posten, falls jemand anderes vielleicht das selbe Problem hat und eine Lösung sucht...
...ärgere mich selbst immer, wenn in einem Forum der Topic-Starter sein Problem selbst findet und dann nur postet, daß er das Problem behoben hat, anstatt die gefundene Lösung zu posten... vor allem, wenn ich das selbe Problem hab wink.gif

Edited by herrbecht, 07 December 2006 - 18:31.