我看到這個問題在這裏: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