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.
Batchdateien aufrufen?
Started by
mimymahi
, Nov 15 2006 15:05
9 replies to this topic
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
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
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.
Außerdem solltest du "Exitcode ignorieren" angeben.
Stefan Krüger
InstallSite.org twitter facebook
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?
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?
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.
Stefan Krüger
InstallSite.org twitter facebook
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!
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!
Posted 04 April 2007 - 17:50
Dann nimm doch Verzeichnis und gib den [SystemFolder] an, dort liegt cmd.exe doch normalerweise.
Stefan Krüger
InstallSite.org twitter facebook
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?
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?
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
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
Edited by Marsyas, 18 April 2007 - 08:09.
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
http://forum.install...7&hl=batchdatei