Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использование Inno Setup для установки программы и обновления переменной среды PATH

Delphi , Программа и Интерфейс , Инсталяция

Использование Inno Setup для установки программы и обновления переменной среды PATH

При установке программного обеспечения часто требуется добавить путь к установленной директории в переменную среды PATH, чтобы приложение могло корректно работать. В этой статье мы рассмотрим, как это сделать с помощью Inno Setup, а также как правильно удалить путь из переменной PATH при удалении программы.

Обновление переменной PATH при установке

Для добавления пути к установленной директории в переменную PATH при установке программы используйте следующий код в секции [Registry] своего скрипта Inno Setup:

[Registry]
Root: HKLM; \
    Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; \
    ValueType: expandsz; ValueName: "PATH"; ValueData: "{olddata};{app}"; \
    Check: NeedsAddPath('{app}')

Функция NeedsAddPath проверяет, нужно ли добавлять путь в переменную PATH. Если путь уже присутствует, функция возвращает False, в противном случае – True.

[Code]
function NeedsAddPath(Param: string): boolean;
var
  OrigPath: string;
begin
  if not RegQueryStringValue(HKEY_LOCAL_MACHINE,
    'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
    'Path', OrigPath)
  then begin
    Result := True;
    exit;
  end;
  { look for the path with leading and trailing semicolon }
  { Pos() returns 0 if not found }
  Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0;
end;

Обновление переменной PATH при удалении программы

При удалении программы из системы нужно восстановить переменную PATH в прежнее состояние, то есть удалить путь, добавленный при установке. Для этого используйте флаг uninsdeletevalue в секции [Registry]:

Root: HKLM; \
    Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; \
    ValueName: "PATH"; ValueData: "{app}"; Flags: uninsdeletevalue

Однако, простое удаление значения переменной PATH с помощью флага uninsdeletevalue не гарантирует, что переменная будет восстановлена в прежнее состояние. Чтобы правильно удалить путь из переменной PATH, используйте следующий код в секции [Code]:

const
  EnvironmentKey = 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment';

procedure RemovePath(Path: string);
var
  Paths: string;
  P: Integer;
begin
  if not RegQueryStringValue(HKEY_LOCAL_MACHINE, EnvironmentKey, 'Path', Paths) then
  begin
    Log('PATH not found');
  end
    else
  begin
    Log(Format('PATH is [%s]', [Paths]));

    P := Pos(';' + Uppercase(Path) + ';', ';' + Uppercase(Paths) + ';');
    if P = 0 then
    begin
      Log(Format('Path [%s] not found in PATH', [Path]));
    end
      else
    begin
      Delete(Paths, P - 1, Length(Path) + 1);
      Log(Format('Path [%s] removed from PATH => [%s]', [Path, Paths]));

      if RegWriteStringValue(HKEY_LOCAL_MACHINE, EnvironmentKey, 'Path', Paths) then
      begin
        Log('PATH written');
      end
        else
      begin
        Log('Error writing PATH');
      end;
    end;
  end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usUninstall then
  begin
    RemovePath(ExpandConstant('{app}'));
  end;
end;

Теперь, при удалении программы, путь к установленной директории будет правильно удален из переменной PATH.

Заключение

Использование Inno Setup для установки программного обеспечения и обновления переменной среды PATH – это простой и эффективный способ гарантировать корректную работу приложения на целевом компьютере. Правильное удаление пути из переменной PATH при удалении программы также важно для поддержания системы в надлежащем состоянии.

Создано по материалам из источника по ссылке.

В этом контексте описывается процесс использования Inno Setup для установки программного обеспечения и обновления переменной среды PATH, а также правильного удаления пути из переменной PATH при удалении программы.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Инсталяция ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:24:55/0.0037219524383545/0