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.
VBScript stored in custom action
Started by
Hyper71
, Oct 12 2012 10:25
8 replies to this topic
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
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
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)?
Stefan Krüger
InstallSite.org twitter facebook
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?
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?
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?
Ich gehe mal davon aus, dass das manuelle starten nach Ende der Installation funktioniert, oder?
Stefan Krüger
InstallSite.org twitter facebook
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?
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?
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.
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.
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.
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.
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.
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.
Posted 02 November 2012 - 10:01
Danke für die Rückmeldung. Nach so einem Fehler kann man echt lange suchen...
Stefan Krüger
InstallSite.org twitter facebook