【发布时间】:2012-07-11 21:42:24
【问题描述】:
我在这里看到了这个问题:How to get an output of an Exec'ed program in Inno Setup?
但是我自己不能让它工作,注释掉的代码是我试图让它工作,但我求助于一个 bat 文件,因为我无法让我的重定向工作。 CacheInstanceName 和 CacheInstanceDir 是在别处定义的全局变量:
function CheckCacheExists(): Integer;
var
args: String;
buffer: String;
ResultCode: Integer;
begin
// args := 'qlist ' + CacheInstanceName + ExpandConstant(' nodisplay > {tmp}\appcheck.txt');
// MsgBox(args, mbInformation, MB_OK);
// Exec(CacheInstanceDir + '\bin\ccontrol.exe', 'qlist ' + CacheInstanceName + ExpandConstant(' nodisplay > "{tmp}\appcheck.txt"'), '', SW_SHOW,
ExtractTemporaryFile('checkup.BAT');
Exec(ExpandConstant('{tmp}\checkup.BAT'), CacheInstanceDir + ' ' +
CacheInstanceName + ' ' + ExpandConstant('{tmp}'), '', SW_SHOW,
ewWaitUntilTerminated, ResultCode);
LoadStringFromFile(ExpandConstant('{tmp}\appcheck.txt'),buffer);
if Pos('^', buffer) = 0 then
begin
Result := 0
end
else
begin
Result := 1
end
end;
我做错了什么?
【问题讨论】:
-
附带说明,经过进一步测试,我发现只有第一个参数“qlist”被通过。我一直在努力思考我可能做错了什么,但也许它与重定向无关。此外,我可以在调试器中看到所有变量都已填充,并且它们显然正确显示在消息框中。
-
能否更具体一点,无法正常工作不是描述问题的好方法。您是否尝试检查在您的
ResultCode中返回Exec函数的内容?Exec函数也有一个返回值,如果它失败(返回 False)那么你很可能传递了错误的参数。 -
TLama,你的评论很贴切,所以我在上面评论。