Ru-Board.club
← Вернуться в раздел «Программы»

» NSIS (Nullsoft Scriptable Install System)

Автор: Victor_VG
Дата сообщения: 11.12.2008 07:34
Установка ClamAV 0.94.2 порт для Win32. Порт собран в MinGW.

Программа достаточно "капризна" особенно при обновлении, и правильно поставить её с использованием иного кода - sorry... В оригинальном ClamAV такого я не наблюдал, здесь явно что-то изменено, но пока я исходники не сравнивал, а изменения в них.

[more=Программа, вырезана только личная часть кода не влияющая на исполнение]!define PRODUCT_NAME "ClamAV Win32"
!define PRODUCT_VERSION "0.94.2"
!define PRODUCT_PUBLISHER "Copyright © 2008 - Gianluigi Tiesi [sherpya@netfarm.it] - Netfarm S.r.l."
!define PRODUCT_WEB_SITE "http://oss.netfarm.it/clamav/"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\clamav.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"
SetCompressor /solid lzma
!include "MUI.nsh"
!include "TextReplace.nsh"
!include "ProcLib.nsh"
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-blue-full.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall-blue-full.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\InnoSetupWiz.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\InnoSetupWiz.bmp"
!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "ClamAV\gpl.txt"
var ICONS_GROUP
!define MUI_STARTMENUPAGE_NODISABLE
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "ClamAV"
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$INSTDIR\clamav.exe"
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\readme.txt"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "clamav-setup.exe"
InstallDir "$PROGRAMFILES\ClamAV"
InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\clamav.exe" "Path"
RequestExecutionLevel admin
BrandingText "ClamAV 0.94.2 Antivirus Native Win32 Port"
ShowInstDetails hide
ShowUnInstDetails hide
XPStyle on
/*
*/
!define HAVE_UPX
!ifdef HAVE_UPX
!packhdr tmpexe.tmp "UPX --best -q --compress-icons=0 tmpexe.tmp"
!endif
Function syserrm
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но возникла системная ошибка с кодом $0 и Установка прервана.$\nПожалуйста, обратитесь к Администратору для решения этой проблемы." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but detected is system error code is $0 and Setup is aborted.$\nPlease, take to Administrator for resolving this problem."
Quit
Return
FunctionEnd
Function unsuppm
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но это не поддерживаемая версия Windows.$\nУстановка ClamAV на этой платформе невозможна." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but this unsupported Windows version.$\nSetting up ClamAV on this platform is impossible." IDOK +1
Quit
Return
FunctionEnd
Function acessd
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но у Вас нет прав для продолжения Установки.$\nПожалуйста, обратитесь к Администратору для предоставления Вам необходимых прав." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but Your don't have rights for continue Setup.$\nPlease, take to Administrator for get Your needed rights."
Quit
Return
FunctionEnd
Function manterm
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но некоторые процессы не удалось завершить$\nавтоматически. Пожалуйста, завершите их вручную ипользуя$\nДиспетчер задач и запустите Установку снова." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but some proces is automatical terminate is$\nfiled. Please, close this program manually using Task Manager$\nand run Setup again if Your whole continue."
Quit
Return
FunctionEnd
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
${nsProcess::FindProcess} "update.exe" $0
StrCmp $0 0 +7
${nsProcess::FindProcess} "install.exe" $0
StrCmp $0 0 +5
${nsProcess::FindProcess} "upgrade.exe" $0
StrCmp $0 0 +3
${nsProcess::FindProcess} "msiexec.exe" $0
StrCmp $0 0 +1 +6
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONEXCLAMATION "Внимание! Запущена другая программа установки.$\nУстановка прекращает свою работу. Пожалуйста,$\nзапустите Установку после её завершения." IDOK +2
MessageBox MB_OK|MB_ICONEXCLAMATION "Waring! An over installer already running.$\nSetup can't continue. Please, run this$\nSetup then an over setup is finished."
Quit
StrCpy $0 0
UserInfo::GetAccountType
Pop $0
StrCmp $0 "Admin" +6 +1
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONEXCLAMATION "Извините, но у Вас недостаточно прав для установки ClamAV.$\nУстановка прекращена. Пожалуйста, обратитесь к Администратору для предоставления Вам необходимых прав." IDOK +2
MessageBox MB_OK|MB_ICONEXCLAMATION "Sorry, but Your don't have required rigths for continue installation ClamAV.$\nSetup is aborted. Please, take to Administrator for get Your needed rigths."
Quit
MoreInfo::GetProductVersion "$INSTDIR\clamd.exe"
Push "0,94,2,0"
xtInfo::CompareVersion
Pop $0
StrCmp $0 -1 +1 +6
StrCmp $LANGUAGE 1049 +2
MessageBox MB_ICONINFORMATION|MB_OK "You have nevest version ClamAV. Setup is terminated." IDOK +2
MessageBox MB_ICONINFORMATION|MB_OK "У Вас стоит более новая версия ClamAV. Установка прервана." IDOK +1
Quit
FunctionEnd
Section "-check"
nsSCM::Stop /NOUNLOAD "ClamD"
Pop $0
IntCmp $0 1 -2 +1 -2
nsSCM::Stop /NOUNLOAD "FreshClam"
Pop $0
IntCmp $0 1 -2 +1 -2
${nsProcess::FindProcess} "exeScanner.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "exeScanner.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 lblerr
Call manterm
${nsProcess::FindProcess} "clamscan.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "clamscan.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 lblerr
Call manterm
${nsProcess::FindProcess} "clamdscan.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "clamdscan.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 lblerr
Call manterm
${nsProcess::FindProcess} "clamav.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "clamav.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 lblerr
Call manterm
${nsProcess::FindProcess} "sigtool.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "sigtool.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +13 +1 lblerr
Call manterm
lblerr:
StrCmp $0 605 +6
IntCmp $0 606 +4 +1 +4
StrCmp $0 601 +5
StrCmp $0 602 +5
Call syserrm
Call unsuppm
Call acessd
Call manterm
${nsProcess::Unload}
SectionEnd
Section "Main" SEC01
SetOverwrite try
SetOutPath "$INSTDIR"
File "ClamAV\libclamunrar_iface.dll"
File "ClamAV\libclamunrar.dll"
File "ClamAV\libclamav.dll"
File "ClamAV\freshclam.exe"
File "ClamAV\exeScanner.exe"
File "ClamAV\clamscan.exe"
File "ClamAV\clamdscan.exe"
File "ClamAV\clamd.exe"
File "ClamAV\clamav.exe"
File "ClamAV\sigtool.exe"
File "ClamAV\SeDebug-Restore.exe"
SetOverwrite on
File "ClamAV\clamd.conf"
File "ClamAV\freshclam.conf"
File "ClamAV\gpl.txt"
File "ClamAV\readme.txt"
SectionEnd
Section -Post
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
SetShellVarContext All
CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\ClamAV.lnk" "$INSTDIR\clamav.exe"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Read Me.lnk" "$INSTDIR\readme.txt"
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\WEB Site.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
!insertmacro MUI_STARTMENU_WRITE_END
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "System\CurrentControlSet\Services\ClamD" "DisplayName" "ClamWin Free Antivirus Scanner Service"
WriteRegStr HKLM "System\CurrentControlSet\Services\ClamD" "Description" "Provides virus scanning facilities for ClamWin Free Antivirus application"
WriteRegStr HKLM "System\CurrentControlSet\Services\FreshClam" "DisplayName" "ClamWin Free Antivirus Database Updater"
WriteRegStr HKLM "System\CurrentControlSet\Services\FreshClam" "Description" "Updates virus pattern database for ClamWin Free Antivirus application"
WriteRegStr HKLM "SOFTWARE\ClamAV" "ConfigDir" "$INSTDIR"
WriteRegStr HKLM "SOFTWARE\ClamAV" "DataDir" "$INSTDIR"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Path" "$INSTDIR"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\clam.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "ClamAV native win32 port"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\freshclam.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
StrCpy $0 $INSTDIR 1
${textreplace::ReplaceInFile} "$INSTDIR\clamd.conf" "$INSTDIR\clamd.conf" "c:\" "$0:\" "/AO=1" $0
${textreplace::Unload}
nsSCM::Install /NOUNLOAD "ClamD" "ClamWin Free Antivirus Scanner Service" 16 2 "$INSTDIR\clamd.exe --daemon"
nsSCM::Install /NOUNLOAD "FreshClam" "ClamWin Free Antivirus Database Updater" 16 3 "$INSTDIR\freshclam.exe --daemon"
nsSCM::Start /NOUNLOAD "ClamD"
nsSCM::Start "FreshClam"
StrCpy $0 $EXEPATH 3
Delete "$0libclamunrar_iface.dll"
Delete "$0libclamunrar.dll"
Delete "$0libclamav.dll"
Delete "$0freshclam.exe"
Delete "$0exeScanner.exe"
Delete "$0clamscan.exe"
Delete "$0clamdscan.exe"
Delete "$0clamd.exe"
Delete "$0clamav.exe"
Delete "$0sigtool.exe"
Delete "$0SeDebug-Restore.exe"
Delete "$0clamd.conf"
Delete "$0freshclam.conf"
Delete "$0gpl.txt"
Delete "$0readme.txt"
SetAutoClose true
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "Удаление программы $(^Name) было успешно завершено."
FunctionEnd
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Вы уверены в том, что желаете удалить $(^Name) и все компоненты программы?" IDYES +2
Abort
FunctionEnd
Section Uninstall
nsSCM::Stop /NOUNLOAD "ClamD"
nsSCM::Stop /NOUNLOAD "FreshClam"
nsSCM::Remove /NOUNLOAD "ClamD"
nsSCM::Remove "FreshClam"
Pop $0
StrCmp $0 success +1 -2
${nsProcess::KillProcess} "clamscan.exe" $0
${nsProcess::KillProcess} "clamdscan.exe" $0
${nsProcess::KillProcess} "clamav.exe" $0
${nsProcess::FindProcess} "sigtool.exe" $0
${nsProcess::KillProcess} "sigtool.exe" $0
${nsProcess::Unload}
SetShellVarContext All
!insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\readme.txt"
Delete "$INSTDIR\SeDebug-Restore.exe"
Delete "$INSTDIR\sigtool.exe"
Delete "$INSTDIR\clamav.exe"
Delete "$INSTDIR\clamd.conf"
Delete "$INSTDIR\clamd.exe"
Delete "$INSTDIR\clamdscan.exe"
Delete "$INSTDIR\clamscan.exe"
Delete "$INSTDIR\daily.cvd"
Delete "$INSTDIR\exeScanner.exe"
Delete "$INSTDIR\freshclam.conf"
Delete "$INSTDIR\freshclam.exe"
Delete "$INSTDIR\gpl.txt"
Delete "$INSTDIR\libclamav.dll"
Delete "$INSTDIR\libclamunrar.dll"
Delete "$INSTDIR\libclamunrar_iface.dll"
Delete "$INSTDIR\main.cvd"
Delete "$INSTDIR\mirrors.dat"
Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Read Me.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\ClamAV.lnk"
RMDir "$SMPROGRAMS\$ICONS_GROUP"
RMDir "$INSTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "SOFTWARE\ClamAV"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd[/more]

Код программы написан в среде NSIS 2.41 Update 1
Автор: immortal223
Дата сообщения: 12.12.2008 04:48
И всё-таки: есть ли на данное время материалы по НСИС на русском языке?
Автор: Victor_VG
Дата сообщения: 12.12.2008 04:51
immortal223

Мне пока не попадался.
Автор: borec070278
Дата сообщения: 19.12.2008 20:20
Доброго всем! Решил тут немного поразбираться с NSIS и походу дела перевел справку. Сразу предупреждаю, перевод непрофессиональный, полупромтовский. Переведено все, кроме последних четырех Appendix-ов, где лицензии, о разработчиках и т.д., которые никто не читает. И еще оставил названия глав в оригинале, чтоб лучше было ориентироваться. Тем кто знаком с NSIS, лучше все таки пользоваться английской. Залито на депозит. Ссылку найдете в режиме редактирования этого сообщения.
Удачи
Автор: Victor_VG
Дата сообщения: 19.12.2008 21:21
borec070278

Лично от меня спасибо, но ты прав - я пользуюсь оригиналом - меньше вероятность ошибочного толкования. Хотя, как ознакомительный материал для начинающих - должно здорово помочь. Опыт-то потом появится, не боги горшки обжигают. Это типа курса "Введение в специальность" который читается в первом семестре на первом курсе. Я считаю, что такие материалы нужны.

Бегло просмотрел. Если не задета структура hhc/hht - то за неё "зацепятся" IDE, например HM NIS.
Автор: Victor_VG
Дата сообщения: 20.12.2008 12:11
И в порядке обмена опытом [more=ClamAV 0.94.2 для Win32. Код программы установки]!define PRODUCT_NAME "ClamAV Win32"
!define PRODUCT_VERSION "0.94.2"
!define PRODUCT_PUBLISHER "Copyright © 2008 - Gianluigi Tiesi [sherpya@netfarm.it] - Netfarm S.r.l."
!define PRODUCT_WEB_SITE "http://oss.netfarm.it/clamav/"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\clamav.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"
SetCompressor /solid lzma
!include "MUI.nsh"
!include "ProcLib.nsh"
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-blue-full.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall-blue-full.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\InnoSetupWiz.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\InnoSetupWiz.bmp"
!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
!define MUI_LICENSEPAGE_RADIOBUTTONS
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "ClamAV\gpl.txt"
!insertmacro MUI_PAGE_DIRECTORY
var ICONS_GROUP
!define MUI_STARTMENUPAGE_NODISABLE
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "ClamAV"
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$INSTDIR\clamav.exe"
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\readme.txt"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "clamav-setup.exe"
InstallDir "$PROGRAMFILES\ClamAV"
InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\clamav.exe" "Path"
RequestExecutionLevel admin
BrandingText "ClamAV 0.94.2 Antivirus Native Win32 Port"
ShowInstDetails hide
ShowUnInstDetails hide
XPStyle on
VIProductVersion "0.94.2.0"
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "ClamAV Antivirus Native Win32 Port"
VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "Native Win32 Port. Compiled use MinGW"
VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "Gianluigi Tiesi"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Gianluigi Tiesi, VictorVG @ VikSoft.Ru"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "© Gianluigi Tiesi, 2008"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Compiled at ${__DATE__} on ${__TIME__}."
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "1.0.0.4"
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "0.94.2"
VIAddVersionKey /LANG=${LANG_ENGLISH} "InternalName" "clamav"
VIAddVersionKey /LANG=${LANG_ENGLISH} "OriginalFilename" "setup"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "ProductName" "ClamAV Antivirus Native Win32 Port"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "Comments" "Native Win32 Port. Скомпилировано в MinGW"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "CompanyName" "Gianluigi Tiesi"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "LegalTrademarks" "Gianluigi Tiesi, VictorVG @ VikSoft.Ru"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "LegalCopyright" "© Gianluigi Tiesi, 2008"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "FileDescription" "Скомпилировано ${__DATE__} в ${__TIME__}."
VIAddVersionKey /LANG=${LANG_RUSSIAN} "FileVersion" "1.0.0.4"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "ProductVersion" "0.94.2"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "InternalName" "clamav"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "OriginalFilename" "setup"
!define HAVE_UPX
!ifdef HAVE_UPX
!packhdr tmpexe.tmp "UPX --best -q --compress-icons=0 tmpexe.tmp"
!endif
Function syserrm
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но возникла системная ошибка с кодом $0 и Установка прервана.$\nПожалуйста, обратитесь к Администратору для решения этой проблемы." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but detected is system error code is $0 and Setup is aborted.$\nPlease, take to Administrator for resolving this problem."
Quit
Return
FunctionEnd
Function unsuppm
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но это не поддерживаемая версия Windows.$\nУстановка ClamAV на этой платформе невозможна." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but this unsupported Windows version.$\nSetting up ClamAV on this platform is impossible." IDOK +1
Quit
Return
FunctionEnd
Function acessd
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но у Вас нет прав для продолжения Установки.$\nПожалуйста, обратитесь к Администратору для предоставления Вам необходимых прав." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but Your don't have rights for continue Setup.$\nPlease, take to Administrator for get Your needed rights."
Quit
Return
FunctionEnd
Function manterm
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но некоторые процессы не удалось завершить$\nавтоматически. Пожалуйста, завершите их вручную ипользуя$\nДиспетчер задач и запустите Установку снова." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but some proces is automatical terminate is$\nfiled. Please, close this program manually using Task Manager$\nand run Setup again if Your whole continue."
Quit
Return
FunctionEnd

Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
${nsProcess::FindProcess} "update.exe" $0
StrCmp $0 0 +7
${nsProcess::FindProcess} "install.exe" $0
StrCmp $0 0 +5
${nsProcess::FindProcess} "upgrade.exe" $0
StrCmp $0 0 +3
${nsProcess::FindProcess} "msiexec.exe" $0
StrCmp $0 0 +1 +6
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONEXCLAMATION "Внимание! Запущена другая программа установки.$\nУстановка прекращает свою работу. Пожалуйста,$\nзапустите Установку после её завершения." IDOK +2
MessageBox MB_OK|MB_ICONEXCLAMATION "Waring! An over installer already running.$\nSetup can't continue. Please, run this$\nSetup then an over setup is finished."
Quit
StrCpy $0 0
UserInfo::GetAccountType
Pop $0
StrCmp $0 "Admin" +6 +1
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONEXCLAMATION "Извините, но у Вас недостаточно прав для установки ClamAV.$\nУстановка прекращена. Пожалуйста, обратитесь к Администратору для предоставления Вам необходимых прав." IDOK +2
MessageBox MB_OK|MB_ICONEXCLAMATION "Sorry, but Your don't have required rigths for continue installation ClamAV.$\nSetup is aborted. Please, take to Administrator for get Your needed rigths."
Quit
MoreInfo::GetProductVersion "$INSTDIR\clamd.exe"
Push "0,94,2,0"
xtInfo::CompareVersion
Pop $0
StrCmp $0 -1 +1 +6
StrCmp $LANGUAGE 1049 +2
MessageBox MB_ICONINFORMATION|MB_OK "You have nevest version ClamAV. Setup is terminated." IDOK +2
MessageBox MB_ICONINFORMATION|MB_OK "У Вас стоит более новая версия ClamAV. Установка прервана." IDOK +1
Quit
FunctionEnd
Section "-check"
nsSCM::Stop /NOUNLOAD "ClamD"
Pop $0
StrCmp $0 "success" lbl1
${nsProcess::FindProcess} "clamd.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "clamd.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 lblerr
Call manterm
lbl1:
nsSCM::Stop /NOUNLOAD "FreshClam"
Pop $0
StrCmp $0 "success" lbl2
${nsProcess::FindProcess} "freshclam.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "freshclam.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 lblerr
Call manterm
lbl2:
${nsProcess::FindProcess} "exeScanner.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "exeScanner.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 lblerr
Call manterm
${nsProcess::FindProcess} "clamscan.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "clamscan.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 lblerr
Call manterm
${nsProcess::FindProcess} "clamdscan.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "clamdscan.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 lblerr
Call manterm
${nsProcess::FindProcess} "clamav.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "clamav.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 lblerr
Call manterm
${nsProcess::FindProcess} "sigtool.exe" $0
IntCmp $0 603 +2 +1 lblerr
${nsProcess::KillProcess} "sigtool.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +13 +1 lblerr
Call manterm
lblerr:
StrCmp $0 605 +6
IntCmp $0 606 +4 +1 +4
StrCmp $0 601 +5
StrCmp $0 602 +5
Call syserrm
Call unsuppm
Call acessd
Call manterm
${nsProcess::Unload}
SectionEnd
Section "Main" SEC01
SetOverwrite try
SetOutPath "$INSTDIR"
Delete "$INSTDIR\*.cvd"
Delete "$INSTDIR\mirrors.dat"
Delete "$INSTDIR\*.conf"
CreateDirectory "$INSTDIR\carantine"
CreateDirectory "$INSTDIR\db"
CreateDirectory "$INSTDIR\etc"
CreateDirectory "$INSTDIR\log"
IfFileExists "$INSTDIR\clamd.log" +1 +2
Rename "$INSTDIR\clamd.log" "$INSTDIR\log\clamd.log"
File "ClamAV\SeDebug-Restore.exe"
File "ClamAV\clamav.exe"
File "ClamAV\clamd.exe"
File "ClamAV\clamdscan.exe"
File "ClamAV\clamscan.exe"
File "ClamAV\exeScanner.exe"
File "ClamAV\freshclam.exe"
File "ClamAV\libclamav.dll"
File "ClamAV\libclamunrar.dll"
File "ClamAV\libclamunrar_iface.dll"
File "ClamAV\sigtool.exe"
SetOverwrite on
File "ClamAV\gpl.txt"
File "ClamAV\readme.txt"
SectionEnd
Section "Doc" SEC02
SetOverwrite on
SetOutPath "$INSTDIR\doc"
File "ClamAV\doc\clamav-mirror-howto.pdf"
File "ClamAV\doc\clamdoc.pdf"
File "ClamAV\doc\switches.txt"
File "ClamAV\doc\phishsigs_howto.pdf"
File "ClamAV\doc\signatures.pdf"
SectionEnd
Section "Config" SEC03
SetOutPath "$INSTDIR\etc"
SetOverwrite ifnewer
File "ClamAV\etc\clamd.conf"
File "ClamAV\etc\freshclam.conf"
SetOverwrite on
File "ClamAV\etc\clamd.conf.default"
File "ClamAV\etc\freshclam.conf.default"
SectionEnd
Section -Post
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
SetShellVarContext All
CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Doc"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\ClamAV.lnk" "$INSTDIR\clamav.exe"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Read Me.lnk" "$INSTDIR\readme.txt"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Doc\Mirroring the Virus Database.lnk" "$INSTDIR\doc\clamav-mirror-howto.pdf"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Doc\ClamAV Users Manual.lnk" "$INSTDIR\doc\clamdoc.pdf"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Doc\ClamAV command line switches.lnk" "$INSTDIR\doc\switches.txt"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Doc\Phishing signatures creation.lnk" "$INSTDIR\doc\phishsigs_howto.pdf"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Doc\Creating signatures.lnk" "$INSTDIR\doc\signatures.pdf"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\View log.lnk" "$INSTDIR\log\clamd.log"
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\WEB Site.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
!insertmacro MUI_STARTMENU_WRITE_END
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "System\CurrentControlSet\Services\ClamD" "DisplayName" "ClamWin Free Antivirus Scanner Service"
WriteRegStr HKLM "System\CurrentControlSet\Services\ClamD" "Description" "Provides virus scanning facilities for ClamWin Free Antivirus application"
WriteRegStr HKLM "System\CurrentControlSet\Services\FreshClam" "DisplayName" "ClamWin Free Antivirus Database Updater"
WriteRegStr HKLM "System\CurrentControlSet\Services\FreshClam" "Description" "Updates virus pattern database for ClamWin Free Antivirus application"
StrCpy $0 $INSTDIR 1
WriteRegStr HKLM "SOFTWARE\ClamAV" "ConfigDir" "$0:\PROGRA~1\ClamAV\etc"
WriteRegStr HKLM "SOFTWARE\ClamAV" "DataDir" "$0:\PROGRA~1\ClamAV\db"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Path" "$INSTDIR"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\clam.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "ClamAV native win32 port"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\freshclam.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
StrCpy $0 $INSTDIR 1
Push $1
Push $0
StrCpy $0 0
nsSCM::Install /NOUNLOAD "ClamD" "ClamWin Free Antivirus Scanner Service" 16 2 "$INSTDIR\clamd.exe --daemon --config-file=$INSTDIR\etc\clamd.conf"
nsSCM::QueryStatus "ClamD"
Pop $0
Pop $1
StrCpy $0 "success" +4
nsExec::Exec "$INSTDIR\clamd.exe --install"
WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Services\ClamD" "ImagePath" "$INSTDIR\clamd.exe --daemon --config-file=$INSTDIR\etc\clamd.conf"
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\ClamD" "DisplayName" "ClamWin Free Antivirus Scanner Service"
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\ClamD" "Description" "Provides virus scanning facilities for ClamWin Free Antivirus application"
WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\ClamD" "Type" 0x10
WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\ClamD" "Start" 0x2
StrCpy $0 0
nsSCM::Install /NOUNLOAD "FreshClam" "ClamWin Free Antivirus Database Updater" 16 2 "$INSTDIR\freshclam.exe --daemon --config-file=$INSTDIR\etc\freshclam.conf --checks=12 --datadir=$INSTDIR\db --daemon-notify=$INSTDIR\etc\clamd.conf"
nsSCM::QueryStatus "FreshClam"
Pop $0
Pop $1
StrCpy $0 "success" +4
nsExec::Exec "$INSTDIR\freshclam.exe --install"
WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Services\FreshClam" "ImagePath" "$INSTDIR\freshclam.exe --daemon --config-file=$INSTDIR\etc\freshclam.conf --checks=12 --datadir=$INSTDIR\db --daemon-notify=$INSTDIR\etc\clamd.conf"
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\FreshClam" "DisplayName" "ClamWin Free Antivirus Database Updater"
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\FreshClam" "Description" "Updates virus pattern database for ClamWin Free Antivirus application"
WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\FreshClam" "Type" 0x10
WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\FreshClam" "Start" 0x2
StrCpy $0 0
nsSCM::Start /NOUNLOAD "ClamD"
nsSCM::Start "FreshClam"
Pop $0
Pop $1
StrCpy $0 $EXEPATH 3
Delete "$0libclamunrar_iface.dll"
Delete "$0libclamunrar.dll"
Delete "$0libclamav.dll"
Delete "$0freshclam.exe"
Delete "$0exeScanner.exe"
Delete "$0clamscan.exe"
Delete "$0clamdscan.exe"
Delete "$0clamd.exe"
Delete "$0clamav.exe"
Delete "$0sigtool.exe"
Delete "$0SeDebug-Restore.exe"
Delete "$0clamd.conf"
Delete "$0freshclam.conf"
Delete "$0gpl.txt"
Delete "$0readme.txt"
StrCpy $0 0
StrCmp $LANGUAGE 1049 +2
MessageBox MB_ICONINFORMATION|MB_OK "Please, wait then download latest ClamAV virus base." IDOK +2
MessageBox MB_ICONINFORMATION|MB_OK "Подождите загрузки антивирусных баз ClamAV." IDOK +1
nsExec::Exec "$INSTDIR\freshclam.exe"
SetAutoClose true
SectionEnd
Function un.syserrm
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но возникла системная ошибка с кодом $0 и Установка прервана.$\nПожалуйста, обратитесь к Администратору для решения этой проблемы." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but detected is system error code is $0 and Setup is aborted.$\nPlease, take to Administrator for resolving this problem."
Quit
Return
FunctionEnd
Function un.unsuppm
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но это не поддерживаемая версия Windows.$\nУстановка ClamAV на этой платформе невозможна." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but this unsupported Windows version.$\nSetting up ClamAV on this platform is impossible." IDOK +1
Quit
Return
FunctionEnd
Function un.acessd
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но у Вас нет прав для продолжения Установки.$\nПожалуйста, обратитесь к Администратору для предоставления Вам необходимых прав." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but Your don't have rights for continue Setup.$\nPlease, take to Administrator for get Your needed rights."
Quit
Return
FunctionEnd
Function un.manterm
StrCmp $LANGUAGE 1049 +1 +2
MessageBox MB_OK|MB_ICONSTOP "Извините, но некоторые процессы не удалось завершить$\nавтоматически. Пожалуйста, завершите их вручную ипользуя$\nДиспетчер задач и запустите Установку снова." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Sorry, but some proces is automatical terminate is$\nfiled. Please, close this program manually using Task Manager$\nand run Setup again if Your whole continue."
Quit
Return
FunctionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "Удаление программы $(^Name) было успешно завершено."
FunctionEnd
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Вы уверены в том, что желаете удалить $(^Name) и все компоненты программы?" IDYES +2
Abort
FunctionEnd
Section Uninstall
daemon:
nsSCM::Stop /NOUNLOAD "ClamD"
StrCmp $0 "success" ulbl1
${nsProcess::FindProcess} "clamd.exe" $0
IntCmp $0 603 +2 +1 ulblerr
${nsProcess::KillProcess} "clamd.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 ulblerr
Call un.manterm
ulbl1:
nsSCM::Stop /NOUNLOAD "FreshClam"
Pop $0
StrCmp $0 "success" ulbl2
${nsProcess::FindProcess} "freshclam.exe" $0
IntCmp $0 603 +2 +1 ulblerr
${nsProcess::KillProcess} "freshclam.exe" $0
StrCmp $0 0 +4 +1
IntCmp $0 603 +2 +1 ulblerr
Call un.manterm
ulblerr:
StrCmp $0 605 +6
IntCmp $0 606 +4 +1 +4
StrCmp $0 601 +5
StrCmp $0 602 +5
Call un.syserrm
Call un.unsuppm
Call un.acessd
Call un.manterm
ulbl2:
nsSCM::Remove /NOUNLOAD "ClamD"
Pop $0
StrCmp $0 "success" +6
nsExec::Exec "$INSTDIR\clamd.exe --uninstall"
nsSCM::Remove /NOUNLOAD "FreshClam"
Pop $0
StrCmp $0 "success" +2
nsExec::Exec "$INSTDIR\clamd.exe --uninstall"
StrCmp $LANGUAGE 1049 +2
MessageBox MB_ICONQUESTION|MB_YESNO "Any daemons not removed. Do your try remove this daemon again?" IDYES daemon IDNO +2
MessageBox MB_ICONQUESTION|MB_YESNO "Некоторые демоны не удалены. Попытаться удалить их снова?" IDYES daemon IDNO +1
${nsProcess::KillProcess} "clamd.exe" $0
${nsProcess::KillProcess} "freshclam.exe" $0
${nsProcess::KillProcess} "clamscan.exe" $0
${nsProcess::KillProcess} "clamdscan.exe" $0
${nsProcess::KillProcess} "clamav.exe" $0
${nsProcess::FindProcess} "sigtool.exe" $0
${nsProcess::KillProcess} "sigtool.exe" $0
${nsProcess::Unload}
SetShellVarContext All
!insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\sigtool.exe"
Delete "$INSTDIR\readme.txt"
Delete "$INSTDIR\log\*.log"
Delete "$INSTDIR\libclamunrar_iface.dll"
Delete "$INSTDIR\libclamunrar.dll"
Delete "$INSTDIR\libclamav.dll"
Delete "$INSTDIR\gpl.txt"
Delete "$INSTDIR\freshclam.exe"
Delete "$INSTDIR\exeScanner.exe"
Delete "$INSTDIR\etc\freshclam.conf.*"
Delete "$INSTDIR\etc\clamd.conf.*"
Delete "$INSTDIR\doc\switches.txt"
Delete "$INSTDIR\doc\signatures.pdf"
Delete "$INSTDIR\doc\phishsigs_howto.pdf"
Delete "$INSTDIR\doc\clamdoc.pdf"
Delete "$INSTDIR\doc\clamav-mirror-howto.pdf"
Delete "$INSTDIR\db\mirrors.dat"
Delete "$INSTDIR\db\main.cvd"
Delete "$INSTDIR\db\daily.cvd"
Delete "$INSTDIR\clamscan.exe"
Delete "$INSTDIR\clamdscan.exe"
Delete "$INSTDIR\clamd.exe"
Delete "$INSTDIR\clamav.exe"
Delete "$INSTDIR\SeDebug-Restore.exe"
Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\View log.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Read Me.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Doc\Phishing signatures creation.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Doc\Mirroring the Virus Database.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Doc\Creating signatures.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Doc\ClamAV command line switches.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Doc\ClamAV Users Manual.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\ClamAV.lnk"
RMDir "$SMPROGRAMS\$ICONS_GROUP\Doc"
RMDir "$SMPROGRAMS\$ICONS_GROUP"
RMDir /r "$INSTDIR\log"
RMDir "$INSTDIR\etc"
RMDir "$INSTDIR\doc"
RMDir "$INSTDIR\db"
RMDir /r "$INSTDIR\carantine"
RMDir "$INSTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "SOFTWARE\ClamAV"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd[/more]

Конечно, иные проверки специально сдублированы, но смысл этого в обеспечении их 100% срабатывания в разных условиях. Опробование на нескольких системах пока явных ошибок не выявило. Из особенностей стоит выделить механизм проверки системных ошибок - поднимаем со стека возврат DLL и проходим от младшего кода к старшим. По дороге делаем если надо диапазонные вызовы функций-сообщений об ошибках. Ещё одно тонкое место - плугин nsSCM - с ним будьте внимательны при анализе его кодов возврата - он выводит как сообщения типа erros/success, так цифровые коды состояния возвращаемые SCM. Когда я с ним столкнулся впервые, то на этих кодах попался и долго искал свою ошибку.
Автор: chudlo
Дата сообщения: 20.12.2008 22:59
NSIS 2.42 (20/12/2008)
Changes...
http://prdownloads.sourceforge.net/nsis/nsis-2.42-setup.exe?download
Автор: Victor_VG
Дата сообщения: 20.12.2008 23:12
Изменений много:

Цитата:
2.42
Released on December 20th, 2008

Release Notes

Merry Christmas and a happy Hanukkah!

Plug-in developers should check out the new plug-in API in Examples\Plugin and convert their plug-ins, especially in case they require staying loaded.

Changelog

Major Changes

Deprecated /NOUNLOAD and SetPluginsUnload to make scripts simpler and safer (patch #1912699)
Useful header functions no longer require usage declaration and different syntax for uninstaller functions
Revamped plug-in API now comes in the form of pluginapi.lib, API version information and more common functions (patch #2359978)

Minor Changes

Added !searchreplace preprocessor command for compiletime text search/replaces
Added support for registration of EXE COM servers (RFE #2315740)
Minor documentation improvements (including bug #2386821)
nsDialogs: Added timer support (patch #2135855)
nsDialogs: Added progress bar support
WinVer.nsh: Added IsServer, IsWin2003R2, IsStarterEdition, OSHasMediaCenter and OSHasTabletSupport (patch by Anders)
WinVer.nsh: Fixed 95/NT4 ambiguity (bug #2053642)
WinVer.nsh: Proper Windows XP x64 detection (bug #2053700)
WinVer.nsh: Windows 2008 detection support (RFE #1949260)

Translations

Minor English grammar improvements (bug #2323452)

Build System

Full System compatibility with GCC (patch #2193442)

И поэтому на подготовку обновлений и мне потребуется время чтобы всё работало правильно, и без сбоев. Прошу подождать, этот компилер и мне нужен, тянуть естественно не стану. В очереди срочных работ ему присвоен один из самых высоких приоритетов.
Автор: SamLab
Дата сообщения: 06.01.2009 20:25
Есть ли у кого скрипт для утановки кодеков (особенно интересует ffdshow) или может программа которая из готового установщика сможет выдрать хотя бы часть скрипта?
Автор: Victor_VG
Дата сообщения: 07.01.2009 00:45
SamLab

Скрипт в NSIS не выдерешь - он каждый раз компилится в бинарный код, и декомпиллера пока я не видел, да и саму бинарку уже не всякий раз распакуешь. Так что выход один - всё самому с нуля писать. Видел я твою идею - проект интересный, но в одиночку тебе его не поднять. Если что - мою почту не забыл? Пиши, вместе прикинем.
Автор: Velikom
Дата сообщения: 09.01.2009 13:42
SamLab
Victor_VG

Цитата:
Скрипт из NSIS не выдерешь…

Вот, что интересно… McAfee с последней версией движка сканирования, проверяя установочные пакеты, созданные NSIS'ом, показывает имена и количество всех скриптов, которые использовались при его создании… Вывод: теоретически выдрать их из инсталлятора всё-таки возможно…
Автор: Victor_VG
Дата сообщения: 09.01.2009 15:55
Velikom

Имена, размеры пакетов - вопросов нет. NSIS ведь пакует тремя методами ZIP, BZIP2, LZMA. Потому распаковать сам SFX можно, а вот скрипт - просмотришь, но например мне не раз хотелось бы посмотреть что именно компилер сделал из моего кода. Приходится смотреть по косвенным признакам и логу компиляции. А иной раз при отладке такие чудеса вылезают...
Автор: Kilyan
Дата сообщения: 14.01.2009 12:00
Помогите плиз:
Закиньте примерчик образец, как с помощью NSIS сделать загрузчик к Портабельной программе!

Интересуеть принцип импорта в реестр - загрузка програмы - завершение программы - удаление из реестра.
Плизз... кто имеет-бросьте хоть в личку.
Автор: Victor_VG
Дата сообщения: 14.01.2009 16:56
Kilyan

Алгоритм устроит? Коли так пользуйся:

1) Запускаемся и скрываем главное окно дабы не мешало работать;
2) Делаем резервную копию изменяемых запускаемой программой настроек;
3) Распаковываем во временную папку запускаемую программу, коли надо, то добавляем в систему её настройки;
4) Запускаем саму программу по ExecWait и уходим в состояние ожидания её завершения;
5) Чистим следы работы программы в системе, удаляем выгруженный исполняемый код программы;
6) Проверяем все ли настройки системы восстановлены, если надо, то восстанавливаем их из своей резервной копии;
7) чистим за собой весь мусор типа временных файлов и т.д;
8) Завершаем свою работу не показывая главного окна загрузчика;

А импорт-экспорт в Реестр элементарно сделать или через плугин Registry, или через связку nsExec+Regeedit/reg (случае запуска через nsExec окно запускаемого процесса скрывается). Возьми у меня на сайте пакет NSIS 2.41 - 2.42 просто не успел дописать, и используй его - в компиляторе там всё уже имеется, в том числе и плугины вместе с документацией к ним.
Автор: Kilyan
Дата сообщения: 15.01.2009 08:49
Victor_VG
Если б с примерчиком? - так бы куда лучше было!
Автор: Astra55
Дата сообщения: 15.01.2009 09:11
Kilyan
Набрать в Гугле - How to make portable with NSIS
Или будут крики, что там все на ненашем языке? На нашем нету, извиняйте!

Добавлено:
Victor_VG
Там не все так просто. Суть не в том, чтобы удалить все следы, а чтобы все настройки сохранялись, но в папке и файлах портабелизируемой софтины.
Автор: Victor_VG
Дата сообщения: 15.01.2009 14:37
Astra55

Ну, это сделать можно., но при условии что программа может быть виртуализована.

Kilyan - http://portableapps.com/ тут ищи, исходники тут выкладывают. Тебе вроде всё в алгоритме расписано, только кодить осталось. В IBM этим 18 - 20 мальчики и девочки кодировщики занимаются. После месячных курсов. Более сложную работу им прости, не доверяют - напортачат по безграмотности.
Автор: Kilyan
Дата сообщения: 15.01.2009 16:37
Victor_VG
а конкретнее ссылку не дашь - хоть на парочку... ковыряюсь - ковыряюсь - не найду
меня очень интересует mozila в source
Автор: Victor_VG
Дата сообщения: 15.01.2009 18:11
Kilyan

Тогда иди на ftp://ftp.mozulla.org/pub/ сам для BSD их оттуда в тарбаллах скачиваю. И кстати, ночью выложу к себе новую сборку GCC 4.3.2 TDM-2 SJLJ (Windows) коли нужен - бери. Сам им сейчас последний Far Manager 2.0.735 SVN 2479 собираю. Ребятки помалкивают об исправлении бага в одной из функций API, но видно, что исправлено. Я им дал прямую ссылку на статью MSDN и указал что похоже содержит ошибку.

P.S.

С традиционной руганью, но собрались.
Автор: Kilyan
Дата сообщения: 15.01.2009 20:04
Victor_VG

Цитата:
ftp://ftp.mozulla.org/pub/
- не могу зайти... есть ли альтернатива?
Автор: Victor_VG
Дата сообщения: 15.01.2009 20:49
Kilyan

Извини пожалуйста, ошибся - о работе думал, вот правильный адрес: ftp://ftp.mozilla.org/pub/ . Новый компилятор работает кстати значительно быстрее, чем tdm-1. Сборка Far SVN-2479 несмотря на сложность заняла 5 минут против 10 - 12 в предыдущей версии компилятора.
Автор: Astra55
Дата сообщения: 16.01.2009 06:57
Victor_VG
И еще раз - там не все так просто На русскоговорящих пространствах пока что не видно титана, кто бы делал портабельные сборки с помощью скриптов NSIS на уровне того же Берната (portableappz.blogspot.com). Если все так легко, то почему в этом топике не появилось ни методики, ни тутора, словом, вообще ничего на эту тему. Меня интересует портабелизация NSIS-ом, применительно к софтам, использующим sys и прочие штуки, принципиально не поддающиеся Thinstall. К примеру - UltraISO, MagicDisk, виртуальная машина от Parallels и т.д. Есть такая штука в виндах, как c:\WINDOWS\system32\CatRoot, куда пишутся в порядке очередности oemX.cat, инсталляторы определяют какой номер последний и пишут следующим. Значит, должен быть аналогичный механизм анализа. Опять же legacy в реестре и еще много чего. Не думаю, что мальчики и девочки все это могут с легкостью, иначе NSIS портабелизаторов было бы куда больше
Автор: Victor_VG
Дата сообщения: 16.01.2009 07:47
Astra55

А кто говорит что их работа думать? Им сиё по должности не положено. Думают специалисты: системный аналитик определяющий что нужно заказчику и общие методы решения задачи и системные программисты пишущие алгоритмы решения кусков проекта да просто программисты кои алгоритмы отдельных блоков пишут. А мальчики-девочки только по этим алгоритмам код конечный пишут, и думать могут только о танцах-платьицах-цветочках да о свиданиях - о более серьёзных вещах им думать дюже вредно.

Ну а всерьёз по поводу драйверов - смотрим что у нас есть? Правильно, плугины - тот же nsSCM, Services ну и ещё парочка. А часто ли ими пользуются? Вот тебе и ответ. Дальше, cat-файлы. Сделать операцию enumerate каталога поверь не сложно, но опять же лень матушка и цейтнот заели. Я вижу как сделать эту функцию, да времени её расписать/отладить нет, у иного есть время, нет идей, у третьего есть подобие идеи да лень всё перевесила. Вот тебе и ответ про титана - время+задоусидчивость.
Автор: MANtiCORE
Дата сообщения: 18.01.2009 12:22
друзья.
вопросец возник - кто-нибудь делал тесную интеграцию unrar.dll и нсиса?
а то я покопался немножко, на сайте винампа, в разделе нсиса все рекомендуют пользоваться консольным unrar.exe... тут, на форуме, в разделе innosetup'a видел ссылку на то, что unrar.dll люди прикрутили к скрипту... но нигде ничего такого я не видел...
а самому писать - как говорил выше Victor_VG, цейтнот и лень-матушка заели
Автор: Victor_VG
Дата сообщения: 18.01.2009 14:39
MANtiCORE

В принципе можно - через вызов system.dll используя структуры API. Но я честно говоря не знаю какие параметры ей передать. Разве что посмотреть какие-то исходники где она применяется.
Автор: MANtiCORE
Дата сообщения: 18.01.2009 20:30
Victor_VG
ну как бы и я на этом тоже остановился... вызовы, их можно посмотреть в .h файле, там задекларировано с какими параметрами что вызывать, если с офсайта качать библиотеку для дельфи... ну а сам скрипт ... был бы исходник, я бы и сам доточил и прикрутил... а вот первопроходцем быть ... хоть и почётно, но геморройно до безобразия
Автор: Victor_VG
Дата сообщения: 18.01.2009 22:54
MANtiCORE

Загляни на nsis.sf.net - там найдёшь аналог - nsUnzip по моему - вызывает DLL распаковщик.
Автор: MANtiCORE
Дата сообщения: 19.01.2009 00:34
Victor_VG
если ты про ZipDll, то это совсем не то ... там специально написанная длл, которая втыкается в нсис как плагин.
Автор: Victor_VG
Дата сообщения: 19.01.2009 02:35
MANtiCORE

Нет, про иную - SystemDLL. Вызовы внешних библиотек делает она.
Автор: CBD
Дата сообщения: 02.02.2009 19:58
Такой вопрос - как вывести результат выполнения функции или команды в командной строке, т.е. к примеру при запуске скомпиленого файла который ловит аргументы (file.exe 1 2 3) из командной строки - он выполняет определённые действия и выводит результат в этом же окне командной строки.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364

Предыдущая тема: The Bat!


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.