Ich finde nicht in der Hilfe eine erschöpfende Erklärung des Unterschieds zwischen Shellexec und Exec. Ist derShellexec vs Exec vs Shellexec meine Batch-Datei
Shellexec('','program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
entspricht
Exec('program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
bei der Arbeit mit exe-Dateien? Wenn ich eine andere Datei als exe oder Batch ausführen möchte, verwende Shellexec.
Manchmal kann ich jedoch weder von Shellexec noch von Exec korrekt funktionieren. Die einzige Lösung, die immer funktioniert, ist eine Batch-Datei zu schreiben und über shellexec auszuführen. Persönlich mag ich diese Lösung nicht, weil ich mit einer temporären Datei umgehen muss und ich vertraue dem erhaltenen Ergebniscode nicht. Jetzt muss ich zurück zu der Batch-Datei-Lösung, weil ich nicht weiß, wie man diese Anweisung funktioniert: (Der Fehler ist, dass es die Anweisung schlägt fehl, wenn die Zieldatei nicht bereits vorhanden ist, während in Befehl die Eingabeaufforderung funktioniert, auch wenn die Zieldatei nicht existiert).
mysqldump := 'C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysqldump.exe';
params := '-uroot -ppassword myschema>C:\myappdir\backup\newbackup.sql';
//the destination folder exists, the file newbackup.sql does not exist
Shellexec('',mysqldump,params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode);
Ich arbeite auf Windows 7 64-Bit, das Programm (ein Inno Setup Installer) mit Administratorrechten ausgeführt wird
Auf jeden Fall verwenden, um die '{}' pf32 Konstante anstelle von 'C: \ Program Files (x86)'. Es gibt Ihnen den richtigen Pfad zum 32-Bit-Programmverzeichnis zurück. Ich denke, es könnte die Ursache Ihres Problems sein, aber schwer zu sagen. Sie können auch prüfen, ob die Datei mit der Funktion 'FileExists 'existiert, bevor Sie versuchen, sie auszuführen. – TLama