Показать полную графическую версию : [архив].: NSIS - все вопросы :.
У каждого своё понимание "интересного" :)
Много возможностей добавляют плагины (http://nsis.sourceforge.net/Category:Plugins) для NSIS, например...
Мне проще отвечать на вопросы, чем начинать перечисление :)
Так что, с вас вопрос - с меня ответ, возможно это или нет ;) (здесь ещё необходимо учитывать, что я всего про NSIS не знаю :) )
Добрый вечер. Совсем недавно наткнулся на Nsis выбирая из программ подобного рода, т.к. стояла задача сделать одним файлом инсталлятор. Есть база размер около 4Gb, много файлов, папок, подпапок и т.д.(так же присутствуют програмы без которых она работать не будет или будет, но некорректно). Ограничение в Nsis не более 2 Gb. Как и что будет ставиться и куда распаковываться я уже понял, т.е. осталось решить совсем чуть-чуть.
а. Как сделать что-бы обойти размер в 2 Gb. если нельзя, то как реализовать по другому
b. Защитить от распаковки и просмотра , вроде как это делает DcryptDll Plugin (на данный момент пытаюсь разобраться)
Мелочи:
с. Как изменить цвет текста в BrandingText /TRIMLEFT "Здесь текст"
d. Как изменить цвет галочек(он всегда зелёный) в SectionGroup
f. Как сделать uninstall с таким же скином как и установщик?
Буду благодарен всем ответившим.
а. Как сделать что-бы обойти размер в 2 Gb »
В голову приходит только 1 мысль, использовать архивы, например 7-ZIP и ZIP
Для распаковки можно использовать плагины. Для 7-ZIP архивов (http://nsis.sourceforge.net/Nsis7z_plug-in), для ZIP архивов (http://nsis.sourceforge.net/ZipDLL_plug-in)
b. Защитить от распаковки и просмотра , вроде как это делает DcryptDll Plugin (на данный момент пытаюсь разобраться) »
Таким вопросом не задавался и с DcryptDll не знакомился, поэтому сказать по данному вопросу ничего не могу :)
с. Как изменить цвет текста в BrandingText /TRIMLEFT "Здесь текст" »
Для выполнения данной операции, сначала необходимо подправить файл диалога, обычно это modern.exe (\Program Files\NSIS\Contrib\UIs), необходимо убрать флаг WS_DISABLED с элемента 1028 (сделать это можно с помощьюю программы ResHacker, ресурс 105)
Затем, перед строкой
!insertmacro MUI_PAGE_WELCOME
добавить
!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit
а затем, добавить следующий кусок кода в удобное место в скрипте
Function myGuiInit
GetDlgItem $0 $HWNDPARENT 1028
SetCtlColors $0 0xFF0000 transparent
FunctionEnd
в указанном коде указать цвет по HEX значению (заменить FF0000, указанный в коде цвет - красный)
d. Как изменить цвет галочек(он всегда зелёный) в SectionGroup »
Добавить в код
!define MUI_COMPONENTSPAGE_CHECKBITMAP "<путь к файлу с галочками>"
а готовые (и есть парочка на выбор) файлы галочек можно взять из каталога "\Program Files\NSIS\Contrib\Graphics\Checks"
f. Как сделать uninstall с таким же скином как и установщик? »
мм, простите, забыл про деинсталлятор, необходимо добавить следующие функции
Function un.onInit
SetOutPath $TEMP
File /oname=TEST.skf "TEST.skf"
NSIS_SkinCrafter_Plugin::skin /NOUNLOAD "$TEMP\TEST.skf"
FunctionEnd
Function un.onGUIEnd
NSIS_SkinCrafter_Plugin::destroy
FunctionEnd
Всё получилось, огромное спасибо. Но почему-то деинсталлятор не хочет быть таким как инсталятор, пример который с плагином работает нормуль, а вот у меня не хочет.
Так что бы выбирал пользователь, т.е. буху одно, одному отделу другое и т.д. Соль в том что каждый раз(т.е. 1-2 раз в неделю) устанавливать им это пипец(КАЖДОМУ), а так как все постоянно сносят чего то, то места не хватает, то вирусы, то ещё чего-то. А так будет висеть на сервере общедоступен, клац выбрал, что нужно сиди кури пока ставиться.
работает нормуль, а вот у меня не хочет. »
:lamer: что-то я не понял...
Но почему-то деинсталлятор не хочет быть таким как инсталятор »
если это про поддержку скина, то возможно, что у вас ошибка в коде, у меня всё нормально, скин подгружается и в инстале и в деинстале
дальше что вы написали, мне не совсем понятно, суть вопроса...даёте четкий вопрос, получаете четкий ответ ;)
если это про поддержку скина, то возможно, что у вас ошибка в коде, »
ога, было Function .onInit , а правильно Function un.onInit
Так как пишу сам, бывает и ошибаюсь :gulp:
Так ну уже почти всё понятно, вот только осталось немного...как сразу распаковывать, на лету, т.е. из exe файла скомпелированного nsis'ом нужно , что бы сразу распаковывался в С:\Папка, а не переписывался туда архив.7z, распавовывался там , а потом удалялся. Делается это скорее всего каким то ключом, вот тока не могу понять каким.
да, не читал я документацию на плагин распаковки архивов 7-Zip, неудобный какой-то написали :(
Тогда взамен плагина используйте для распаковки консольную версию архиватора 7-zip, передадите в параметры программы какой архив и в какую папку извлечь ;)
или 7z sfx, как вариант. Модифицированный модуль вроде переменные окружения поддерживает даже. Его наличие позволило мне отказаться от коммерческого Winrar
eugeny-nn
17-01-2010, 15:36
Добрый день! Ребят, как создать установщик для Adobe Photoshop Elements 8.0 или Adobe Photoshop CS4?? интересует как можно интегрировать серийный ключ продукта.. Может у кого-то есть уже созданные скрипты на основе программ Adobe Photoshop Elements 8.0 или Adobe Photoshop CS4??
да, не читал я документацию на плагин распаковки архивов 7-Zip, неудобный какой-то написали »
File "ArchiveName.7z"
Nsis7z::Extract "ArchiveName.7z"
Delete "$OUTDIR/ArchiveName.7z"
Засунуть архив.7z в инсталятор(в *.exe), который в свою очередь распакует *.7z в указанное место оттуда извлечёт файлы из архива и *.7z удалит. Не толковый плагин какой-то.
или 7z sfx, как вариант. »
Спасибо прочёл, на будущее буду иметь ввиду.
Подскажите в чём может быть причина RMDir /r $INSTDIR не удаляет папку в которую ставится программа, т.е.
С:\Папка, так и остаётся на диске С:\ после деинсталяции.
Спасибо огромное! Только что всё закончил, правда сыровато, не красиво так как хотелось бы, но главное получилось, осталось за малым.
Habetdin
17-01-2010, 21:34
It4a, Подскажите в чём может быть причина »
Файлы в папке используются системой или какой-либо программой
eugeny-nn, Автоматическая установка Adobe Photoshop CS4 (http://forum.oszone.net/thread-122674.html)
Подскажите в чём может быть причина RMDir /r $INSTDIR не удаляет папку в которую ставится программа, т.е.
С:\Папка, так и остаётся на диске С:\ после деинсталяции.
Файлы в папке используются системой или какой-либо программой »
Там только uninstall.exe , ну да ладно пёс с этим, есть более насущая проблемма при
CreateDirectory "$SMPROGRAMS\Dir" создаёт в C:\Documents and Settings\Имя пользователя\ папку ├ыртэюх ьхэ■ в ней ╧ЁюуЁрьь√ и только там Dir, а там где нужно(т.е. C:\Documents and Settings\Имя пользователя\Главное меню\Программы - нет.) . Я так понимаю - это проблема с кодировкой, но появилась она после использования 7z плагина, если отключить секцию отвечающую за распаковку, тогда всё норм, но уже поздно, т.к. всё везде настроенно и переделывать я уже чего то просто не в состоянии. Есть у кого какие идеи.
но появилась она после использования 7z плагина »
Что за плагин? Это который здесь (http://nsis.sourceforge.net/Nsis7z_plug-in)?
Что за плагин? Это который здесь? »
Да именно он. Очень хочется довести до ума, но чего то я не понимаю.
Вопрос снят, т.к. создание, ярлыков, директорий в меню пуск, должно быть вынесено в отдельную секцию, стоящей перед секцией с распаковкой.
Да и ещё хочу обратить ваше внимание на то что 95% возникающих ошибок из-за невнимательности.
Плагин вдвойне неудачный...
Как выход из ситуации, прописывайте распаковку после создания директорий :)
Painkiller
21-01-2010, 03:56
K.A.V. , подскажите как заменить картинку в установщике сбоку и сверху ?
Сверху
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "C:\Program Files\NSIS\Contrib\Graphics\Header\orange-uninstall-nsis.bmp"
Слева
!define MUI_WELCOMEFINISHPAGE_BITMAP "C:\Program Files\NSIS\Contrib\Graphics\Wizard\orange-uninstall.bmp"
dracosha
21-01-2010, 10:31
Один компонент для установки
читать дальше » »
У меня тоже возник этот вопрос... В первом случае у меня стоит птичка на одном из компонентов без возможности ее снятия, а во втором случае хочу что бы можно было птичку снять или хотя бы что бы изначально птичка не стояла...
!include "MUI.nsh"
!include "Sections.nsh"
Name "One Section"
OutFile "one-section_test.exe"
RequestExecutionLevel user
!insertmacro MUI_PAGE_COMPONENTS
SectionGroup "Group 1"
Section "Option 1" g1o1
SectionEnd
Section /o "Option 2" g1o2
SectionEnd
Section /o "Option 3" g1o3
SectionEnd
SectionGroupEnd
SectionGroup "Group 2"
Section /o "Option 1" g2o1
SectionEnd
Section /o "Option 2" g2o2
SectionEnd
Section /o "Option 3" g2o3
SectionEnd
SectionGroupEnd
Function .onInit
StrCpy $1 ${g1o1}
StrCpy $2 ${g2o1}
FunctionEnd
Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${g1o1}
!insertmacro RadioButton ${g1o2}
!insertmacro RadioButton ${g1o3}
!insertmacro EndRadioButtons
!insertmacro StartRadioButtons $2
!insertmacro RadioButton ${g2o1}
!insertmacro RadioButton ${g2o2}
!insertmacro RadioButton ${g2o3}
!insertmacro EndRadioButtons
FunctionEnd
Если закоментировать StrCpy $2 ${g2o1} то происходит какой-то безпредел с 1-й группой компонентов... Я так понимаю что вот это: StrCpy $2 ${g2o1} заставляет ставить галку при первом действии мышкой в любой секции, даже если установлен параметр /o на всех компонентах.
Что делать? Ума не приложу.
Должно же быть что-то подобное этому StrCpy $2 ${g2o1} но только что бы не включало, а наоборот отключало
K.A.V., Помогите плиз
В первом случае у меня стоит птичка на одном из компонентов без возможности ее снятия »
Это вопрос? Если да, то для того, чтобы сделать секцию не активной для изменения, необходимо в секцию добавить команду
SectionIn RO
честно говоря, я не совсем понял что именно вы хотите...про первый случай я написал, а про второй не совсем понятно, ведь по умолчанию так и есть
птичку снять или хотя бы что бы изначально птичка не стояла »
dracosha
21-01-2010, 12:11
В первом случае меня все полностью устраивает.
А во втором случае мне нужно что бы по умолчанию ни на одном компоненте не стояла галка...
Да. На первый взгляд все вроде в порядке, но все остается в порядке пока не начинаешь выбирать компоненты мышкой... Даже если не трогать компоненты во второй группе, а выбирать компоненты только в первой, то автоматом во второй группе ставится галка.
А я хочу что бы вторая группа оставалась без изменений.
K.A.V., Вы сможете меня понять когда скомпилите этот скрипт который я выложил... Этот скрипт - простой пример и ничего не потребует при компиляции.
И вот еще одну не совсем понятную вещицу нашел.
Если мышкой нажать на квадратик группы (именно на квадратик группы а не копонента) то выбирается 2 компонента из трех, хотя должен выбираться только один.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC