Как создать установщик что бы устанавливал для всех пользователей с помощю Inno setup?

Есть надстройки для ворд и эксел, нужно что бы они устанавливались в папки каждого пользователей. Как это реализовать? Предполагаю код должен перебрать всех пользователей и вставить имя пользователей во время копирования файлов. Внимание мне не нужно копирования в общую папку, нужно копировать в папку каждого пользователя. Не один из ниже указанных способов не работает. Помогите разобраться.

1 способ к которому я пришел, но он не работает

[Files]
#sub FileCopy
Source: "C:\Users\Sherzod\Desktop\Новая папка\admin\adminMark.xlam"; DestDir: "{sd}\Users\{myUsers[I]}\AppData\Roaming\Microsoft\Excel\XLSTART{\}"; Flags: ignoreversion
#endsub
#for {I = 0; I < DimOf(myUsers); I++} FileCopy


[code]

function myUsers(Param:string): Variant;

var
  Query: string;
  WbemLocator, WbemServices, WbemObjectSet: Variant;
  Printer: Variant;
  I: Integer;
begin
  WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  WbemServices := WbemLocator.ConnectServer('.', 'root\CIMV2');
  Query := 'SELECT * FROM Win32_UserAccount WHERE localAccount = true and disabled = false';
  WbemObjectSet := WbemServices.ExecQuery(Query);
  if not VarIsNull(WbemObjectSet) and (WbemObjectSet.Count > 0) then
  begin
    for I := 0 to WbemObjectSet.Count - 1 do
    begin
      Printer := WbemObjectSet.ItemIndex(I);
      if not VarIsNull(Printer) then
      begin
        Result[I]:= Printer.Name;
      end;
    end;
  end;
end; 

2 способ тоже не работает

    [Files]
    #sub FileCopy
    Source: "C:\Users\Sherzod\Desktop\Новая папка\admin\adminMark.xlam"; DestDir: "{sd}\Users\{code:myUsersName(I)}\AppData\Roaming\Microsoft\Excel\XLSTART{\}"; Flags: ignoreversion
    #endsub
    #for {I = 0; I < {code:myUsersCount}; I++} FileCopy

        function myUsersCount(Param:string): Integer;

    var
      Query: string;
      WbemLocator, WbemServices, WbemObjectSet: Variant;
    begin
      WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
      WbemServices := WbemLocator.ConnectServer('.', 'root\CIMV2');
      Query := 'SELECT * FROM Win32_UserAccount WHERE localAccount = true and disabled = false';
      WbemObjectSet := WbemServices.ExecQuery(Query);
      Log('Count: ' + WbemObjectSet.Count)
      Result:=  WbemObjectSet.Count;
    end;

     function myUsersName(Num:Integer): string;

    var
      Query: string;
      WbemLocator, WbemServices, WbemObjectSet: Variant;
    begin
      WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
      WbemServices := WbemLocator.ConnectServer('.', 'root\CIMV2');
      Query := 'SELECT * FROM Win32_UserAccount WHERE localAccount = true and disabled = false';
      WbemObjectSet := WbemServices.ExecQuery(Query);
      Log('Count: ' + WbemObjectSet.ItemIndex(Num))
      Result := WbemObjectSet.ItemIndex(Num);
    end;

Ответы (0 шт):