Я не нашел в справке исчерпывающего объяснения разницы между Shellexec и Exec. Является ли
Shellexec('','program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
эквивалентом
Exec('program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
при работе с exe-файлами? Конечно, когда я хочу выполнить файл, отличный от exe или пакетного, используйте Shellexec.
Иногда, однако, я не могу заставить мою инструкцию работать правильно ни с помощью Shellexec, ни с помощью Exec. Единственное решение, которое всегда работает, — это написать пакетный файл и запустить его через shellexec. Лично мне это решение не нравится, потому что мне приходится иметь дело с временным файлом, и я не доверяю полученному коду результата. Теперь мне придется вернуться к решению с пакетным файлом, потому что я не знаю, как заставить эту инструкцию работать :(, ошибка заключается в том, что она вызывает сбой инструкции, если целевой файл еще не присутствует, в то время как в команде Подскажите, инструкция работает, даже если файл назначения не существует ).
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);
Я работаю на Windows 7 64 бит, программа (установщик Inno Setup )запускается с правами администратора