Inno Setup - удаление пути из переменной среды PATH при удалении программы

Я написал скрипт Inno Setup, который устанавливает программу и обновляетPATH Переменная окружения с каталогом, в котором установлена ​​программа.

Я хочу обновитьPATH переменная окружения, чтобы восстановить предыдущее состояние установки.

Путь установки выбирается пользователем во время работы установщика.

Это скрипт, который использует код изКак изменить переменную среды PATH при запуске установщика Inno Setup?

[Setup]
AppName=Pandoc_x64
AppVersion=1.16.0.2
AppPublisher=Hitachi Systems CBT
DefaultDirName={pf64}\pandoc
UninstallDisplayName=Pandoc_x64
DisableDirPage=no
UninstallFilesDir={app}\uninstall

[Files]
Source: "pandoc.exe"; DestDir: "{app}";
Source: "pandoc-citeproc.exe"; DestDir: "{app}";


[Setup]
ChangesEnvironment=yes

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

[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;

Взглянув на код, можно отметить следующую инструкцию:

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

Я использовал эту инструкцию, адаптирован (на мой взгляд) для моего примера, чтениеInno Setup. Как удалить значение реестра?

Использованиеuninsdeletevalue следует удалить значение, когда программа удалена, и на самом деле, когда я запускаю деинсталлятор, весьPATH переменная удалена, но мне нужно восстановитьPATH переменная окружения к предыдущему значению установки. Я думаю, что можно прочитать его значение перед запуском установщика, но я понятия не имею, как его использовать на этапе удаления.

Может ли кто-нибудь помочь мне с примером кода?

Ответы на вопрос(3)

Ваш ответ на вопрос