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

Ответить
 • Просмотры: 24
Аватара пользователя
K.A.V.

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

Сообщение K.A.V. »

Цитата Habetdin:



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




где именно?

насчет копирайтов, это картинка для примера, к Lisbon'y отношения не имеет.
Аватара пользователя
dracosha

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

Сообщение dracosha »

Цитата Hector:



где именно?
[архив].: NSIS - все вопросы :.




Откуда я знаю где у вас в скрипте эта строка?

Ищите "BrandingText блаблабла
"
Аватара пользователя
K.A.V.

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

Сообщение K.A.V. »

В выделенном тексте, везде где написано 0 +2 замените на 0 +3



Кстати не обязательно для каждого файла создавать новую секцию, всё можно прописать в одну


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




Код:

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

Section -post
StrCmp $Language "1049" 0 +3
SetOutPath "$INSTDIR\"
File "files\russian.lng"
StrCmp $Language "1049" 0 +3
SetOutPath "$INSTDIR\settings"
File "settings\set.dll"
StrCmp $Language "1033" 0 +3
SetOutPath "$INSTDIR\settings"
File "files\set.dll"
SectionEnd
Аватара пользователя
dracosha

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

Сообщение dracosha »

Hector,

Код:

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

BrandingText "Мой текст :P"
Аватара пользователя
K.A.V.

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

Сообщение K.A.V. »

Цитата dracosha:



страничка 1

"название папки в меню пуск" и "создавать папку в меню пуск или нет"




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




В начале кода (вставляем в зависимости от того, на каком этапе хотим видеть):



Код:

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

var ICONS_GROUP
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "Моя программа"
!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP

В "-post" секцию добавить



Код:

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

 
  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
Прописываем создание ярлыков в старт меню
  !insertmacro MUI_STARTMENU_WRITE_END










Цитата dracosha:



страничка 2

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




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






Код:

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

!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
Page custom MyDialog_Shortcuts ""
!insertmacro MUI_PAGE_FINISH



Код:

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

Function MyDialog_Shortcuts
setoutpath $PLUGINSDIR
file "shortcuts.ini"
InstallOptions::initDialog /NOUNLOAD "$PLUGINSDIR\shortcuts.ini"
InstallOptions::show /NOUNLOAD
  ReadINIStr $0 "$PLUGINSDIR\shortcuts.ini" "Field 1" "State"
StrCmp $0 "1" 0 NoDesktopShortcuts
# Отмечена галка на создание на рабочем столе, здесь прописываем команды
NoDesktopShortcuts:
  ReadINIStr $0 "$PLUGINSDIR\shortcuts.ini" "Field 2" "State"
StrCmp $0 "1" 0 NoQuicklaunchShortcuts
# Отмечена галка на создание в панели быстрого запуска, здесь прописываем команды
NoQuicklaunchShortcuts:
FunctionEnd

Скачайте прикреплённый файл, распакуйте файл "Shortcuts.ini" в папку с вашим скриптом











Цитата NoName01.cpp:



Но есть у меня вопрос. В моем инсталляторе 3 секции. Как мне сделать так, чтобы страница появлялась только при условии, что выбрана например первая секция.



Какое условие мне сюда добавить:

Function nsDialogsPage

nsDialogs::Create 1018

nsDialogs::Show

FunctionEnd




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




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





Код:

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

var Sec1_Is_Checked
Section /o "Моя секция №1"
Strcpy $Sec1_Is_Checked "1"
SectionEnd
Function nsDialogsPage
StrCmp $Sec1_Is_Checked "1" 0 Sec1_NOT_Checked
nsDialogs::Create 1018
nsDialogs::Show
Sec1_NOT_Checked:
FunctionEnd

Можно конечно обойтись без создания переменной, командами "SectionGetFlags", если хотите сделать так, то посмотрите мои ранние посты, там я давал примеры, как определить, отмечена секция или нет Изображение

А если смотреть лень Изображение говорите - напишу Изображение
Вложения
shortcuts.rar
(314 байт) 0 скачиваний
shortcuts.rar
(314 байт) 0 скачиваний
Аватара пользователя
hb860

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

Сообщение hb860 »

Насколько мне известно, нет
Аватара пользователя
kuchkan

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

Сообщение kuchkan »

hb860, спасибо большое за статью
NSIS. Создаем собственные страницы инсталлятора
, теперь знаю с чего хоть начинать надо... Но как это обычно бывает осталась масса вопросов.

Все было понятно до выставления координат у элементов, дальше пошли сплошные термины, расчитанные, имхо, на продвинутых нсисников. Страница в инсталяторе появилась, но как сделать, чтобы всё это заработало? Не хватает живого примера на конкретной программе, как вы делали это в предыдущих статьях.

Что непонятно:

- почему в статье доп. страница названа Page custom fnCustomInit fnCustomDestroy, а в том же скрипте к AIMP2 вы использовали более традиционное Page custom nsDialogsPage nsDialogsPageLeave.

- как добавить надписи в шапку, сейчас у меня отображается надпись предыдущей страницы, а это "Выбор папки установки".

- зачем, вообще, в инсталяторе нужен MessageBox MB_OK $R1 (в статье это такое маленькое диалоговое окно).

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

Мой кусок неправильного скрипта, кто сможет выправите, пожалуйста. А, если будут комментарии (пригодиться на будущее) - благодарность будет безмерной...

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


Код:

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

  !include "MUI.nsh" #выбранный интерфейс
  !include "nsDialogs.nsh" #плагин для дополнительных элементов
...........
...........
# Окна инсталятора
  !insertmacro MUI_PAGE_WELCOME #приветствие
  !insertmacro MUI_PAGE_DIRECTORY #выбор директории
  Page custom nsDialogsPage nsDialogsPageLeave #дополнительное окно с выбором ярлыков
  !insertmacro MUI_PAGE_INSTFILES #прогресс-бар и копирование файлов
  !insertmacro MUI_PAGE_FINISH #готово
# Опции дополнительного окна. НЕЗАКОНЧЕНО! и скорее всего неправильно!
Var Dialog 
Var Label
Var CheckBox1
Var CheckBox2
Function nsDialogsPage
  nsDialogs::Create 1018 
  Pop $Dialog 
  ${NSD_CreateLabel} 0 0 100% 24u "Выберете желаемые ярлыки программы $(^Name) для установки. Нажмите кнопку «Далее» для продолжения."
  Pop $Label
  ${NSD_CreateCheckBox} 0 45u 100% 10u "  Ярлык на Рабочий стол"
  Pop $CheckBox1 
  ${NSD_CreateCheckBox} 0 65u 100% 10u "  Ярлык на Панель быстрого запуска" 
  Pop $CheckBox2
  nsDialogs::Show 
FunctionEnd 
Function nsDialogsPageLeave 
  ${NSD_GetState} $CheckBox1 $R0
  CreateShortCut "$DESKTOP\${PR_NAME}.lnk" "$INSTDIR\${PR_EXE}" #впихнул сюда, т.к. не знаю куда, ярлык устанавливается в независимости от статуса чекбоксов
  ${NSD_GetState} $CheckBox2 $R0
  CreateShortCut "$QUICKLAUNCH\${PR_NAME}.lnk" "$INSTDIR\${PR_EXE}" #впихнул сюда, т.к. не знаю куда, ярлык устанавливается в независимости от статуса чекбоксов
FunctionEnd


K.A.V. спасибо за shortcuts.ini, но хотелось бы разобраться с nsDialogs.
Аватара пользователя
NoName01.cpp

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

Сообщение NoName01.cpp »

Krinkels,

В
этой статье
внизу расписано с примерами
Аватара пользователя
dracosha

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

Сообщение dracosha »

Создал я свою страничку с 3-мя RadioButton, но на ней кнопки: "" "Отмена" действуют одинаково, т.е. выполняют действие отмеченное в RadioButton. Можно ли как то это исправить?
Ответить

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