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

Schwerwiegernder Fehler


17 replies to this topic

maniac

maniac
  • Full Members
  • 94 posts

Posted 19 April 2006 - 08:33

Ich klicke auf den Entfernen Button des Applets meines MSI-Paketes unter Systemsteuerung--> Software. Es kommt nun die übliche Frage "Wollen Sie <Paketname> wirklich deinstallieren. Ich klicke ja. So jetzt läuft ja bekanntlich die Deinstallation im qb-Modus. Ich habe jetzt aber noch eine Custom Action eingeklinkt die dem User ein Installshield "AskYesNo"-Frage anzeigt, in dem gefragt wird, ob er auch alle seine angelegten Daten gesichert hat, da die Software jetzt komplett entfernt wird. Klickt der User hier auf No, soll durch die Custom Action (die ja die Function des Installscripts aufruft) die Deinstallation jetzt abbrechen. Das klappt auch alles super. Ich gebe bei geklicktem Button "NO" ein "return -1" an die Custom Action zurück, die den Return Code auswertet. Die Deinstallation bricht auch wirklich ab, jedoch kommt die anschliessende Fehlermeldung "Es ist ein schwerwiegender Fehler bei der Installation aufgetreten".

Ich verwende Basis-MSI, Schema 2.0 unt Installshield 11.5 english. Ich habe die Custom Action definiert mit: "Immediate Execution" und "Always execute" in der InstallExec-Sequenz als "After ISSetupFilesExtract" mit Condition "REMOVE"

Hat jemand Rat, wie ich die Meldung vermeiden kann.

ali

ali
  • Full Members
  • 1,008 posts

Posted 19 April 2006 - 15:42

ja, weil die Deinstallation abgebrochen wurde, wie brichst du die Deinstallation denn ab?

Edited by ali, 19 April 2006 - 15:43.


maniac

maniac
  • Full Members
  • 94 posts

Posted 20 April 2006 - 08:51

ja, bei Button "NO" soll die deinstallation soll dann abgebrochen werden. Sie hat ja auch nicht wirklich angefangen. Ich bringe die Meldung ja als FirstAction in der Excecute Sequenz.

Wie kann ich die Fehlermeldung jedoch nicht anzeigen lassen.

ali

ali
  • Full Members
  • 1,008 posts

Posted 20 April 2006 - 09:10

was macht denn dein script beim klick auf "NO" ?

Edited by ali, 20 April 2006 - 09:14.


maniac

maniac
  • Full Members
  • 94 posts

Posted 20 April 2006 - 09:44

if nContinue = NO then
return -1;
abort;

elseif nContinue = YES then
return 0;
endif;

ali

ali
  • Full Members
  • 1,008 posts

Posted 20 April 2006 - 09:50

daran wirds liegen "abort" ist wohl ein bischen hart.
Wenn ich die MSI Hilfe richtig versteh gibt es feste Return Values für AskYesNo. Und zwar für Yes(1) und No(0). Versuche doch anstatt "abort" mal "cancel"!
-1 drückt nach IS Hilfe im übrigen (wenn ich richtig gelesen habe) eine Error im UI Händler aus.

Edited by ali, 20 April 2006 - 09:54.


maniac

maniac
  • Full Members
  • 94 posts

Posted 20 April 2006 - 10:00

an abort liegt es nicht, weil er nach return -1 sowieso die Function verlässt. abort kann man also auch auskommentieren. Die Aufrufende Custom Action wertet ja den Return Code aus und bekommt von der Installscript Funktion -1 also Fehler zurück, um abzubrechen.

maniac

maniac
  • Full Members
  • 94 posts

Posted 20 April 2006 - 10:02

in der IS-Hilfe steht zu return:

return
InstallShield 11.5 » InstallScript Language Reference

You can use the return statement to return a value from a user-defined function (if the function prototype does not specify a return type of void). When a return statement is encountered, program flow returns to the point at which the function was called. When used to return from a call to a user-defined function, the return statement can return a specified value to the caller.

The return value of most built-in functions will be either 0 (zero), indicating the success of the function, or a value less than zero (< 0), indicating failure. You can assign a number to the return value by using a return statement above the end statement in the function block, as shown below:

return -1;

end;

This attribute allows you to return the value of a local variable to the caller, even though the local variable itself is destroyed:

function MyFunction(ParamOne, ParamTwo)

NUMBER nNumber;

begin

nNumber = (ParamOne + ParamTwo);

// . . .

return nNumber;

end;


ali

ali
  • Full Members
  • 1,008 posts

Posted 20 April 2006 - 10:28

es kann natürlich sein das ich auf dem falschen weg bin, ich nutze nicht soviel script bei BasicMsi (gerade deswegen), aber
"InstallShield 11.5 » InstallScript Language Reference "
du machst doch ein Basic MSI? Laut der Windows Installer Hilfe wird hier bei einem Return "-1" ein error zurückgegeben, für den MSI ist das kein normaler Abbruch, sondern soweit ich weiß sowas wie ein "FatalExit"

Vielleicht geht es besser wenn du zb. ein SprintfBox verwendest , wenn du mit den Werten wie IDYES und IDNO IDCANCEL und so weiter arbeitest.

Edited by ali, 20 April 2006 - 10:29.


maniac

maniac
  • Full Members
  • 94 posts

Posted 20 April 2006 - 11:22

so hab jetzt die Variante mit SprintfBox versucht, leider gleiches Phenomän. Immer noch "Schwerwiegender Fehler"

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 20 April 2006 - 11:39

Hast du mal einen anderen Rückgabewert versucht, z.B. -2 ? Bin nicht sicher, ob das mit InstallScriopt Custom Actions richt geht, weil da ja noch die Skript-Schicht dazwischen ist.

maniac

maniac
  • Full Members
  • 94 posts

Posted 20 April 2006 - 11:51

Nein -2 bringt selbige Fehlermeldung.

maniac

maniac
  • Full Members
  • 94 posts

Posted 20 April 2006 - 12:08

wie würde ich es denn per return-Wert über ein VBScript machen?

Set objShell = CreateObject("Wscript.Shell")

intMessage = Msgbox("Meine Frage?", _
vbYesNo, "Text")

If intMessage = vbYes Then
'ganz klar nichts machen User hat seine angelegten daten gesichert
Else
' User hat seine Daten nicht gesichert und will Deinstallation abbrechen
' Return Fehler, so das die Custom Action den Deinstallationsprozess abbricht und mir keine Fehlermeldung bringt.
Wscript.Quit
End If


maniac

maniac
  • Full Members
  • 94 posts

Posted 20 April 2006 - 12:52

Die Fehlermeldung scheint optisch auch nicht vom MSI-Paket zu kommen sonder eher vom Applet der Systemsteuerung-->Software

siehe Screenshot

Attached Images

  • error.JPG


ali

ali
  • Full Members
  • 1,008 posts

Posted 20 April 2006 - 13:21

also wenn die Fehlermeldung vom Deinst kommen sollte, dann müsste sie ja in einem log auftauchen. Du könntest ja mal den permanenten log über die Registry einschalten und die Aktion mal loggen.

maniac

maniac
  • Full Members
  • 94 posts

Posted 24 April 2006 - 15:11

So, habe jetzt den Entfernen Button aus dem Applet ausblenden lassen. Damit der user trotzdem deinstallieren kann habe ich den Änder/Modify Button freigestaltet. Den Dialog habe ich so abgeändert das der User nur Remove, aber nicht mehr Repair & Modify klicken kann, da die Anwendung das nicht unterstützt (Anwendung muss über Server aktiviert werden). Bei Repair würden die Aktivierung verloren gehen.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 26 April 2006 - 07:22

Was passiert bei einem Auto-Repair (z.B. EXE gelöscht)?

maniac

maniac
  • Full Members
  • 94 posts

Posted 26 April 2006 - 09:03

Es gibt quasi keine EXE, die dieser Installer ausrollt. ph34r.gif Der Installer ist nur ein Wrapper, welcher andere MSI-Pakete als nested ausführt + ganz viel Custom Actions an denen Installscripte hängen. Sollten also Dateien der anderen nested MSI's gelöscht werden, werden diese doch wohl auch von diesen Paketen wieder repaired.

Korrigiere mich, wenn ich da falsch liegen sollte.