我看到这个问题在这里:How to get an output of an Exec'ed program in Inno Setup?输入重定向在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”才能通过。我一直在敲打我的脑袋试图想我可能是做错了,但也许它无关重定向。另外,我可以在调试器中看到所有变量都已填充,并且它们显然在消息框中正确显示。 – mcbainpc 2012-07-12 00:52:15
你能更具体一些,*不能让它工作*不是一个很好的方式来描述你的问题。您是否尝试过检查什么在你的'ResultCode'返回'Exec'功能?另外'Exec'函数有一个返回值,如果失败(返回False),那么你很可能会传递错误的参数给它。 – TLama 2012-07-12 00:52:25
TLama,你的评论是适合的,因此我的评论如上。 – mcbainpc 2012-07-12 00:53:24