我需要在Inno Setup启动之前或“select directory”页面之前将文件复制到一个文件夹.我希望从安装程序复制此文件,而不是从外部源复制,如果有人可以举例.
我使用这个代码:
function NextButtonClick(PageID: Integer): Boolean; begin Result := True; if (PageId = wpWelcome) then begin FileCopy( ExpandConstant('file.exe'),ExpandConstant('{reg:HKCU\SOFTWARE\XXX,InstallPath}\file.exe'),false); end; end;
我希望有人用一个例子给出一个更好的主意.
谢谢你们.
解决方法
要在任何需要的时候从安装档案中提取文件,您必须使用
ExtractTemporaryFile
程序.此过程将文件从
[Files]
部分提取到安装应用程序使用的临时目录,您可以在
{tmp}
常量指定的路径上找到该目录.然后,您只需通过展开提到的常量,将此类提取的文件从那里复制到目标目录.
如果要在初始化设置时执行某些操作,但在创建向导表单之前,请使用InitializeSetup
事件功能.请注意,您甚至可以从该功能退出设置,而无需查看向导表单,例如如果您要复制的文件非常重要.这是一个示例代码,但首先看一下commented version
的一些细节:
[Code] function InitializeSetup: Boolean; begin Result := True; ExtractTemporaryFile('File.exe'); if FileCopy(ExpandConstant('{tmp}\File.exe'),InstallPath}\File.exe'),False) then MsgBox('File copying succeeded!',mbInformation,MB_OK) else MsgBox('File copying Failed!',mbError,MB_OK) end;