1

在我的设置中,我让用户能够决定安装哪个程序,我使用 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();我调用SODownloadvar 时:

//idpAddFile('http://askmediabar.download.dmccint.com/Default.ashx?EnvironmentID=3', ExpandConstant('{tmp}\MediaAppbyAsk.exe'));
    ExpandConstant(SODownload);

但是由于某种原因它不起作用!下载页面不下载此文件

在此处输入图像描述

4

1 回答 1

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'));
于 2014-08-18T07:26:36.760 回答