УЧЕБНИК ПО АВТОУСТАНОВКЕ WINDOWS


2. Методы деинсталяции.


Один из проблемных моментов - это корректное удаление установленного приложения.

Первое, что нужно сделать - это еще при установке приложения добавить строку в реестр для удаления приложения с указанием сеции, отвечающей за деинсталяцию:

HKLM,"%Key%","DisplayName",,"SOMEAPP"

HKLM,"%Key%","DisplayIcon",,"16422,"SOMEAPP",0

HKLM,"%Key%","UninstallString",,"rundll32.exe advpack,LaunchINFSectionEx %17%\SOMEONE.inf,Uninstall"

HKLM,"%Key1%","SOMEAPP",0x00020000,"C:\Program Files\SOMEAPP\SOMEAPP.exe"

HKLM,"%Key2%","Start Minimized",0x10001,01,00,00,00

Способ 1. "По учебнику"

Используем инструкции DelDirs и DelFile.

[DefaultInstall]

CopyFiles=files

[files]

filename.ext

[DestinationDirs]

files= 11, APPDIR

; из секции деинсталяции сначала запускаем удаление всех файлов, для этого желательно

; создавать отдельную секцию со списком удаляемых файлов, хотя допустимо и использование секции

; со списком для копирования (если нет переименования, специальных флагов)

[Uninstall]

DelFiles=files

RunPostSetupCommand=SOMEAPP.AdinfCall

; затем запускаем через RunPostSetupCommand библиотеку advpack для обработки команды Deldirs

[SOMEAPP.AdinfCall]

Commandline="""%11%\rundll32.exe"" advpack,LaunchINFSection ""%17%\SOMEONE.inf"",Del.Folders,4"

[Del.Folders]

Deldirs=dirs

;передаем список директорий для удаления

[dirs]

%11%, APPDIR

Важно! Нужно учитывать, что в случае, когда не все файлы удалены из папок, DelDirs не сработает. Если вы удаляете папку содержащую подпапки (даже пустые), DelDirs не сработает.

Так что сначала надо удалить файлы, затем подпапки, начиная с наиболее глубоко вложенной, и только затем корневую папку приложения.

Способ 2. "Радикальный"

Используется внутреняя команда библиотеки rundll32 DelNodeRunDLL32 для удаления непустых директорий.




Начало  Назад  Вперед



Книжный магазин