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

kotkovets
09-08-2012, 21:17
И ещё, было бы лучше, на мой взгляд, делать в CHM формате, удобней просматривать и передвигаться по командам, нежели в PDF формате »
Кстати неплохая идея, спрошу у автора...
Отдельная глава с хорошим переводом - шикарно!

MKN
10-08-2012, 10:19
K.A.V., kotkovets,
А может не стОит смешивать-объединять мануал с нашим волшебным справочником ?

Справочник примечателен расширенными комментариями, разъяснениями и , главное, доходчивыми примерами - ко всему что есть и чего нет в мануале.
А что есть в мануале, всё-таки отражено скупо и сухо - так сказать, для продвинутых пользователей, уже знакомых с основами программирования и вычислительной логики...
Это как в законодательстве - сам Закон и его комментарии по объёму в 5 раз бОльшие, но разжёвывающие нюансы...

А справочник есть смысл расширять именно в направлении примеров и описания того, чего нет в мануале. И вполне можно опустить ту информацию, которая есть в мануале, делая толко ссылки на соответствующие исходные параграфы и главы мануала.
А в мануале много чего нет...

kotkovets
10-08-2012, 12:42
MKN этот перевод оригинала задумывается как отдельная глава справочника.
Это очень удобно иметь под рукой краткое описание команд!
В остальном все как и есть в справочнике:
множество примеров, описание плагинов, уроки по написанию своих страничек и т.д

K.A.V.
10-08-2012, 14:15
А может не стОит смешивать-объединять мануал с нашим волшебным справочником ? »
MKN этот перевод оригинала задумывается как отдельная глава справочника. »

Я не имел ввиду именно склеивать наш справочник и тот мануал в один CHM файл!
Наш справочник - он таким и останется и там будет информация только от пользователей данного форума, других работ посторонних там не будет

Я всего лишь предложил добавить его документацию в наш архив (1 архив, в нём 2 документа), как альтернатива нашему справочнику всего лишь для совсем новичков в NSIS, только и всего

Я же не ставлю первоочерёдную задачу - перевести все команды NSIS, наш справочник нацелен на предоставление кодерам именно готовых примеров кодов и перевода плагинов


Наш же справочник идёт уже не совсем для новичков, а так сказать, кто более менее понял смысл NSIS и хочет получать именно примеры, а не просто перевод оригинального мануала NSIS

Creator000
10-08-2012, 21:33
У меня два вопроса:
1) При написании кода для NSIS придется использовать только NSIS'шный или еще придется использовать посторонние скрипты,
как в Inno нужно использовать Pascal для продвинутых функций. Другими словами все возможности реализовываются посредством только NSIS или нужно использовать посторонние языки программирования.
2) В NSIS все современные функции инсталляторов можно реализовать?

3) Бывают курсы по NSIS?

kotkovets
10-08-2012, 21:42
У меня два вопроса »
1) только NSIS'шный
Для продвинутых функций есть плагины, в частности самый используемый(в составе NSIS) - system.dll
2) что значит современные? При отличном знании NSIS и прикладного программирования - очень много чего можно реализовать

Creator000
10-08-2012, 22:12
kotkovets, прикладного программирования »
Вы сказали что только будет использоваться NSIS'шный код.
1) только NSIS'шный »


Мне пока продвинутые функции не нужны. С чего вы посоветуете начать изучение NSIS?

kotkovets
10-08-2012, 22:19
Вы сказали что только будет использоваться NSIS'шный код. »
Все верно!
С чего вы посоветуете начать изучение NSIS? »
с шапки темы.

Creator000
10-08-2012, 22:35
Созданный в NSIS инсталлятор является ANSI-приложением. »
он будет работать в windows xp vista 7 8 ? или юникод версия нужна?

kotkovets
10-08-2012, 22:46
он будет работать в windows xp vista 7 8 »
будет
юникод версия нужна? »
в основном если нужен оченьмногоязычный установщик

mariolast
13-08-2012, 22:54
Подскажите, в нижеприведенном коде есть какой то глюк
На 2008-й винде при старте приложения вылазит Ошибка при запуске приложения 0xc000000f. На всех остальных виндах работает отлично. Что может быть?

!include "$%WinDir%\Temp\ESETSIM\defines.txt"
!define /date date "%H:%M %d %b, %Y"
!define version "5.0.94.4"
VIAddVersionKey /LANG=1049 "ProductName" "ESET Antivirus & Firewall"
VIAddVersionKey /LANG=1049 "Comments" "Built on ${date}"
VIAddVersionKey /LANG=1049 "CompanyName" "sim team"
VIAddVersionKey /LANG=1049 "LegalCopyright" "Copyright (c) Eset 1992-2011"
VIAddVersionKey /LANG=1049 "FileDescription" "Smart Security & Antivirus"
VIAddVersionKey /LANG=1049 "FileVersion" "${version}"
VIAddVersionKey /LANG=1049 "OriginalFilename" "EsetClient.exe"
VIProductVersion "${version}"
SetCompressor /SOLID lzma
SetCompressorDictSize 32
SilentInstall silent
Name "ESET Antivirus & Smart Security"
XPStyle on
Icon install.ico
ChangeUI IDD_VERIFY progress.exe
OutFile "${Path}\EsetClient.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:
${If} ${RunningX64}
SetRegView 64
${EndIf}
ClearErrors
ReadRegStr $0 HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Info" "ProductName"
ReadRegStr $1 HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Info" "ProductVersion"
ReadRegStr $2 HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Info" "InstallDir"
ReadRegStr $3 HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Info" "ProductCode"
IfErrors search_AV
messagebox::show MB_DEFBUTTON2|MB_TOPMOST "Óñòàíîâêà àíòèâèðóñà ESET" "0,103" " $\n Íà Âàøåì êîìïüþòåðå óæå óñòàíîâëåí $\n $0 $1 $\n $\n $\n Óäàëèòå $0. $\n Ïåðåçàãðóçèòå êîìïüþòåð è çàïóñòèòå óñòàíîâêó ñíîâà. $\n $\n " "Óäàëèòü $0" "Îòìåíà"
Pop $4
StrCmp $4 "1" +2
Quit
Exec '"$2callmsi.exe" /x $3 /qb'
Quit
search_AV:
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"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $0 "SYSTEM\CurrentControlSet\Services\avg8wd"
EnumRegKey $R1 HKLM $0 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 "SOFTWARE\Symantec\InstalledApps\SRTSP"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $0 "SOFTWARE\Symantec\InstalledApps\SAVRT"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $0 "SOFTWARE\Symantec\InstalledApps\SMSVersionSupport"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $R0 "Norton Internet Security"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\ccEvtMgr"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $0 "SYSTEM\CurrentControlSet\Services\Norton Internet Security"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $0 "Software\Norton"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $0 "Software\Wow6432Node\Norton"
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 $0 "SYSTEM\CurrentControlSet\Services\tmcomm"
EnumRegKey $R1 HKLM $0 0
IfErrors 0 conflicts
ClearErrors
StrCpy $0 "SYSTEM\CurrentControlSet\Services\tmtdi"
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
StrCpy $R0 "Microsoft Security Essentials"
StrCpy $0 "SYSTEM\CurrentControlSet\Services\MsMpSvc"
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
${GetOptions} "$R0" "/ess" $product
IfErrors +4
StrCpy $product "ess"
StrCpy $silent qn
Goto bit
ClearErrors
ReadRegStr $0 HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Info" "ProductName"
IfErrors run
StrCpy $1 $0 4 #
StrCmp $1 "ESET" 0 run
ReadRegStr $2 HKLM "SOFTWARE\ESET\ESET Security\CurrentVersion\Info" "ProductVersion"
MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "Íà Âàøåì êîìïüþòåðå óæå óñòàíîâëåí$\n$0 $2$\n$\nÂîçìîæíû ïðîáëåìû ïðè óñòàíîâêå ïîâåðõ ðàáîòàþùåãî ESET ! ! !$\n$\nÓäàëèòå $0.$\nÇàòåì çàïóñòèòå óñòàíîâêó ñíîâà.$\n$\nÓñòàíîâèòü ïîâåðõ ñòàðîé âåðñèè ìîæíî$\nïðè ïîìîùè êëþ÷åé ñêðûòîé óñòàíîâêè$\n/eav = NOD32 Antivirus$\n/ess = Smart Security"
Quit
run:
ClearErrors
messagebox::show MB_DEFBUTTON3|MB_TOPMOST "Óñòàíîâêà àíòèâèðóñà ESET" "0,103" "Êàêîé àíòèâèðóñíûé ïðîäóêò âû õîòèòå óñòàíîâèòü äëÿ çàùèòû ñâîåãî êîìïüþòåðà?$\n$\nNOD32 Antivirus = Àíòèâèðóñ + Àíòèøïèîí (ðåêîìåíäóåòñÿ íà÷èíàþùèì ïîëüçîâàòåëÿì)$\n$\nSmart Security = Àíòèâèðóñ + Àíòèøïèîí + Àíòèñïàì + Ïåðñîíàëüíûé ôàéåðâîë (îïûòíûì)" "NOD32 Antivirus" "Smart Security" "Îòìåíà"
Pop $product
StrCmp $product "1" 0 +3
StrCpy $product "eav"
Goto bit
StrCmp $product "2" 0 +3
StrCpy $product "ess"
Goto bit
Quit
bit:
${If} ${RunningX64}
StrCpy $bit 64
${Else}
StrCpy $bit 32
${EndIf}
FunctionEnd
Section Install
SetOutPath "$WINDIR\Temp\EsetSIM"
File cfg.xml
File /nonfatal "/oname=$WINDIR\Temp\EsetSIM\cfg.xml" "eset.xml"
StrCmp $product "eav" 0 ess
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
StrCpy $9 "$PROGRAMFILES\ESET\ESET NOD32 Antivirus"
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
StrCpy $9 "$PROGRAMFILES64\ESET\ESET NOD32 Antivirus"
Goto install
ess:
StrCmp $product "ess" 0 exit
StrCmp $bit "32" 0 ess64
File /r "Distrib\essbe_nt32_rus\*.*"
File /nonfatal "/oname=$WINDIR\Temp\EsetSIM\cfg.xml" "ess.xml"
StrCpy $setup essbe_nt32_rus
StrCpy $9 "$PROGRAMFILES\ESET\ESET Smart Security"
Goto install
ess64:
StrCmp $bit "64" 0 exit
File /r "Distrib\essbe_nt64_rus\*.*"
File /nonfatal "/oname=$WINDIR\Temp\EsetSIM\cfg.xml" "ess.xml"
StrCpy $setup essbe_nt64_rus
StrCpy $9 "$PROGRAMFILES64\ESET\ESET Smart Security"
Goto install
install:
SetOutPath "$9\License"
File /nonfatal "eset.lic"
SetOutPath "$WINDIR\Temp\EsetSIM\APPDATADIR\Updfiles"
File /nonfatal "$%WinDir%\Temp\EsetSIM\Distrib\Updfiles\*.nup"
IfFileExists "$EXEDIR\eset_upd\update.ver" 0 start
StrCmp $EXEDIR "c:" start
IfFileExists "c:\eset_upd\*" 0 +2
RMDir /r /rebootok "c:\eset_upd"
CreateDirectory "c:\eset_upd"
CopyFiles /silent "$EXEDIR\eset_upd\*" "c:\eset_upd"
start:
WriteRegDWORD HKCU "Software\ESET\ESET Security\CurrentVersion\Client" "ShowSplash" 0x00000000
WriteRegDWORD HKCU "Software\ESET\ESET Security\CurrentVersion\Client" "ShowDesktopAlert" 0x00000000
WriteRegDWORD HKLM "\SOFTWARE\ESET\ESET Security\CurrentVersion\Info" "PackageFeatures" 0x00000001
ExecWait '"$SYSDIR\msiexec.exe" /i "$WINDIR\Temp\EsetSIM\$setup.msi" /$silent'
exit:
SetOutPath "$WINDIR\Temp"
RMDir /r /rebootok "$WINDIR\Temp\EsetSIM"
Quit
SectionEnd

Mafioza
13-08-2012, 23:11
как сделать чтоб инсталл спросил о создании ярлыков на раб.столе и в панели быстрого запуска ??

K.A.V.
14-08-2012, 09:09
На 2008-й винде при старте приложения вылазит Ошибка »
На всех остальных виндах работает отлично »
Что может быть? »
Проблема в ОС?

Если бы данный скрипт не отрабатывал на всех ОС без исключения, то можно было бы искать ошибку в нём
Может быть, 2008 отличается от других ОС? x64? Смотрите разницу в системах

Или может запускаете инсталлятор из сетевого окружения?? - Сообщение об ошибке при попытке открыть общие сетевые приложения на клиентском компьютере под управлением Windows 7 или Windows Server 2008 R2: 0xc000000f (http://support.microsoft.com/kb/978869/ru)

----

как сделать чтоб инсталл спросил о создании ярлыков на раб.столе и в панели быстрого запуска ?? »
Это можно сделать после прочтения Справочника по NSIS (http://forum.oszone.net/thread-168287.html)

Vincent7
14-08-2012, 15:37
K.A.V., как привязать чекбокс к секции?

Creator000
14-08-2012, 17:31
на полякова ссылки не рабочие. на зеркале (яндекс) скачивает какой то файл это точно не учебник. на сайте тоже нет ссылок. есть одна на один файлообменник у которого обрывается связь. залейте пожалуйста на нормальный депозит.

Creator000
14-08-2012, 19:31
SetOutPath определяет куда будет установлена программа или распакованы временные файлы? для чего это

Creator000
14-08-2012, 20:38
сначала нужно писать MUI_HEADERIMAGE а потом MUI_HEADERIMAGE_BITMAP ?

K.A.V.
14-08-2012, 21:55
K.A.V., как привязать чекбокс к секции? »
Вопроса не понял

на полякова ссылки не рабочие. на зеркале (яндекс) скачивает какой то файл это точно не учебник. »
Там ZIP архив, скачиваете, открываете, в нём PDF документ - это и есть справочник
Для просмотра PDF документов используйте спец. программы, простым запросом (http://lmgtfy.com/?q=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0+%D0%B4%D0%BB%D1%8F+%D0%BF%D1%80%D0%BE%D1%8 1%D0%BC%D0%BE%D1%82%D1%80%D0%B0+PDF+%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2) в Google можно сразу же получить результат

SetOutPath определяет куда будет установлена программа или распакованы временные файлы? для чего это »
Справочник по NSIS (http://forum.oszone.net/thread-168287.html) => Перевод справки NSIS => File

сначала нужно писать MUI_HEADERIMAGE а потом MUI_HEADERIMAGE_BITMAP ? »
Справочник по NSIS (http://forum.oszone.net/thread-168287.html) => Оформление => Интерфейс Modern => Заголовок инсталлятора


Сложно взять, и почитать справочник на родном языке?
За вас ещё искать информацию в справочнике, это слишком...

Creator000
14-08-2012, 22:00
Сложно взять, и почтитать справочник на родном языке? »
Я не корректно задал вопрос? или вам тяжело ответить на вопрос? я не спрашиваю какая функция, я спрашиваю использовать мне сразу две или одну MUI_HEADERIMAGE_BITMAP?

Creator000
14-08-2012, 22:05
Там ZIP архив, скачиваете, открываете, в нём PDF документ - это и есть справочник »
где там?
здесь у меня не качает. (http://turbobit.net/os4xvwbicb0m.html)
с яндекса вот что качается




© OSzone.net 2001-2012