我最近从压缩Source:
目录切换到[Files]
下载/解压它们,然后使用标志将它们复制到{tmp}
我的目录中,但由于某种原因,只有文件夹和子文件夹被复制,其中的实际文件(.png 文件)并没有与它们一起复制。DestDir:
external
我不知道为什么会发生这种情况,在切换之前它运行良好。
[文件]
Source: "{tmp}\pack1\Dead by Daylight\DeadByDaylight\Content\UI\Icons\"; DestDir: "{app}"; Components: pack1; Flags: ignoreversion recursesubdirs createallsubdirs external
Source: "{tmp}\pack2\Dead by Daylight\DeadByDaylight\Content\UI\Icons\"; DestDir: "{app}"; Components: pack2; Flags: ignoreversion recursesubdirs createallsubdirs external
[代码]⠀(很长,抱歉)
{ —————————— Extraction Function ———————————————————————————————————————— }
const
NO_PROGRESS_BOX = 4;
RESPOND_YES_TO_ALL = 16;
procedure UnZip(ZipPath, FileName, TargetPath: string);
var
Shell: Variant;
ZipFile: Variant;
Item: Variant;
TargetFolder: Variant;
begin
Shell := CreateOleObject('Shell.Application');
ZipFile := Shell.NameSpace(ZipPath);
if VarIsClear(ZipFile) then
RaiseException(Format('Cannot open ZIP file "%s" or does not exist', [ZipPath]));
Item := ZipFile.ParseName(FileName);
if VarIsClear(Item) then
RaiseException(Format('Cannot find "%s" in "%s" ZIP file', [FileName, ZipPath]));
TargetFolder := Shell.NameSpace(TargetPath);
if VarIsClear(TargetFolder) then
RaiseException(Format('Target path "%s" does not exist', [TargetPath]));
TargetFolder.CopyHere(Item, NO_PROGRESS_BOX or RESPOND_YES_TO_ALL);
end; // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
{ —————————— Download Progress ———————————————————————————————————————— }
var
DownloadPage: TDownloadWizardPage;
function OnDownloadProgress(const Url, FileName: String; const Progress, ProgressMax: Int64): Boolean;
begin
if Progress = ProgressMax then
Log(Format('Successfully downloaded file to {tmp}: %s', [FileName]));
Result := True;
end; // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
{ —————————— Setup Wizard ———————————————————————————————————————— }
procedure InitializeWizard();
begin
{ Download Page }
DownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), @OnDownloadProgress);
//DownloadPage.ShowBaseNameInsteadOfUrl := True; //Not working for some reason? Inno Setup 6.2.2*
end; // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
{ —————————— Download Handling ———————————————————————————————————————— }
function NextButtonClick(CurPageID: Integer): Boolean;
var
Temp: string;
begin
if CurPageID = wpReady then begin
DownloadPage.Clear;
if WizardIsComponentSelected('pack1') then
DownloadPage.Add('MyDownloadLink1', 'pack1.zip', '');
if WizardIsComponentSelected('pack2') then
DownloadPage.Add('MyDownloadLink2', 'pack2.zip', '');
DownloadPage.Show;
try
try
DownloadPage.Download;
Temp := ExpandConstant('{tmp}');
if WizardIsComponentSelected('pack1') then
UnZip(Temp+'\pack1.zip', 'pack1', Temp);
if WizardIsComponentSelected('pack2') then
UnZip(Temp+'\pack2.zip', 'pack2', Temp);
Result := True;
except
if DownloadPage.AbortedByUser then
Log('Aborted by user.')
else
SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbCriticalError, MB_OK, IDOK);
Result := False;
end;
finally
DownloadPage.Hide;
end;
end else
Result := True;
end; // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
如果还有什么需要,请在评论中告诉我。
命令中缺少通配符
Source
(例如*
)。正确的脚本例如是:
您可以使用
Excludes
参数来排除某些文件类型。有关更多详细信息,请参阅 Inno Setup 帮助(
[Files]
):PS 您的示例非常简单,不包含将文件提取到的脚本
tmp
。请仔细检查文件是否确实存在。