使用 IDP 下载 .zip 文件:下载 Inno Setup 插件,并解压它们
download .zip files with IDP: Download plugin for Inno Setup, and unpack them
对不起我的英语。
你好
我的安装程序将通过添加“IDP:Inno Setup 下载插件”来下载文件,我遇到了一个问题,因为它们是以 .zip 格式下载的,因此需要解压,是否可以在应用程序的位置解压?它是附加组件还是什么?
请帮忙。
您可以使用您选择的解压工具进行解压。
我倾向于发布“7za”(7zip 的命令行版本),因为我发现它的提取速度非常好(并且比解压缩更好)。
首先,将提取工具集成到安装程序中。
[Files]
Source: ..\utils\unzipza.exe; DestDir: {tmp}; Flags: dontcopy
Source: and some zip files ...
注意 dontcopy
。这不会在正常文件复制阶段将文件复制到用户系统,而是将文件静态编译到安装中。
其次,您可以在 [Code]
部分添加一些 DoUnzip
辅助方法。
它将使用临时文件夹中的工具。
procedure DoUnzip(source: String; targetdir: String);
var
unzipTool: String;
ReturnCode: Integer;
begin
// source contains tmp constant, so resolve it to path name
source := ExpandConstant(source);
unzipTool := ExpandConstant('{tmp}za.exe');
if not FileExists(unzipTool)
then MsgBox('UnzipTool not found: ' + unzipTool, mbError, MB_OK)
else if not FileExists(source)
then MsgBox('File was not found while trying to unzip: ' + source, mbError, MB_OK)
else begin
if Exec(unzipTool, ' x "' + source + '" -o"' + targetdir + '" -y',
'', SW_HIDE, ewWaitUntilTerminated, ReturnCode) = false
then begin
MsgBox('Unzip failed:' + source, mbError, MB_OK)
end;
end;
end;
第三,解压缩工具,然后是 zips,然后只需对 zips 使用 DoUnzip() 方法。 这些命令用于 [Code]
部分。
// extract 7za to temp folder
ExtractTemporaryFile('7za.exe');
// extract the zip to the temp folder (when included in the installer)
// skip this, when the file is downloaded with IDP to the temp folder
//ExtractTempraryFile('app.zip);
targetPath := ExpandConstant('{tmp}\');
// unzip the zip in the tempfolder to your application target path
DoUnzip(targetPath + 'app.zip', ExpandConstant('{app}'));
对不起我的英语。
你好 我的安装程序将通过添加“IDP:Inno Setup 下载插件”来下载文件,我遇到了一个问题,因为它们是以 .zip 格式下载的,因此需要解压,是否可以在应用程序的位置解压?它是附加组件还是什么? 请帮忙。
您可以使用您选择的解压工具进行解压。
我倾向于发布“7za”(7zip 的命令行版本),因为我发现它的提取速度非常好(并且比解压缩更好)。
首先,将提取工具集成到安装程序中。
[Files]
Source: ..\utils\unzipza.exe; DestDir: {tmp}; Flags: dontcopy
Source: and some zip files ...
注意 dontcopy
。这不会在正常文件复制阶段将文件复制到用户系统,而是将文件静态编译到安装中。
其次,您可以在 [Code]
部分添加一些 DoUnzip
辅助方法。
它将使用临时文件夹中的工具。
procedure DoUnzip(source: String; targetdir: String);
var
unzipTool: String;
ReturnCode: Integer;
begin
// source contains tmp constant, so resolve it to path name
source := ExpandConstant(source);
unzipTool := ExpandConstant('{tmp}za.exe');
if not FileExists(unzipTool)
then MsgBox('UnzipTool not found: ' + unzipTool, mbError, MB_OK)
else if not FileExists(source)
then MsgBox('File was not found while trying to unzip: ' + source, mbError, MB_OK)
else begin
if Exec(unzipTool, ' x "' + source + '" -o"' + targetdir + '" -y',
'', SW_HIDE, ewWaitUntilTerminated, ReturnCode) = false
then begin
MsgBox('Unzip failed:' + source, mbError, MB_OK)
end;
end;
end;
第三,解压缩工具,然后是 zips,然后只需对 zips 使用 DoUnzip() 方法。 这些命令用于 [Code]
部分。
// extract 7za to temp folder
ExtractTemporaryFile('7za.exe');
// extract the zip to the temp folder (when included in the installer)
// skip this, when the file is downloaded with IDP to the temp folder
//ExtractTempraryFile('app.zip);
targetPath := ExpandConstant('{tmp}\');
// unzip the zip in the tempfolder to your application target path
DoUnzip(targetPath + 'app.zip', ExpandConstant('{app}'));