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

Kein Prerequisite-Dialog beim Update


7 replies to this topic

BkSetupDev

BkSetupDev
  • Full Members
  • 22 posts

Posted 16 February 2010 - 20:58

Ein produkt von uns benötigt ab Version 1.0.45 die Visual C++ 2008 Runtime. Dafür haben wir ein Prerequisite erstellt, dass auch tadellos funktioniert. Allerdings werden wohl Prerequisites bei Updates nicht überprüft, denn auf einem sauberen System erscheint der Dialog, ist eine frühere Version des Produktes installiert (z.B. 1.0.44 - ohne VCR), dann erscheint der Dialog nicht und das programm ist nach dem Update nicht mehr lauffähig.

Kann man dieses Verhalten ändern?

Alternativ: Kann ich die Version 1.0.45 so markieren, dass sie sich nicht als Update installieren lässt, sondern zunächst frühere Installationen deinstalliert werden müssen?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 17 February 2010 - 14:59

Notfalls könntest du die Runtime ja auch über dein Skirpt installieren. So hat man das gemacht, bevor es die Prerequisites gab smile.gif

BkSetupDev

BkSetupDev
  • Full Members
  • 22 posts

Posted 18 February 2010 - 11:45

QUOTE (Stefan Krueger @ 2010-02-17 14:59)
Notfalls könntest du die Runtime ja auch über dein Skirpt installieren. So hat man das gemacht, bevor es die Prerequisites gab smile.gif

Ja, an die Zeiten kann ich mich auch noch erinnern. Wo liegt dann nur der Sinn der Prerequisites, wenn nicht bei jedem Aufruf des Setups geprüft wird, ob noch immer alle Voraussetzungen erfüllt sind?

Maharani

Maharani
  • Full Members
  • 50 posts

Posted 18 February 2010 - 15:59

QUOTE (Stefan Krueger @ 2010-02-17 15:59)
Notfalls könntest du die Runtime ja auch über dein Skirpt installieren. So hat man das gemacht, bevor es die Prerequisites gab smile.gif

Dazu gleich eine Frage: Wir installieren die VC-Runtime per Script. Der Code dazu sieht stark gekürzt etwa so aus:
CODE

function OnMaintUIBefore()
...
begin              
...
if (nType != REMOVEALL) then
 // Voraussetzungen pruefen und installieren:
 nPrerequisites = CheckPrerequisites();
        InstallPrerequisites( nPrerequisites );
else    
 // Show Uninstall Confirmation Dialog
 nResult = MessageBox( SdLoadString( IFX_MAINTUI_MSG ), MB_YESNO );
 if (nResult != IDYES )
  goto Dlg_Start;
endif;
...
end

Die Funktionen CheckPrerequisites und InstallPrerequisites werden genauso auch aus OnFirstUIBefore aufgerufen.
Ich habe das mit dem letzten Release getestet, die fehlende VCRuntime wurde auch beim Update installiert. Unser neues Release hat ein Update auf IS2010 erlitten. Bei einem Update auf die neue Softwareversion wurde die VCRuntime _nicht_ installiert, was zu komischen Fehlermeldungen führte. Erst nach Deinstallation und Neuinstallation wurde mir die Ursache klar, denn die Neuinstallation installierte erst mal die VCRuntime.
Da wir bei einem Update noch einen anderen Effekt hatten mit Funktionen, die sowohl von OnFirstUIAfter als auch von OnMaintUIAfter aufgerufen wurden und bisher immer funktionierten, frage ich mich, ob IS2010 vielleicht ein anderes Verhalten in den OnMaintUI-Funktionen zeigt als früher, z.B. dass nType etwas ganz anderes ist als vorher oder REMOVEALL nicht mehr so existiert oder etwas in der Art.
Ist da etwas bekannt?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 19 February 2010 - 15:08

Spontan fällt mir da nichts ein, aber schau doch mal in die Release Notes und in den KB zur Projekt-Umstellung.

Maharani

Maharani
  • Full Members
  • 50 posts

Posted 22 February 2010 - 11:12

QUOTE (Stefan Krueger @ 2010-02-19 16:08)
Spontan fällt mir da nichts ein, aber schau doch mal in die Release Notes und in den KB zur Projekt-Umstellung.

Offenbar verhält sich IS2010 beim Starten der setup.exe auf einem System mit einer niedrigeren Version jetzt anders als vorher - der Maintenance-Dialog wird nämlich gar nicht angezeigt, sondern das Update einfach ohne Nachfrage durchgeführt! Insofern ist es kein Wunder, dass meine Funktionen nicht aufgerufen werden, denn ich komme in diesem Fall überhaupt nicht in OnMaintUIBefore oder OnMaintUIAfter vorbei. Ich habe aber in den ReleaseNotes keinen Hinweis auf dieses geänderte Verhalten gesehen! Das ist sehr unschön - wie kann ich denn das alte Verhalten (immer Maintenance-Dialog zeigen, wenn bereits eine Version auf dem Rechner vorhanden ist) wiederherstellen? Ich verspüre wenig Lust, den ganzen Code in irgendwelche anderen Ereignishandler zu transferieren, zumal wir momentan für den sich daraus ergebenden Testaufwand keine Zeit haben.
Das ist wirklich ärgerlich! mad.gif

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 22 February 2010 - 18:26

Bei Basic MSI gibt es eine Projekteinstellung für dieses Verhalten. Vielelicht gibts die auch bei Installcript (sorry, da bin ich nicht mehr so drin)

Maharani

Maharani
  • Full Members
  • 50 posts

Posted 23 February 2010 - 09:40

QUOTE (Stefan Krueger @ 2010-02-22 19:26)
Bei Basic MSI gibt es eine Projekteinstellung für dieses Verhalten. Vielelicht gibts die auch bei Installcript (sorry, da bin ich nicht mehr so drin)

Gefunden habe ich nichts und habe jetzt zähneknirschend auch noch OnUpdateUIBefore und -After überschrieben. dry.gif
Zumindestens der User spart sich Arbeit (einen Klick und die Überlegung, welche Option nun die richtige ist)...