@ 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;
답변 해 주셔서 감사합니다. 이 솔루션은 나를 위해 잘 작동합니다. 그러나 (...) 그것은 더러운 해킹의 느낌을 가지고 있습니다. 이 기능이 향후 설정 플래그로 추가 될지 여부는 어떤 생각입니까? – mkva
죄송 합니다만 http : //innosetup.uservoice를 사용할 수 있습니다.co.kr/ – mlaan
이 제안에 감사드립니다. 아마도 QuietUninstallString 값도 업데이트하려고 할 것입니다. 별도의 답변으로 샘플 코드를 제공했습니다. –