Inno Setup:使用注册表部分中自定义向导页面的数据

2023-12-29

我想知道如何使用自定义向导页面的用户输入值。我有一个自定义页面,用户可以在其中键入 ODBC 连接数据。这是这部分的代码:

ServerDataPage := CreateInputQueryPage(AskAuthPage.ID,
    'SQL Server Connection Data', '',
    'Please insert data...');
ServerDataPage.Add('ODBC Name:', False);
ServerDataPage.Add('Server Name:', False);
ServerDataPage.Add('User:', False);
ServerDataPage.Add('Password:', False);

这几乎可以正常工作。该页面出现时带有输入框和标题。

我还从 Inno Setup 中查找了一个示例。有这样一行:

ExamplePage.Values[0] := GetPreviousData('Name', ExpandConstant('{sysuserinfoname}'));

所以我觉得一定有“落后”的东西,比如:

thisIsAVariable := ServerDataPage.Values[x]

我可以使用这些变量来创建这样的 ODBC 吗?

Root: HKCU; SubKey: Software\ODBC\ODBC.INI\ODBC Data Sources; ValueType: string; ValueName: Leist; ValueData: SQL Server; Flags: createvalueifdoesntexist uninsdeletevalue
Root: HKCU; SubKey: Software\ODBC\ODBC.INI\Leist; Flags: createvalueifdoesntexist uninsdeletevalue; ValueName: Driver; ValueType: string; ValueData: {sys}\SQLSRV32.dll
Root: HKCU; SubKey: Software\ODBC\ODBC.INI\Leist; Flags: createvalueifdoesntexist uninsdeletevalue; ValueName: Server; ValueType: string; ValueData: SERVERADRESS
Root: HKCU; SubKey: Software\ODBC\ODBC.INI\Leist; Flags: createvalueifdoesntexist uninsdeletevalue; ValueName: Database; ValueType: string; ValueData: DATABASE NAME
Root: HKCU; SubKey: Software\ODBC\ODBC.INI\Leist; Flags: createvalueifdoesntexist uninsdeletevalue; ValueName: LastUser; ValueType: string; ValueData: USER
Root: HKCU; SubKey: Software\ODBC\ODBC.INI\Leist; Flags: createvalueifdoesntexist uninsdeletevalue; ValueName: Password; ValueType: string; ValueData: PASSWORD

如果是这样,我必须把它放在脚本中的哪里?整个“自定义向导页面”的事情都在[Code]部分。这些变量在此之外也可用吗?[Code]部分?

问候


Use a 脚本常量 https://jrsoftware.org/ishelp/index.php?topic=scriptconstants使用自定义页面中的值[Registry](或任何其他)部分:

[Registry]
Root: HKCU; SubKey: Software\ODBC\ODBC.INI\ODBC Data Sources; \
    ValueType: string; ValueName: Leist; ValueData: SQL Server; \
    Flags: createvalueifdoesntexist uninsdeletevalue
Root: HKCU; SubKey: Software\ODBC\ODBC.INI\Leist; \
    Flags: createvalueifdoesntexist uninsdeletevalue; ValueName: Driver; \
    ValueType: string; ValueData: {sys}\SQLSRV32.dll
Root: HKCU; SubKey: Software\ODBC\ODBC.INI\Leist; \
    Flags: createvalueifdoesntexist uninsdeletevalue; ValueName: Server; \
    ValueType: string; ValueData: {code:GetServerData|0}
Root: HKCU; SubKey: Software\ODBC\ODBC.INI\Leist; \
    Flags: createvalueifdoesntexist uninsdeletevalue; ValueName: Database; \
    ValueType: string; ValueData: {code:GetServerData|1}
Root: HKCU; SubKey: Software\ODBC\ODBC.INI\Leist; \
    Flags: createvalueifdoesntexist uninsdeletevalue; ValueName: LastUser; \
    ValueType: string; ValueData: {code:GetServerData|2}
Root: HKCU; SubKey: Software\ODBC\ODBC.INI\Leist; \
    Flags: createvalueifdoesntexist uninsdeletevalue; ValueName: Password; \
    ValueType: string; ValueData: {code:GetServerData|3}
[Code]

var
  ServerDataPage: TInputQueryWizardPage;

function GetServerData(Param: string): string;
begin
  Result := ServerDataPage.Values[StrToInt(Param)];
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Inno Setup:使用注册表部分中自定义向导页面的数据 的相关文章

随机推荐