Программирование: Параметры "BeforeInstall" и "AfterInstall"

Существует два необязательных параметра, поддерживаемые всеми секциями, записи которых представляют собой набор параметров, за исключением секций [Languages], [Types], [Components] и [Tasks]. Этими параметрами являются:

BeforeInstall

Определяет имя функции, которая будет вызвана непосредственно перед установкой записи. Эта функция должна быть либо пользовательской и описана в секции [Code], либо одной из поддерживаемых функций.

Может содержать параметры, разделённые запятыми, которые программа установки должна передать в функцию. Допустимыми типами параметров являются String (строковый), Integer (целочисленный) и Boolean (логический). Строковые параметры могут содержать константы. Эти константы не будут автоматически расширены. Если требуется передать расширенную константу, существует одна специальная поддерживаемая функция, которая может быть вызвана из списка параметров: ExpandConstant.

Пример:
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"; BeforeInstall: MyBeforeInstall
Source: "A\MYFILE.TXT"; DestDir: "{app}"; BeforeInstall: MyBeforeInstall2('{app}\A\MYFILE.TXT')   
Source: "B\MYFILE.TXT"; DestDir: "{app}"; BeforeInstall: MyBeforeInstall2('{app}\B\MYFILE.TXT')   
Source: "MYPROG.CHM"; DestDir: "{app}"; BeforeInstall: Log('Before MYPROG.CHM Install')
AfterInstall

Определяет имя функции, которая будет вызвана сразу после установки записи. Эта функция должна быть либо пользовательской и описана в секции [Code], либо одной из поддерживаемых функций.

Может содержать параметры, разделённые запятыми, которые программа установки должна передать в функцию. Допустимыми типами параметров являются String (строковый), Integer (целочисленный) и Boolean (логический). Строковые параметры могут содержать константы. Эти константы не будут автоматически расширены. Если требуется передать расширенную константу, существует одна специальная поддерживаемая функция, которая может быть вызвана из списка параметров: ExpandConstant.

Пример:
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"; AfterInstall: MyAfterInstall
Source: "A\MYFILE.TXT"; DestDir: "{app}"; AfterInstall: MyAfterInstall2('{app}\A\MYFILE.TXT')   
Source: "B\MYFILE.TXT"; DestDir: "{app}"; AfterInstall: MyAfterInstall2('{app}\B\MYFILE.TXT')   
Source: "MYPROG.CHM"; DestDir: "{app}"; AfterInstall: Log('After MYPROG.CHM Install')

Все функции BeforeInstall и AfterInstall не должны иметь возвращаемого значения.

Функция BeforeInstall или AfterInstall не будет вызвана, если программа установки уже определила, что запись не должна быть обработана.

Функция BeforeInstall или AfterInstall в записях секции [Files] с использованием маски файлов, но без флага external, вызывается один раз для каждого файла, который соответствует маске, а не один раз для каждой записи. Используйте CurrentFileName, чтобы проверить, для какого именно файла вызывается функция.

Ниже приведен пример секции [Code], в котором используются функции, указанные выше. Функции CurrentFileName и Log являются поддерживаемыми функциями, и поэтому не включены в эту секцию [Code].

[Code]
procedure MyBeforeInstall();
begin
  MsgBox('Будет установлен MyProg.exe как ' + CurrentFileName + '.', mbInformation, MB_OK);
end;

procedure MyBeforeInstall2(FileName: String);
begin
  MsgBox('Будет установлен ' + FileName + ' как ' + CurrentFileName + '.', mbInformation, MB_OK);   
end;

procedure MyAfterInstall();
begin
  MsgBox('MyProg.exe уже установлен как ' + CurrentFileName + '.', mbInformation, MB_OK);
end;

procedure MyAfterInstall2(FileName: String);
begin
  MsgBox(FileName + ' уже установлен как ' + CurrentFileName + '.', mbInformation, MB_OK);
end;