Pascal Scripting: ExtractTemporaryFiles

Прототип

function ExtractTemporaryFiles(const Pattern: String): Integer;

Описание

Извлекает файлы, согласно указанной маске Pattern, из секции [Files] во временный каталог. Возвращает количество извлечённых файлов. Для определения расположения временного каталога используйте ExpandConstant('{tmp}').

При закрытии программы установки все извлечённые файлы автоматически удаляются.

Если файлы не извлечены, не найдены или найдены, но не были обработаны из-за наличия параметров MinVersion и/или OnlyBelowVersion, будет вызвано исключение.

Комментарии

Используйте Flags: dontcopy в секции [Files], чтобы указать программе установки пропустить данный файл на этапе копирования файлов.

Если включено непрерывное (solid) сжатие, обязательно перечислите все временные файлы в самом начале секции [Files]. Причиной этого является то, что для получения доступа к произвольному файлу в архиве с непрерывным сжатием, программа установки должна сначала распаковать все предыдущие файлы (во временный буфер в памяти). Это может привести к значительной задержке в работе инсталлятора, если в секции [Files] перед временно используемыми файлами находится множество других файлов.

Пример

[Files]
Source: "Readme.txt"; Flags: dontcopy
Source: "MyProg.exe"; DestDir: "{app}"
Source: "MyProg.chm"; DestDir: "{app}"

[Code]
function InitializeSetup: Boolean;
var
  S: AnsiString;
  ResultCode: Integer;
begin
  // Показываем содержимое Readme.txt (не Unicode) в сообщении
  ExtractTemporaryFiles('{tmp}\Readme.txt');
  if LoadStringFromFile(ExpandConstant('{tmp}\Readme.txt'), S) then
  begin
    MsgBox(S, mbInformation, MB_OK);
  end;

  // Извлекаем все файлы MyProg и запускаем её.
  // Заметьте, константа {app} не расширяется.
  ExtractTemporaryFiles('{app}\MyProg.*');
  ExecAsOriginalUser(ExpandConstant('{tmp}\')+'{app}\MyProg.exe', '', '',
    SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);

  Result := True;
end;

См. также:

ExtractTemporaryFile