я бы делал вот так
Код:
![Выделить весь код](images/misc/selectcode.png)
[*Code]
procedure RD(Dir:string);
begin
Exec('cmd.exe', ' /c rd /S /Q ' + Add_Quotes(Dir),ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
Exec('cmd.exe', ' /c rd /S /Q ' + '"'+Dir+'"',ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode: Integer;
begin
if (CurStep = ssDone) then begin
if (IsComponentSelected('port')) then begin
RD(ExpandConstant('{app}\uninstall'));
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1')
if RegKeyExists(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1')
end; //if (IsComponentSelected('port'))
end; //if (CurStep = ssDone)
end; //CurStepChanged
а в остальном все хорошо?
Чтобы убрать отладочное сообщение удали строчки с MSGBox