[архив].: NSIS - все вопросы :.

Ответить
 • Просмотры: 32
Аватара пользователя
katok888

Re: [архив].: NSIS - все вопросы :.

Сообщение katok888 »

Цитата dracosha:



Я Вас еще буду мучать что бы Вы мне помогли разобраться с добавлением окон и при этом буду просить что бы Вы мне помогли нарисовать или изменить положение деталей в этих окнах
[архив].: NSIS - все вопросы :.




Я закончил статью, NSIS.
NSIS. Создаем собственные страницы инсталлятора
. Я надеюсь, этот материал поможет кому-то.

dracosha, задавайте вопросы. Слушаем.



Уважаемые модераторы, попрошу не рассматривать мои публикации как рекламу ресурса. В случае необходимости, я готов перепостить информацию на сайт Oszone или даже прямо в этот форум. Просто сообщите мне об этом, я и учту все рекомендации
Аватара пользователя
Serega

Re: [архив].: NSIS - все вопросы :.

Сообщение Serega »

katok888 спасибо, а утилы iss2nsi случайно нет?
Аватара пользователя
hb860

Re: [архив].: NSIS - все вопросы :.

Сообщение hb860 »

Цитата Painkiller:



K.A.V. ,hb860 , изменю свой вопрос. Как сделать чтобы в названии секции с компонентами было указано ещё и количество выбранных компонентов?
[архив].: NSIS - все вопросы :.




В функции onSelChange прописать команды на перечисление статусов секций командами SectionGetFlags, в самом конце прописываем команду SectionSetText, где указываем количество подсчитанных отмеченных секций Изображение

Если не понятно, объянснил, то могу код сделать Изображение

Сейчас сделаю Изображение



Изображение


читать дальше »




Код:

Код: Выделить всё

SubSection /e "Компоненты для установки" subSec
Section /o "test1" section1
SectionEnd
Section /o "test2" section2
SectionEnd
Section /o "test3" section3
SectionEnd
Section /o "test4" section4
SectionEnd
Section /o "test5" section5
SectionEnd
Section /o "test6" section6
SectionEnd
SubSectionEnd
 Function .onSelChange
 Strcpy $0 0
  SectionGetFlags ${section1} $1
StrCmp $1 "1" 0 +2
IntOp $0 $0 + 1
  SectionGetFlags ${section2} $1
StrCmp $1 "1" 0 +2
IntOp $0 $0 + 1
  SectionGetFlags ${section3} $1
StrCmp $1 "1" 0 +2
IntOp $0 $0 + 1
  SectionGetFlags ${section4} $1
StrCmp $1 "1" 0 +2
IntOp $0 $0 + 1
  SectionGetFlags ${section5} $1
StrCmp $1 "1" 0 +2
IntOp $0 $0 + 1
  SectionGetFlags ${section6} $1
StrCmp $1 "1" 0 +2
IntOp $0 $0 + 1
  SectionSetText ${subSec} "Компоненты для установки (Выбрано $0)"
 FunctionEnd
Аватара пользователя
hb860

Re: [архив].: NSIS - все вопросы :.

Сообщение hb860 »

Вот еще возникло 3 вопроса...



Вопрос 1

Вобщем есть страничка лицензии

!insertmacro MUI_PAGE_LICENSE "files\LicenseRU.rtf"

а у меня еще есть файл лицензии LicenseEN.rtf

И если пользователь выбрал аннглийский язык, то мне очень хотелось бы чтоб ему отобразился текст из LicenseEN.rtf



Вопрос 2

Получается что какой бы язык пользователь не выбрал при инсталяции, в любом случае будет копировться файлик с русским языком... И если этот файлик копируется то при запуске прога будет запускаться на русском языке. Как бы сделать так что бы при выборе русского языка копировался файл с русским языком, а при выборе английского языка чтоб ничего не копировалось?



Вопрос 3

В скрипт добавил вот такую функцию: (зы взял код
отсюда
)



Код:

Код: Выделить всё

Function .onInit
SetOutPath $TEMP
File /oname=spl.bmp "files\splash.bmp"
advsplash::show 1500 2500 250 -1 $TEMP\spl
Pop $0
Delete $TEMP\spl.bmp
FunctionEnd

Вобщем можно ли сделать заставку что бы отображались картинки с прозрачностью? Например png-шки



Дайте плиз примерчики на это дело.




Цитата hb860:



dracosha, задавайте вопросы. Слушаем.
[архив].: NSIS - все вопросы :.




Уважаемый hb860, мне очень помогли Ваши практические примеры... Особенно 3 первых примера...

К сожалению в 4-м примере для меня все оказалось очень сложно. Наверное потаму что я не знаю ниодного языка програмирования...

Я очень хочу изменить страничку !insertmacro MUI_PAGE_COMPONENTS

И хочу что бы она выглядела вот так:



Если Вас не затруднит помогите мне пожалуйста с этим.

И ко всему этому я хочу добавить еще одну точно такую же страничку но на ней уже будут не компоненты а настройки. Правда там точно так же будут копироваться файлы как и в компонентах. Т.е. пользователь поставил птичку значит копироваться, нет значит не копироваться.



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

Дело в том что настройки - это инифайлы, которые при запуске проги автоматически будут удаляться... А точнее прога при первом запуске подхватит все настройки которые прописаны в ини и сразу же их удалит.
Аватара пользователя
Комсомолец

Re: [архив].: NSIS - все вопросы :.

Сообщение Комсомолец »

hb860, может уточнишь что именно? я строк 20 скрипта правил по ее подсказкам-так и не добился ничего((



volk1234, спасибо за оформление темы и ссылки! Прикрепи, пожалуйста, и
ISS2NSI
в ссылки.
Аватара пользователя
Serega

Re: [архив].: NSIS - все вопросы :.

Сообщение Serega »

Цитата K.A.V.:



Про какой файл идёт речь? Про любой?

Вот пример команды копирования файла, копирование происходит, если пользователь выбрал русский язык

Код:

StrCmp $Language "1049" 0 +2

CopyFiles "$Windir\test.exe" "$Temp"
[архив].: NSIS - все вопросы :.




Я так понимаю этот код я должен был засунуть в функции?

Если так то меня все таки это немного не устраивает... Дело в том что файл копируется еще до выбора папки куда устанавливать прогу (копируется конешно же в указанную папку по умолчанию).

Может есть какое-то другое решение?


Цитата K.A.V.:



Необходимо с помощью редактора ресурсов (напр. ResHacker) изменить ресурс 104 в файле MUI диалогов (обычно это \Program Files\NSIS\Contrib\UIs\modern.exe)
[архив].: NSIS - все вопросы :.




Спасибо большое... Даже и не представлял что эти окна лежат где-то в ресурсах.
Аватара пользователя
hb860

Re: [архив].: NSIS - все вопросы :.

Сообщение hb860 »

Цитата dracosha:



Если так то меня все таки это немного не устраивает... Дело в том что файл копируется еще до выбора папки куда устанавливать прогу (копируется конешно же в указанную папку по умолчанию).

Может есть какое-то другое решение?
[архив].: NSIS - все вопросы :.




Я честно сказать, не могу понять вашу цель, вашу задачу, объясните грамотно, что нужно сделать? Изображение



Какие вопросы задаёте, такие ответы и получаете Изображение
Аватара пользователя
hb860

Re: [архив].: NSIS - все вопросы :.

Сообщение hb860 »

Цитата K.A.V.:



Я честно сказать, не могу понять вашу цель, вашу задачу, объясните грамотно, что нужно сделать?
[архив].: NSIS - все вопросы :.




Сори! Попробую еще разок Изображение

Вобщем вот тестовый скрипт:


читать дальше »




Код:

Код: Выделить всё

SetCompressor /SOLID lzma
RequestExecutionLevel admin
SetOverwrite on
!define PRODUCT_NAME "Super Proga"
InstallDir "$PROGRAMFILES\Super Proga"
!include "MUI2.nsh"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "files\LicenseRU.rtf"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_RESERVEFILE_LANGDLL
Section  $(NameSec0) Section0
SectionIn RO
   SetOutPath "$INSTDIR\"
   File "file1.dll"
   File "file2.dll"
SectionEnd
Section $(NameSec1) Section1
   SetOutPath "$INSTDIR\folder"
   File "file3.dll"
SectionEnd
Section $(NameSec2) Section2
   SetOutPath "$INSTDIR\folder"
   File "file4.dll"
SectionEnd
и т.д.
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
StrCmp $Language "1049" 0 +2
CopyFiles "files\russian.lng" "$INSTDIR\"
SetOutPath $TEMP
File /oname=spl.bmp "files\splash.bmp"
advsplash::show 1500 2500 250 0xFFFFFF $TEMP\spl
Pop $0
Delete $TEMP\spl.bmp
FunctionEnd







Вобщем когда запускается инсталятор, то сразу после заставки (вобщем в самом начале) файл russian.lng копируется в папку по умолчанию... Тут же возникает вопрос... А если пользователь выберет другой путь для установки программы (MUI_PAGE_DIRECTORY)? При тестировании я собственно так и сделал... И в той папке которую я выбрал, файла russian.lng естественно не оказалось. Вобщем мне нужно что бы файл копировался туда куда пользователь решит.




Цитата K.A.V.:



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

В коде вашего примера, за прозрачный цвет отвечает 4-ый параметр, т.е. -1, необходимо заменить "-1" на HEX значение прозрачного цвета, например, при указании 0xFFFFFF, за прозрачный цвет будет белый
[архив].: NSIS - все вопросы :.




сделал свой файлик splash.bmp с прозрачностью

-1 изменил 0xFFFFFF

получилось вот так:

advsplash::show 1500 2500 250 0xFFFFFF $TEMP\spl

скомпилил

но вместо прозрачного выводится черный цвет

0xFFFFFF изменил на 0

получилось вот так:

advsplash::show 1500 2500 250 0 $TEMP\spl

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

Я думаю что есть таки плагины которые позволяют вставлять прозрачные картинки типа png?

K.A.V., может подскажете какой-нить русский ресурс с кучей плагинов для nsis?
Аватара пользователя
hb860

Re: [архив].: NSIS - все вопросы :.

Сообщение hb860 »

Вам нужно поместить данную команду в секцию, а не в функцию, которая выполняется при запуске инсталлятора, пример кода:



Код:

Код: Выделить всё

Section -post
StrCmp $Language "1049" 0 +2
CopyFiles "files\russian.lng" "$INSTDIR\"
SectionEnd

Данная секция скрыта, она будет выполняться Изображение




Цитата dracosha:



Я думаю что есть таки плагины которые позволяют вставлять прозрачные картинки?

K.A.V., может подскажете какой-нить русский ресурс с кучей плагинов для nsis?
[архив].: NSIS - все вопросы :.




Есть ещё плагин NewAdvSplash, но он мало чем отличается...

Русскоязычный только nsis.narod.ru, только он не обновляется уже давно и там нет ничего полезного (по крайней мере для меня)...
Ответить

Вернуться в «Автоматическая установка приложений»