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

Reboot funktioniert nicht


8 replies to this topic

DanielaZ

DanielaZ
  • Full Members
  • 9 posts

Posted 18 April 2008 - 13:17

Ich nutze InstallShield 12 und habe ein Basic MSI Projekt.

Im Moment habe ich folgendes Problem:
Ungefähr zur Mitte des Setups installiere ich die MSDE und möchte
danach ein Reboot durchführen.
Dafür habe ich eine Custom Action, die den Dialog RebootDialog anzeigt.
Zusätzlich habe ich bei den Sequenzen "ForceReboot" hinzugefügt und das
Property "REBOOT" auf "Force" gesetzt.

Der Dialog für den Reboot erscheint auch, aber es erfolgt kein Reboot!
Fehlt noch eine Einstellung? Oder muss die Sequenz "ForceReboot" an eine
bestimmte Stelle in den Sequenzen verschoben werden?

Im Moment ist diese Sequenz wie in der Hilfe beschrieben zwischen
InstallInitialize und InstallFinalize.



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 21 April 2008 - 17:22

Was sagt das Log? Wird FrceReboot tatsächlich ausgeführt?

DanielaZ

DanielaZ
  • Full Members
  • 9 posts

Posted 22 April 2008 - 08:28

Die Funktion, die den Reboot ausführen soll, bricht mit Fehler ab. Von ForceReboot steht nix im Log-File:

MSI © (E8:60) [09:16:44:184]: Invoking remote custom action. DLL: C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\MSIC9.tmp, Entrypoint: f10
Aktion beendet um 09:16:54: installSQLDB. Rückgabewert 3.
Information 2896. Executing action installSQLDB failed.

Ich habe das ganze mal im Debug-Modus laufen lassen. Die Funktion bricht beim Aufruf von RebootDialog ohne weitere Fehlermeldung ab.

Die Funktion sieht folgendermaßen aus:

function MCIS_installSQLDB(hMSI)
STRING szCmdLine, szKey, szValue, sLang[256];

begin
// MSDE 2000 wurde ausgewählt
LaunchAppAndWait(SRCDIR ^ "MSDE2000a\\setup.exe",
szCmdLine, WAIT);

Delay(5); // 5 Sekunden warten bis sich das System beruhigt hat

MsiGetProperty(ISMSI_HANDLE, "ProductLanguage", sLang, nBuffer1);

// Parameter /L Sprache für Reboot mitgeben
szKey = "\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce";
szValue = "\"" + SRCDIR ^ "MCISSetup.exe /L"+ sLang + "\"";
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBSetKeyValueEx(szKey, "MCIS", REGDB_STRING, szValue, -1);

RebootDialog("Reboot","",SYS_BOOTMACHINE);
Do(EXIT);
end;


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 23 April 2008 - 10:44

Ich glaube, es ist keine gute IDee, den Reboot aus einer InstallScript Custom Action auszulösen. Verwendet stattdessen die Standard-Aktion ForceReboot.

Dir ist schon klar, dass bei einem Silent Setup die IstallUI Sequenz komplett übersprungen wird, d.h. dein Skript wird dann nicht ausgeführt. Die empfohlene Methode zum Installieren von MSDE wäre eine Prerequisite.

DanielaZ

DanielaZ
  • Full Members
  • 9 posts

Posted 23 April 2008 - 10:53

Das mit dem Prequisite geht leider nicht, weil die MSDE nur unter bestimmten Bedingungen ausgeführt wird.
Der Benutzer bekommt je nach Feature-Auswahl einen Dialog angezeigt, in dem er auswählen kann, ob eine Installation der MSDE erforderlich ist.
Wählt er dies aus, erfolgt nach Betätigen des Weiter-Button der Installation durchgeführt und dann soll ein Reboot gestartet werden.
Kann die als Event für den "Weiter-Button" folgendes Angeben?
DoAction Force_Reboot MSDE_READY



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 23 April 2008 - 11:12

Nein, ForceReboot kann nur in der Execute Sequenz zwischen InstallInitialze und InstallFinalize aufgerufen werden.

Wäre es möglich, dass du die MSDE-Instalaltion erst nach dem Ende deines Setups anstößt?

Und brauchst du wirklich einen Reboot? Und wäre es nicht besser, SQL Express zu verwenden? Wird MSDE überhaupt noch von Microsoft unterstützt (z.B. Sicherheitsupdates)?

DanielaZ

DanielaZ
  • Full Members
  • 9 posts

Posted 23 April 2008 - 11:38

Der Reboot ist erforderlich, weil in die neu installierte Datenbank noch
SQL-Skripte eingespielt werden sollen. Daher kann die Installation auch nicht
am Ende durchgeführt werden.

Die Installation ist nur bei einer Installation auf älteren Windows-Systemen erforderlich. Ansonsten wird SQL 2005 Express verwendet.

Ich habe das jetzt mal versucht, nur mit der Standard-Aktion "ForceReboot" zu arbeiten. Das funktioniert, auch wenn der Reboot etwas später kommt als direkt nach der Installation.
Vielen Dank für den Tip!!


DanielaZ

DanielaZ
  • Full Members
  • 9 posts

Posted 23 April 2008 - 14:02

Ein Problem hab ich jetzt leider noch.

Der Reboot funktioniert jetzt, allerdings wird am Ende des Setups noch ein Reboot durchgeführt, den ich gar nicht mehr benötigte.

Für die Aktion "ForceReboot" habe ich als Condition "Not AFTERREBOOT" gesetzt und die Aktion "ScheduleReboot" habe ich gelöscht. Der Effekt bleibt der gleiche. Am Ende wird erneut ein Reboot durchgeführt und auch bei der Deinstallation will das Setup ein Reboot durchführen.
Woran kann das liegen?

DanielaZ

DanielaZ
  • Full Members
  • 9 posts

Posted 24 April 2008 - 08:34

Ich hab das Problem gelöst smile.gif .

Zum einen hatte ich in einem Properties noch ein "REBOOT" mit dem Wert "Force".
Wenn ich dieses rausnehme, erfolgt am Ende der Installation kein Reboot mehr.

Um den Reboot innerhalb der Deinstallation zu verhindern, hab ich die Condition für "ForceReboot" folgendermaßen geändert:
Not AFTERREBOOT And Not Installed.

Dann klappt es!