Применить условие загрузки файла в inno-setup
В своей настройке я даю пользователю возможность решать, какую программу устанавливать, я использую плагин IDP для загрузки программ. Как я могу решить, какие программы загружать в соответствии с выбором пользователя? я имею в виду, как я могу сказать установке загружать / не загружать программу в соответствии с выбором, который пользователь сделал перед началом процесса загрузки?
--Редактировать---
вот что я сделал: у меня есть флажок, для этого флажка я дал следующее условие -
var
SODownload : String;
if MainCB.Checked = True then
begin
SODownload := 'idpAddFile'+#40+#39+'http://askmediabar.download.dmccint.com/Default.ashx?EnvironmentID=3'+#39+#44+ 'ExpandConstant'+#40+#39'{tmp}\MediaAppbyAsk.exe'+#39+#41+#41;
end
else
begin
SODownload := '';
end;
в procedure InitializeWizard();
Я звоню SODownload
вар как так:
//idpAddFile('http://askmediabar.download.dmccint.com/Default.ashx?EnvironmentID=3', ExpandConstant('{tmp}\MediaAppbyAsk.exe'));
ExpandConstant(SODownload);
Но по какой-то причине это не работает!! страница загрузки не загружает этот файл
1 ответ
Первая проблема в том, что вы описали, - это попытка создать строку со строками кода, которые вы пытались расширить с помощью ExpandConstant
функция. Это не будет выполнять ничего, так как ExpandConstant
расширяет только встроенные постоянные шаблоны, а не код, который будет выполняться. Код, который выполняется, должен быть написан непосредственно в скрипте (или встроен препроцессором во время компиляции).
Следующая проблема - это время, когда вы собирались поставить в очередь файл для загрузки. Вы должны определить состояние этого флажка, когда пользователь переходит на следующую страницу, и в то же время ставить в очередь файл для загрузки. Имейте в виду, что Inno Setup является event driven
, это означает, что вы пишете код в обработчиках событий, которые запускаются в зависимости от ввода пользователя (некоторые события запускаются механизмом, а не вводом пользователя, как, например, установка и инициализация формы мастера, деинициализация).
Я не знаю контекст вашего сценария, поэтому я могу предложить вам написать что-то подобное для события, которое запускается, когда пользователь нажимает кнопку " Согласен и установите" с картинки:
if MainCB.Checked then
idpAddFile('http://askmediabar.download.dmccint.com/Default.ashx?EnvironmentID=3', ExpandConstant('{tmp}\MediaAppbyAsk.exe'));