Inno setup Inno Setup,是否可以在运行时在页面上再次调用Initialize()?
我在Inno setup Inno Setup,是否可以在运行时在页面上再次调用Initialize()?,inno-setup,Inno Setup,我在InitializeWizard()中创建了一个TInputDirWizardPage,例如 DataFolderPage: TInputDirWizardPage; DataFolderPage := CreateInputDirPage(wpSelectDir, 'Caption', 'Description', 'Caption', True, 'mydatafolder'); 在页面创建时,我将参数AppendDir设置为True。 稍后,在运行时,在函数NextButtonCli
InitializeWizard()中创建了一个TInputDirWizardPage
,例如
DataFolderPage: TInputDirWizardPage;
DataFolderPage := CreateInputDirPage(wpSelectDir, 'Caption', 'Description', 'Caption', True, 'mydatafolder');
在页面创建时,我将参数AppendDir设置为True。
稍后,在运行时,在函数NextButtonClick()
中,我决定参数AppendDir必须是False,但如果我尝试调用INITIALIZE()
,编译将失败,并显示消息未知标识符“INITIALIZE”
DataFolderPage.Caption := 'new caption'; // compiles ok
DataFolderPage.Initialize('new SubCaption', False, 'blah'); // Unknown identifier 'INITIALIZE'
谁知道我为什么不能再次调用方法Initialize()
?类(及其基类)没有公共Initialize
方法(请参阅帮助中的支持类参考),并且它没有设置AppendDir
值的属性
最好的方法是将false传递给页面,使其不附加目录,并在从页面检索输入的路径时自己添加该目录。我想您会发现,尽管InnoSetup非常复杂,但它并没有那么灵活。它倾向于喜欢以“正确的方式”做事情,而你想要的更多的是一种黑客行为。祝你好运。我不知道Pascal,但在搜索了非源代码后,我发现(ScriptDlg.pas)TInputDirWizardPage
是一个类(TWizardPage)
和过程初始化(const suboption:String;const AppendDir:Boolean;const NewFolderName:String)代码>是公共的。为什么这不起作用?有帕斯卡大师吗?