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

Batchdateien aufrufen?


9 replies to this topic

mimymahi

mimymahi
  • Full Members
  • 9 posts

Posted 15 November 2006 - 15:05

Hallo

Ich habe eine Batchdatei in Custom action gegeben(neue exe\path referencing a directory). Leider bekomme ich die Fehlermeldung:

Error 1721: There is a problem with the Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor. und noch Name von action und ein Pfad :
Location: c:\Programm\.......
Ich habe folgendes geschrieben
* Filename &Commandline Name von Batch datei /c [INSTALLDIR] parameter Z.B..[INSTALLDIR]ISS\$db\writest.cmd /c [INSTALLDIR]ISS\DLC
*Working Directory: SUPPORT
*Install Exec Sequence: After Installfile

kann mir jemand helfen ?
Danke

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 15 November 2006 - 15:13

Die Custom Action unterstützt nur ausführbare Dateien (EXE), eine Batchdatei ist nicht direkt ausführbar. Deshalb musst du als auszuführendes programm cmd.exe angeben und deine Batchdatei als Kommandozeilenparameter angeben.
Außerdem solltest du "Exitcode ignorieren" angeben.

mimymahi

mimymahi
  • Full Members
  • 9 posts

Posted 15 November 2006 - 15:56

Danke Stefan.

L.G

Mimiy

kukumar

kukumar
  • Full Members
  • 80 posts

Posted 01 April 2007 - 15:25

Ich habe versucht nach diesen Anleitungen eine Bacth Datei aufzurufen mit HIlfe der Benutzerdefinierten CA.

DOrt habe ich gesagt, dass sich cmd.exe in den Binärdaten befindet.

Programdateiname lautet: <SystemFolder>\cmd.exe
Befehlzeile: cmd.exe /c [SourceDir]CopyRemoteParameterFiles.bat

Ich kann während der Installation nicht sehen dass cmd aufgerufen wird.

Was ist falsch?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 03 April 2007 - 01:24

cmd.exe in den Binärdaten? Du solltest besser die cmd.exe nehmen die auf dem Betriebssystem vorhanden ist.

kukumar

kukumar
  • Full Members
  • 80 posts

Posted 03 April 2007 - 14:11

Stefan, du hast recht. Das hatte ich auch vor gehabt aber beim erstellen der CA werde ich beim Speicherort gefragt ob die cmd Datei:

In Binärdaten,
In Eigenschaftstabelle,
In Verzeichnistabelle gespeichert ist oder
mit dem Produkt instaliert wird.

Was nehme ich dann da? Da hat gar nix mit dem Zielsystem zu tun!

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 04 April 2007 - 17:50

Dann nimm doch Verzeichnis und gib den [SystemFolder] an, dort liegt cmd.exe doch normalerweise.

kukumar

kukumar
  • Full Members
  • 80 posts

Posted 16 April 2007 - 23:57

Stefan,

egal ob ich cmd.exe in Binärfiles oder Suchpfad habe da passiert nix. (Siehe aufruf oben).

Ähnlich ist es mit der Verwendung von kernel32.dll (Rufen einer Standard-DLL). Ich möchte da Funktionen wie OpenEventA, SetEvent und CloseHandle verwenden aber auch hier passiert rein gar nix. Die intialisierten Variable/Werte bleiben stets unverändert.

Ich weiß nicht wo das Problem liegt. In der Doku gibt es auch leider keine BEsipiele. Wo könnte man ansonsten ein lauffähiges Beispiel anschauen?

Ich frage mich ob es nicht besser ist InstallScript dafür zu verwenden, da kann ich mich verlassen das es funktioniert. DIe Frage ist nur warum es dann die MSI-benutzerdefinierte Aktionen gibt?



Marsyas

Marsyas
  • Full Members
  • 31 posts

Posted 18 April 2007 - 08:06

Hallo kukumar,

her ein kleines Beispiel für eine MessageBox. Dafür folgende Settings im Custom Action Wizard vornehmen:

1) Action Type
Type: Call a function in a standard dynamic-link library
Location: Destination machine search path

2) Function Definition
Name: MessageBoxA
Arguments (jeweils Type, Source, Value):
Handle, Constant, MsiWindowHandle
STRING, in Property, UserErrorMessage
STRING, in Property, ProductName
NUMBER, Constant, 64
Return Type: void

3) Action Parameters
Source: user32.dll (mit Browse die User32.dll im System32 Verzeichnis auswählen)
Target: void user32::MessageBoxA(in HANDLE=MsiWindowHandle, in STRING=[UserErrorMessage], in STRING=[ProductName], in NUMBER=64)
(wird aber automatisch ausgefüllt. Einfach hier reinkopieren füllt auch die [umständliche] Liste im vorhergehden Dialog)

4) Additional Options
[x] Wait for action to finish executing
[x] Ignore custom action return code

5) Respond Options
In-Script Execution: Immediate Execution
Execution Scheduling: Always execute

6) Insert into Sequence
Absent

Dann die Custom Action wie gewohnt in einem Dialog aufrufen oder in die Sequenz hängen. Der Text der Messagebox muss vorher im UserErrorMessage Property gespeichert werden.

Grüße

Marsyas

Attached Images

  • CustomAction.gif

Edited by Marsyas, 18 April 2007 - 08:09.


elpuGo!

elpuGo!
  • Full Members
  • 26 posts

Posted 18 April 2007 - 13:27

ich glaube wenn's sich um den aufruf einer batchdatei handelt könnte dieser thread sehr hilfreich sein:
http://forum.install...7&hl=batchdatei