You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.6 KiB
89 lines
2.6 KiB
{ Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing for details. }
|
|
|
|
function CPackGetCustomInstallationMessage(Param: String): String;
|
|
begin
|
|
Result := SetupMessage(msgCustomInstallation);
|
|
end;
|
|
|
|
{ Downloaded components }
|
|
#ifdef CPackDownloadCount
|
|
const
|
|
NO_PROGRESS_BOX = 4;
|
|
RESPOND_YES_TO_ALL = 16;
|
|
var
|
|
CPackDownloadPage: TDownloadWizardPage;
|
|
CPackShell: Variant;
|
|
|
|
<event('InitializeWizard')>
|
|
procedure CPackInitializeWizard();
|
|
begin
|
|
CPackDownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), nil);
|
|
CPackShell := CreateOleObject('Shell.Application');
|
|
end;
|
|
|
|
<event('NextButtonClick')>
|
|
function CPackNextButtonClick(CurPageID: Integer): Boolean;
|
|
begin
|
|
if CurPageID = wpReady then
|
|
begin
|
|
CPackDownloadPage.Clear;
|
|
CPackDownloadPage.Show;
|
|
|
|
#sub AddDownload
|
|
if WizardIsComponentSelected('{#CPackDownloadComponents[i]}') then
|
|
#emit "CPackDownloadPage.Add('" + CPackDownloadUrls[i] + "', '" + CPackDownloadArchives[i] + ".zip', '" + CPackDownloadHashes[i] + "');"
|
|
#endsub
|
|
#define i
|
|
#for {i = 0; i < CPackDownloadCount; i++} AddDownload
|
|
#undef i
|
|
|
|
try
|
|
try
|
|
CPackDownloadPage.Download;
|
|
Result := True;
|
|
except
|
|
if not CPackDownloadPage.AbortedByUser then
|
|
SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbCriticalError, MB_OK, IDOK);
|
|
|
|
Result := False;
|
|
end;
|
|
finally
|
|
CPackDownloadPage.Hide;
|
|
end;
|
|
end else
|
|
Result := True;
|
|
end;
|
|
|
|
procedure CPackExtractFile(ArchiveName, FileName: String);
|
|
var
|
|
ZipFileName: String;
|
|
ZipFile: Variant;
|
|
Item: Variant;
|
|
TargetFolderName: String;
|
|
TargetFolder: Variant;
|
|
begin
|
|
TargetFolderName := RemoveBackslashUnlessRoot(ExpandConstant('{tmp}\' + ArchiveName + '\' + ExtractFileDir(FileName)));
|
|
ZipFileName := ExpandConstant('{tmp}\' + ArchiveName + '.zip');
|
|
|
|
if not DirExists(TargetFolderName) then
|
|
if not ForceDirectories(TargetFolderName) then
|
|
RaiseException(Format('Target path "%s" cannot be created', [TargetFolderName]));
|
|
|
|
ZipFile := CPackShell.NameSpace(ZipFileName);
|
|
if VarIsClear(ZipFile) then
|
|
RaiseException(Format('Cannot open ZIP file "%s" or does not exist', [ZipFileName]));
|
|
|
|
Item := ZipFile.ParseName(FileName);
|
|
if VarIsClear(Item) then
|
|
RaiseException(Format('Cannot find "%s" in "%s" ZIP file', [FileName, ZipFileName]));
|
|
|
|
TargetFolder := CPackShell.NameSpace(TargetFolderName);
|
|
if VarIsClear(TargetFolder) then
|
|
RaiseException(Format('Target path "%s" does not exist', [TargetFolderName]));
|
|
|
|
TargetFolder.CopyHere(Item, NO_PROGRESS_BOX or RESPOND_YES_TO_ALL);
|
|
end;
|
|
|
|
#endif
|