我正在尝试将安装程序复制到临时文件夹,然后从该位置运行它。
这是我想要做的,但到目前为止无济于事。
FileCopy(ExpandConstant('{srcexe}'), ExpandConstant('{tmp}\Setup.exe'), True);
Exec(ExpandConstant('{tmp}\Setup.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
如何将安装程序复制到临时文件,然后从代码部分运行它?
答案 0 :(得分:2)
不知道为什么,但有明确的检查阻止FileCopy
function复制安装程序本身。
请参阅a PathCompare
check in FileCopy
branch of CmnFunc2Proc
in ScriptFunc_R.pas
:
end else if Proc.Name = 'FILECOPY' then begin
ExistingFilename := Stack.GetString(PStart-1);
if PathCompare(ExistingFilename, SetupLdrOriginalFilename) <> 0 then
Stack.SetBool(PStart, CopyFileRedir(ScriptFuncDisableFsRedir,
ExistingFilename, Stack.GetString(PStart-2), Stack.GetBool(PStart-3)))
else
Stack.SetBool(PStart, False);
您当然可以通过致电Windows copy
command来解决这个问题:
Exec(
ExpandConstant('{cmd}'),
Format('/C copy "%s" "%s"', [ExpandConstant('{srcexe}'), ExpandConstant('{tmp}\Setup.exe')]),
'', SW_HIDE, ewWaitUntilTerminated, ResultCode);