Как создать установщик что бы устанавливал для всех пользователей с помощю 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;