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

Ausführen einer CUSTOM ACTION


14 replies to this topic

heikstar

heikstar
  • Members
  • 6 posts

Posted 21 September 2005 - 12:40

Hallo zusammen,

ich habe mir gerade mal Install Shield 11 Pro zum testen runtergeladen und versuche ein MSI-Paket zu erstellen, was einige Dateien kopiert und zum Abschluß ein Batch ausführt. Diese Batch File wurde mit dem Installer nach C:\Programme\Mein Test\ kopiert und heisst test.bat.

Dann habe ich versucht eine CUSTOM ACTION zu erstellen, die diese nach dem Kopiervorgang aufruft.

Als Working Directory hab ich den WindowsFolder angegeben und als FILENAME & Command line
QUOTE
\system32\cmd.exe "C:\Programme\Mein Test\test.bat"
.

Nach dem Aufruf funktioniert das mit dem Batch aber nicht. Zumindest die Daten sind da, wo ich sie haben will.

Kann mir also jemand erklären, wie ich dass hinbekomme ? hab gerade erst damit angefangen und komm halt nicht weiter...

Vielen Dank schonmal.

MfG

HeikStar

ali

ali
  • Full Members
  • 1,008 posts

Posted 21 September 2005 - 13:45

nachdem was du geschrieben hast, müsste dein Aufruf so aussehen:

Arbeitsverzeichnis: SystemFolder
Filename: cmd.exe "[TEST]test.bat"

wofür TEST für die Verzeichnisproperty steht die auf das Verzeichnis verweist wo die bat Datei hin kopiert wird. Das siehst du in der Komponentenansicht.

heikstar

heikstar
  • Members
  • 6 posts

Posted 21 September 2005 - 14:40

Ist in dem Fall [TEST] nicht das selbe wie [INSTALLDIR] ???

ali

ali
  • Full Members
  • 1,008 posts

Posted 21 September 2005 - 14:47

wenn INSTALLDIR auf C:\Programme\Mein Test\ zeigt dann ja. Wenn nicht musst du in Setup-Design in der Komponente schauen, in die du die test.bat eingehängt hast. Die Property steht in geschweiften Klammern unter "Ziel" also: zb {TEST} diese Property musst du dann in eckigen Klammern [TEST] in der CustomAction verwenden. Zur Laufzeit wird diese dann aufgelöst. Achte darauf das zwischen [TEST] und test.bat kein backslash steht. Also [TEST]test.bat oder [INSTALLDIR]test.bat.

Edited by ali, 21 September 2005 - 14:53.


heikstar

heikstar
  • Members
  • 6 posts

Posted 21 September 2005 - 15:03

Ok, das mit den Einstellungen hab ich so gemacht, aber er ruft sie nicht auf.
Kann das ggf. noch an den Einstellungen der Custom ACTION liegen ?

Da scheien für mich folgende Einträge von Bedeutung:

Execution Scheduling
Install UI Sequenze
Install EXEC Sequenze


Bei mir steht da folgendes drin:

Execution Scheduling: Execute only if running on client after UI Sequenze
Install UI Sequenze: After Migrate FeatureStates
Install EXEC Sequenze: After PublishFeature.

Kann es sein das da der Fehler liegt ?

***MAN IST DAS PEINLICH.... TUT MIR LEID DAS ICH MIT SO FRAGEN NERVEN MUSS***

ali

ali
  • Full Members
  • 1,008 posts

Posted 21 September 2005 - 15:18

Macht doch nix:

Naja, ich habe die deutsche Version von IS und weiss nicht genau was da im englischen steht musst du halt mal kurz übersetzen.
Im allgemeinen müsste das mit den Einstllungen funktionieren

Rückgabeverarbeitung: Synchron (Exitcode Ignorieren)
In Script Ausführung: sofortige Ausführung
Ausführungsplanung : immer ausführen -> das musst du schon mal ändern.

wenns in der UI sequenz (Benutzeroberfläche) ausgeführt werden soll, dann hängs mal nach Cost Finalize ein.

wenns dann nicht geht musst du halt mal loggen:
setup.exe /v"/L*V c:\temp\msi.log"

(ich gehe mal davon aus das die bat Datei nur zum testen ausgeführt werden soll, live ist sowas glaube ich gar nicht notwendig da man alles mit CustomAction oder kleinem Script machen kann)

Edited by ali, 21 September 2005 - 15:25.


heikstar

heikstar
  • Members
  • 6 posts

Posted 21 September 2005 - 16:06

Hurra, wir kommen voran.

Er ruft zumindest schonmal die cmd.exe auf, nur ohne meine Batch zu starten, und dass wäre mir schon wichtig, da ich diese Batch zum Updaten einer SQL-Datenbank benötige.

Das müsste dann ja an der Command Line liegen. Der Ausführungsplan ist übrigens auf After Finallize eingestellt, also nach dem kopieren der Dateien und vor dem Entfernen der Sicherungsdateien. D.h. dass er die Datei zu dem Zeitpunkt schon an dem Ort hat, woher er sie aufrufen soll, scheint es aber nicht hinzubekommen. Ich habe es mal in der Komponente überprüft, und da ist für die Batch als DESTINATION auch das Verzeichnis [INSTALLDIR] hinterlegt und der Aufruf meiner CUSTOM ACTION ist folgender:

cmd.exe "[INSTALLDIR]test.bat"

ali

ali
  • Full Members
  • 1,008 posts

Posted 21 September 2005 - 16:11

dann sollte man mal wie oben angegeben eine log schreiben um zu sehen ob der Aufruf richtig aufgelöst wird.

heikstar

heikstar
  • Members
  • 6 posts

Posted 21 September 2005 - 16:34

Hmmmm. Anbei die Log-Datei.

Ich habe mal nachgeschaut und kann leider nix genaues finden:

Die Custom Action heist CMD und die zu BatchDatei heist vw.bat.

Danke übrigens für deine lang anhaltende Unterstüzung.

Attached Files

  • Attached File  log.txt   74.55KB   138 downloads


heikstar

heikstar
  • Members
  • 6 posts

Posted 21 September 2005 - 16:34

und teil 2 des Logs

Attached Files

  • Attached File  log2.txt   34.85KB   226 downloads


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 21 September 2005 - 20:44

Das mit den Einstellungen der Custom Action und der sequenzierung nach InstallFinalze passt schon ganz gut. Aber ich glaube, dein Kommandozeile in der Custom Action muss lauten:
cmd.exe /c "[TEST]test.bat"

Besser wäre natürlich ein VBS anstatt ein BAT (dann brauchst du kein cmd.exe und es kommt keine DOS-Box hoch).

Gibt es einen bestimmten Grund warum du nicht die SQL-Ansicht verwendest, um dein SQL-Skript auszuführen?

elpuGo!

elpuGo!
  • Full Members
  • 26 posts

Posted 14 March 2007 - 11:41

hallo zusammen.
ich habe das selbe problem wie heikstar nur benutze ich devstudio 9.
ich gehe wie in diesem thread beschrieben vor. doch die batchdatei wird nicht ausgeführt. bin schon am verzweifeln und glaube schon an einen bug in
devstudio 9.
hier nochmal meine schritte:
benutzerdefinierte aktionen -> dort neue exe und wähle "pfad verweist auf verzichnis". arbeitsverzeichnis ist SystemFolder. unter Dateiname & Befehlszeile steht bei mir cmd.exe /c "[_CG]dummy.bat". das _CG in eckigen klammern stammt aus dem komponenteziel in der die batchdatei liegt, sollte also richtig sein.
Rückgabeverarbeitung: syncron (exit code ignorieren
In-Script-Ausführung: Sofortige Ausführung
Ausführungsplanung: Immer ausführen

danach hab ich die custom action nach InstallFinalize sequenziert.

ausgeführt wird die batchdatei dennoch nicht.
ich weiss nciht mehr weiter...

Edited by elpuGo!, 14 March 2007 - 11:43.


elpuGo!

elpuGo!
  • Full Members
  • 26 posts

Posted 14 March 2007 - 12:03

zusatz -->
wenn ich unter rückgabeverarbeitung synchron (exit-code prüfen) einstelle
erscheint am ender der installation die meldung:

Error 1722. There is a problem with this windows installer package. A program run as part of the setup did not finish as expected. contact your support personnel
or package vendor.

da ich der support bin ;-) und nicht weiter weiss frag ich hier...

ali

ali
  • Full Members
  • 1,008 posts

Posted 14 March 2007 - 12:15

Hallo elpugo,
du solltest sicherheitshalber auch mal ein installationslog machen wie oben beschrieben. In dem Log suchst du dann nach dem Property _CG, du solltest dann dieses Property finden mit dem zugewiesenen Pfad, -> überprüfen.
Steht das Property wirklich mit einem "_" im Ziel bei der Koponentenansicht?

elpuGo!

elpuGo!
  • Full Members
  • 26 posts

Posted 14 March 2007 - 14:19

danke für die schnelle antwort. hab den fehler aber finden können.

das arbeitsverzeichnis darf nicht SystemFolder heißen sondern dort muss das komponentenziel rein. in meinem fall _CG. das läßt sich dort auch per combobox auswählen. und da cmd.exe eh überall bekannt ist muss bei dateiname & befehlszeile cmd.exe /c dummy.bat ohne jegliche anführungszeichen rein.
damit funktioniert es tadellos...