Inno Setup:确认任务(在用户确认后覆盖注册表项)

时间:2016-04-08 12:01:12

标签: inno-setup

目前,我在默认选项页面上有一个复选框,如果它们不存在,则会创建一组注册表项:

[Tasks]
...
Name: myUrlHandler; Description: "Register myurl://"; GroupDescription: "Advanced Options:"

[Registry]
Root: HKCR; Subkey: "myurl"; Flags: createvalueifdoesntexist uninsdeletekeyifempty; Tasks: myUrlHandler
...

现在我想显示一个确认对话框,以防这些注册表项已经存在,无论用户是否想要覆盖它们。

我应该以什么方法显示确认对话框(对于静默安装应该是可隐藏的)以及如何访问此选项(不添加自己的页面)?

1 个答案:

答案 0 :(得分:1)

使用NextButtonClick event functionCheck parameter

[Tasks]
Name: myUrlHandler; Description: "Register myurl"

[Registry]
Root: HKCR; Subkey: "myurl"; Check: CreateMyurlKeyCheck

[Code]

var
  CreateMyurlKey: Boolean;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  if CurPageID = wpSelectTasks then
  begin
    CreateMyurlKey := False;

    if IsTaskSelected('myUrlHandler') then
    begin
      Log('myUrlHandler task selected');

      if RegKeyExists(HKEY_CLASSES_ROOT, 'myurl') then
      begin
        Log('myurl key exists');

        if MsgBox('Overwrite key?', mbConfirmation, MB_YESNO) = IDYES then
        begin
          CreateMyurlKey := True;
        end;
      end
        else
      begin
        Log('myurl key does not exist');
        CreateMyurlKey := True;
      end;
    end
      else
    begin
      Log('myUrlHandler task not selected');
    end;
  end;

  Result := True;
end;

function CreateMyurlKeyCheck: Boolean;
begin
  Result := CreateMyurlKey;
end;