【发布时间】:2013-11-18 15:38:22
【问题描述】:
在我的任务部分下
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; \
GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "installFolder"; Description: "Install project folder."; \
GroupDescription:" folder";
Files 部分是这个特定的文件夹
Source: "C:\\Output\LEA\*.*"; DestDir: {code:GetDataDir}; \
Flags: createallsubdirs recursesubdirs ignoreversion;
我的目标是测试选中按钮,然后有一个窗口询问安装文件夹的目录。
if WizardForm.TasksList.Checked[3] then
GetDataDir;
这可以在不需要创建页面或一页获取目录的情况下完成吗?
另外,这是处理额外文件的好方法吗?这些文件是可选的并且将安装到与默认{app} 位置不同的位置?
到目前为止,对我来说令人困惑的部分是当它全部编译时,GetDataDir 在页面之前被调用以选择任务。所以我选择了我的目录,然后我被问到是否要安装它。我不知道如何让GetDataDir 之后发生。
【问题讨论】:
-
OT:您可以使用
IsTaskSelected函数来检查某个任务是否被选中。关于其余的;我有点迷失了你的目标是什么。是的,您可以在GetDataDirgetter 函数中指定您想要的任何目录;不需要创建用于指定目录的自定义页面。是的,这就是在运行时更改目标目录的方法。 -
进行了更新。本质上,我的 GetdataDir 是在我做出额外任务选择之前而不是之后被调用的。
-
您的
GetDataDirgetter 可能会被多次调用,但恕我直言,它不应该在任务选择页面之前被调用。但是,你甚至不需要对它做任何事情。您所需要的只是在安装这些文件之前评估该值。这就是 Inno Setup 为您所做的。在任何情况下,都不要手动调用GetDataDirgetter(因为您不需要),也不要在此处执行任何操作,例如创建窗口、页面或类似内容。只需从它返回要传递给脚本入口参数的值。这是{code:}getter 函数的唯一用途。