inno-setup - 使用 innosetup 中的函数添加注册表项

标签 inno-setup

如何使用函数值在 innosetup 中添加注册表项。我想设置
注册表中 IsServer 的值作为 InstallAsServer 的返回值

[Code]
[Registry]
Root: HKLM; Subkey: "Software\company\product\Settings"; ValueType: string; ValueName: "IsServer"; ValueData: {code:InstallAsServer}

var
  Page: TInputOptionWizardPage;
  IsServer: Boolean;
procedure InitializeWizard;
 begin
  Page := CreateInputOptionPage(wpWelcome,
  'Install Type', 'Select Install Type',
  'Please select Installation type; If Server click Server else Client',
  True, False);

  // Add items
  Page.Add('Install as Server');
  Page.Add('Install as Client');

  // Set initial values (optional)
  Page.Values[0] := True;
  Page.Values[1] := False;
  IsServer := Page.Values[0];
end;

function InstallAsServer(emppararm: string): string; //emppararm not used just for syntax
begin
  if (IsServer=False) then
    begin
      result:= '0';
    end
  else
   begin
    result:= '1';
   end

end;

但即使我在页面中选择服务器或客户端,我也总是将值设置为 1

最佳答案

发生这种情况是因为您正在分配 IsServer 的值变量仅在向导表单初始化时使用。您需要从您的 InstallAsServer 中理想地读取实际值。功能,因此您甚至可以删除 IsServer多变的。您可以将代码简化为如下所示:

[Registry]
Root: HKLM; Subkey: "Software\company\product\Settings"; ValueType: string; ValueName: "IsServer"; ValueData: {code:InstallAsServer}

[Code]
var
  Page: TInputOptionWizardPage;

procedure InitializeWizard;
begin
  Page := CreateInputOptionPage(wpWelcome, 'Install Type', 'Select Install Type',
    'Please select Installation type; If Server click Server else Client', True, 
    False);

  // add items
  Page.Add('Install as Server');
  Page.Add('Install as Client');

  // set initial values (optional)
  Page.Values[0] := True;
  Page.Values[1] := False;
end;

function InstallAsServer(Value: string): string;
begin
  // read the actual value directly from the Page
  if not Page.Values[0] then
    Result := '0'
  else
    Result := '1';    
end;

关于inno-setup - 使用 innosetup 中的函数添加注册表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15428072/

相关文章:

iis-7.5 - 如何使用 innosetup 检查 IIS 7 或 7+ 是否已安装?

registry - 无法设置文件关联注册表

inno-setup - "colon (' : ') expected" compiler error on character range in case statement in Inno Setup Pascal script

32bit-64bit - 是否可以在 Inno Setup 中设置安装模式(32 位或 64 位)?

installation - 在 Inno Setup 中需要对特定文件进行覆盖确认,无条件安装目录中的其他文件

inno-setup - 使用 innosetup 脚本删除以前安装的应用程序文件夹

registry - 无法通过 Inno Setup Installer 更改注册表项

progress-bar - 运行部分的 Inno Setup 简单进度页面

audio - Inno Setup-如何在特定页面中使BASS音频库(音乐)静音?

inno-setup - 如何获取脚本部分的当前设置目录?