Inno setup 从Inno Pascal设置DestDir?

Inno setup 从Inno Pascal设置DestDir?,inno-setup,Inno Setup,我想在不同的文件夹中安装文件,具体取决于用户是选择为所有用户安装,还是仅为当前用户安装 我添加了使用CreateInputOptionPage()创建带有两个单选按钮的选项页 但是,我的安装程序现在到处都是重复的行,如以下两行: Source: {#ProjectRootFolder}\License.txt; DestDir: {userdocs}\{#MyAppName}; Check: NOT IsAllUsers Source: {#ProjectRootFolder}\License.

我想在不同的文件夹中安装文件,具体取决于用户是选择为所有用户安装,还是仅为当前用户安装

我添加了使用CreateInputOptionPage()创建带有两个单选按钮的选项页

但是,我的安装程序现在到处都是重复的行,如以下两行:

Source: {#ProjectRootFolder}\License.txt; DestDir: {userdocs}\{#MyAppName}; Check: NOT IsAllUsers
Source: {#ProjectRootFolder}\License.txt; DestDir: {commondocs}\{#MyAppName}; Check:IsAllUsers
有没有一种更优雅的方式来实现上述目标?例如,Pascal代码能否创建一个像#define这样的变量,这样我就可以用它来代替上面的{userdocs}和{commondocs}

进一步详情:

上面的IsAllUsers()函数调用以下代码:

function IsAllUsers: Boolean;
begin
#ifdef UPDATE
  Result := AllUsersInRegistryIsTRUE;
#else
  Result := AllUsersOrCurrentUserPage.Values[1]; // wizard page second radio button
#endif
end; 
以及:


你喜欢这套衣服吗

[Files]
Source: {#ProjectRootFolder}\License.txt; DestDir: {code:GetDir}\{#MyAppName};

...

[Code]
var
  OptionsPage: TInputOptionWizardPage;

procedure InitializeWizard;
begin
  OptionsPage := CreateInputOptionPage(wpUserInfo, 
              'please select', 'the kind of installation', 'and continue..', 
              True, False);
  OptionsPage.Add('All users');
  OptionsPage.Values[0] := True;
  OptionsPage.Add('This user');
end;

function GetDir(Dummy: string): string;
begin
  if OptionsPage.Values[0] then
    Result := ExpandConstant('{commondocs}')
  else
    Result := ExpandConstant('{userdocs}');
end;

Sertac给出了一个很好的答案,但请记住,运行安装程序的用户可能不是登录到计算机的预期用户。在这种情况下,您的“仅此用户”数据最终将属于一个完全不同的“此用户”。这正是我所寻找的,Sertac。我不知道{code:}语法。非常感谢!
[Files]
Source: {#ProjectRootFolder}\License.txt; DestDir: {code:GetDir}\{#MyAppName};

...

[Code]
var
  OptionsPage: TInputOptionWizardPage;

procedure InitializeWizard;
begin
  OptionsPage := CreateInputOptionPage(wpUserInfo, 
              'please select', 'the kind of installation', 'and continue..', 
              True, False);
  OptionsPage.Add('All users');
  OptionsPage.Values[0] := True;
  OptionsPage.Add('This user');
end;

function GetDir(Dummy: string): string;
begin
  if OptionsPage.Values[0] then
    Result := ExpandConstant('{commondocs}')
  else
    Result := ExpandConstant('{userdocs}');
end;