gpt4 book ai didi

inno-setup - 自定义卸载页面(不是 MsgBox)

转载 作者:行者123 更新时间:2023-12-04 09:42:35 27 4
gpt4 key购买 nike

我需要在安装过程中向用户询问密码,然后将其用作安装后运行的命令的一部分。我正在使用自定义页面来执行此操作,并且工作正常。

我还需要在卸载过程中提出同样的问题,该问题用作卸载后运行的命令的一部分。

我检查了帮助,似乎没有用于卸载的 PageID,我可以在 CreateInputQuery 中使用它。功能。我不是特别介意,如果页面在卸载的开始,中间或结束时显示,只要显示即可。

我不想使用 MsgBox对于卸载,因为我想要标准页面的外观。

关于如何实现这一目标的任何提示?

最佳答案

您可以修改卸载表单以使其行为类似于安装表单(带有页面和 Next/Back 按钮)。
InitializeUninstallProgressForm :

  • 创建新页面并将它们插入到 UninstallProgressForm.InnerNotebook (或 .OuterNotebook )。
  • 实现“下一步”和“返回”按钮。
  • 您还可以使“取消”按钮起作用。
  • 使用 UninstallProgressForm.ShowModal 运行表单的模态循环.
  • 只有在模态循环退出后,恢复表单的原始布局,让卸载继续。

  • [Code]

    var
    UninstallFirstPage: TNewNotebookPage;
    UninstallSecondPage: TNewNotebookPage;
    UninstallBackButton: TNewButton;
    UninstallNextButton: TNewButton;

    procedure UpdateUninstallWizard;
    begin
    if UninstallProgressForm.InnerNotebook.ActivePage = UninstallFirstPage then
    begin
    UninstallProgressForm.PageNameLabel.Caption := 'First uninstall wizard page';
    UninstallProgressForm.PageDescriptionLabel.Caption :=
    'Lorem ipsum dolor sit amet, consectetur adipiscing elit.';
    end
    else
    if UninstallProgressForm.InnerNotebook.ActivePage = UninstallSecondPage then
    begin
    UninstallProgressForm.PageNameLabel.Caption := 'Second uninstall wizard page';
    UninstallProgressForm.PageDescriptionLabel.Caption :=
    'Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';
    end;

    UninstallBackButton.Visible :=
    (UninstallProgressForm.InnerNotebook.ActivePage <> UninstallFirstPage);

    if UninstallProgressForm.InnerNotebook.ActivePage <> UninstallSecondPage then
    begin
    UninstallNextButton.Caption := SetupMessage(msgButtonNext);
    UninstallNextButton.ModalResult := mrNone;
    end
    else
    begin
    UninstallNextButton.Caption := 'Uninstall';
    { Make the "Uninstall" button break the ShowModal loop }
    UninstallNextButton.ModalResult := mrOK;
    end;
    end;

    procedure UninstallNextButtonClick(Sender: TObject);
    begin
    if UninstallProgressForm.InnerNotebook.ActivePage = UninstallSecondPage then
    begin
    UninstallNextButton.Visible := False;
    UninstallBackButton.Visible := False;
    end
    else
    begin
    if UninstallProgressForm.InnerNotebook.ActivePage = UninstallFirstPage then
    begin
    UninstallProgressForm.InnerNotebook.ActivePage := UninstallSecondPage;
    end;
    UpdateUninstallWizard;
    end;
    end;

    procedure UninstallBackButtonClick(Sender: TObject);
    begin
    if UninstallProgressForm.InnerNotebook.ActivePage = UninstallSecondPage then
    begin
    UninstallProgressForm.InnerNotebook.ActivePage := UninstallFirstPage;
    end;
    UpdateUninstallWizard;
    end;

    procedure InitializeUninstallProgressForm();
    var
    PageText: TNewStaticText;
    PageNameLabel: string;
    PageDescriptionLabel: string;
    CancelButtonEnabled: Boolean;
    CancelButtonModalResult: Integer;
    begin
    if not UninstallSilent then
    begin
    { Create the first page and make it active }
    UninstallFirstPage := TNewNotebookPage.Create(UninstallProgressForm);
    UninstallFirstPage.Notebook := UninstallProgressForm.InnerNotebook;
    UninstallFirstPage.Parent := UninstallProgressForm.InnerNotebook;
    UninstallFirstPage.Align := alClient;

    PageText := TNewStaticText.Create(UninstallProgressForm);
    PageText.Parent := UninstallFirstPage;
    PageText.Top := UninstallProgressForm.StatusLabel.Top;
    PageText.Left := UninstallProgressForm.StatusLabel.Left;
    PageText.Width := UninstallProgressForm.StatusLabel.Width;
    PageText.Height := UninstallProgressForm.StatusLabel.Height;
    PageText.AutoSize := False;
    PageText.ShowAccelChar := False;
    PageText.Caption := 'Press Next to proceeed with uninstallation.';

    UninstallProgressForm.InnerNotebook.ActivePage := UninstallFirstPage;

    PageNameLabel := UninstallProgressForm.PageNameLabel.Caption;
    PageDescriptionLabel := UninstallProgressForm.PageDescriptionLabel.Caption;

    { Create the second page }

    UninstallSecondPage := TNewNotebookPage.Create(UninstallProgressForm);
    UninstallSecondPage.Notebook := UninstallProgressForm.InnerNotebook;
    UninstallSecondPage.Parent := UninstallProgressForm.InnerNotebook;
    UninstallSecondPage.Align := alClient;

    PageText := TNewStaticText.Create(UninstallProgressForm);
    PageText.Parent := UninstallSecondPage;
    PageText.Top := UninstallProgressForm.StatusLabel.Top;
    PageText.Left := UninstallProgressForm.StatusLabel.Left;
    PageText.Width := UninstallProgressForm.StatusLabel.Width;
    PageText.Height := UninstallProgressForm.StatusLabel.Height;
    PageText.AutoSize := False;
    PageText.ShowAccelChar := False;
    PageText.Caption := 'Press Uninstall to proceeed with uninstallation.';

    UninstallNextButton := TNewButton.Create(UninstallProgressForm);
    UninstallNextButton.Parent := UninstallProgressForm;
    UninstallNextButton.Left :=
    UninstallProgressForm.CancelButton.Left -
    UninstallProgressForm.CancelButton.Width -
    ScaleX(10);
    UninstallNextButton.Top := UninstallProgressForm.CancelButton.Top;
    UninstallNextButton.Width := UninstallProgressForm.CancelButton.Width;
    UninstallNextButton.Height := UninstallProgressForm.CancelButton.Height;
    UninstallNextButton.OnClick := @UninstallNextButtonClick;

    UninstallBackButton := TNewButton.Create(UninstallProgressForm);
    UninstallBackButton.Parent := UninstallProgressForm;
    UninstallBackButton.Left :=
    UninstallNextButton.Left - UninstallNextButton.Width -
    ScaleX(10);
    UninstallBackButton.Top := UninstallProgressForm.CancelButton.Top;
    UninstallBackButton.Width := UninstallProgressForm.CancelButton.Width;
    UninstallBackButton.Height := UninstallProgressForm.CancelButton.Height;
    UninstallBackButton.Caption := SetupMessage(msgButtonBack);
    UninstallBackButton.OnClick := @UninstallBackButtonClick;
    UninstallBackButton.TabOrder := UninstallProgressForm.CancelButton.TabOrder;

    UninstallNextButton.TabOrder := UninstallBackButton.TabOrder + 1;

    UninstallProgressForm.CancelButton.TabOrder :=
    UninstallNextButton.TabOrder + 1;

    { Run our wizard pages }
    UpdateUninstallWizard;
    CancelButtonEnabled := UninstallProgressForm.CancelButton.Enabled
    UninstallProgressForm.CancelButton.Enabled := True;
    CancelButtonModalResult := UninstallProgressForm.CancelButton.ModalResult;
    UninstallProgressForm.CancelButton.ModalResult := mrCancel;

    if UninstallProgressForm.ShowModal = mrCancel then Abort;

    { Restore the standard page payout }
    UninstallProgressForm.CancelButton.Enabled := CancelButtonEnabled;
    UninstallProgressForm.CancelButton.ModalResult := CancelButtonModalResult;

    UninstallProgressForm.PageNameLabel.Caption := PageNameLabel;
    UninstallProgressForm.PageDescriptionLabel.Caption := PageDescriptionLabel;

    UninstallProgressForm.InnerNotebook.ActivePage :=
    UninstallProgressForm.InstallingPage;
    end;
    end;
    First page
    Second page
    Uninstalling

    另见 Inno Setup - How to create a OuterNotebook/welcome page in the uninstaller?

    关于inno-setup - 自定义卸载页面(不是 MsgBox),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7415457/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com