Отвечаю на
вопрос в теме c аддоном Miranda IM.
Есть ряд программ, которые для установки достаточно просто скопировать в нужную директорию, создать ярлыки, добавить записи в реестр (последнее опционально)
К таким программам относится и Miranda.
В аддоне я использовал следующий inf файл
Код:
[Version]
Signature="$Windows NT$"
AdvancedINF=2.5
[Optional Components]
Uninst7
[Uninst7]
OptionDesc =%PROG_NAME%
Modes =0,1,2,3
AddReg =PROG.AddReg
ProfileItems =PROG.AddShortcut
Uninstall =mUninst.Uninstall
[DefaultInstall]
OptionDesc =%PROG_NAME%
Modes =0,1,2,3
AddReg =PROG.AddReg
ProfileItems =PROG.AddShortcut
Uninstall =mUninst.Uninstall
[Uninstall]
BeginPrompt =BeginUnInsPrompt
RunPreSetupCommands =Close.Prog:1
RunPostSetupCommands =Dir.Delete
EndPrompt =EndUnInsPrompt
DelReg =PROG.DelReg
ProfileItems =PROG.DelShortcut
[BeginUnInsPrompt]
Title=Деинсталляция %PROG_NAME%
Prompt=Вы действительно хотите удалить %PROG_NAME% и все компоненты программы?
ButtonType=YESNO
[Close.Prog]
TASKKILL /F /IM %PROG_1%
TSKILL %PROG_2%
[Dir.Delete]
rundll32.exe advpack.dll,DelNodeRunDLL32 %16422%\%PROG_DIR%
[EndUnInsPrompt]
Prompt=Программа %PROG_NAME% удалена.
[PROG.AddReg]
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%PROG_NAME%_addon","DisplayIcon",0,"%16422%\%PROG_DIR%\%PROG_1%"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%PROG_NAME%_addon","DisplayName",,%PROG_NAME%"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%PROG_NAME%_addon","DisplayVersion",,"v%PROG_VERS%"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%PROG_NAME%_addon","Publisher",,"%PROG_MADE%"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%PROG_NAME%_addon","URLInfoAbout",,"%PROG_URL%"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%PROG_NAME%_addon","UninstallString",,"rundll32.exe advpack.dll,LaunchINFSection %17%\%PROG_INF%,Uninstall"
[PROG.DelReg]
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%PROG_NAME%_addon"
[PROG.AddShortcut]
Name =%SRTC_NAME%
CmdLine =16422,%PROG_DIR%,%PROG_1%
WorkingDir =16422,%PROG_DIR%
SubDir =%PROG_SDIR%
InfoTip =%PROG_INFO%
[PROG.DelShortcut]
Name =%SRTC_NAME%,0x00000002
SubDir =%PROG_SDIR%
[Strings]
PROG_DIR ="Miranda IM"
PROG_NAME ="Miranda IM"
SRTC_NAME ="Miranda IM"
PROG_VERS ="0.7"
PROG_MADE ="oszone.net"
PROG_URL ="http://forum.oszone.net/forum-62.html"
PROG_INF ="Uninst7.inf"
PROG_1 =miranda32.exe
PROG_2 =miranda32
PROG_SDIR =""
PROG_INFO ="Программа для общения по ICQ протоколу"
При редактировании только одной секции [String] и переименовании секции инсталляции, можно использовать этот inf для установки/удаления других аддонов. Аддоны должны быть комбинированные, т.е. сначала из sysoc срабатывает данный inf файл, а затем из SVCPACK запускается sfx архив, созданый любым доступным способом, при этом,
sfx архив должен просто распаковать файлы в нужную директорию.
Создание ярлыков, внесение информации в реестр (в том числе о деинсталляции) реализовано в inf файле.
Деинсталляция перенесена из привычного для sysoc аддонов места "Установка компонентов Windows" в Установку и удаление программ"
При деинсталляции будет выдан запрос "Вы действительно хотите удалить такую то программу?",
Если программа в данный момент запущена, она будет выгружена из памяти, далее произойдёт удаление директории с программой, ярлыков, записей реестра.
По окончании деинсталляции будет сообщено "Программа такая то удалена"
Приведу пример inf-а для программы Test,
Директория установки - Program Files\Утилиты\Folder\Test
Ярлык - Пуск\Программы\Утилиты\Ярлык Test Program.lnk
Код:
[Optional Components]
Uninst8
[Uninst8]
OptionDesc =%PROG_NAME%
Modes =0,1,2,3
AddReg =PROG.AddReg
ProfileItems =PROG.AddShortcut
Uninstall =mUninst.Uninstall
<skip>
[Strings]
PROG_DIR ="Утилиты\Folder\Test"
PROG_NAME ="Test Program"
SRTC_NAME ="Ярлык Test Program"
PROG_VERS ="0.0.0.1"
PROG_MADE ="oszone.net"
PROG_URL ="http://forum.oszone.net/forum-62.html"
PROG_INF ="Uninst8.inf"
PROG_1 =test.exe
PROG_2 =test
PROG_SDIR ="Утилиты"
PROG_INFO ="Программа для примера работы inf файла"
Так же, в файлах txtsetup, dosnet, sysoc необходимо заменить все Uninst7 на Uninst
8
И переименовать сам файл Uninst7.inf в Uninst8.inf.
Идея подсмотрена
здесь
Пустышку аддона Miranda прикрепил к посту. В sfx архиве реализована защита от случайного запуска.
Если возникли вопросы, спрашивайте.