PDA

Показать полную графическую версию : [архив].: NSIS - все вопросы :.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 [95] 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

Krinkels
14-11-2011, 13:58
Это че за батник, да еще написанный на nsis? »
Я тоже сначала так прочитал, но подумал что это бред. Видимо имеется ввиду инсталятор написанный на нсис, а не батник :)

kotkovets
14-11-2011, 14:23
Да....Мало того, что NSIS не так уж прост, дык еще вешают себе же гемор в одно место,
в виде батника, который запускает пресловутый NSIS :jester:
товарищи,а существует ли функция для удаления файлов? »
Представляете я тожь не нашел, ну долго искал, пока справку не открыл! :jester:

Krinkels
14-11-2011, 14:46
Да....Мало того, что NSIS не так уж прост, дык еще вешают себе же гемор в одно место,
в виде батника, который запускает пресловутый NSIS »
А то. Батник для запуска батника, который в свою очередь запускает еще один батник. И после такой цепочки запускается инсталятор на нсис :)

Уважаемые пользователи!
На глупый вопрос вы рискуете получить глупый ответ.
Пишите правильно, дабы можно было понять ваш вопрос. Помните, экстрасенсы в отпуске, телепаты на больничном, а шаманам нет дела до ваших проблем

Alexey_KF
14-11-2011, 18:55
Если б вы прочитали предыдущие посты то было бы вам понятно.
Я вылаживал сложный скрипт с командами (nsis) который запускал .bat файл.
вот его часть:
start:
ExecWait '"$SYSDIR\msiexec.exe" /i "$WINDIR\Temp\EsetSIM\$setup.msi" /$silent'
IfFileExists "$EXEDIR\eset_server_fix.bat" 0 +3
CopyFiles /silent "$EXEDIR\eset_server_fix.bat" "$WINDIR\Temp\eset_server_fix.bat"
ExecWait "$WINDIR\Temp\eset_server_fix.bat"
Почему вручную запуская батник реестр изменяется, а таким образом нет?
Чтоб еще раз убедиться, что батник срабатывает только вручную-создал sfx архив с командой запуска батника. Батник запустился, а изменений в реестре нет.
Собственно для чего этот батник:
-в антивирусе nod 32 (5 версии) по умолчанию в настройках не доступен выбор сервера обновлений антивирусных баз. Этот батник разблокирывает эту функцию и устанавливает путь для обновлений.
Код батника:
@echo off
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Info" /v PackageFeatures /t REG_DWORD /D "1" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\UI_Settings\Servers" /v Server_0 /t REG_SZ /D "http://4local.ru:2221" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile" /v SelectedServer /t REG_SZ /D "http://4local.ru:2221" /f

P.S. Иногда приходится отвечать с телефона. Извините за орфографию.

kotkovets
14-11-2011, 20:54
Alexey_KF
какие нафиг батники еще надо, ради внесения пару строк реестра, гемор на одно место... :cool:
WriteRegStr HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile" "SelectedServer" "http://4local.ru:2221"
;--
Если б вы прочитали предыдущие посты то было бы вам понятно »
А не читаете Вы, что я Вам пишу, ИМХО!
Есть утилитка:
Reg2NSIS конвертер reg файлов в скрипт NSIS (http://nsis.sourceforge.net/Reg2Nsis_-_convert_registry_info_into_NSIS_commands)
Это не панацея от всех проблем, но прежде всего думайте своей головой, а не головой утилитки.

Alexey_KF
14-11-2011, 21:45
kotkovets, спасибо за оперативную помощ но:
!include "$%WinDir%\Temp\ESETSIM\defines.txt"
!define /date date "%H:%M %d %b, %Y"
!define version "5.0.94.8"
VIAddVersionKey /LANG=1049 "ProductName" "ESET Antivirus"
VIAddVersionKey /LANG=1049 "Comments" "Built on ${date}"
VIAddVersionKey /LANG=1049 "CompanyName" "Alexey_KF"
VIAddVersionKey /LANG=1049 "LegalCopyright" "Copyright (c) Eset 1992-2011"
VIAddVersionKey /LANG=1049 "FileDescription" "Alexey_KF & Antivirus"
VIAddVersionKey /LANG=1049 "FileVersion" "${version}"
VIAddVersionKey /LANG=1049 "OriginalFilename" "EsetClient.exe"
VIProductVersion "${version}"
SetCompressor /SOLID lzma
SetCompressorDictSize 32
SilentInstall silent
Name "ESET Antivirus"
XPStyle on
Icon install.ico
ChangeUI IDD_VERIFY progress.exe
OutFile "${Path}\Eset_5_garant.exe"
SubCaption 3 " "
ShowInstDetails nevershow
!include FileFunc.nsh
!include x64.nsh
!insertmacro GetRoot
!insertmacro DriveSpace
!insertmacro GetOptions
!insertmacro GetParameters
var bit
var product
var setup
var silent
Function .onInit
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "EsetSIM") i .r1 ?e'
Pop $R0
StrCmp $R0 0 +2
Quit
${GetRoot} "$WINDIR" $R0
${DriveSpace} "$R0" "/D=F /S=M" $R1
IntCmp $R1 300 +3 0 +3
MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "На системном диске должно быть более$\n300 мегабайт свободного места.$\nУстановка антивируса отменена!"
Quit
ReadEnvStr $0 OS
StrCmp $0 "Windows_NT" 0 begin
ClearErrors
UserInfo::GetAccountType
IfErrors +3
Pop $0
StrCmp $0 "Admin" begin
MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "Для установки программы у пользователя$\nдолжны быть права администратора.$\nУстановка антивируса отменена!"
Quit
begin:
ReadRegStr $0 HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Info" "InstallDir"
IfErrors run
StrCpy $1 $0 "" -1
StrCmp $1 "\" 0 +2
StrCpy $0 $0 -1
IfFileExists "$0" 0 run
SetOutPath "$0\Updates"
Delete "$OutDir\*"
File /nonfatal /x em011_*.nup /x *_r*.nup "$%WinDir%\Temp\EsetSIM\Distrib\Updfiles\*.nup" "$%WinDir%\Temp\EsetSIM\Distrib\Updfiles\update.ver"
IfFileExists "$OutDir\update.ver" 0 run
WriteRegStr HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile" "SelectedServer" "$OutDir"
IfSilent +2
MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "Антивирусные базы скопированы.$\nНажмите $\"Обновить$\" в главном окне."
Quit
run:
ClearErrors
StrCpy $R0 "G DATA Software"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\AVKWCtl"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "AVAST Antivirus"
StrCpy $0 "Software\ALWIL Software\Avast\4.0"
EnumRegKey $R1 HKLM $0 0
IfErrors +4
ReadRegStr $R1 HKLM $0 Avast4ProgramFolder
IfFileExists $R1\aswRunDll.exe conflicts
DeleteRegKey HKLM $0
ClearErrors
StrCpy $1 "Software\Wow6432Node\ALWIL Software\Avast\4.0"
EnumRegKey $R2 HKLM $1 0
IfErrors +4
ReadRegStr $R1 HKLM $0 Avast4ProgramFolder
IfFileExists $R1\aswRunDll.exe conflicts
DeleteRegKey HKLM $0
ClearErrors
StrCpy $R0 "AVG Antivirus or Internet Security"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\AvgCoreSvc"
StrCpy $1 "SYSTEM\CurrentControlSet\Services\avg8wd"
EnumRegKey $R1 HKLM $0 0
EnumRegKey $R2 HKLM $1 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "Kaspersky Antivirus or Internet Security"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\AVP"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "Symantec Software"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\ccEvtMgr"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "Panda Software"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\PAVSRV"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "Avira Antivirus or Security Suite"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\AntiVirService"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "BitDefender Software"
StrCpy $0 "SOFTWARE\BitDefender"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "CA Software"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\CAISafe"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "F-Secure Software"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\Eventlog\System\F-Secure Gatekeeper"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "McAfee Software"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\McShield"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "Windows Live OneCare"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\OneCareMP"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "TrendMicro Software"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\SfCtlCom"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "TrustPort Antivirus or PC Security"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\avas_service"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "Norman Antivirus or Security Suite"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\nsesvc"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "Rising Antivirus"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\RsRavMon"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "Bullguard Internet Security"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\BsFileScan"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "Sunbelt VIPRE Antivirus"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\SBAMSvc"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
Goto +3
conflicts:
MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "Внимание! На вашем компьютере уже установлен $R0$\nУдалите его из Панели управления и запустите установку снова"
Quit
${GetParameters} $R0
StrCpy $silent qb
${GetOptions} "$R0" "/eav" $product
IfErrors +4
StrCpy $product "eav"
StrCpy $silent qn
Goto bit
ClearErrors
messagebox::show MB_DEFBUTTON3|MB_TOPMOST "Production by Alexey_KF" "0,103" "Сборка собрана на инсталляторах:$\n$\nESET NOD32 Antivirus Business Edition 5.0.94.8 32-bit Final$\n$\nESETNOD32 Antivirus Business Edition 5.0.94.8 Final 64-bit$\n$\nУстанавливается на Windows NT ОС х86 и х64 (Авто выбор)$\n$\nСпециально для soft.4local.ru" "Установка" "Отмена"
Pop $product
StrCmp $product "1" 0 +3
StrCpy $product "eav"
Goto bit
Quit
bit:
${If} ${RunningX64}
StrCpy $bit 64
${Else}
StrCpy $bit 32
${EndIf}
FunctionEnd
Section Install
File cfg.xml
SetOutPath "$WINDIR\Temp\EsetSIM"
File /nonfatal "/oname=$WINDIR\Temp\EsetSIM\cfg.xml" "eset.xml"
StrCmp $product "eav" 0
StrCmp $bit "32" 0 eav64
File /r "Distrib\eavbe_nt32_rus\*.*"
File /nonfatal "/oname=$WINDIR\Temp\EsetSIM\cfg.xml" "eav.xml"
StrCpy $setup eavbe_nt32_rus
Goto install
eav64:
StrCmp $bit "64" 0 exit
File /r "Distrib\eavbe_nt64_rus\*.*"
File /nonfatal "/oname=$WINDIR\Temp\EsetSIM\cfg.xml" "eav.xml"
StrCpy $setup eavbe_nt64_rus
Goto install
install:
SetOutPath "$WINDIR\Temp\EsetSIM\APPDATADIR\Updfiles"
File /nonfatal /x em011_*.nup /x *_r*.nup "$%WinDir%\Temp\EsetSIM\Distrib\Updfiles\*.nup"
IfFileExists "$EXEDIR\Updates\update.ver" 0 start
IfFileExists "$EXEDIR\Updates\em000_32_l0.nup" 0 start
IfFileExists "$EXEDIR\Updates\em005_32_l0.nup" 0 start
CopyFiles /silent /filesonly "$EXEDIR\Updates\*.nup" "$WINDIR\Temp\EsetSIM\APPDATADIR\Updfiles"
start:
ReadRegStr $0 HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Info" "InstallDir"
ExecWait '"$SYSDIR\msiexec.exe" /i "$WINDIR\Temp\EsetSIM\$setup.msi" /$silent'
WriteRegDWORD HKCU "Software\ESET\ESET Security\CurrentVersion\Client" "ShowSplash" 0x00000000
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ESET\ESET Security\CurrentVersion\Info" "PackageFeatures" 0x1
WriteRegStr HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\UI_Settings\Servers"Server_0" "http://4local.ru:2221"
WriteRegStr HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile" "SelectedServer" "http://4local.ru:2221"
ClearErrors
IfErrors exit
StrCpy $1 $0 "" -1
StrCmp $1 "\" 0 +2
StrCpy $0 $0 -1
IfFileExists "$0" 0 exit
File /nonfatal "/oname=$0\License\eset.lic" "eset.lic"
exit:
SetOutPath "$WINDIR\Temp"
RMDir /r /rebootok "$WINDIR\Temp\EsetSIM"
Quit
SectionEnd
что не так? почему после установки антивируса не изменяется реестр???

Все таки сработала одна строка из 3-ех:
WriteRegStr HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\UI_Settings\Servers"Server_0" "http://4local.ru:2221"
а почему 2 остальные не стработали?

kotkovets
14-11-2011, 22:28
что не так? »
попробуйте просто добавить в реестр записи в отладочном скрипте, ради проверки, без всякой установки антивируса
а почему 2 остальные не стработали? »
потому что, эти ветки перезаписывает антивирус однозначно!
---
А вот это бред полный, на кой черт счищать флаг ошибки,
а затем проверять флаг ошибки?? однозначно флага ошибки НИКОГДА не будет!
Cледовательно весь код ниже будет выполняться всегда, независимо от метки exit
ClearErrors
IfErrors exit
StrCpy $1 $0 "" -1
;--
;--
exit:
;--

Alexey_KF
14-11-2011, 22:48
потому что, эти ветки перезаписывает антивирус однозначно! »
помогите добавить эти ветки после установки антивируса

kotkovets
14-11-2011, 23:20
помогите добавить эти ветки после установки антивируса »
Это не та тема обсуждения, а особенности установки этого продукта я не знаю.

vahe-91
14-11-2011, 23:25
помогите добавить эти ветки после установки антивируса »
Нужно убить процессы антивируса или сделать так, чтобы антивирус запускался после перезагрузки компьютера, а не сразу после установки.

Krinkels
14-11-2011, 23:34
Нужно убить процессы антивируса »
99% что антивирь просто так не даст убить свой процесс.
чтобы антивирус запускался после перезагрузки компьютера, а не сразу после установки. »
А смысл? Как только антивирь запуститься он тут же их перезапишет

kotkovets
14-11-2011, 23:34
Нужно убить процессы антивируса или сделать так, чтобы антивирус запускался после перезагрузки компьютера »
Ну это слишком сложно, лучше всего нужные ветки добавлять после установки антивиря и перезагрузки ,
прописыванием в реестр запуск инсталла специальным назначенным ключом, чтобы после занесения в реестр данных инсталлятор закрывался сразу же, т.е такие действия лучше всего прописать
в функции .OnInit - дабы не было видно окошка запуска инсталла.

Krinkels
14-11-2011, 23:40
Смею предложить в этом случае использовать именно батник. ИМХО проще, меньше строк + самоудаление

vahe-91
14-11-2011, 23:42
:off: я бы вместо Alexey_KF все изменения сделал бы на самой msi, а не через NSIS

kotkovets
14-11-2011, 23:43
Krinkels, не люблю я эти батники, все делаю через NSIS раз NSIS,
а это не сложно - 5,6 строк кода, без записей команд с реестром
все изменения сделал бы на самой msi »
Врятли изменения таблиц в пакете msi изменит ситуацию, если антивирь сразу заводится.

Krinkels
14-11-2011, 23:47
На вкус и цвет товарища нет. А вообще я считаю что некоторые вещи все таки можно себе позволить.
Врятли изменения таблиц в пакете msi изменит ситуацию, если антивирь сразу заводится. »
Про msi еще нужно читать, а тут за тебя половину сделают :)

vahe-91
14-11-2011, 23:50
Врятли изменения таблиц в пакете msi изменит ситуацию, если антивирь сразу заводится »
ради интереса попробую, если будет время :)

kotkovets
15-11-2011, 00:17
Ну это слишком сложно, лучше всего нужные ветки добавлять после установки антивиря и перезагрузки ,
прописыванием в реестр запуск инсталла специальным назначенным ключом, чтобы после занесения в реестр данных инсталлятор закрывался сразу же, т.е такие действия лучше всего прописать
в функции .OnInit - дабы не было видно окошка запуска инсталла. »
Можно так попробывать, после установки софта записываем автозапуск инсталла с ключом /regdat
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" "Setup" '"$EXEPATH" /regdat'
А функции прописать следующие (после рег. данных инсталл закрывается)

!include "FileFunc.nsh"
!include "LogicLib.nsh"

Function .onInit
ClearErrors
${GetOptions} `$CMDLINE` `/regdat` `$0`
${IfNot} ${Errors}
;сюда пишем рег. данные
Quit
${EndIf}
ClearErrors
FunctionEnd

Alexey_KF
15-11-2011, 20:04
А смысл? Как только антивирь запуститься он тут же их перезапишет »
Если я вручную запускаю батник то реестр изменяется. Если батник запускает инстолятор то изменений нет.
P.S. Перезагузка не обязательна. Изменения вручную срабатывают.

vahe-91
15-11-2011, 23:30
Alexey_KF, уже 1000 раз говорили избався ты от этого батника и пропиши ключи добавляемие батником в установщик :biggrin:




© OSzone.net 2001-2012