Как создать установку «только для меня» для пользователя с правами администратора? - PullRequest
3 голосов
/ 21 июля 2011

Когда я запускаю скрипт установки от имени пользователя-администратора, он помещает пункты меню «Пуск» в профиль «Все пользователи».Я хочу, чтобы пункты меню «Пуск» были помещены в профиль текущего пользователя, если они являются администратором, и решили установить «Только для меня».

Я могу сделать это, выбрав одно из двух значений для #define, но я не могу понять, как создать постоянную, которая условно включена.У меня уже есть подпрограмма раздела [Code], которая возвращает true, если была выбрана установка «Только для меня».Вот сценарий:

#define StartMenuLocation = "{somegroup}"     ; check JustForMeInstall
#define StartMenuLocation = "{anothergroup}"  ; check AllUsersInstall
...

[Icons]
Name: "{#StartMenuLocation}\{#MyAppName}" ; Filename: "{app}\{#ExeName}" ; parameters: "{#CommandArgs}" ; comment: "Starts {#MyAppName} {#MyAppVersion}"
...

[Code]

function JustMeInstall  : boolean ;
begin
Result := (InstallationType = itJustMe) ;
end ;

function AllUsersInstall: boolean ;
begin
Result := (InstallationType = itAllUsers) ;
end ;

, где параметры "проверки" для #defines не поддерживаются и, конечно, игнорируются.

Итак, на самом деле два вопроса:

  • какие константы я использую для определения местоположения папки меню «Пуск».- InnoSetup предоставляет {group}, но эта папка создается в профиле «Все пользователи», если только пользователь, устанавливающий приложение, не имеет прав администратора, в этом случае он создается в профиле пользователя.Мне нужна константа для текущей папки меню «Пуск», которая работает, когда этот пользователь вошел в систему как пользователь с правами администратора.

  • как реализовать условные # определения, как показано выше (из общихинтерес за пределами этой проблемы в любом случае).

1 Ответ

4 голосов
/ 22 июля 2011

Вы устанавливаете директиву PrivilegesRequired на самое низкое значение, что означает, что Inno будет устанавливаться ТОЛЬКО для текущего пользователя независимо от того, запущен он от имени администратора или нет. (Это также означает, что вы ничего не можете установить в системные каталоги.

Обратите внимание, что это нельзя установить во время выполнения, поэтому вам нужно создать две настройки, если вы хотите разрешить оба типа.

Если вы хотите изменить только расположение значков, вы можете условно использовать {userprograms}\{groupname} или {commonprograms}\{groupname}

...