Inno setup 你能创建一个看起来像完成页面的自定义页面吗?
你能创建一个看起来像完成页面的自定义页面吗 这是自定义页面的代码Inno setup 你能创建一个看起来像完成页面的自定义页面吗?,inno-setup,pascalscript,Inno Setup,Pascalscript,你能创建一个看起来像完成页面的自定义页面吗 这是自定义页面的代码 UserPage2:=CreateCustomPage( UserPage1.ID, “头衔”, “细节” ); 此自定义页 需要像这样 原因是,有时当用户再次运行安装程序时,他们可以选择很少的选项。根据选项,安装程序只需对已安装程序使用的设置进行少量更改,而无需通过重新安装来覆盖文件。因此,用户应该在更改后获得Finish对话框 在自定义页面上重新创建FinishedPage控件 进入页面时,您需要调整WizardFo
UserPage2:=CreateCustomPage(
UserPage1.ID,
“头衔”,
“细节”
);
此自定义页
需要像这样
原因是,有时当用户再次运行安装程序时,他们可以选择很少的选项。根据选项,安装程序只需对已安装程序使用的设置进行少量更改,而无需通过重新安装来覆盖文件。因此,用户应该在更改后获得Finish对话框
FinishedPage
控件
var
伪造完成页面:TWizardPage;
FakeFinishedBitmapImage:TBitmapImage;
FakeFinishedLabel:TNewStaticText;
FakeFinishedHeadingLabel:TNewStaticText;
过程复制边界(目的地,来源:TControl);
开始
目的地左侧:=来源地左侧;
目的地顶部:=来源地顶部;
目的地宽度:=来源地宽度;
目标高度:=源高度;
结束;
程序fakefinishedpage激活(发送方:TWizardPage);
开始
WizardForm.Bevel1.Visible:=False;
WizardForm.MainPanel.Visible:=False;
WizardForm.InnerNotebook.Left:=0;
WizardForm.InnerNotebook.Top:=0;
WizardForm.InnerNotebook.Width:=WizardForm.OuterNotebook.ClientWidth;
WizardForm.InnerNotebook.Height:=WizardForm.OuterNotebook.ClientHeight;
//WizardStyle=modern和/或WizardResizeable=yes,
//我们无法复制InitializeWizard中的尺寸,因为它们还不是最终尺寸。
复制边界(FakeFinishedBitmapImage、WizardForm.WizardBitmapImage2);
FakeFinishedBitmapImage.Anchors:=WizardForm.WizardBitmapImage2.Anchors;
复制边界(FakeFinishedLabel、WizardForm.FinishedLabel);
FakeFinishedLabel.Anchors:=WizardForm.FinishedLabel.Anchors;
复制边界(FakeFinishedHeadingLabel、WizardForm.FinishedHeadingLabel);
FakeFinishedHeadingLabel.Anchors:=WizardForm.FinishedHeadingLabel.Anchors;
WizardForm.BackButton.Visible:=False;
WizardForm.NextButton.Caption:=设置消息(msgButtonFinish);
结束;
程序CopyLabel(目的地,来源:TNewStaticText);
开始
Dest.AutoSize:=Source.AutoSize;
目的字体:=来源字体;
Dest.ShowAccelChar:=Source.ShowAccelChar;
Dest.WordWrap:=Source.WordWrap;
结束;
过程初始化Wizard();
变量
S:字符串;
开始
// ...
FakeFinishedPage:=CreateCustomPage(UserPage1.ID,,,“”);
FakeFinishedPage.OnActivate:=@FakeFinishedPageActivate;
FakeFinishedBitmapImage:=TBitmapImage.Create(WizardForm);
FakeFinishedBitmapImage.Parent:=FakeFinishedPage.Surface;
FakeFinishedBitmapImage.BackColor:=WizardForm.WizardBitMapImage 2.BackColor;
FakeFinishedBitmapImage.Bitmap:=WizardForm.WizardBitmapImage2.Bitmap;
FakeFinishedBitmapImage.Stretch:=WizardForm.WizardBitmapImage2.Stretch;
FakeFinishedLabel:=TNewStaticText.Create(WizardForm);
FakeFinishedLabel.Parent:=FakeFinishedPage.Surface;
CopyLabel(FakeFinishedLabel、WizardForm.FinishedLabel);
S:=设置消息(msgFinishedLabelNoIcons)+#13#13+设置消息(msgClickFinish);
StringChangeEx(S,“[名称]”,“我的程序”,真);
FakeFinishedLabel.标题:=S;
FakeFinishedHeadingLabel:=TNewStaticText.Create(WizardForm);
FakeFinishedHeadingLabel.Parent:=FakeFinishedPage.Surface;
CopyLabel(FakeFinishedHeadingLabel、WizardForm.FinishedHeadingLabel);
S:=设置消息(msgFinishedHeadingLabel);
StringChangeEx(S,“[名称]”,“我的程序”,真);
FakeFinishedHeadingLabel。标题:=S;
结束;
有一些限制:
- 当向导调整大小(使用
)时,代码无法正确处理图像大小调整,但很容易修复wizardresizeable=yes
- 解决方案不希望在显示此假完成页面后显示任何页面。也就是说,没有后退按钮,预计Finish按钮是用来终止安装程序的工具。毕竟,这是一个后续问题
尽管要避免这些黑客攻击,但请考虑允许安装正常进行,但不需要更改任何东西。最终可能更容易实现
相关问题:
- –通过将控件覆盖在向导窗口的整个上部,根据需要隐藏/显示控件,解决了此问题的替代实现