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

» NSIS (Nullsoft Scriptable Install System)

Автор: Victor_VG
Дата сообщения: 11.12.2010 05:51
sawerx

А по идее, тут же код выбора каталога устанавки не задан никак. Ни средствами MUI и ни через .onInit или код. Потому по идее всё должно лететь в произвольный каталог, а с цветом - у меня стоят свои картинки, но размером 175*312 @ 8 bpp а всё что больше или обрежется, либо будет отброшено стубами. Дальше я в этот пример не стану даже смотреть - проще всё сделать сначала средствами HM HIS, а потом подстроить по месту что надо.
Автор: kot280379
Дата сообщения: 12.12.2010 11:11
sawerx
Когда то себе делал, картинка на весь заголовок, код взял на вики (довел до человеческого вида).
Картинка должна быть: 497*57. При грамотном подходе можно сделать картинку на размер инсталла - без всяких глюков!
Тут главное знать, когда нужно скрывать (раскрашивать) те или иные элементы.
[more=Header]
Код: !define HWND_TOP 0
!define SWP_NOSIZE 0x0001
!define SWP_NOMOVE 0x0001
!define IDC_BITMAP 1500

!include "MUI2.nsh"
OutFile "Header.exe"


!define MUI_HEADER_TRANSPARENT_TEXT
!define MUI_CUSTOMFUNCTION_GUIINIT GUIInit
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"

Function .onInit
InitPluginsDir
File "/oname=$PLUGINSDIR\header.bmp" "header.bmp"
FunctionEnd

Function GUIInit
System::Call 'kernel32::GetModuleHandle(i 0) i.R3'
System::Call 'user32::CreateWindowEx(i 0, t "STATIC", t "", i ${SS_BITMAP}|${WS_CHILD}|${WS_VISIBLE}, i 0, i 0, i R1, i R2, i $HWNDPARENT, i ${IDC_BITMAP}, i R3, i 0) i.R1' ;создаем тип объекта
System::Call 'user32::SetWindowPos(i R1, i ${HWND_TOP}, i 0, i 0, i 00, i 0, i ${SWP_NOSIZE}|${SWP_NOMOVE})' ;назначаем позиции объекта
${NSD_SetStretchedImage} $R1 "$PLUGINSDIR\header.bmp" $R1 ;показываем картинку

GetDlgItem $R0 $HWNDPARENT 1039
ShowWindow $R0 ${SW_HIDE} ;скрываем иконку

GetDlgItem $R0 $HWNDPARENT 1034
ShowWindow $R0 ${SW_HIDE} ;скрываем стандартный фон заголовока

GetDlgItem $R0 $HWNDPARENT 1038 ;верхний заголовок
SetCtlColors $R0 0x000000 transparent ;цвет текса в.надписи

GetDlgItem $R0 $HWNDPARENT 1037 ;нижний заголовок
SetCtlColors $R0 0x000000 transparent ;цвет текса и фон надписи

GetDlgItem $R0 $HWNDPARENT 1028 ;бренд
SetCtlColors $R0 0x0000FF transparent ;цвет текса и фон бренда
FunctionEnd

Function .onGUIEnd
${NSD_FreeImage} $R1 ;выгружаем картинку из памяти
FunctionEnd

Section секция
Sleep 1000
SectionEnd
Автор: sawerx
Дата сообщения: 12.12.2010 14:27
Пример этот вполне работоспособный и изображение здесь не растягивается а заполнят всю область стандартного окна MUI и цвет текста становится белым.
kot280379 правильно подметил в своей последней строчке.
Я пытался убрать страницу Лицензии и Финальную но начало выбивать ошибку, сам разобраться не смог.
И ещё я заметил, что на странице хода установки в строке показывающей извлекаемые файлы происходит наслоение текста, похожее на это.
Вот хороший пример для 498x58

Victor_VG я давно пользуюсь HM HIS, но для данной задачи, как мне кажется больше подходит Venis IX

Цитата:
А по идее, тут же код выбора каталога устанавки не задан никак
переведи!
Я тестировал в Windows 7, а как известно у неё есть ограничения для папки C:\Program Files и для простоты я задал этот путь на прямую.
Автор: kot280379
Дата сообщения: 12.12.2010 14:45

Цитата:
происходит наслоение текста

Избавиться от наслоения текста контролов можно так:

Код: !define MUI_HEADER_TRANSPARENT_TEXT
Автор: Kein
Дата сообщения: 13.12.2010 18:06
В отличие от Inno, как я понял, NSIS не поддерживает многоязыкий интерфейс инсталлятора?
Автор: sawerx
Дата сообщения: 13.12.2010 18:45

Цитата:
В отличие от Inno, как я понял, NSIS не поддерживает многоязыкий интерфейс инсталлятора?

Читай \Docs\Modern UI\Readme.html и UI2 или мануал, и примеры
\Examples\languages.nsi или \Examples\language\languages.nsi
или альтернативный пример выше 498x58 вот рисунок
Автор: kot280379
Дата сообщения: 13.12.2010 21:04
Kein

Цитата:
NSIS не поддерживает многоязыкий интерфейс инсталлятора

Отчасти правда, касательно ANSI-NSIS - не все языки будут корректно отображаться.
А вот NSIS-UNICODE - без проблем!
ссылка на NSIS-UNICODE: http://www.scratchpaper.com/
Автор: Kein
Дата сообщения: 14.12.2010 02:52
Тогда такой вопрос:
http://forum.ru-board.com/messanger.cgi?action=new&touser=Kein
но только применительно к NSIS.

Возможно сие?
Автор: Victor_VG
Дата сообщения: 14.12.2010 10:03
Kein

А почему бы и не поддерживать ему MUI? Это что такое, как не MUI собственной персоной:

Код: !define PRODUCT_NAME "Far Manager PE2"
!define PRODUCT_VERSION "2.0.1758"
!define PRODUCT_PUBLISHER "Far Group"
!define PRODUCT_WEB_SITE "http://farmanager.com/"
SetCompressor /SOLID lzma
!include "MUI.nsh"
!include "Registry.nsh"
!define IMin "1"
!define IMaj "11"
!define IBld "1"
!define IRev "1"
!define IVar "1"
!define REV "1"
!define SVN "5344"
!define MUI_ABORTWARNING
!define MUI_ICON "far.ico"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "Russian"
Var lng
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "far-${PRODUCT_VERSION}.${SVN}.${REV}-portable.exe"
InstallDir "$TEMP\FDATA"
ShowInstDetails hide
XPStyle on
VIProductVersion "${PRODUCT_VERSION}.${SVN}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "Far Manager PE2 ${PRODUCT_VERSION}.${SVN}.${REV} (x86)"
VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "File and Archive Manager for Windows 2000/XP/2003/Vista/7/2008. Special portable edition."
VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "Eugene Roshal and Far Group, VictorVG @ VikSoft.Ru"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Eugene Roshal and Far Group, VictorVG @ VikSoft.Ru"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "VictorVG @ VikSoft.Ru, Russia, Moscow. All Right Reserved."
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Compiled at ${__DATE__} on ${__TIME__}."
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${IMin}.${IMaj}.${IBld}.${IRev}-${IVar}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "${PRODUCT_VERSION}.${SVN}.${REV}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "InternalName" "farpe2"
VIAddVersionKey /LANG=${LANG_ENGLISH} "OriginalFilename" "farman2p"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "ProductName" "Far Manager PE2 ${PRODUCT_VERSION}.${SVN}.${REV} (x86)"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "Comments" "Программа управления файлами и архивами для Windows 2000/XP/2003/Vista/7/2008. Специальное переносимое издание."
VIAddVersionKey /LANG=${LANG_RUSSIAN} "CompanyName" "Евгений Рошал и Группа разработчиков FAR, VictorVG @ VikSoft.Ru"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "LegalTrademarks" "Евгений Рошал и Группа разработчиков FAR, VictorVG @ VikSoft.Ru"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "LegalCopyright" "VictorVG @ VikSoft.Ru, Россия, Москва. Все права защищены."
VIAddVersionKey /LANG=${LANG_RUSSIAN} "FileDescription" "Скомпилирована ${__DATE__} в ${__TIME__}."
VIAddVersionKey /LANG=${LANG_RUSSIAN} "FileVersion" "${IMin}.${IMaj}.${IBld}.${IRev}-${IVar}"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "ProductVersion" "${PRODUCT_VERSION}.${SVN}.${REV}"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "InternalName" "farpe2"
VIAddVersionKey /LANG=${LANG_RUSSIAN} "OriginalFilename" "farman2p"
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
StrCpy $lng $LANGUAGE
StrCmpS $EXEFILE "far-${PRODUCT_VERSION}.${SVN}.${REV}-portable.exe" +6
StrCmp $lng 1049 +2
MessageBox MB_OK|MB_ICONSTOP "Waring! Executable file Far Manager PE2 is renamed!$\nPleas, rename is back for prevent any error." IDOK +2
MessageBox MB_OK|MB_ICONSTOP "Внимание! Исполняемыей файл Far Manager PE2 был переименован!$\nПожалуйста, переименуйте его обратно для предотвращения ошибок." IDOK +1
Quit
FunctionEnd
Автор: Kein
Дата сообщения: 15.12.2010 01:25
Спасибо, но мы уже выяснили насчет поддержки языков. Вы вопрос в моем предыдущем посте (по ссылке) прочитали?
Автор: Victor_VG
Дата сообщения: 15.12.2010 08:08
Kein

Ссылка вывела сюда "Отправка сообщения", то есть в ПМ. А раз так, то попрошу повторить для меня суть вопроса чтобы я представил себе формулировку задачи и мог помочь с её решением. Что касается UNICODE NSIS, то я его вчера вновь проверил для себя - на моих проектах половина плагинов формируют ошибки. Причём сразу формируется ошибка проверки платформы. А там и плагина нет - код запрашивает WinAPI. Значит для него мне надо переписывать целиком по 30 - 40 тыс строк кода и более. Не реально, проще потом новый написать как плагины нужные появятся.
Автор: kot280379
Дата сообщения: 15.12.2010 11:15
Victor_VG
Есть такое явление, да и плагины на оф. сайте в основном для ANSI NSIS, но попадаются и для UNICODE.
Для Юникодной сборки уже HM HIS уже не подходит (кодировка текста Unicode), как выход, использовать
в качестве редактора скриптов Unicode NSIS Notepad++
Автор: Kein
Дата сообщения: 15.12.2010 15:56
Victor_VG
http://forum.ru-board.com/topic.cgi?forum=5&topic=35146&start=560#4
Автор: Victor_VG
Дата сообщения: 15.12.2010 22:27
kot280379

IDM UEStudio + NSIS тэги - у неё вопросов с UNICODE/ANSI/EBCDIC/OEN/MAC/UNIX нет. Сам ей пользуюсь. ИИ прекрасно работает. Как оболочка для того же GCC - идеальный вариант. А учитывая её возможности - поддержка функций, скриптов, отладчиков, десятков компиляторов, прочего - разумнейший выбор, хотя формально и платный. Ну, тут мне проще - есть одна контора, которая периодически покупает софт себя, и как большую любезность с их стороны, по принципу "помощь за помощь" покупают кое что и для меня, хотя скупердяи отборные - за горелую спичку удавятся.

А что касается HM NIS - загляни сюда, потом поговорим о том, чего там не хватает.

Kein

Ответил там же. А "советчикам" можно посоветовать сначала подумать, проверить свои "мудрые советы", а потом отойти и покурить в сторонке коли кроме "вумных мыслей" в голове у них ничего нет. То, что я там описал, многократно проверенно на практике, и метод полностью рабочий и в течении наверное лет пяти - шести применяется ИТ-оделом одной крупной конторы как для коррекции ошибок установочных пакетов Инно, так и для их адаптации к задачам её подразделений.
Автор: Kein
Дата сообщения: 16.12.2010 00:10
Блин, Victor_VG, спасибо за ответ, но тут вышло недопонимание :P Первый раз я ошибся, задал вопрос в теме по Инно, когда как оказалась что установщик был NSIS. Ввиду того факта, что суть вопроса не изменилась, я лишь просто сменил тему :P

То есть, мне нужно то, что я описал ранее, но для NSIS-инсталлера: распаковать, добавить русскую локаль для русских систем, упаковать взад. Возможно?
Автор: John_White
Дата сообщения: 16.12.2010 20:45
Kein

Цитата:
распаковать

используй http://www.7-zip.org/

Цитата:
добавить русскую локаль для русских систем

добавляй

Цитата:
упаковать взад

заново скрипт писать надо для сабжа
Автор: Kein
Дата сообщения: 16.12.2010 23:29
То есть, скрипт сам не распаковать никак?
Автор: Victor_VG
Дата сообщения: 17.12.2010 00:32
Kein

Ясно. Ответ прост - Far Manager + плагин Observer, но сложности гарантирую - все макросы будут раскрыты в абсолютных адресах, раз, регистры подставлены их адресами $0 - $19, а не $0 -$9? $0R $R9, переменные и дефайны найти не удастся. Так что, для данного случая проще скрипт заново написать - труда уйдёт меньше...
Автор: kot280379
Дата сообщения: 18.12.2010 18:44
Кому интересен и нужен справочник по NSIS качайте:
http://narod.ru/disk/1645638001/NSIS_Help.zip.html
Если вы заметите ошибки и неточности - просьба сообщить!
Автор: Victor_VG
Дата сообщения: 18.12.2010 19:22
kot280379

Хороший перевод всегда пригодится, и в первую очередь новичкам - для них он нужнее чем для опытных разработчиков знающих NSIS. Заранее спасибо, а текст в свободно время погляжу, чем смогу помогу.
Автор: kot280379
Дата сообщения: 18.12.2010 19:41
Victor_VG
Спасибо!
Для новичков в основном справочник ориентирован, да и сам время от времени поглядываю.
Автор: dancer73
Дата сообщения: 20.12.2010 21:00
Здравствуйте! Извечная тема portable.
На работе нужен инет, а прав установки чего-либо нет.
Возможно ли с помощью NSIS, сделать портабельную сборку, под которой бы работал USB-модем?
Известно, что это устройство при установке копирует в систему: или из своей памяти драйвера,
или драйвера нужно установить принудительно...
На компе стоит Windows 7 pro, модема, конечно, сейчас нет ...
Автор: Victor_VG
Дата сообщения: 20.12.2010 23:33
dancer73

Да, возможно. Вплоть до установки драйверов средствами NsSCM. Только код написать. Часть можете взять у меня в Far Manager PE2 SDK, часть - работу с SCM допишете сами. И будет то, что Вам нужно.
Автор: sawerx
Дата сообщения: 21.12.2010 01:32
По поводу перевода, могу предложить, если это вам интересно свои наработки по этой теме.
За исключением документации NSIS.chm, переведено большинство txt и html файлов.
Переработано меню для NSIS.exe, как мне кажется, в отличие от других оно более информативно.
Всё это находится в инсталляторе, который при установке резервирует исходные файлы с добавлением к имени _EN и в случае удаления всё будет восстановлено.
Переводил при помощи ПРОМТ-а, какая это гадость вы сами знаете, да ещё в последствии потерял белый вариант, восстанавливал из черновиков.
Автор: Black666angel
Дата сообщения: 21.12.2010 15:31
Народ не кто не подскажет где можно найти русефикат ато в шапке выходит Невозможно найти ресурс
Возможно, он был удален, переименован, или временно недоступен.
Да и поетой ссылке подобная фигня
http://nsis.narod.ru/
Автор: Victor_VG
Дата сообщения: 21.12.2010 15:36
Black666angel

По большому счёту он не сильно и нужен - меню переведено многими людьми, в том числе и я переводил, а для разработки удобен HM NIS, а он имеет встроенный перевод. В то же время запустить скрипт на компиляцию элементарно прямо из командной строки makensis *.nsi - только припишите NSIS в путь. Можете взять весь пакет инструментов у меня на сайте. Только там сначала надо перейти на страницу закачки, и через 10 секунд скрипт балансировки нагрузки кластера отдаст Вам файл. Докачка поддерживается.
Автор: dancer73
Дата сообщения: 21.12.2010 19:34

Цитата:
На работе нужен инет, а прав установки чего-либо нет.
Возможно ли с помощью NSIS, сделать портабельную сборку, под которой бы работал USB-модем?


Цитата:
Да, возможно. Вплоть до установки драйверов средствами NsSCM. Только код написать.....


Victor_VG
установка драйверов возможна без прав администратора?
Автор: kot280379
Дата сообщения: 22.12.2010 00:44
dancer73

Цитата:
установка драйверов возможна без прав администратора?

А вы попробуйте...
Автор: Victor_VG
Дата сообщения: 22.12.2010 04:19
dancer73

Нет, но можно заставить установку запуститься с более высокими привилегиями.
Автор: alroy
Дата сообщения: 22.12.2010 10:14
Всем привет у меня такой вопрос может кто решал уже похожую задачу есть куча файлов с одинаковым именем(в принципе можно добавить номер к файлу но тогда нужно переименовать файл во время установки) я хочу запихнуть их в один инсталятор а процесс установки должен выглядеть примерно так: появляется окно ввода текста я там набираю код например 100001 и скрипт выбирает соответствующий файл и устанавливает его (из всех файлов нужно будет установить тока один на другом компе другой и.т.д.) подскажите это можно реализовать в принципе а то время убивать зря не охота если это невозможно !!!

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364

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


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