Inno Setup中控件的创建及事件响应

来源:互联网 发布:单反推荐 知乎 编辑:程序博客网 时间:2024/05/28 04:55

最近我们公司开发的产品由于需要添加开机自启动项,注册表修改的一系列的系统认为的不安全操作,因此我们的产品在安装有360的系统会有一系列的提示,故需要将我们的产品添加至360信任程序,由于我们的产品在添加自启动项时没有提示信息,被拒绝了。所以在我们的产品安装包的安装过程中需要增加同意自启动项的复选框。我们的安装包是用Inno Setup进行打包的,我在编写的时候没有找到太多这一块的资料,所以就简单的描述一下我的认识,如有不对之处,还望指正。

InitializeWizard()此方法为初始化安装向导,就如MFC中的OnInitDialog()方法,初始化时会执行此方法中的内容。


在安装向导界面中增加复选框的代码如下:

[Code]

procedure ExitProcess(uExitCode: UINT); // 利用系统提供的ExitProcess方法
external 'ExitProcess@kernel32.dll stdcall';

var
  InstallHelpCheckBox: TNewCheckBox;

procedure InstallHelpCheckBoxOnClick(Sender: TObject);  // 复选框的事件响应函数,参数必须为此类型
begin
  if (InstallHelpCheckBox.Checked = False) then
  begin
      if MsgBox('您拒绝了添加node.exe开机自启动服务,程序无法正常运行,保持添加点击“是”,取消添加点击“否”', mbInformation, MB_YESNO) = idYES then
        begin
          InstallHelpCheckBox.Checked := True;
        end
  end
end;

procedure InitializeWizard();
begin
  InstallHelpCheckBox := TNewCheckBox.Create(WizardForm);
 
InstallHelpCheckBox.Parent := WizardForm;
  InstallHelpCheckBox.Top := WizardForm.Top - 30;
  InstallHelpCheckBox.Left := WizardForm.Left - 220;
  InstallHelpCheckBox.Width := WizardForm.Width -10;
  InstallHelpCheckBox.Caption := '同意添加node.exe开机自启动服务';
  InstallHelpCheckBox.Color := clWhite;
  InstallHelpCheckBox.Checked := True;
  InstallHelpCheckBox.OnClick :=
@InstallHelpCheckBoxOnClick; // 关联事件响应函数的方式
end;
                                                   

 //由于创建的复选框控件是在WizardForm之上,故整个安装过程的向导界面都包含此复选框,这不是我此次修改想要的,每一个安装向导界面中都包含默认的按钮,主要是三个“下一步”、“上一步”,“取消”,并且每个安装向导界面都有固定的ID。向导界面的ID主要包含以下几种

  • wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished 

我们的需要是想在安装的第一个界面中(wpWelcome为此界面的ID),其他的界面使用默认的就好,不要此复选框。向导界面中的按钮有固定的响应函数,分别为

function NextButtonClick(CurPageID: Integer): Boolean;
function BackButtonClick(CurPageID: Integer): Boolean;
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
    我控制复选框的消失与显示就是在上面的方法中实现的,实现的代码如下:
function BackButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = wpSelectDir then
  begin
  InstallHelpCheckBox := TNewCheckBox.Create(WizardForm);
  InstallHelpCheckBox.Parent := WizardForm;
  InstallHelpCheckBox.Top := WizardForm.Top - 30;
  InstallHelpCheckBox.Left := WizardForm.Left - 220;
  InstallHelpCheckBox.Width := WizardForm.Width -10;
  InstallHelpCheckBox.Caption := '同意添加node.exe开机自启动服务';
  InstallHelpCheckBox.Color := clWhite;
  InstallHelpCheckBox.Checked := True;
  InstallHelpCheckBox.OnClick := @InstallHelpCheckBoxOnClick;
  end
end;


function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = wpWelcome then
begin
  if InstallHelpCheckBox.Checked = False then
  begin
      if MsgBox('您拒绝了添加node.exe开机自启动服务,程序安装完成也无法正常运行,如果重新选择点击“是”,如若退出选择“否', mbInformation, MB_YE SNO) = idNO then
        begin
          ExitProcess(0);
        end
      Result := False;
  end
  else
  begin
  InstallHelpCheckBox.Free();
  end
end
end;

0 0