Заменить это:
AuthComboBox.ItemIndex := 0;
с:
var
S: string;
begin
{ ... }
if RegQueryStringValue(HKLM, 'Software\RiskValue', 'ReportProdAuthType', S) and
SameText(S, 'True') then
begin
AuthComboBox.ItemIndex := 1;
end
else
begin
AuthComboBox.ItemIndex := 0;
end;
{ ... }
end;
Кроме того, использование ExpandConstant
для получения значения ключа реестра чрезмерно спроектировано.
Либо используйте его из раздела [Registry]
(для чего предназначены скриптовые константы):
[Registry]
Root: HKLM; Subkey: "Software\RiskValue"; ValueType: string; \
ValueName: "ReportProdAuthType"; ValueData: "{code:GetAuthCombo}"
Или, если вы хотите использовать Pascal Script, используйте GetAuthCombo
напрямую:
if (CurStep=ssPostInstall) then
begin
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\RiskValue',
'ReportProdAuthType', GetAuthCombo(''));
end;
Затем вы можете даже полностью удалить Param: String
или даже встроить функцию GetAuthCombo
, если только вы не используете ее в другом месте.
var
S: string;
begin
{ ... }
if (CurStep=ssPostInstall) then
begin
case AuthComboBox.ItemIndex of
0: S := 'False';
1: S := 'True';
end;
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\RiskValue', 'ReportProdAuthType', S);
end;
end;