使Inno Setup自动将自定义页面中的数据添加到.inf文件中

时间:2017-06-02 08:29:50

标签: inno-setup

我使用自定义向导页面创建了一个安装程序。到目前为止一切正常。 接下来,我想使用/SAVEINF创建一个设置文件(稍后以静默模式启动安装程序),使用以下命令:

Installer.exe /SAVEINF="Unattended.txt"

输入所有用户输入并运行安装程序后,我查看了创建的文件。我看到的唯一用户输入是安装位置,但缺少自定义向导页面上的所有输入。我只看到了:

[Setup]
Lang=en
Dir=C:\temp
Group=MyProgram
NoIcons=0
Tasks=

为什么呢?如何在设置文件中设置自定义向导页面值?

更具体。
我启动了我创建的安装程序,其中包含使用命令行上的/SAVEINF选项创建设置文件的选项。我希望所有项目都添加到此文件中,包括我自定义向导页面中的项目,但事实并非如此。我只从标准设置页面看到安装位置。

当然我可以手动添加它们并在安装程序代码中实现从文件中读取它们,但我希望它是自动化的。

1 个答案:

答案 0 :(得分:1)

实际上,Inno Setup不会将任何自定义字段保存到.inf文件中。

永远不会将任何内容保存到标准.infLangDirGroupNoIcons之外的SetupType文件中,{ {1}}和Components个项目。

请参阅SaveInf function in Inno Setup source code

Tasks

Inno Setup会从procedure SaveInf(const FileName: String); const Section = 'Setup'; begin SetIniString(Section, 'Lang', PSetupLanguageEntry(Entries[seLanguage][ActiveLanguage]).Name, FileName); SetIniString(Section, 'Dir', WizardDirValue, FileName); SetIniString(Section, 'Group', WizardGroupValue, FileName); SetIniBool(Section, 'NoIcons', WizardNoIcons, FileName); if WizardSetupType <> nil then begin SetIniString(Section, 'SetupType', WizardSetupType.Name, FileName); SetIniString(Section, 'Components', StringsToCommaString(WizardComponents), FileName); end else begin DeleteIniEntry(Section, 'SetupType', FileName); DeleteIniEntry(Section, 'Components', FileName); end; SetIniString(Section, 'Tasks', StringsToCommaString(WizardTasks), FileName); end; 文件中加载更多项目。请参阅LoadInf function。但同样,不是自定义字段/页面。只是可以使用命令行开关指定的选项,例如.infSilentVerySilent等。

如果您想要NoRestart文件中的自定义字段,则必须自行实施:
Inno Setup Load defaults for custom installation settings from a file (.inf) for silent installation