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

VBScript stored in custom action


8 replies to this topic

Hyper71

Hyper71
  • Full Members
  • 44 posts

Posted 12 October 2012 - 10:25

Hallo

In meinem Basic MSI Project wird ein Service installiert und ein File welches an diesen Service registriert werden muss mittels installutil.exe welche ja bekanntlich im Microsoft.Net/Framework... liegt. Die Registrierung des Files an den Service mache ich mit einem VBScript stored in custom action:

Shell.run ("cmd /C" & InstallutilPath & " " & FilePath), 1, 1

Das command wird während der Installation aber nicht ausgeführt. Nach der Installation kann ich eine Kopie des Scripts auf dem Desktop mittels Doppelklick ausführen und die Registrierung klappt.
Ich versuchte die custom action ganz am Ende der Installation auszuführen mittels Klick auf den OK-Button im SetupCompleteSucess Dialog. Das geht aber leider auch nicht. Die CA wird zwar korrekt aufgerufen, die Pfade zu den Files sind korrekt aber der Shell.run Befehl zum Aufruf eines Command wird nicht ausgeführt.

Was mach ich falsch?

Gruess
Hyper71

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 12 October 2012 - 15:38

Verstehe ich das richtig: Du startest ein VBScript um Shell.run aufzurufen um cmd aufzurufen? Ist das nicht ein bisschen umständlich? Kannst du das InstallUtil nicht direkt aufrufen (als EXE custom action)?

Hyper71

Hyper71
  • Full Members
  • 44 posts

Posted 15 October 2012 - 10:38

Na ja, mag wohl nicht die elegansteste Art zu sein, aber das Problem ist ja nicht das Design sondern, dass die Registrierung während der Installation nicht funktioniert.
Habe nun in der Zwischenzeit eine CA nach deinem Vorschlag (als EXE custom action) erstellt und getestet. Siehe da, es geht! Danke für den Tip.

Jetzt habe ich noch ein letztes Problem, und zwar sollte der Service am Ende der Installation eigentlich laufen, das tut er aber nicht. Das Server.exe File liegt in einer eigenen Componente und darin habe ich unter Advanced Settings/Services einen neuen Service erstellt. Darin habe ich unter Cortol Settings ein neuen Event erstellt:

Operation Time
Install Start = Yes
Install Stop = No
Install Delete = No
Uninstall Start = No
Uninstall Stop = Yes
Uninstall Delete = Yes

Da dies früher mal so funktioniert hat aber heute aus unerklärlichen Gründen auf einmal nicht mehr, habe ich zusätzlich eine VBScript Custom Action erstellt welche den Service am ende der Installation starten soll.

code snippet:
For Each objService in colListOfServices
objService.StartService()
Next

Auch dieses Script funktioniert nicht, der Service wird nicht gestartet.
Was mach ich da noch falsch?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 15 October 2012 - 16:15

Wenn des Service das Asssembly braucht, kann man ihn glaube ich erst nach InstallFinalize starten. Wo liegt denn deine Custom Action?
Ich gehe mal davon aus, dass das manuelle starten nach Ende der Installation funktioniert, oder?

Hyper71

Hyper71
  • Full Members
  • 44 posts

Posted 18 October 2012 - 10:25

Sorry, dass ich erst jetzt schreibe, musste eine kleine Grippe kurieren.

Meine Custom Action liegt nach InstallFinalize, startet den Service aber nicht. Nach der Installation kann ich den Service manuell problemlos starten.

Hab mal noch versucht mittels EXE Custom Action die net.exe auszuführen mit dem Argument start "Service Name". Diese CA bringt einen WindowsInstaller Fehler und die Installation wird abgebrochen.

Was könnte ich noch probieren um den Service starten zu können?

ali

ali
  • Full Members
  • 1,008 posts

Posted 18 October 2012 - 11:25

hallo,
könnte auch an der Einstellung deiner CA liegen. Hast du deine CA auf Immediate Execution und Asynchronous (No wait for completion) eingestellt?
Wenn nicht, probiere es doch mal aus.

Hyper71

Hyper71
  • Full Members
  • 44 posts

Posted 18 October 2012 - 16:02

hallo ali
habe deinen Voschlag mal übernommen. Die Installation läuft nun ohne Fehler durch. Der Service läuft zwar immer noch nicht aber das ist auf jedenfall ein interessanter Input. Danke.

Habe die Componente, in der die Server.exe liegt, gelöscht und nochmals neu erstellt. Nun verhält sich der Service wieder anders, eher schlechter als davor. Werde das Problem mal intern mit der Entwicklung unter die Lupe nehmen und warte solange mit dem Setup. Melde mich dann wieder...

Danke auf jedenfall für eure Hilfe.

Hyper71

Hyper71
  • Full Members
  • 44 posts

Posted 30 October 2012 - 08:04

Also, wie versprochen und der Vollständigkeit halber hier nun die Lösung meines Problems. Nach unzählingen Tests haben wir herausgefunden, dass ein Lizenz-File an zwei Orten auf dem Zielsystem installiert werden muss und nicht nur an einem wie das bis jetzt der Fall war.
Jetzt läuft der Service nach der Installation und zwar ohne Hilfe einer Custom Action. Die Einstellungen wie ich sie in der Componente vorgenommen habe genügen vollkommen. biggrin.gif



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 02 November 2012 - 10:01

Danke für die Rückmeldung. Nach so einem Fehler kann man echt lange suchen...