Inno Setup Place控制wpPreparing页面

时间:2016-02-29 18:40:02

标签: inno-setup pascalscript

我正在尝试在wpPreparing页面上放置一个标签,以指示在运行新安装之前卸载现有版本。这是我的代码:

function PrepareToInstall(var NeedsRestart: Boolean): String;
var
  UninstallingLabel: TNewStaticText;
  intResultCode: Integer;
begin
  with UninstallingLabel do
    begin
      Caption := 'Uninstalling existing version...';
      Left := WizardForm.StatusLabel.Left;
      Top := WizardForm.StatusLabel.Top;
      Parent := wpPreparing.Surface;
    end;
  if strExistingInstallPath <> '' then
    begin
      Exec(GetUninstallString, '/verysilent /suppressmsgboxes', '', SW_HIDE,
        ewWaitUntilTerminated, intResultCode);
    end;
end;

问题是它似乎不喜欢Parent := wpPreparing.Surface并且编译失败并带有

  

分号(;)预期

错误。向自定义创建的页面添加标签时,此语法有效。为什么在尝试将其添加到wpPreparing时会失败?

2 个答案:

答案 0 :(得分:1)

我已经重播了你的代码。如果您仅使用-ansi作为父级,则它可以正常工作。但是它位于表格的左上角......

WizardForm是一个常量的名称,用于保存相应页面的ID。

您必须创建wpPreparing

的实例

答案 1 :(得分:1)

wpPreparing不是一个对象,它只是一个数值常数。

WizardForm.PreparingPage包含对“准备安装”页面的引用。请注意,它已经是TNewNotebookPage类型,而不是TWizardPage。所以你直接用它作为父母。

另请注意,StatusLabel位于“正在安装”页面上。您可能希望将新标签与PreparingLabel相关联。

您必须创建UninstallingLabel

UninstallingLabel := TNewStaticText.Create(WizardForm);

with UninstallingLabel do
begin
  Caption := 'Uninstalling existing version...';
  Left := WizardForm.PreparingLabel.Left;
  Top := WizardForm.PreparingLabel.Top;
  Parent := WizardForm.PreparingPage;
end;

虽然你真的想隐藏PreparingLabel(当你使用它的坐标时)。

重新使用它呢?

WizardForm.PreparingLabel.Caption := 'Uninstalling existing version...';