lib*_*lib 5 inno-setup shellexecute exec
我没有在帮助中找到Shellexec和Exec之间差异的详尽解释.是个
Shellexec('','program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
Run Code Online (Sandbox Code Playgroud)
相当于
Exec('program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
Run Code Online (Sandbox Code Playgroud)
使用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);
Run Code Online (Sandbox Code Playgroud)
我正在使用Windows 7 64位,该程序(Inno安装程序安装程序)以管理权限运行
在Inno Setup的那种情况下,这两个电话几乎完全相同.但是,如果设置在最低权限运行,并且您尝试运行需要提升的进程,ShellExec()则会允许它提示但是Exec()会失败.
当传递单个整体命令行,传递不可执行文件或使用除以外的动词时,两者之间会出现差异"open".
请注意,这两个函数都不允许您运行命令解释程序提供的命令或操作,如重定向操作符(... > ...).需要传递这些命令{cmd}才能运行.
这是一些空气代码:
mysqldump := 'C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysqldump.exe';
params := '-uroot -ppassword myschema';
dumpfile : = 'C:\myappdir\backup\newbackup.sql';
command := AddQuotes(mysqldump) + ' ' + params + ' >' + AddQuotes(dumpfile);
Exec(ExpandConstant('{cmd}'), '/C ' + command, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14900 次 |
| 最近记录: |