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

       

Деинсталляция приложения


    При создании корректного инсталляционного пакета приходится задумываться о его деинсталляции, удаления из системы. Обычно в системе существует стандартная утилита удаления установленных программ, находящаяся в панели управления. Для того, чтобы зарегистрировать в её списке своё приложение, необходимо добавить в реестр новый ключ с необходимыми параметрами, а также создать функцию удаления пакета из системы. Логично будет создать в INF-скрипте новую выполняемую секцию, выполняющую это действие и скопировать при инсталляции сам скрипт в систему. Место размещения ключа деинсталляции программы Program_Name в реестре: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Program_Name Ниже представлено описание параметров типового ключа удаления программы:



Название Тип строки INF-cтрока записи в реестр Описание
Поддерживается MS Windows 95, 98, NT и выше:
DisplayName REG_SZ HKLM,"%Key%","DisplayName",,"Program_Name" Имя программы, отображаемое в утилите деинсталляции
UninstallString REG_SZ HKLM,"%Key%","UninstallString",,"rundll32.exe advpack,LaunchINFSectionEx C:\Windows\Inf\program.inf,Uninstall,,64,A" Строка, выполняемая при деинсталляции пакета
DsiplayIcon REG_SZ HKLM,"%Key%","DsiplayIcon",,"C:\program.exe,0" Отображение ICO-пиктограммы, указывается путь к файлу с пиктограммой и её номер в списке существующих, начинащемся с нуля
Поддерживается MS Windows 2000 и выше:
DisplayVersion REG_SZ HKLM,"%Key%","DisplayVersion",,"10.241.8.44" Версия программы
HelpLink REG_SZ HKLM,"%Key%","HelpLink",,"http://company.com/support.php" URL технической поддержки программы
ModifyPath REG_SZ HKLM,"%Key%","ModifyPath",,"rundll32.exe params" Команда, выполняемая при нажатии кнопки "Заменить"
EstimatedSize REG_DWORD HKLM,"%Key%","EstimatedSize",0x10001,"1024" Размер установленной программы в Кбайтах
NoRemove REG_DWORD HKLM,"%Key%","NoRemove",0x10001,"0" Флаги блокировки удаления, обновления или восстановления установленной программы. Полезно для разного рода хотфиксов и апдейтов.
NoModify REG_DWORD HKLM,"%Key%","NoModify",0x10001,"0"
NoRepair REG_DWORD HKLM,"%Key%","NoRepair",0x10001,"0"
[strings]

Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\Program_Name"

<
/p>     Кроме того, существуют дополнительные малозначимые ключи, в основном для формирования окна справки о программе, увидеть примеры которых можно, исследовав существующие ключи деинсталляции программ в реестре. Кроме того, для корректной деинсталляции Microsoft реализовала технологию точек отката реестра: "Создание точки отката реестра (AdvancedINF)". Остаётся добавить в файл скрипта новую выполняемую секцию Uninstall, добавить к инсталляционной секции задание на запись ключа деинсталляции и скопировать свой INF скрипт (setup.inf) в систему во время инсталляции программы:

[Version]

Signature="$CHICAGO$"

AdvancedINF=2.0, "Error message"

[DefaultInstall.NT]

CopyFiles=cpf.inf

AddReg=adr.uninstall

[cpf.inf]

program.inf,setup.inf

[DestinationDirs]

cpf.inf = 17

[SourceDisksFiles]

setup.inf = 1

[SourceDisksNames]

1 = "Drive of program_name","",0,

[adr.uninstall]

HKLM,"%Key%","DisplayName",,"Program_Name"

HKLM,"%Key%","UninstallString",,"rundll32.exe advpack,LaunchINFSectionEx %17%\program.inf,Uninstall,,64,A"

HKLM,"%Key%","DsiplayIcon",,"C:\program.exe,0"

HKLM,"%Key%","DisplayVersion",,"10.241.8.44"

HKLM,"%Key%","EstimatedSize",0x10001,"1024"

[Uninstall]

DelFiles=cpf.inf

DelReg=dlr.uninstall

[dlr.uninstall]

HKLM,"%Key%"

[strings]

Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\Program_Name"

    После выполнения подобного скрипта в утилите деинсталляции появится вот такой пункт:

   



Содержание раздела