Inno setup 如何在Inno设置中覆盖函数?

Inno setup 如何在Inno设置中覆盖函数?,inno-setup,pascalscript,Inno Setup,Pascalscript,我有几个安装脚本,具有几乎相同的功能。我分离了相同的函数以包含带有公共代码的文件,但有时我需要覆盖其中的一些函数 不幸的是,在Delphi中,在结尾处覆盖,这没有帮助: function NextButtonClick(CurPageID: Integer): Boolean; override; 这是不可能的。一件事是,例如,您提到的是您不重写的事件方法;另一个原因是Inno Setup Pascal脚本本身不支持方法重写 我能想到的唯一可靠的解决方法是通过将事件方法与常用代码分离,从而简化

我有几个安装脚本,具有几乎相同的功能。我分离了相同的函数以包含带有公共代码的文件,但有时我需要覆盖其中的一些函数

不幸的是,在Delphi中,
在结尾处覆盖
,这没有帮助:

function NextButtonClick(CurPageID: Integer): Boolean; override;

这是不可能的。一件事是,例如,您提到的是您不重写的事件方法;另一个原因是Inno Setup Pascal脚本本身不支持方法重写

我能想到的唯一可靠的解决方法是通过将事件方法与常用代码分离,从而简化(从DRY开始)。

看看,这是一种建议的方法,可以以高度模块化和可重用的方式布置自定义向导页代码

它通常不适用于所有事件函数,但至少可以帮助您处理
NextButtonClick
和其他相关页面事件


(实际上,我有一些代码可以帮助合并其他事件函数,但它还没有真正准备好供公众使用。)

@RobeN,这个问题完全可以理解。IMHO,像这样的问题值得投票(不是因为它们显示了研究成果,而是因为它们很有用),而不是像OP完全没有时间自己寻找解决方案那样的问题(这个问题甚至是重复的)。即使是在使用公共代码库(其中使用了某些事件方法)时,它也可能对您有所帮助(如果有重写的方法的话)。FWIW“override”表示一个完全不同的概念,它无论如何都不会以您希望的方式工作。(没有类。)@Miral,例如
NextButtonClick
实际上是一种方法!虽然我不知道
Self
对象,因为它是不可访问的(我猜是脚本运行程序本身),但它是一个方法。是的,但是要覆盖它,需要将它放在子类中。而且你不能在script.Tnx中声明其中一个。可惜的是,pascalscript这么穷。我花了一些时间寻找任何可能的解决办法,但在我什么也没发现之后,这个问题就成了一种绝望的举动:)