在我的设置中,我让用户能够决定安装哪个程序, 我使用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
var如此:
//idpAddFile('http://askmediabar.download.dmccint.com/Default.ashx?EnvironmentID=3', ExpandConstant('{tmp}\MediaAppbyAsk.exe'));
ExpandConstant(SODownload);
但由于某些原因它无法正常工作!! 下载页面不会下载此文件
答案 0 :(得分:0)
您所描述的第一个问题是尝试使用ExpandConstant
函数尝试扩展的代码行构建字符串。这将不会执行任何操作,因为ExpandConstant
仅扩展内置常量模式,而不是将执行的代码。执行的代码必须直接写在脚本中(或者在编译时由预处理器内联)。
下一个问题似乎是您要将要下载的文件排入队列的时间。当用户移动到下一页时,您应确定该复选框状态,同时还将要下载的文件排入队列。请记住,Inno Setup是event driven
,这意味着您在事件处理程序中编写代码,这些代码根据用户的输入触发(某些事件由引擎触发,而不是由用户输入触发,例如设置和向导表单初始化,取消初始化)。
我不知道你的脚本的上下文,所以我只建议你写这样的事情,当用户按下图片中的同意并安装按钮时触发的事件:
if MainCB.Checked then
idpAddFile('http://askmediabar.download.dmccint.com/Default.ashx?EnvironmentID=3', ExpandConstant('{tmp}\MediaAppbyAsk.exe'));