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

» NSIS (Nullsoft Scriptable Install System)

Автор: MaGoth
Дата сообщения: 27.10.2009 16:38
Приветствую,
Есть небольшой вопрос к знатокам.
Можно ли заблокировать распаковку готового инсталлятора Нсис архиватором 7z?
Если такая возможность есть, то подскажите пожалуйста как ее реализовать в скрипте.

Спасибо.
Автор: Victor_VG
Дата сообщения: 27.10.2009 18:41
MaGoth

Насколько знаю нет, не удаётся.
Автор: MaGoth
Дата сообщения: 27.10.2009 21:18

Цитата:
Насколько знаю нет, не удаётся.

Очень жаль...

Ps. Ушел мучать Игоря Павлова по этому вопросу, может он чего посоветует?!
Автор: 820815
Дата сообщения: 28.10.2009 02:52
MaGoth

Внешний запароленный архив.

Если хочется одним файлом, соответственно, архив помещается в инсталлятор, откуда сначала извлекается в $TEMP, затем распаковывается в $INSTDIR.

Можно наколбасить и что-нибудь более изощренное (чтобы архив не был виден внутри инсталлятора), только смысла в этом не вижу.
Автор: 0x000BLAh
Дата сообщения: 28.10.2009 03:40
Окей, представьте себе, что ваш инсталлер записан на медленную болванку, а на диске места только-только под установку. Какон нафиг извлечение в $темп?

Цитата:
RC4 шифрование - вот ссылки: http://nsis.sourceforge.net/DcryptDll_:_Adding_Encryption_to_NSIS и http://nsis.sourceforge.net/Can_I_decompile_an_existing_installer читайте.

пишите макрос, такой чтоб инсталлер сразу после извлечения файла его расшифровывал
Автор: Victor_VG
Дата сообщения: 28.10.2009 05:12
0x000BLAh

Дружище, не путайте! $TEMP переменная обозначающая системную временную папку и её значение определяется динамически в момент запуска инсталлятора. И в том, что здесь Вы ошиблись Вас убедит справка NSIS раздел 4.2.3 Constants (для NSIS v2.4.5):

Цитата:
$TEMP

The system temporary directory (usually C:\Windows\Temp but detected at runtime).


Цитата:
$TEMP

системный временный каталог (например C:\Windows\Temp детектируется при выполнении).

И по второму вопросу Вы так же были не внимательны:

Цитата:
Currently NSIS installers cannot be fully decompiled. The installer itself doesn't provide any method to extract files or the script without installation. It is the developer's choice whether the source code and/or the files for the installer are available to the public or not.

There are, however, external tools that allow this. 7-zip (version 4.40beta at the time of this writing) supports decompressing NSIS installers compressed with lzma or bzip, but the source code is still partially compiled and requires extensive modification before the script can be recompiled. A decompression plug-in is also available for TotalCommander.

As a general note to software developers, you should use a plugin like DCryptDll if you need to protect certain files in your installer.


Цитата:
В настоящее время инсталляторы NSIS не могут быть полностью декомпилированы. Программа установки сама по себе не предоставляет никаких способов извлечения файлов или сценария без установки. По выбору разработчика исходный код и / или файлы установки, могут быть сделаны доступными для общественности.

Есть, однако, внешние инструменты, которые позволяют частично распаковать инсталлятор. 7-Zip (версия 4.40beta на момент написания этого документа) поддерживает распаковку инсталляторов NSIS сжатых алгоритмами LZMA или BZIP, но исходный код требует доработки, прежде чем этот сценарий может быть перекомпиляции. Плагины декомпрессии также доступны для TotalCommander.

В общем плане, разработчики программного обеспечения, должны использовать плагины, как такие как DCryptDll для защиты определенных файлов в Вашей установке.

Так что Вы неверно поняли описания плагина и причины невозможности полной декомпиляции NSIS программ - код сценария компилируется в объектный байт-код шифруемый по алгоритму RC4 с ключом шифрования длинной 1024 бита, и потом его целостность проверяется при запуске установки по алгоритму MD5.

Да, у NSIS есть одна особенность - в начале установки, если ему достаточно места в некоторых случаях часть файлов могут быть распакованы на тот же носитель с которого запущена установка, но, для этого надо приложить огромные усилия в направлении написания кривого до предела сценария. Это надо очень сильно постараться чтобы такой сценарий написать. Я за всё время только пару таких случаев встретил, и то виной были ошибки в .onInit - в обоих случаях автор приравнивал переменную $PLUGINSDIR к $EXEDIR командой StrCpy $PLUGINSD IR$EXEDIR. В этом случае и возникала ошибка.

Надеюсь Вы понимаете, что это ошибка и так не делаете в своих программах?



Автор: MaGoth
Дата сообщения: 28.10.2009 16:11

Цитата:
Внешний запароленный архив.

Если хочется одним файлом, соответственно, архив помещается в инсталлятор, откуда сначала извлекается в $TEMP, затем распаковывается в $INSTDIR.

Можно наколбасить и что-нибудь более изощренное (чтобы архив не был виден внутри инсталлятора), только смысла в этом не вижу.

Эм... тут проблема немного в другом. Инсталлер должен быть рабочим и доступным всем изначально.
Впрочем, он таковым и является, все делается и устанавливается как нужно. Только проблема в том, что компоненты которые идут упакованные в него защищены определенной лицензией, которую я нарушать не могу. Но эти файлы можно извлечь и пользоваться ими если у пользователя стоит и пиратский софт.

Мой инсталлер не позволяет юзеру установить на пиратский софт то что в него упаковано, в процессе стандартной инсталляции. Но из-за 7z, верификация ехе-шников становится бесполезной. И потом я всегда выкладываю инсталлер в открытый доступ для всех, на кой черт мне его жать в архив, да еще и паролить в придачу?! О_о
Надеюсь я смог донести до вас свою мысль?


Теперь по самому инсталятору и его процессу. Во время процесса установки у меня запускается вагон всяких программ, и идет конвертация файлов и сборка определенных архивов и томов - VDFs. Общее число файлов в той или иной сборке инсталлятора может зашкаливать за 35 - 50 000, и более. А посему, я не совсем понимаю как в данном случае мне может помочь DCryptDll?

Проясните этот момент пожалуйста, спасибо.
Автор: 820815
Дата сообщения: 28.10.2009 18:12
MaGoth

Цитата:
я всегда выкладываю инсталлер в открытый доступ для всех, на кой черт мне его жать в архив, да еще и паролить в придачу?!

Я этого и не предлагал.

"Лицензионные компоненты" пакуются в запароленный архив, архив кладётся внутрь инсталлятора.
После прохождения проверки, архив извлекается во временную папку, откуда его содержимое распаковывается инсталлятором (без участия пользователя) куда следует.

P.S.: Или я чего-то не понимаю, или одно из двух.

Victor_VG

Цитата:
целостность проверяется при запуске установки по алгоритму MD5

CRC32. Изменить "копирайты" (в свойствах exe), например, не представляет труда
Автор: Victor_VG
Дата сообщения: 28.10.2009 19:53
820815

Если не стоит специальная проверка Я например такое частенько ставлю, и другие хитрые проверки - иди их обойди.
Автор: MaGoth
Дата сообщения: 28.10.2009 21:57
@820815:

Цитата:
Я этого и не предлагал.

"Лицензионные компоненты" пакуются в запароленный архив, архив кладётся внутрь инсталлятора.
После прохождения проверки, архив извлекается во временную папку, откуда его содержимое распаковывается инсталлятором (без участия пользователя) куда следует.

P.S.: Или я чего-то не понимаю, или одно из двух.

Соррь если я чего недопонял, но оно сути дела это не меняет, ибо эта "куча файлов" не может паковаться в архив. Т.к. в инсталлер они компиллятся в извлеченном и конвертированном виде, затем в процессе в процессе инсталляции происходит их обратная конвертация и запаковка, софтом из - МДК. По окончанию инсталляции результатом будут рабочие тома архивов для определенного ехешника.
Cама инсталляция порой может занимать до 40 минут времени, а если эти файлы еще и в архив сувать и юзать их распаковку в процессе инсталла, то это вообще труба будет...


Добавлено:
И еще один вопрос имеется к знатокам, может кто проделывал подобное и поделится решением.

Суть вот в чем, я хочу добавить в инсталлятор новое текстовое окно - "Информация", аналогичное окну - "Лицензионное соглашение". За одним исключением:
"радиобаттонов", кнопки "Принять" и прочего, там не должно быть. Только кнопочки назад и далее.
Оно должно идти после окна "Приветствия", чтобы пользователи могли ознакомится с правилами установки, описанием модификации/патча и прочего, до того как установят софт. С привязкой текстового файлика в формате тхт или ртф к этому окну.

Перерыл кучу материалов на сайтах/форумах, но ни чего не понял. Также не смог понять как правильно работать с программой для создания окошек интерфейса (НисДизайнер). В Нсис, что и как делается понятно, а вот как связать готовое окошко со скриптом инсталлера и куда ложить в каталоги Нсис создаваемые этой прогой файлы интерфейса, не совсем понял.

Если кто делал что подобное подскажите пожалуйста куда смотреть и что копать. А если есть примерчик подобной реализации было бы очень кстати.
Автор: John_White
Дата сообщения: 29.10.2009 08:52
MaGoth
Здоровенько
я чертовски рад что ты еще в теме, ты еще в деле...
всем готоманам и вог.ру отдельный респект.
Я спрыгнул с этой темы, не пошла она...
Маразмусу привет передавай...


Цитата:
Суть вот в чем, я хочу добавить в инсталлятор новое текстовое окно - "Информация", аналогичное окну - "Лицензионное соглашение".

Почитай этот саппорт
http://nsis.sourceforge.net/Readme_Page_Based_on_MUI_License_Page

Добавлено:
Вариант заебестовый...
Полная совместность с МУИ2 плюс никаких подгрузок из темп фолдеров.
Юзай...
Автор: MaGoth
Дата сообщения: 02.11.2009 18:28
John_White
Спасибки,
Сделал по аналогии только мелочевку изменить пришлось под свои нужды и свою версию компилятора...
Усе работает.
Автор: Artem_Butenko
Дата сообщения: 09.11.2009 14:50
Ребята, пожалуйста, подскажите, с какими параметрами командной строки следует запускать инсталляторы NSIS с portableappz.blogspot.com, чтобы они распаковывались "тихо" во временную папку. Буду очень признателен за помощь.
Автор: Victor_VG
Дата сообщения: 09.11.2009 14:55
Artem_Butenko

Не требуется никаких - их элементарно можно 7-Zip 9.07 распаковать. Смысла запускать при этом нет.
Автор: Artem_Butenko
Дата сообщения: 09.11.2009 15:10
Victor_VG

Вопрос спорный, я пробовал параметры /S /D=%Temp%. Однако, путь установки не изменяется. Что я делаю не так?
Автор: Victor_VG
Дата сообщения: 09.11.2009 16:34
Artem_Butenko

Смысла по моему нет устанавливать - проще распаковать. А потому я даже не проверю ключи в таких случаях. Зачем?
Автор: rosalin
Дата сообщения: 18.11.2009 12:03
Ребята создаю инсталятор (в этом деле новичек) для openVPN

хочу сразу устанавливать vnc (используется tightvnc)

нужно в инсталятор запихать

вот этот код
"c:\Program Files\TightVNC\WinVNC.exe" -install
net stop winvnc
regedit /s "c:\Program Files\TightVNC\tightVNCSettings.reg"
net start winvnc

как это будет выглядеть

вот набросал ... ну незнаю правильно

SetOutPath "c:\program files\TightVNC"
nsExec::ExecToLog '"c:\program files\TightVNC\winvnc.exe" -kill'

File "${HOME}\WinVNC.exe"
File "${HOME}\VNCHooks.dll"
nsExec::ExecToLog '"c:\program files\TightVNC\winvnc.exe" -install'
nsExec::ExecToLog 'net stop winvnc'
nsExec::ExecToLog 'regedit /s "c:\Program Files\TightVNC\tightVNCSettings.reg"'
nsExec::ExecToLog 'net start winvnc'
SectionEnd
Автор: Victor_VG
Дата сообщения: 18.11.2009 12:13
rosalin

Проще это сделать через плагин nsSCM. Он и установит службу, и проверит, и запустит её. Описание в примере на сайте. Раздел плагинов.
Автор: rosalin
Дата сообщения: 18.11.2009 12:19
Victor_VG
вопрос скорее не в установке службы а импорте настроек реестра

Добавлено:
Victor_VG
помогите красиво написать и установку сервиса и внесения настроек в реестр
Автор: Victor_VG
Дата сообщения: 18.11.2009 12:30
rosalin

Плагин nsSCM сам всё пропишет. И именно в том формате и в те ключи в которые нужно это сделать. Руками прописать правильные настройки безопасности можно только для конкретной машины и конкретной системы. На других эти настройки просто не будут работать. А это ключевые параметры для запуска служб и драйверов. Поэтому и нужно использовать плагин взаимодействующий с Service Control Manager (SCM) системы. Плагин nsSCM именно это и делает. Единственное что следует учитывать, это формат его ответов - error/success он отвечает именно словами на стеке, а не кодом как многие другие плагины. Я сам когда впервые с ним столкнулся совершил такую ошибку. Потом написал себе тестовый пример и посмотрел вывод плагина. Всё стало понятно.
Автор: dimbat
Дата сообщения: 18.11.2009 12:40
rosalin
Я бы так сделал установку:
Вначале экспорт настроек в реестр, потом копирование файлов и установка, запуск службы. Т.е.
*InstallDir "$PROGRAMFILES\TightVNC"
*SetOutPath "$INSTDIR"
*WriteReg(Bin/DWORD/Str...) (можно конвертнуть с помошью Reg2Nsis, чтобы не заморачиваться)
*file TightVNC\*.*
*Execwait '"$INSTDIR\winvnc.exe" -install'
и запуск службы, если конечно она по ключу -install сама не запускается.
---
Т.е. это будет аналогично Вашим:
regedit /s tightVNCSettings.reg
WinVNC.exe -install
Автор: rosalin
Дата сообщения: 18.11.2009 15:09
Уважаемые комрады
Victor_VG
dimbat

сделал [more=так]Section "TightVNC Компоненты"
SetOutPath "$PROGRAMFILES\TightVNC"
nsExec::ExecToLog '"$PROGRAMFILES\TightVNC\winvnc.exe" -kill'

File "${HOME}\TightVNC\*.*"
nsExec::ExecToLog '"$PROGRAMFILES\TightVNC\winvnc.exe" -install'
nsExec::ExecToLog 'net stop winvnc'
################################################################################

WriteRegStr HKEY_CURRENT_USER "Software\ORL" "" ""
WriteRegStr HKEY_CURRENT_USER "Software\ORL\VNCHooks" "" ""
WriteRegStr HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs" "" ""
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_GetUpdateRect" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_Timer" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_KeyPress" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_LButtonUp" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_MButtonUp" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_RButtonUp" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_Deferral" 0x1
WriteRegStr HKEY_CURRENT_USER "Software\ORL\VNCviewer" "" ""
WriteRegStr HKEY_CURRENT_USER "Software\ORL\VNCviewer\History" "0" "10.8.0.6"
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_0" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_1" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_2" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_3" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_4" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_5" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_6" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_7" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_8" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "preferred_encoding" 0x7
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "restricted" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "viewonly" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "fullscreen" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "scaling" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "8bit" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "shared" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "swapmouse" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "belldeiconify" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "emulate3" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "emulate3timeout" 0x64
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "emulate3fuzz" 0x4
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "disableclipboard" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "fitwindow" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "scale_den" 0x64
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "scale_num" 0x64
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "cursorshape" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "noremotecursor" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "compresslevel" 0xffffffff
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "quality" 0x6
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\ORL" "" ""
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "ConnectPriority" 0x2
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "LoopbackOnly" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "EnableHTTPDaemon" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "EnableURLParams" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "AllowLoopback" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "AuthRequired" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "DebugMode" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "DebugLevel" 0x2
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "DisableTrayIcon" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "SocketConnect" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "AutoPortSelect" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "InputsEnabled" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "LocalInputsDisabled" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "IdleTimeout" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "LocalInputsPriorityTime" 0x3
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "QuerySetting" 0x2
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "QueryTimeout" 0x1e
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "QueryAccept" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "QueryAllowNoPass" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "LockSetting" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "RemoveWallpaper" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "BlankScreen" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "EnableFileTransfers" 0x1
WriteRegBin HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "Password" daee2ea335e98cc1
WriteRegBin HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "PasswordViewOnly" daee2ea335e98cc1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "PollUnderCursor" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "PollForeground" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "PollFullScreen" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "OnlyPollConsole" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "OnlyPollOnEvent" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "PollingCycle" 0x12c
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "DontSetHooks" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "DontUseDriver" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "DriverDirectAccess" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "LocalInputsPriority" 0x0

############################### reg2nsis end #################################
nsExec::ExecToLog 'net start winvnc'
SectionEnd[/more]

незнаю насколько это грамотно
Автор: dimbat
Дата сообщения: 18.11.2009 15:37
rosalin

Цитата:
сделал так

В nsExec нет никакой необходимости, достаточно Exec или ExecWait.
В части WriteReg можно почистить от пустых строк и создания веток, ветки сами создадутся, если их нет в реестре. Т.е. не нужны строки с WriteRegStr.
И еще не очень понятно - TightVNC уже установлен на целевых машинах и требуется просто смена настроек?
Если да, то копирование файлов не нужно.
Если не установлен, то смени последовательность. Нужно всего два шага. Вначале WriteReg а потом WinVNC.exe -install.
А у тебя выходит Скопировать файлы -> установить/запустить службу -> остановить ее тут же -> сменить настройки -> запустить снова.
Автор: rosalin
Дата сообщения: 18.11.2009 15:51
dimbat


Цитата:
И еще не очень понятно - TightVNC уже установлен на целевых машинах и требуется просто смена настроек?


нет устанавливаеться пакет OpenVPN + VNC + настройки

команда WinVNC.exe -install всего лишь устанавливает Vnc как сервис в реестр ничего не пишет

для этого нужна другая команда , но ее я не использую ибо нужно участие пользователя , поэтому проще сразу кинуть настройки в реестр


Цитата:
Если не установлен, то смени последовательность. Нужно всего два шага. Вначале WriteReg а потом WinVNC.exe -install.
А у тебя выходит Скопировать файлы -> установить/запустить службу -> остановить ее тут же -> сменить настройки -> запустить снова.


вот тут можно поподробнее
Автор: dimbat
Дата сообщения: 18.11.2009 16:05
rosalin

Цитата:
вот тут можно поподробнее

Еще подробнее?
Первым шагом в сетапе будет загрузка настроек в реестр, а уже потом всё остальное. Т.е. секцию с WriteReg ставишь выше, за ней копирование файлов, а в конце установка/старт службы.
Я выше уже написал практически готовый скрипт:
InstallDir "$PROGRAMFILES\TightVNC"
SetOutPath "$INSTDIR"
WriteReg(Bin/DWORD)
file TightVNC\*.*
Exec '"$INSTDIR\winvnc.exe" -install'
Автор: rosalin
Дата сообщения: 18.11.2009 16:21
dimbat

Цитата:
InstallDir "$PROGRAMFILES\TightVNC"
SetOutPath "$INSTDIR"


разъясните плиз у меня при установке я путь указываю c:\OpenVPN

это и есть "$INSTDIR"

или это не принципиально


Добавлено:
dimbat
посмотрите плиз [more=еще вот]Section "TightVNC Компоненты"
InstallDir "$PROGRAMFILES\TightVNC"
SetOutPath "$INSTDIR"
################################################################################

;WriteRegStr HKEY_CURRENT_USER "Software\ORL" "" ""
;WriteRegStr HKEY_CURRENT_USER "Software\ORL\VNCHooks" "" ""
;WriteRegStr HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs" "" ""
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_GetUpdateRect" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_Timer" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_KeyPress" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_LButtonUp" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_MButtonUp" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_RButtonUp" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCHooks\Application_Prefs\WinVNC.exe" "use_Deferral" 0x1
;WriteRegStr HKEY_CURRENT_USER "Software\ORL\VNCviewer" "" ""
;WriteRegStr HKEY_CURRENT_USER "Software\ORL\VNCviewer\History" "0" "10.8.0.6"
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_0" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_1" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_2" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_3" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_4" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_5" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_6" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_7" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "use_encoding_8" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "preferred_encoding" 0x7
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "restricted" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "viewonly" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "fullscreen" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "scaling" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "8bit" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "shared" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "swapmouse" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "belldeiconify" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "emulate3" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "emulate3timeout" 0x64
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "emulate3fuzz" 0x4
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "disableclipboard" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "fitwindow" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "scale_den" 0x64
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "scale_num" 0x64
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "cursorshape" 0x1
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "noremotecursor" 0x0
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "compresslevel" 0xffffffff
WriteRegDWORD HKEY_CURRENT_USER "Software\ORL\VNCviewer\History\10.8.0.6" "quality" 0x6
;WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\ORL" "" ""
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "ConnectPriority" 0x2
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "LoopbackOnly" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "EnableHTTPDaemon" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "EnableURLParams" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "AllowLoopback" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "AuthRequired" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "DebugMode" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "DebugLevel" 0x2
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3" "DisableTrayIcon" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "SocketConnect" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "AutoPortSelect" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "InputsEnabled" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "LocalInputsDisabled" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "IdleTimeout" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "LocalInputsPriorityTime" 0x3
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "QuerySetting" 0x2
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "QueryTimeout" 0x1e
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "QueryAccept" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "QueryAllowNoPass" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "LockSetting" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "RemoveWallpaper" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "BlankScreen" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "EnableFileTransfers" 0x1
WriteRegBin HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "Password" daee2ea335e98cc1
WriteRegBin HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "PasswordViewOnly" daee2ea335e98cc1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "PollUnderCursor" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "PollForeground" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "PollFullScreen" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "OnlyPollConsole" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "OnlyPollOnEvent" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "PollingCycle" 0x12c
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "DontSetHooks" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "DontUseDriver" 0x0
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "DriverDirectAccess" 0x1
WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\ORL\WinVNC3\Default" "LocalInputsPriority" 0x0

############################### reg2nsis end #################################

;File "${HOME}\WinVNC.exe"
;File "${HOME}\VNCHooks.dll"
File "${HOME}\TightVNC\*.*"
Exec '"$INSTDIR\winvnc.exe" -kill'
Exec '"$INSTDIR\winvnc.exe" -install'
;nsExec::ExecToLog '"$PROGRAMFILES\TightVNC\winvnc.exe" -kill'
;nsExec::ExecToLog '"$PROGRAMFILES\TightVNC\winvnc.exe" -install'
nsExec::ExecToLog 'net start winvnc'
SectionEnd[/more]
Автор: dimbat
Дата сообщения: 18.11.2009 16:36
rosalin
Минутку, вот твоя задача была:

Цитата:
нужно в инсталятор запихать
вот этот код
"c:\Program Files\TightVNC\WinVNC.exe" -install
net stop winvnc
regedit /s "c:\Program Files\TightVNC\tightVNCSettings.reg"
net start winvnc

Я так понял, что есть готовый установщик, просто хочется, чтобы ставился и стартовал уже настроенный vnc? Тогда скрипт выше.
Откуда тут c:\OpenVPN?
Или теперь добавляется этот OpenVPN со своими еще настройками?
Автор: rosalin
Дата сообщения: 18.11.2009 16:39
наоборот в инсталятор опенвпн добавляю установку vnc

Добавлено:
dimbat
вот выложил
http://slil.ru/28221378
Автор: dimbat
Дата сообщения: 18.11.2009 16:47
Блин, пока отвечал на первый пост, уже скрипт добавился
Это Exec '"$INSTDIR\winvnc.exe" -kill' не нужно. Кого килять, если vnc еще не запущен?
Это nsExec::ExecToLog 'net start winvnc' тоже не нужно, если исходить из твоего:

Цитата:
"c:\Program Files\TightVNC\WinVNC.exe" -install
net stop winvnc

ключ -install ставит и стартует службу, раз следом идет остановка.
А так да, работать будет стопудово.
Это я отвечал на вот этот скрипт, не успевая уже за твоими постами. )
Автор: rosalin
Дата сообщения: 18.11.2009 17:39
dimbat
спасибо все подправил согласно ваших рекомендаций все работает как надо ну правда при инсталяции и запуске служб крякозябры в окне но на устаноку это не сказываеться

спасибо

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364

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


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