Nun-Nun
04-01-2011, 01:27
Сделал аддон, но вылезло несколько проблем:
1) при деинсталляции не удаляются иконки;
2) при деинсталляции через "Установка и удаление программ" записи из реестра не удаляются, а при попытке удалить запись из HKСU или HKLM вручную выскакивает сообщение "Не удаётся открыть "7-Zip". Ошибка при открытии раздела". Если игнорирую и удаляю, то необходимые ветки удаляются сразу и из HKСU и из HKLM. Проблема деинсталляции решается только прописыванием %24%\%PROG_DIR%\Uninst.exe (внутри батник+reg-файл) в секции [Close.Prog], но подозреваю, что это экстрим.
Вот скрипт текстового файла от архива 7Zip и Inf-файла, расположенного внутри.
;!@Install@!UTF-8!
SetEnvironment="Name=7-Zip"
SetEnvironment="Vers= 9.20"
SetEnvironment="PathInst=%SystemDrive%\\ARC\\7-Zip"
SetEnvironment="NameInf=7-Zip.inf"
SetEnvironment="DelOld7Zip1=hidcon:cmd /c reg delete \"HKCU\\Software\\7-Zip\" /f"
SetEnvironment="DelOld7Zip2=hidcon:cmd /c reg delete \"HKLM\\Software\\7-Zip\" /f"
SetEnvironment="DelOld7Zip3=hidcon:cmd /c reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\7-Zip_Addon\" /f"
Title="Установка %Name%"
InstallPath="%PathInst%"
BeginPrompt="Сейчас будет установлен %Name%%Vers%"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Подождите..."
RunProgram="%DelOld7Zip1%"
RunProgram="%DelOld7Zip2%"
RunProgram="%DelOld7Zip3%"
RunProgram="fm0:hidcon:cmd /c Move %NameInf% %WINDIR%\\INF"
RunProgram="rundll32 advpack,LaunchINFSection %NameInf%,DefaultInstall,0"
RunProgram="fm0:Install.exe"
AutoInstall1="%DelOld7Zip1%"
AutoInstall1="%DelOld7Zip2%"
AutoInstall1="%DelOld7Zip3%"
AutoInstall1="fm0:hidcon:cmd /c Move %NameInf% %WINDIR%\\INF"
AutoInstall1="rundll32 advpack,LaunchINFSection %NameInf%,DefaultInstall,0"
AutoInstall1="fm0:Install.exe"
Shortcut="26,{%PathInst%\\7zFM.exe},{},{Microsoft\\Internet Explorer\\Quick Launch},{},{%Name%%Vers%},{%PathInst%}"
Shortcut="P,{%PathInst%\\7zFM.exe},{},{Архиваторы\\7-Zip},{},{%Name%%Vers%},{%PathInst%}"
Shortcut="P,{%PathInst%\\Uninst.exe},{},{Архиваторы\\7-Zip},{},{Удаление %Name%%Vers%},{%PathInst%}"
Shortcut="D,{%PathInst%\\7zFM.exe},{},{},{},{7-Zip},{%PathInst%}"
Shortcut1="26,{%PathInst%\\7zFM.exe},{},{Microsoft\\Internet Explorer\\Quick Launch},{},{%Name%%Vers%},{%PathInst%}"
Shortcut1="P,{%PathInst%\\7zFM.exe},{},{Архиваторы\\7-Zip},{},{%Name%%Vers%},{%PathInst%}"
Shortcut1="P,{%PathInst%\\Uninst.exe},{},{Архиваторы\\7-Zip},{},{Удаление %Name%%Vers%},{%PathInst%}"
Shortcut1="D,{%PathInst%\\7zFM.exe},{},{},{},{7-Zip},{%PathInst%}"
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
FinishMessage="%Name%%Vers% установлен!"
;!@InstallEnd@!
[Version]
Signature="$Windows NT$"
[DefaultInstall]
AddReg =PROG.AddReg
; CopyFiles =Files1,Files2
[Uninstall]
BeginPrompt =BeginUnInsPrompt
RunPreSetupCommands =Close.Prog:1
RunPostSetupCommands=Dir.Delete:1
EndPrompt =EndUnInsPrompt
DelFiles =Files1:1, Files2:1
DelReg =PROG.DelReg
ProfileItems =PROG.DelShortcut,PROG2.DelShortcut,PROG3.DelShortcut
[BeginUnInsPrompt]
Title =Деинсталляция %PROG_NAME%
Prompt =Вы действительно хотите удалить %PROG_NAME% и все компоненты программы?
ButtonType =YESNO
[Close.Prog]
TASKKILL /F /IM %PROG_1%
TSKILL %PROG_2%
%24%\%PROG_DIR%\Uninst.exe
[Dir.Delete]
rundll32.exe advpack.dll,DelNodeRunDLL32 %24%\%PROG_DIR%
[EndUnInsPrompt]
Prompt =Программа %PROG_NAME% удалена.
[DestinationDirs]
Files1=-1, %24%\%PROG_DIR1%
Files2=-1, %24%\%PROG_DIR%
[Files1]
en.ttt
ru.txt
[Files2]
7-zip.chm
7-zip.dll
7z.dll
7z.exe
7z.sfx
7zCon.sfx
7zFM.exe
7zG.exe
Descript.ion
History.txt
License.txt
Readme.txt
Uninstall.exe
Uninst.exe
[PROG.AddReg]
HKCU,%KEY_UNINST1%,"Path",0x0,"%24%\%PROG_DIR%"
HKCU,%KEY_UNINST1%,"Lang",0x0,"ru"
HKCU,"%KEY_UNINST1%\FM","Editor",0x0
HKCU,"%KEY_UNINST1%\FM","Diff",0x0
HKCU,"%KEY_UNINST1%\FM","ShowDots",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","ShowSystemMenu",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","ShowRealFileIcons",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","FullRow",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","ShowGrid",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","AlternativeSelection",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","SingleClick",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","FolderShortcuts",0x1
HKCU,"%KEY_UNINST1%\FM","FolderHistory",0x1,43,00,3a,00,5c,00,54,00,65,00,6d,00,70,00,5c,00,00,00,43,00,3a,00,5c,00,00,00,1a,04,3e,04,3c,04 ,3f,04,4c,04,4e,04,42,04,35,04,40,04,5c,00,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","PanelPath0",0x0,"%24%Temp\"
HKCU,"%KEY_UNINST1%\FM","FlatViewArc0",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","PanelPath1",0x0
HKCU,"%KEY_UNINST1%\FM","FlatViewArc1",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","ListMode",0x10001,02,03,00,00
HKCU,"%KEY_UNINST1%\FM","Position",0x1,42,00,00,00,54,00,00,00,f2,04,00,00,c2,03,00,00,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","Panels",0x1,01,00,00,00,00,00,00,00,52,02,00,00
HKCU,"%KEY_UNINST1%\FM\Columns","RootFolder",0x1,01,00,00,00,00,00,00,00,01,00,00,00,04,00,00,00,01,00,00,00,64,00,00,00
HKCU,"%KEY_UNINST1%\FM\Columns","FSDrives",0x1,01,00,00,00,00,00,00,00,01,00,00,00,04,00,00,00,01,00,00,00,64,00,00,00,00,11,00,00,01,00,00,00 ,64,00,00,00,01,11,00,00,01,00,00,00,64,00,00,00,14,00,00,00,01,00,00,00,64,00,00,00,03,11,00,00,01, 00,00,00,64,00,00,00,18,00,00,00,01,00,00,00,64,00,00,00,02,11,00,00,01,00,00,00,64,00,00,00
HKCU,"%KEY_UNINST1%\FM\Columns","FSFolder",0x1,01,00,00,00,00,00,00,00,01,00,00,00,04,00,00,00,01,00,00,00,64,00,00,00,07,00,00,00,01,00,00,00 ,64,00,00,00,0c,00,00,00,01,00,00,00,64,00,00,00,0a,00,00,00,01,00,00,00,64,00,00,00,0b,00,00,00,01, 00,00,00,64,00,00,00,09,00,00,00,01,00,00,00,64,00,00,00,08,00,00,00,01,00,00,00,64,00,00,00,1c,00,0 0,00,01,00,00,00,64,00,00,00
HKCU,"%KEY_UNINST1%\Options","CascadedMenu",0x10001,01,00,00,00
HKCU,"%KEY_UNINST1%\Options","ContextMenu",0x10001,77,3f,00,00
HKCU,"%KEY_UNINST1%\Options","WorkDirType",0x10001,02,00,00,00
HKCU,"%KEY_UNINST1%\Options","WorkDirPath",0x0,"%24%Temp"
HKCU,"%KEY_UNINST1%\Options","TempRemovableOnly",0x10001,01,00,00,00
HKLM,%KEY_UNINST1%,"Path",0x0,"%24%\%PROG_DIR%"
HKLM,%KEY_UNINST%,"DisplayIcon",0,"%24%\%PROG_DIR%\%PROG_1%"
HKLM,%KEY_UNINST%,"DisplayName",,"%PROG_NAME%"
HKLM,%KEY_UNINST%,"DisplayVersion",,"%PROG_VERS%"
HKLM,%KEY_UNINST%,"Publisher",,"%PROG_MADE%"
HKLM,%KEY_UNINST%,"URLInfoAbout",,"%PROG_URL%"
HKLM,%KEY_UNINST%,"UninstallString",,"rundll32 advpack,LaunchINFSection %17%\%NAME_INF%.inf,Uninstall"
[PROG.DelReg]
HKLM,%KEY_UNINST%
HKLM,%KEY_UNINST1%
HKCU,%KEY_UNINST1%
[PROG.DelShortcut]
Name =%SRTC_NAME%,0x00000002
SubDir =%PROG_SDIR%
[PROG2.DelShortcut]
Name =%SRTC_NAME%,0x00000002
SubDir =%PROG_SDIR2%
[PROG3.DelShortcut]
Name =%SRTC_NAME%,0x00000003
SubDir =%PROG_SDIR3%
[Strings]
KEY_UNINST ="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\7-Zip_Addon"
KEY_UNINST1 ="Software\7-Zip"
PROG_DIR ="ARC\7-Zip"
PROG_DIR1 ="ARC\7-Zip\Lang"
PROG_NAME ="7-Zip 9.20"
SRTC_NAME ="7-Zip"
PROG_VERS ="9.20"
PROG_MADE ="Samodelkin.net"
PROG_URL =""
NAME_INF ="7-Zip"
PROG_1 =7zFM.exe
PROG_2 =7-Zip
PROG_SDIR ="Архиваторы\7-Zip"
PROG_SDIR2 ="..\..\Рабочий стол"
PROG_SDIR3 ="..\..\Application Data\Microsoft\Internet Explorer\Quick Launch"
Та же самая процедура удаления, выполненная с помощью батника и reg-файла происходит без проблем.
@Echo off
Move %SystemDrive%\ARC\7-Zip\Uninst.exe %SystemDrive%\Temp
%SystemDrive%\Temp\Uninst.exe
RD /S /Q %SystemDrive%\ARC\7-Zip >nul
Del %SystemRoot%\Inf\7-Zip.inf
Regedit /s Uninst.reg
Del %0
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\Software\7-Zip]
[-HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\7-Zip_Addon]
1) при деинсталляции не удаляются иконки;
2) при деинсталляции через "Установка и удаление программ" записи из реестра не удаляются, а при попытке удалить запись из HKСU или HKLM вручную выскакивает сообщение "Не удаётся открыть "7-Zip". Ошибка при открытии раздела". Если игнорирую и удаляю, то необходимые ветки удаляются сразу и из HKСU и из HKLM. Проблема деинсталляции решается только прописыванием %24%\%PROG_DIR%\Uninst.exe (внутри батник+reg-файл) в секции [Close.Prog], но подозреваю, что это экстрим.
Вот скрипт текстового файла от архива 7Zip и Inf-файла, расположенного внутри.
;!@Install@!UTF-8!
SetEnvironment="Name=7-Zip"
SetEnvironment="Vers= 9.20"
SetEnvironment="PathInst=%SystemDrive%\\ARC\\7-Zip"
SetEnvironment="NameInf=7-Zip.inf"
SetEnvironment="DelOld7Zip1=hidcon:cmd /c reg delete \"HKCU\\Software\\7-Zip\" /f"
SetEnvironment="DelOld7Zip2=hidcon:cmd /c reg delete \"HKLM\\Software\\7-Zip\" /f"
SetEnvironment="DelOld7Zip3=hidcon:cmd /c reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\7-Zip_Addon\" /f"
Title="Установка %Name%"
InstallPath="%PathInst%"
BeginPrompt="Сейчас будет установлен %Name%%Vers%"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Подождите..."
RunProgram="%DelOld7Zip1%"
RunProgram="%DelOld7Zip2%"
RunProgram="%DelOld7Zip3%"
RunProgram="fm0:hidcon:cmd /c Move %NameInf% %WINDIR%\\INF"
RunProgram="rundll32 advpack,LaunchINFSection %NameInf%,DefaultInstall,0"
RunProgram="fm0:Install.exe"
AutoInstall1="%DelOld7Zip1%"
AutoInstall1="%DelOld7Zip2%"
AutoInstall1="%DelOld7Zip3%"
AutoInstall1="fm0:hidcon:cmd /c Move %NameInf% %WINDIR%\\INF"
AutoInstall1="rundll32 advpack,LaunchINFSection %NameInf%,DefaultInstall,0"
AutoInstall1="fm0:Install.exe"
Shortcut="26,{%PathInst%\\7zFM.exe},{},{Microsoft\\Internet Explorer\\Quick Launch},{},{%Name%%Vers%},{%PathInst%}"
Shortcut="P,{%PathInst%\\7zFM.exe},{},{Архиваторы\\7-Zip},{},{%Name%%Vers%},{%PathInst%}"
Shortcut="P,{%PathInst%\\Uninst.exe},{},{Архиваторы\\7-Zip},{},{Удаление %Name%%Vers%},{%PathInst%}"
Shortcut="D,{%PathInst%\\7zFM.exe},{},{},{},{7-Zip},{%PathInst%}"
Shortcut1="26,{%PathInst%\\7zFM.exe},{},{Microsoft\\Internet Explorer\\Quick Launch},{},{%Name%%Vers%},{%PathInst%}"
Shortcut1="P,{%PathInst%\\7zFM.exe},{},{Архиваторы\\7-Zip},{},{%Name%%Vers%},{%PathInst%}"
Shortcut1="P,{%PathInst%\\Uninst.exe},{},{Архиваторы\\7-Zip},{},{Удаление %Name%%Vers%},{%PathInst%}"
Shortcut1="D,{%PathInst%\\7zFM.exe},{},{},{},{7-Zip},{%PathInst%}"
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
FinishMessage="%Name%%Vers% установлен!"
;!@InstallEnd@!
[Version]
Signature="$Windows NT$"
[DefaultInstall]
AddReg =PROG.AddReg
; CopyFiles =Files1,Files2
[Uninstall]
BeginPrompt =BeginUnInsPrompt
RunPreSetupCommands =Close.Prog:1
RunPostSetupCommands=Dir.Delete:1
EndPrompt =EndUnInsPrompt
DelFiles =Files1:1, Files2:1
DelReg =PROG.DelReg
ProfileItems =PROG.DelShortcut,PROG2.DelShortcut,PROG3.DelShortcut
[BeginUnInsPrompt]
Title =Деинсталляция %PROG_NAME%
Prompt =Вы действительно хотите удалить %PROG_NAME% и все компоненты программы?
ButtonType =YESNO
[Close.Prog]
TASKKILL /F /IM %PROG_1%
TSKILL %PROG_2%
%24%\%PROG_DIR%\Uninst.exe
[Dir.Delete]
rundll32.exe advpack.dll,DelNodeRunDLL32 %24%\%PROG_DIR%
[EndUnInsPrompt]
Prompt =Программа %PROG_NAME% удалена.
[DestinationDirs]
Files1=-1, %24%\%PROG_DIR1%
Files2=-1, %24%\%PROG_DIR%
[Files1]
en.ttt
ru.txt
[Files2]
7-zip.chm
7-zip.dll
7z.dll
7z.exe
7z.sfx
7zCon.sfx
7zFM.exe
7zG.exe
Descript.ion
History.txt
License.txt
Readme.txt
Uninstall.exe
Uninst.exe
[PROG.AddReg]
HKCU,%KEY_UNINST1%,"Path",0x0,"%24%\%PROG_DIR%"
HKCU,%KEY_UNINST1%,"Lang",0x0,"ru"
HKCU,"%KEY_UNINST1%\FM","Editor",0x0
HKCU,"%KEY_UNINST1%\FM","Diff",0x0
HKCU,"%KEY_UNINST1%\FM","ShowDots",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","ShowSystemMenu",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","ShowRealFileIcons",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","FullRow",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","ShowGrid",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","AlternativeSelection",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","SingleClick",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","FolderShortcuts",0x1
HKCU,"%KEY_UNINST1%\FM","FolderHistory",0x1,43,00,3a,00,5c,00,54,00,65,00,6d,00,70,00,5c,00,00,00,43,00,3a,00,5c,00,00,00,1a,04,3e,04,3c,04 ,3f,04,4c,04,4e,04,42,04,35,04,40,04,5c,00,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","PanelPath0",0x0,"%24%Temp\"
HKCU,"%KEY_UNINST1%\FM","FlatViewArc0",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","PanelPath1",0x0
HKCU,"%KEY_UNINST1%\FM","FlatViewArc1",0x10001,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","ListMode",0x10001,02,03,00,00
HKCU,"%KEY_UNINST1%\FM","Position",0x1,42,00,00,00,54,00,00,00,f2,04,00,00,c2,03,00,00,00,00,00,00
HKCU,"%KEY_UNINST1%\FM","Panels",0x1,01,00,00,00,00,00,00,00,52,02,00,00
HKCU,"%KEY_UNINST1%\FM\Columns","RootFolder",0x1,01,00,00,00,00,00,00,00,01,00,00,00,04,00,00,00,01,00,00,00,64,00,00,00
HKCU,"%KEY_UNINST1%\FM\Columns","FSDrives",0x1,01,00,00,00,00,00,00,00,01,00,00,00,04,00,00,00,01,00,00,00,64,00,00,00,00,11,00,00,01,00,00,00 ,64,00,00,00,01,11,00,00,01,00,00,00,64,00,00,00,14,00,00,00,01,00,00,00,64,00,00,00,03,11,00,00,01, 00,00,00,64,00,00,00,18,00,00,00,01,00,00,00,64,00,00,00,02,11,00,00,01,00,00,00,64,00,00,00
HKCU,"%KEY_UNINST1%\FM\Columns","FSFolder",0x1,01,00,00,00,00,00,00,00,01,00,00,00,04,00,00,00,01,00,00,00,64,00,00,00,07,00,00,00,01,00,00,00 ,64,00,00,00,0c,00,00,00,01,00,00,00,64,00,00,00,0a,00,00,00,01,00,00,00,64,00,00,00,0b,00,00,00,01, 00,00,00,64,00,00,00,09,00,00,00,01,00,00,00,64,00,00,00,08,00,00,00,01,00,00,00,64,00,00,00,1c,00,0 0,00,01,00,00,00,64,00,00,00
HKCU,"%KEY_UNINST1%\Options","CascadedMenu",0x10001,01,00,00,00
HKCU,"%KEY_UNINST1%\Options","ContextMenu",0x10001,77,3f,00,00
HKCU,"%KEY_UNINST1%\Options","WorkDirType",0x10001,02,00,00,00
HKCU,"%KEY_UNINST1%\Options","WorkDirPath",0x0,"%24%Temp"
HKCU,"%KEY_UNINST1%\Options","TempRemovableOnly",0x10001,01,00,00,00
HKLM,%KEY_UNINST1%,"Path",0x0,"%24%\%PROG_DIR%"
HKLM,%KEY_UNINST%,"DisplayIcon",0,"%24%\%PROG_DIR%\%PROG_1%"
HKLM,%KEY_UNINST%,"DisplayName",,"%PROG_NAME%"
HKLM,%KEY_UNINST%,"DisplayVersion",,"%PROG_VERS%"
HKLM,%KEY_UNINST%,"Publisher",,"%PROG_MADE%"
HKLM,%KEY_UNINST%,"URLInfoAbout",,"%PROG_URL%"
HKLM,%KEY_UNINST%,"UninstallString",,"rundll32 advpack,LaunchINFSection %17%\%NAME_INF%.inf,Uninstall"
[PROG.DelReg]
HKLM,%KEY_UNINST%
HKLM,%KEY_UNINST1%
HKCU,%KEY_UNINST1%
[PROG.DelShortcut]
Name =%SRTC_NAME%,0x00000002
SubDir =%PROG_SDIR%
[PROG2.DelShortcut]
Name =%SRTC_NAME%,0x00000002
SubDir =%PROG_SDIR2%
[PROG3.DelShortcut]
Name =%SRTC_NAME%,0x00000003
SubDir =%PROG_SDIR3%
[Strings]
KEY_UNINST ="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\7-Zip_Addon"
KEY_UNINST1 ="Software\7-Zip"
PROG_DIR ="ARC\7-Zip"
PROG_DIR1 ="ARC\7-Zip\Lang"
PROG_NAME ="7-Zip 9.20"
SRTC_NAME ="7-Zip"
PROG_VERS ="9.20"
PROG_MADE ="Samodelkin.net"
PROG_URL =""
NAME_INF ="7-Zip"
PROG_1 =7zFM.exe
PROG_2 =7-Zip
PROG_SDIR ="Архиваторы\7-Zip"
PROG_SDIR2 ="..\..\Рабочий стол"
PROG_SDIR3 ="..\..\Application Data\Microsoft\Internet Explorer\Quick Launch"
Та же самая процедура удаления, выполненная с помощью батника и reg-файла происходит без проблем.
@Echo off
Move %SystemDrive%\ARC\7-Zip\Uninst.exe %SystemDrive%\Temp
%SystemDrive%\Temp\Uninst.exe
RD /S /Q %SystemDrive%\ARC\7-Zip >nul
Del %SystemRoot%\Inf\7-Zip.inf
Regedit /s Uninst.reg
Del %0
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\Software\7-Zip]
[-HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\7-Zip_Addon]