Проверьте, запущен ли установщик Inno Setup с правами администратора - PullRequest
2 голосов
/ 27 мая 2020

Я хочу запустить установщик в режиме без прав администратора. Однако, если какой-либо драйвер отсутствует, я должен sh установить его. Поскольку изменить значение директивы с [Code] невозможно, я подумал, смогу ли я получить текущий режим выполнения, тогда я построю свой лог c.

[Setup]
PrivilegesRequired=lowest

[Code]

function IsKvaserNotInstalled: boolean;
begin
  Result := Not RegKeyExists(HKEY_LOCAL_MACHINE, 'driver path');
end;

function MyConst(): String;
begin
  Result := '{#SetupSetting("PrivilegesRequired")}';
  MsgBox(Result, mbInformation, MB_OK);
end;

function InitializeSetup(): Boolean;
begin
  MyConst();
  if IsKvaserNotInstalled() then begin
    MsgBox('KVASER driver is not installed. ' +
           'We require setup to run in admin mode to install it.', mbInformation, MB_OK);
    Result := false;
  end else
    Result := true;   
end;

function IsKvaserNotInstalled: boolean;
begin
  result := Not RegKeyExists(HKEY_LOCAL_MACHINE,
    'SOFTWARE\KVASER AB\CANDriver 1.0\Drivers\kcanv');
end;

[Run]
Filename: "{app}\drivers_setup.exe"; Parameters: "/S" ; Check: IsKvaserNotInstalled;

MyConst() возвращает значение, которое дан раздел [Setup]. Но я использую sh, чтобы получить значение, указывающее, что exe в настоящее время работает в режиме администратора. Если я получу другое значение, я могу добавить его в предложение if и продолжить настройку.

Это не будет работать, потому что мне нужна тихая установка:
Inno Setup - Как сделать запустите приложение с правами администратора, если для настройки установлено значение PrivilegesRequired = low?

1 Ответ

1 голос
/ 27 мая 2020

Чтобы проверить, запущена ли программа установки с правами администратора, используйте функцию IsAdmin .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...