Inno setup 如何执行显示Inno Select language对话框之前的代码

Inno setup 如何执行显示Inno Select language对话框之前的代码,inno-setup,Inno Setup,在显示Select Setup language(选择设置语言)对话框之前,我需要执行一个pascal代码,不幸的是InitializeSetup(初始化设置)事件是在显示之后执行的 function InitializeSetup(): Boolean; //This event occurs to late begin DoSomething(); Result := True; end; 因此,在显示“选择设置语言”对话框之前,是否可以执行脚本代码 否,函数Initia

在显示Select Setup language(选择设置语言)对话框之前,我需要执行一个pascal代码,不幸的是InitializeSetup(初始化设置)事件是在显示之后执行的

function InitializeSetup(): Boolean; //This event occurs to late
begin
    DoSomething(); 
    Result := True;
end;
因此,在显示“选择设置语言”对话框之前,是否可以执行脚本代码


否,函数InitializeSetup()被称为first。 以后将调用所有其他函数

当然,您可以修改Inno的源代码并添加自定义函数,但我认为这不是您的情况


你为什么需要这个?也许有解决方案可以解决您的情况,请告诉我们详细信息。

我有类似的问题,我考虑了不同的解决方法:手动设置所有设置的样式,或进行内部本地化,但从一开始它们看起来都是注定要失败的。

我已经分叉了issrc,在本地构建了它,并查看了安装项目的main.pas。我看到了现在这样做背后的想法:人们可能想在
InitializeSetup
中使用
{Language}
,因此它在
AskForLanguage
方法之后被称为

为了验证这个想法,我对main.pas做了一些小改动:在
CodeRunner
初始化之后调用
AskForLanguage
,然后调用
InitializeSetup
。我得到了VCL'ed选择设置语言对话框,但不是全部-非客户端区域没有VCL'ed:

我试图继承语言形式而不是从<代码> TFrase<代码>类,但是从<代码> TSETUPFATE<代码>,或者在安装中间调用它,或者做其他的改变——没有结果。如果有人知道为什么不是VCL'ed,请告诉我

然后我读了这篇文章,制作了border
bsNone
表单,得到了以下信息:

所以现在我没问题。在许多页面的样式化设置之前没有样式化的表单是如此。。。讨厌


如果我们想用正确的方法来做,我想我们需要做的就是将
CodeRunner
init移到
AskForLanguage
之前,并添加一个自定义代码函数,比如
StyleInit
等等。然后所有人都会很高兴:
{Language}
将在
初始化设置中可用,对话框将被VCL。

另一个可能的解决方案是使用Inno setup Ultra,它有几个改进,InitializeLanguageDialog函数就是其中之一。只需在其中加载样式。(您还可以自由更改语言对话框本身,这非常好)

我有一个inno安装的皮肤插件,皮肤是在InitializeSetup事件中初始化的,因此选择安装语言对话框没有皮肤。Hmmm,然后尝试将自定义事件直接添加到inno的源代码中。如果不修改源代码,就无法实现这一点。@Slappy,这需要更多。在初始化Pascal脚本运行程序之后,您必须移动此对话框创建。这是开源的吗?如果不是,我就不会用它。你知道,安装程序是传播病毒感染的很好工具…-它的中国公司为中国的游戏发行商服务,为游戏制作中文版。我想你可以用防病毒软件检查结果吗?也许在某个地方有个来源,但我一点也不懂中文——所以找不到任何东西)像一种魅力!