组件存在消息框太大 - InnoSetup

时间:2016-09-09 17:50:28

标签: inno-setup



我有一个包含80多个选项的组件列表,用户可以选择然后安装。

安装程序会记住以前的安装组件并自动检查组件,现在,如果用户取消选择全部,则组件存在"组件存在"显示警告信息框。

由于用户取消选择了所有80个选项,因此列表变长,消息框超出屏幕空间,用户现在卡住了。

我知道消息中有NoUninstallWarning,其中包含警告消息的文本,并将一个参数作为%1发送<

有没有办法可以更改参数值,而不是将所有选项列在单独的行中,我想将它们以逗号分隔?

 或者,如果我可以在消息框中有一个滚动条?

请帮忙

1 个答案:

答案 0 :(得分:1)

不,此消息是内部的,如果不修改Inno自己的源代码,则无法自定义。

在这种情况下,用户不应该被完全卡住 - 他们应该能够按ESC返回到组件选择窗口,然后再次选择所有内容。

避免此问题的一种简单方法是不允许用户在安装后取消选择组件。您可以使用以下代码执行此操作:

var
  InstalledComponentsDisabled: Boolean;

procedure CurPageChanged(CurPageId: Integer);
var
  i: Integer;
begin
  if (CurPageId = wpSelectComponents) and
     (WizardForm.PrevAppDir <> '') and
     not InstalledComponentsDisabled then begin
    InstalledComponentsDisabled := True;
    for i := 0 to WizardForm.ComponentsList.Items.Count - 1 do begin
      if WizardForm.ComponentsList.Checked[i] then begin
        WizardForm.ComponentsList.ItemEnabled[i] := False;
      end;
    end;
  end;
end;

这与升级fixed上已安装任何内容的效果类似。

另一种选择是将disablenouninstallwarning放在所有组件上,然后自己完全实现消息框,添加一些静态文本警告,关于永久删除页面上的组件,甚至做一些实际支持删除组件(例如[InstallDelete]条目或UninsHs)。