Когда-то здесь обсуждалось решение по корректной деинсталляции.
В InnoSetup это выглядело так:
[code]
Код:
// Пропускаем страницу приветствия
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
end;
// При установке, бэкапим значение HKEY_CLASSES_ROOT\.pdf\default в Foxit_bak
// нужно для кореектной деинсталяции, c возвратом предыдущей ассоциации на pdf-файлы
procedure MyBeforeInstall();
var
PDF: String;
begin
if RegQueryStringValue(HKEY_CLASSES_ROOT, '.pdf', '', PDF) then
begin
RegWriteStringValue(HKEY_CLASSES_ROOT, '.pdf', 'Foxit_bak', PDF);
end;
end;
// При деинсталяции восстанавливаем бэкапное значение и удаляем ключ Foxit_bak
procedure DeinitializeUninstall();
var
PDF: String;
begin
RegDeleteValue(HKEY_CLASSES_ROOT, '.pdf', '');
if RegQueryStringValue(HKEY_CLASSES_ROOT, '.pdf', 'Foxit_bak', PDF) then
begin
RegWriteStringValue(HKEY_CLASSES_ROOT, '.pdf', '', PDF);
end;
RegDeleteValue(HKEY_CLASSES_ROOT, '.pdf', 'Foxit_bak');
end;
добавляется в конец скрипта.