У меня есть сценарий Ant для компиляции программы Java (которую я хочу распространить), создания нескольких различных исполняемых файлов и файлов настроек (для запуска различных конфигураций), а затем запуска сценария Inno Setup, чтобы собрать все это вместе в установщик. Сценарий Ant имеет множество определенных свойств (в основном имена путей и имен файлов), которые передаются сценарию Inno Setup как константы.
У меня есть один пользователь, которому нужен специальный исполняемый файл. Вместо того, чтобы поддерживать два разных сценария Ant, было легко сделать так, чтобы сценарий Ant всегда создавал исполняемый файл. Но я также установил для поля свойства (fullJRE
) значение 0 или 1 в зависимости от того, нужен исполняемый файл или нет. Свойство передается в Inno Setup как константа, а затем используется в разделе [code] для сохранения / удаления файла в конце. Функция для этого вызывается из процедуры CurStepChanged
с использованием CurStep=ssPostInstall
:
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssPostInstall then
begin
updateINI();
end
end;
function updateINI(): boolean;
begin
if ({#fullJRE} = 0) then
begin
DeleteFile(ExpandConstant('{app}\{#launcherName}.exe'));
end;
end;
Но ярлык для исполняемого файла создается в разделе «Значки» сценария, потому что при запуске [icons] файл все еще существует. Исходя из константы fullJRE
, мне нужно либо сохранить и файл, и ярлык, либо удалить их оба.
Есть ли способ:
- добавить оператор if в раздел
Icons
, чтобы предотвратить создание определенных значков - Удалите лишние ярлыки в конце установки, когда я удаляю файлы
Любая помощь будет оценена. Большое спасибо!
CurStepChanged
код, чтобы мы могли увидеть, как вы относитесь к этому флагу, чем бы он ни был. - person Martin Prikryl   schedule 04.05.2019