Я написал следующий код для реализации ответа @ mlaan (добавив "/ log" к строкам удаления в реестре). Обратите внимание, что я проверяю только HKLM. Вы можете добавить строки для проверки HKCU вместо этого или также.
#define MyAppID "{3D97CC33-75B0-4D86-8533-B213E5FF4046}"
[Setup]
AppId={{#MyAppID}
[Code]
procedure AppendStringToRegValue(const RootKey: integer; const SubKeyName, ValueName, StringToAppend: string);
var
OldValue: string;
NewValue: string;
RootKeyString: string;
begin
case RootKey of
HKLM:
RootKeyString := 'HKLM';
HKCU:
RootKeyString := 'HKCU';
else
RootKeyString := 'RootKey ' + IntToStr(RootKey);
end;
if RegQueryStringValue( RootKey, SubKeyName, ValueName, OldValue ) then
begin
NewValue := OldValue + StringToAppend
if RegWriteStringValue( RootKey, SubKeyName, ValueName, NewValue ) then
Log('Updated ' + RootKeyString + '\' + SubKeyName + '\' + ValueName + '. New Value = [' + NewValue + '].')
else
Log('Could not write to ' + RootKeyString + '\' + SubKeyName + '\' + ValueName + '. Value remains [' + OldValue + '].' )
end
else
Log('Could not read from ' + RootKeyString + '\' + SubKeyName + '\' + ValueName + '.' );
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
OldValue: string;
NewValue: string;
UninstallSubKeyName: string;
begin
if CurStep = ssPostInstall then
begin
{ Modify uninstall registry entries to add "/log" parameter for uninstall }
UninstallSubKeyName := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppID}_is1'
AppendStringToRegValue(HKLM, UninstallSubKeyName, 'UninstallString', ' /log')
AppendStringToRegValue(HKLM, UninstallSubKeyName, 'QuietUninstallString', ' /log')
end;
end;