У меня есть этот код в разделе [Code]
, этот код запускается только тогда, когда я запускаю деинсталлятор:
//////////////
// Uninstaller
//////////////
const
DeleteFiles = true;
DeleteSubdirs = false;
// Initialize the Inno Setup Uninstaller skin style.
function InitializeUninstall: Boolean;
begin
Result := True;
LoadVCLStyle_UnInstall(ExpandConstant('{app}\uninstall.vsf'));
end;
// Deinitialize the Inno Setup Uninstaller skin style.
procedure DeinitializeUninstall();
begin
UnLoadVCLStyles_UnInstall;
UnloadDll(ExpandConstant('{app}\uninstall.dll'));
DeleteFile(ExpandConstant('{app}\uninstall.dll'));
DelTree(ExpandConstant('{app}\'), true, DeleteFiles, DeleteSubdirs);
end;
Проблема в том, что инструкции внутри DeinitializeUninstall
процедуры DeleteFile
и DelTree
выполняются, даже если пользователь выбирает Да или Нет, когда программа удаления InnoSetup спрашивает пользователя, действительно ли он хочет удалить установку или не программное обеспечение, я имею в виду выбор пользователя этого изображения:
Конечно, я понимаю, что означает эта процедура и почему мои инструкции выполняются даже при выборе Нет, потому что программа удаления деинициализируется независимо от того, что я выберу, но просто я не могу найти правильный способ сделать это эффективно.
Поэтому мне нужно обработать эти две инструкции ниже, только если пользователь действительно потребовал удаления, выбрав Да, но также эти инструкции должны выполняться в конце процесса удаления (и это процедура DeinitializeUninstall
, которую я предлагаю) :
DeleteFile(ExpandConstant('{app}\uninstall.dll'));
DelTree(ExpandConstant('{app}\'), true, DeleteFiles, DeleteSubdirs);
Как я могу это сделать?
usDone
- это шаг, который указывает на то, что процесс удаления завершился успешно (это условие, при котором вы хотите выполнить эту очистку). - person TLama   schedule 23.11.2014