Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup Inno Setup从用于静默安装的文件(.inf)加载自定义安装设置的默认值_Inno Setup_Pascalscript_Silent Installer - Fatal编程技术网

Inno setup Inno Setup从用于静默安装的文件(.inf)加载自定义安装设置的默认值

Inno setup Inno Setup从用于静默安装的文件(.inf)加载自定义安装设置的默认值,inno-setup,pascalscript,silent-installer,Inno Setup,Pascalscript,Silent Installer,我有一个安装脚本,允许用户指定他们想在哪里安装我的应用程序。它以Pascal脚本的形式存在于[Code]块中 变量 选择UsersPage:t输入选项向导页面; IsUpgrade:布尔; 升级页面:TOutputMsgWizardPage; 程序初始化; 变量 AlreadyInstalledPath:字符串; 开始 {确定它是否是升级…} {从注册表读取以了解这是新安装还是升级} 如果RegQueryStringValueHKLM“Software\Microsoft\Windows\Cur

我有一个安装脚本,允许用户指定他们想在哪里安装我的应用程序。它以Pascal脚本的形式存在于[Code]块中

变量 选择UsersPage:t输入选项向导页面; IsUpgrade:布尔; 升级页面:TOutputMsgWizardPage; 程序初始化; 变量 AlreadyInstalledPath:字符串; 开始 {确定它是否是升级…} {从注册表读取以了解这是新安装还是升级} 如果RegQueryStringValueHKLM“Software\Microsoft\Windows\CurrentVersion\Uninstall\{MyAppId}”为1,“Inno安装程序:应用程序路径”,则已就绪安装路径 开始 {因此,这是之前安装的升级集目标目录} WizardForm.DirEdit.Text:=AlreadyInstalledPath; {并跳过SelectUsersPage} IsUpgrade:=真; {创建要查看而不是准备安装的页面} UpgradePage:=CreateOutputMsgPagewpReady, “准备升级”,“安装程序现在准备升级计算机上的{MyAppName}”, '单击“升级”继续,如果要查看或更改任何设置,请单击“上一步”。'; 终止 其他的 开始 IsUpgrade:=假; 终止 {创建一个页面,在“仅我”或“所有用户”之间进行选择} 选择UsersPage:=CreateInputOptionPagewpLicense, “选择用户”,“要为哪些用户安装应用程序?”, '选择是为您自己安装库还是为这台计算机的所有用户安装库。单击“下一步”继续。“, 对,错; {添加项目} 选择UsersPage。添加“所有用户”; 选择userspage。添加“仅限我”; {设置初始值可选} 选择userspage.Values[0]:=False; 选择userspage.Values[1]:=True; 终止 所以问题是我如何支持静默安装?当用户调用/SILENT或/VERYSILENT时,安装程序默认选择userspage.Values[1],这仅适用于我。我希望通过提供应答文件来帮助支持希望更改安装目录的用户

我没有开发所有这些代码,我是Pascal的新手


谢谢。

您可以将自定义密钥(如用户)添加到由创建的.inf文件中

然后在安装程序中,查找并读取密钥,并相应地执行以下操作:

程序初始化; 变量 InfFile:字符串; I:整数; UsersDefault:整数; 开始 ... InfFile:=ExpandConstant'{param:LOADINF}'; UsersDefault:=0; 如果输入文件,则 开始 日志格式为“正在读取INF文件%s”,[InfFile]; UsersDefault:= GetInInt'Setup'、'Users'、UsersDefault、0、ExpandFileNameInfFile; 日志格式“读取默认用户选择%d”,[UsersDefault]; 终止 其他的 开始 日志“没有INF文件”; 终止 选择userspage.Values[UsersDefault]:=True; 终止
非常感谢。在我查找getInInt函数并发现需要在[Setup]部分创建一个用户密钥之前,我一开始并没有在INF文件中找到需要存储密钥及其值的位置。我必须添加一些额外的代码来查看IsUpgrade是否设置为True,以便在升级过程中不会执行您提供的代码块。非常感谢你的帮助!