Inno setup 是否在Inno安装向导结束时有条件地跳到自定义页面而不安装?

Inno setup 是否在Inno安装向导结束时有条件地跳到自定义页面而不安装?,inno-setup,pascalscript,Inno Setup,Pascalscript,在Inno设置中,下面是用于检测下一步按钮事件的代码 函数NextButtonClick(CurPageID:Integer):布尔; 开始 案例CurPageID WPC许可证: 开始 // 结束; wpSelectDir: 开始 // 结束; wpSelectComponents: 开始 // 结束; wpredy: 开始 // 结束; 已完成的工作包: 开始 // 结束; 其他的 开始 /// 结束; 结束; 结束; 安装完成后,在“完成”对话框之前,将显示一个自定义页面。在wpSele

在Inno设置中,下面是用于检测下一步按钮事件的代码

函数NextButtonClick(CurPageID:Integer):布尔;
开始
案例CurPageID
WPC许可证:
开始
//
结束;
wpSelectDir:
开始
//
结束;
wpSelectComponents:
开始
//
结束;
wpredy:
开始
//
结束;
已完成的工作包:
开始
//
结束;
其他的
开始
///
结束;
结束;
结束;

安装完成后,在“完成”对话框之前,将显示一个自定义页面。在
wpSelectDir
wpSelectComponents
中,如果用户选择不安装,如何让安装程序转到此自定义页面?

您不能在Inno安装程序中跳过安装。但您可以做的是动态更改自定义页面的位置,以显示:

  • 安装后(例如,
    wpInfoAfter
    ),如果用户选择安装应用程序,或
  • 在安装之前(例如,在
    wpSelectDir
    之后),如果没有。然后呢
var
SkipInstallCheckbox:TNewCheckBox;
SomePage:TWizardPage;
过程初始化Wizard();
开始
SkipInstallCheckbox:=TNewCheckBox.Create(WizardForm.SelectDirPage);
SkipInstallCheckbox.Parent:=WizardForm.SelectDirPage;
SkipInstallCheckbox。顶部:=
WizardForm.DirEdit.Top+WizardForm.DirEdit.Height+ScaleY(8);
SkipInstallCheckbox.Left:=WizardForm.DirEdit.Left;
SkipInstallCheckbox.标题:='跳过安装';
//看https://stackoverflow.com/q/30469660/850848
skipinstalcheckbox.Height:=ScaleY(skipinstalcheckbox.Height);
结束;
过程SomePageOnActivate(发送方:TWizardPage);
开始
如果SkipInstallCheckbox。选中,则
开始
//跳过安装时,这是最后一页。
WizardForm.NextButton.Caption:=设置消息(msgButtonFinish);
结束;
结束;
函数NextButtonClick(CurPageID:Integer):布尔值;
变量
AfterID:整数;
开始
如果CurPageID=wpSelectDir,则
开始
如果SkipInstallCheckbox。选中,则
AfterID:=wpSelectDir
其他的
AfterID:=wpInfoAfter;
//如果用户从页面的“跳过”版本返回
//重新启用安装,请确保删除“跳过”版本。
如果分配了(SomePage),则为SomePage.Free;
SomePage:=CreateCustomPage(AfterID,'Some page','';
SomePage.OnActivate:=@SomePageOnActivate;
结束;
结果:=真;
结束;
函数ShouldSkipPage(PageID:Integer):布尔值;
开始
结果:=假;
//跳过安装时,请跳过自定义页面之后的所有页面
//在安装之前。
如果([wpSelectComponents、wpSelectProgramGroup、wpSelectTasks、wpReady]中的PageID)和
SkipInstallCheckbox。然后选中
开始
结果:=真;
结束;
结束;
过程CurStepChanged(CurStep:TSetupStep);
开始
如果(CurStep=ssInstall)和SkipInstallCheckbox。选中,则
开始
//看https://stackoverflow.com/q/4438506/850848#39788977
中止();
结束;
结束;

你的一个相关问题改善了这一点:


尽管要避免这些黑客攻击,但请考虑允许安装正常进行,但不需要更改任何东西。最终可能更容易实现