首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >InnoSetup,如果选择了任何任务,则阻止安装

InnoSetup,如果选择了任何任务,则阻止安装
EN

Stack Overflow用户
提问于 2015-01-06 19:36:38
回答 1查看 749关注 0票数 2

我的inno脚本有两个任务:

代码语言:javascript
复制
[Tasks]
Name: client; Description: Install FTP client
Name: server; Description: Install FTP server

如果选择了任何任务,我想以非侵入性的方式拒绝安装,对于non.intrusive,我的意思是在选中两个任务之一时启用/禁用"next“按钮,没有广告消息框。

我不确定innosetup是否有一个参数或一个"check“函数来以一种简单的方式来完成这个任务

我怎么能做到呢?

EN

Stack Overflow用户

回答已采纳

发布于 2015-01-06 20:35:03

在Inno安装程序中,没有办法以本地方式完成您想做的事情。您需要自己从代码中执行此操作。

您可以在这里使用WizardSelectedTasks函数进行一些欺骗。此函数返回以逗号分隔的选定任务名称(或描述)列表,因此在未选择任务时返回空字符串。其余内容涉及绑定任务列表OnClickCheck事件,更新next按钮启用状态并编写一段代码来初始化next按钮状态:

代码语言:javascript
复制
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Tasks]
Name: client; Description: Install FTP client
Name: server; Description: Install FTP server

[Code]
// helper function
function IsAnyTaskSelected: Boolean;
begin
  Result := WizardSelectedTasks(False) <> '';
end;

// event handler for setting the next button initial state when
// entering the tasks page
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectTasks then
    WizardForm.NextButton.Enabled := IsAnyTaskSelected;
end;

// method of the task list check click event
procedure TasksListClickCheck(Sender: TObject);
begin
  WizardForm.NextButton.Enabled := IsAnyTaskSelected;
end;

procedure InitializeWizard;
begin
  WizardForm.TasksList.OnClickCheck := @TasksListClickCheck;
end;
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27805898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档