Используйте Check
parameter программно решить, если определенный файл должен быть установлен:
[Files]
Source: "Dll1.dll"; DestDir: "{app}"; Check: ShouldInstallDll1
Source: "Dll2.dll"; DestDir: "{app}"; Check: ShouldInstallDll2
[Code]
function ShouldInstallDll1: Boolean;
begin
Result := ???;
end;
function ShouldInstallDll2: Boolean;
begin
Result := ???;
end;
Если это лучше подходит для вашей логики, вы можете также использовать один «проверить» функцию и использовать волшебную переменную CurrentFileName
, чтобы проверить, если файл установлен, это тот, который вы действительно хотите установить:
[Files]
Source: "Dll1.dll"; DestDir: "{app}"; Check: ShouldInstallDll
Source: "Dll2.dll"; DestDir: "{app}"; Check: ShouldInstallDll
[Code]
var
FileToInstall: string;
function InitializeSetup(): Boolean;
begin
FileToInstall := ??? { 'Dll1.dll' or 'Dll2.dll' based on the XML file }
Result := True;
end;
function ShouldInstallDll: Boolean;
var
Name: string;
begin
Name := ExtractFileName(CurrentFileName);
Result := (CompareText(Name, FileToInstall) = 0);
end;
последний подход может быть использован, даже если пакет файлов, используя подстановочные знаки:
[Files]
Source: "*.dll"; DestDir: "{app}"; Check: ShouldInstallDll
Один вопрос за один раз пожалуйста. У вас есть как минимум три вопроса: 1) Анализ XML-файла. 2) Программная установка DLL на основе некоторой конфигурации. 3) Встраивание всех DLL-файлов. –
Только встроенный способ работы с ними – user253008
Итак, у вас есть список DLL для встраивания? Или вы хотите автоматически включать все '* .dll' из какой-то директории, а затем при установке-времени решать, какие файлы устанавливать? –