Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.
megane68
11-01-2015, 17:28
С прошедшими и с наступающим Старым НГ!
Подскажите пожалуйста, как прописать в скрипте для NSIS директорию вместе с её содержимым, чтобы не перечислять каждый файл в отдельности?
Сейчас секция в скрипте имеет вид:
Section "AllFonTV" SEC03
SetOutPath "$INSTDIR\luaScr\user\allfontv"
File "..\SimpleTV\AllFonTV\luaScr\user\allfontv\allfonTVDialog.htm"
File "..\SimpleTV\AllFonTV\luaScr\user\allfontv\allfonTVDialog.lua"
File "..\SimpleTV\AllFonTV\luaScr\user\allfontv\allfonTVRefreshPls.lua"
SetOutPath "$INSTDIR\luaScr\user\allfontv\core"
File "..\SimpleTV\AllFonTV\luaScr\user\allfontv\core\allfoncore.lua"
SetOutPath "$INSTDIR\luaScr\user\allfontv"
File "..\SimpleTV\AllFonTV\luaScr\user\allfontv\getaddress.lua"
File "..\SimpleTV\AllFonTV\luaScr\user\allfontv\initconfig.lua"
SetOutPath "$INSTDIR\luaScr\user\startup"
File "..\SimpleTV\AllFonTV\luaScr\user\startup\allfontv.lua"
SectionEnd
А надо, чтобы указывалась только директория, но NSIS бы понимал, что в ней лежит и упаковывал бы всё содержимое.
Begin2Fly
11-01-2015, 17:43
megane68, в шапке есть справочник по NSIS, который люди делали специально во избежание подобных вопросов.
Найдите там "Перевод справки NSIS -> File".
megane68
11-01-2015, 19:47
Цитата Begin2Fly:
"Перевод справки NSIS -> File". »
Спасибо за подсказку. Собственно больше ничего и не нужно. Нашёл ключ /r.
Привет народ.. :)
WimImage plug-in
Цитата:
This plugin is designed to remove the current 2GB limit in NSIS by creating and extracting images contained in .wim files that are separate to the installer.
http://nsis.sourceforge.net/WimImage_plug-in »
Это то что я думаю?!
И как оно, нормально работает?
Если кто ни будь проверял, отпишите плиз, у самого пока нет возможности проверить..
Спасибо.
И как оно, нормально работает? »
Я не проверял, т.к. смысла в плагинах , для работы с большими объёмами, не вижу... Делай нужный отдельный архив, тем же 7z (Supporting files with sizes up to 16000000000 GB) , и управляй им из скрипта как угодно. Чего ещё надо...
Я не проверял, т.к. смысла в плагинах , для работы с большими объёмами, не вижу... Делай нужный отдельный архив, тем же 7z (Supporting files with sizes up to 16000000000 GB) , и управляй им из скрипта как угодно.»
Не, это дохлый и убогий вариант с никому не нужными окнами распаковки и прочего...
Судя по переписке оно работает корректно:
http://forums.winamp.com/showthread.php?t=377498
Но, только на осях Вин7 и выше, членово.. :(
Есть вариант заюзать оригинальный плагин либы WimImage, но я хз как оно там и что настраивается. И будет ли полезно для Нсис..
http://sourceforge.net/projects/wimlib/
Чего ещё надо...
Хороший вопрос.. :clever-ma
А вообще, хорошего инсталлера надо, с:
- исправлением наконец-то сраного бага "иконки" в Нсис, которая убивается при компиляции чего угодно выше 300 мег;
- реализации его нормальной работы с разными версиями архиваторов, без убогих консольных окон и прочего мелькающего дерьма, по мере установки;
- реализации нормальной и вменяемой системы элементов управления в панели выбора компонентов, вместо кривого не-до чек-бокса;
- реализации нормальной работы с файлами выше 2 ГБ;
От этого уже давно нада (!) :yes:
- исправлением наконец-то сраного бага "иконки" в Нсис, которая убивается при компиляции чего угодно выше 300 мег; »
Это баг не в NSIS, это проблема ОС, попробуйте создать большой SFX архив в другой программе и увидите
- реализации его нормальной работы с разными версиями архиваторов, без убогих консольных окон и прочего мелькающего дерьма, по мере установки; »
Зависит от ваших знаний и умений работы с NSIS, в чем проблема использовать плагины типа ExecDos для скрытого запуска консольных приложений?
И в чем проблема использовать другие плагины, например NsUnzip для распаковки zip архивов и стороннюю unrar.dll для распаковки rar архивов?
- реализации нормальной и вменяемой системы элементов управления в панели выбора компонентов, вместо кривого не-до чек-бокса; »
Тоже всё реализуется, в этой теме мы уже такое вытворяли...взять хотя бы ту просьбу с 3 деинсталляторами :biggrin:
Тем более, собственные странички никуда не пропали, можно написать свой интерфейс со своими элементами/страничками и сделать его на свой вкус, заменив стандартные диалоги
- реализации нормальной работы с файлами выше 2 ГБ; »
Наверное, единственный минус NSIS, но мне кажется это сомнительным минусом. "Тяжелый" исполняемый файл много плюсов даёт?
Это баг не в NSIS, это проблема ОС, попробуйте создать большой SFX архив в другой программе и увидите »
Эм.. в таком случае почему у Инно или любого другого инсталлера этих проблем нет, даже близко, не зависимо от ОС ?!
Вся проблема в этом дерьме: SFX ?
Зависит от ваших знаний и умений работы с NSIS, в чем проблема использовать плагины типа ExecDos для скрытого запуска консольных приложений?
И в чем проблема использовать другие плагины, например NsUnzip для распаковки zip архивов и стороннюю unrar.dll для распаковки rar архивов? »
Причем тут умения и прочее?
Программный продукт изначально должен быть ориентирован на большее число архиваторов, причем, встроенных на уровне его кода или компонентов. Коли его позиционируют как супер-пупер Инсталлер. А это не так, судя по всему..
Вот именно, что проблема в этих самых сторонних телодвижениях и левых длл, которые отрабатывают в стороне от основного процесса проги, а не в ней самой непосредственно, с соответствующим Гуем для юзера и прочими интерфейсными радостями встроенными непосредственно в требуемые окна установщика..
Это называется "человеческий интерфейс" у проги, которого в Нсис никогда не валялось даже близко..
Тоже всё реализуется, в этой теме мы уже такое вытворяли...взять хотя бы ту просьбу с 3 деинсталляторами
Тем более, собственные странички никуда не пропали, можно написать свой интерфейс со своими элементами/страничками и сделать его на свой вкус, заменив стандартные диалоги »
Про 3 деинсталлятора что-то не припоминаю такого, линк плз, если не затруднит..?
Моя что-то сомневается в этом, или мы друг-друга не поняли ?! Хотелось бы видеть пример нормальной работы разношерстных компонентов, с каким угодно выбором, параметрами взаимоисключения и т.д. и т.п.. Если не трудно. :)
Наверное, единственный минус NSIS, но мне кажется это сомнительным минусом. "Тяжелый" исполняемый файл много плюсов даёт? »
В других инсталлерах ничего тяжелого в этом нет, а пользы на миллионы.. Вот нужда у меня запаковать в нормальный инсталлер свои файлы, а их размер от 4 ГБ и ушел за 10 ГБ и выше..
И что здесь делать можно с этим огрызком ?! :dont-know
Эм.. в таком случае почему у Инно или любого другого инсталлера этих проблем нет, даже близко, не зависимо от ОС ?!
Вся проблема в этом дерьме: SFX ? »
Не пробовал Inno, может из-за сжатия что-то, может из-за чего ещё, насчет иконки читал где-то, что это проблема в осях, а не в самих файлах, поэтому утверждать 100% не могу, да и не особо хочется это выяснять тестами
Программный продукт изначально должен быть ориентирован на большее число архиваторов, причем, встроенных на уровне его кода или компонентов »
Должен ориентирован на сторонние архиваторы? С чего это он именно должен? У продукта есть встроенный механизм сжатия, причем не один. Всё остальное - ваши хотелки.
Вот именно, что проблема в этих самых сторонних телодвижениях и левых длл »
Вы посмотрите на возможности, которые NSIS предлагает и сколько команд имеет "из коробки", плагины - это уже дополнительные плюшки, которые не всем нужны.
которые отрабатывают в стороне от основного процесса проги, а не в ней самой непосредственно »
А в чем принципиальная разница в том, что вы используете команду чтения из реестра внутренней командой "из коробки" или плагином с расширенными возможностями?
Про 3 деинсталлятора что-то не припоминаю такого, линк плз, если не затруднит..?
Моя что-то сомневается в этом, или мы друг-друга не поняли ?! Хотелось бы видеть пример нормальной работы разношерстных компонентов, с каким угодно выбором, параметрами взаимоисключения и т.д. и т.п.. Если не трудно. »
Лень искать и перечитывать всё, воспользуйтесь поиском по теме (по этой и по первой части, не помню, когда это было), в поиске забивайте onSelChange (по выбору компонентов) и Uninstall (по 3 деинсталляторам)
По поводу компонентов я уже говорил, можно создать свою страничку, а можно воспользоваться функцией onSelChange и своей головой, всё для работы с секциями есть в справочнике (описание команд), можете сделать какой угодно функционал, зависит только от вас
В других инсталлерах ничего тяжелого в этом нет, а пользы на миллионы.. »
А как мне видится ситуация: вы пакуете 20 гигов данных (ждёте, пока всё это запакуется), потом тестите свой инсталлер - в одном месте ошибка, делаете ещё раз - ещё ошибка, и ещё, и ещё, тратя своё время на постоянную перепаковку 20 гигов данных.
А как сделал я: я взял и "выкинул" все файлы в 7zip архив рядом с инсталлером, в основной EXE не добавляются никакие файлы, кроме необходимых интерфейсу (оформление, рюшечки всякие и т.д.), в скрипте стоит одна команда на распаковку данных из 20 гигового (заранее подготовленного) 7zip архива. У меня ошибка в коде - правка и через 5 секунд EXE собран, вы же тратите на сжатие 20 гигов прилично времени за место моих 5 секунд.
В любом случае, я не собираюсь никого ни в чем переубеждать, каждый останется при своём мнении, если вы видите преимущество Inno перед NSIS, так в чем проблема, собственно говоря? Тема обсуждения Inno на нашем форуме тоже имеется, изучайте и делайте более гибкие инсталляторы с помощью Inno, а не в NSIS :)
Не пробовал Inno, может из-за сжатия что-то, может из-за чего ещё, насчет иконки читал где-то, что это проблема в осях, а не в самих файлах, поэтому утверждать 100% не могу, да и не особо хочется это выяснять тестами »
Да тут утверждать особо нечего, многие игровые инсталлеры сделаны на нем, и с иконками там никаких проблем, не зависимо от их размеров..
Должен ориентирован на сторонние архиваторы? С чего это он именно должен? У продукта есть встроенный механизм сжатия, причем не один. Всё остальное - ваши хотелки. »
Хотя бы иметь вменяемый механизм для обработки внешних процессов в доп. прогресс баре в окне, с всем сопутствующим ему выводом текста..
Что до сжатий, то это уже давно не его фишка существует и много других архиваторов которые жмут, уже в разы лучше Нсис, что ему и не снилось..
Вы посмотрите на возможности, которые NSIS предлагает и сколько команд имеет "из коробки", плагины - это уже дополнительные плюшки, которые не всем нужны. »
Именно что дополнительные и не всем нужные, а толкового в этой горе мусора, по пальцам двух рук, если пересчитать..
Лень искать и перечитывать всё, воспользуйтесь поиском по теме (по этой и по первой части, не помню, когда это было), в поиске забивайте onSelChange (по выбору компонентов) и Uninstall (по 3 деинсталляторам)
По поводу компонентов я уже говорил, можно создать свою страничку, а можно воспользоваться функцией onSelChange и своей головой, всё для работы с секциями есть в справочнике (описание команд), можете сделать какой угодно функционал, зависит только от вас »
Посмотрим, но мне помниться что без изменения файлов самого Нсис, это все дохлый номер, но даже в этом случае гарантии что будет нормально работать, нет..
А как мне видится ситуация: вы пакуете 20 гигов данных (ждёте, пока всё это запакуется), потом тестите свой инсталлер - в одном месте ошибка, делаете ещё раз - ещё ошибка, и ещё, и ещё, тратя своё время на постоянную перепаковку 20 гигов данных.
Хм, а я так никогда не делаю, я всегда тестирую свой инсталлер на файлах "пустышках", быстро и просто.. ,)
А как сделал я: я взял и "выкинул" все файлы в 7zip архив рядом с инсталлером, в основной EXE не добавляются никакие файлы, кроме необходимых интерфейсу (оформление, рюшечки всякие и т.д.), в скрипте стоит одна команда на распаковку данных из 20 гигового (заранее подготовленного) 7zip архива. У меня ошибка в коде - правка и через 5 секунд EXE собран, вы же тратите на сжатие 20 гигов прилично времени за место моих 5 секунд. »
Это все лишний геморрой с тасканием вагона в прицепухе файлов, обязанных находится рядом с .ехе.. Мне что тупым юзерам также объяснять персонально каждому, что и где должно лежать и как что и зачем запускать вместо 1-го нормального вменяемого файла инсталлятора или образа на его основе ?!
В любом случае, я не собираюсь никого ни в чем переубеждать, каждый останется при своём мнении, если вы видите преимущество Inno перед NSIS, так в чем проблема, собственно говоря? Тема обсуждения Inno на нашем форуме тоже имеется, изучайте и делайте более гибкие инсталляторы с помощью Inno, а не в NSIS »
Ну плюсы у него точно есть, хотя-бы то же пресловутое ограничений по весу, ну и + вагон всяких либ и компонентов..
Что до проблемы, то она в том что мне совсем не хочется соваться в Паскаль. Ну, противен он мне по определению.. + и я хз, как и что там надо будет изменять и сделать, если переносить туда все мое хозяйство и прочие мои хотелки, свистелки и перделки.. :clever-ma
Хотя бы иметь вменяемый механизм для обработки внешних процессов в доп. прогресс баре в окне, с всем сопутствующим ему выводом текста.. »
А конкретно на примере? Чего не может NSIS в данном вопросе?
Добавить второй прогресс-бар на страничке установки - вроде бы не проблема, управлять его шкалой - вроде бы тоже не проблема. Есть WinAPI функции (не знаю, как в других системах инсталляторов), но с помощью WinAPI сделать можно много чего.
но мне помниться что без изменения файлов самого Нсис, это все дохлый номер »
без изменений файлов, я же делал кому-то, работало всё...вроде бы :)
А конкретно на примере? Чего не может NSIS в данном вопросе? »
Хм.. дайте подумать, а вот, помните я скидывал вам пдфку для игрового инсталлера, но там тупо по интерфейсу все было расписано?
Что до прогресса и либы, то да, перебор функций апи и гора этого кода в скрипте, при том чтобы все корректно работала доставляют море удовольствия. Не говоря о конкретных зависонах самого инсталла, по окончанию установки и перехода на финальную страничку..
Этот баг так и не смог поймать и искоренить. Возможно специфика Юникода хз..
+ я помнится так где-то месяца три, прикручивал либу конвертера/пакера и андпакера звука, так до конца все и не сделал. Плюнул на это дело, из-за больших возможностей Нсис, а самому писать что-то, ну если бы мог по этой части что толковое то тут бы точно не куковал, временами..
без изменений файлов, я же делал кому-то, работало всё...вроде бы »
Хотелось бы глянуть примерчик. :yes:
Dodakaedr
18-01-2015, 00:23
Подскажите как с помощью rename переместить папку(не пустую) с заменой файлов, папок при необходимости? Так не работает:
Rename $EXEDIR\App\IFX $LOCALAPPDATA
Rename $EXEDIR\App\Set\IFX $APPDATA
Хм.. дайте подумать, а вот, помните я скидывал вам пдфку для игрового инсталлера, но там тупо по интерфейсу все было расписано? »
Неа, не помню,всё не запомнить...
Что до прогресса и либы, то да, перебор функций апи и гора этого кода в скрипте, при том чтобы все корректно работала доставляют море удовольствия. Не говоря о конкретных зависонах самого инсталла, по окончанию установки и перехода на финальную страничку.. »
Перебор? Вам буквально 1 функция нужна по созданию элемента управления...
Гора кода?
Зависоны?
Ну,в моём примере ничего из вами перечисленного я не заметил :tongue:
; K.A.V. Progress test
var LabelText
var ProgressBar
OutFile "PAGE_INSTFILES_MyProgress_Test.exe"
InstallDir "$TEMP"
!include MUI2.nsh
!insertmacro MUI_PAGE_DIRECTORY
!define MUI_PAGE_CUSTOMFUNCTION_SHOW MyProgress
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"
ShowInstDetails nevershow
Function MyProgress
FindWindow $R0 "#32770" "" $HWNDPARENT
System::Call 'user32::CreateWindowEx(i0,t"msctls_progress32",t"",i${WS_CHILD}|${WS_VISIBLE},i5,i120,i520,i20,i$R0,i6666,i0,i0) i.R2'
StrCpy $ProgressBar $R2
StrCpy $LabelText "[ Подготовка к началу установки ]"
DetailPrint "Подготовка к началу установки..."
System::Call 'user32::CreateWindowEx(i0,t "Static",t "$LabelText",i${DEFAULT_STYLES},i5,i100,i525,i20,i$R0,i7777,i0,i0) i.R2'
GetDlgItem $LabelText $R0 7777
SendMessage $R0 ${WM_GETFONT} 0 0 $R9
SendMessage $R2 ${WM_SETFONT} $R9 0
FunctionEnd
Section
Sleep 3000
st:
intop $0 $0 + 1
SendMessage $ProgressBar ${PBM_SETPOS} "$0" "0"
SendMessage $LabelText ${WM_SETTEXT} 0 'STR:Прогресс $0%'
DetailPrint "Инфа о деталях установки...А тем временем, у нижнего прогресса $0% :)"
sleep 150
StrCmp $0 "100" 0 st
SendMessage $LabelText ${WM_SETTEXT} 0 'STR:[ Завершено ] $0%'
SectionEnd
Section
sleep 500
sleep 500
sleep 500
sleep 500
sleep 500
sleep 500
sleep 500
sleep 500
sleep 500
sleep 500
sleep 500
SectionEnd
Хотелось бы глянуть примерчик »
Я уже писал здесь и не раз, насчет ленивых людей, я вам дал подсказку, по которой вы сможете найти этот пример в этой теме, вы хотите, чтобы я за вас потратил время и перечитывал сообщения? Неее, мне вот, тоже лень :)
Но скажу так, тот пример был сделан конкретно под человека, т.е. там я писал функцию с фиксированным количеством секций для взаимодействия, так что тот пример не универсальное средство для борьбы с глюками взаимоисключающих секций.
Подскажите как с помощью rename переместить папку(не пустую) с заменой файлов, папок при необходимости? Так не работает: »
Перемещение папки возможно только в пределах одного диска, т.е. вы не сможете переместить папку, скажем, с диска C на диск D. Так же, данная функция может не отработать корректно, если файл уже существует в указанной конечной папке. Можете использовать флаг /REBOOTOK, данный флаг поможет переместить файлы после перезагрузки компьютера, если невозможно было переместить некоторые файлы (опять же, не знаю, как функция будет отрабатывать, хотите - проверьте)
Вообще, лучше бы выполнили копирование файлов и затем удаление первой директории...
А вообще, в команде в качестве конечного пути необходимо указывать новое имя папки помимо путя, куда вы собираетесь перемещать папку, например:
Rename "C:\Перемещаемая папка" "C:\Путь 1\Ещё путь\Новое имя перемещаемой папки"
Dodakaedr
20-01-2015, 20:19
Кто-то знаком с плагином ExecDos (http://nsis.sourceforge.net/ExecDos_plug-in#.22exec.22_function)? Как с помощью него перемещать папки с разных дисков?
Кто-то знаком с плагином ExecDos? Как с помощью него перемещать папки с разных дисков? »
С чего вы взяли, что этот плагин для этого предназначен? Вы хоть пробовали описание в переводчик ввести?
Plug-in works with console applications - creates hidden child process
что означает, данный плагин работает с консольными приложениями, создаёт дочерний процесс с скрытием окна консольного приложения
Dodakaedr
20-01-2015, 21:00
что означает, данный плагин работает с консольными приложениями, создаёт дочерний процесс с скрытием окна консольного приложения »
значить с помощью плагина можно как-то через cmd.exe сделать, а именно через команду move. Вот только как это сообразить?
значить с помощью плагина можно как-то через cmd.exe сделать, а именно через команду move. Вот только как это сообразить? »
Не ищите лёгких путей? Ну, раз говорите, что "можно", так попробуйте это сделать, примеры команд плагина есть в архиве, посмотрите примеры и попробуйте что-то сообразить с командой move
Dodakaedr
20-01-2015, 23:46
K.A.V., Как указать папку ProgramData?
CopyFiles "$EXEDIR\Data\IFX\*.*" "здесь путь к programdata\IFX"
K.A.V., Как указать папку ProgramData? »
А что за папка такая ProgramData? Вы же наверное в курсе, куда она ведёт и что в ней за файлы?
C:\Users\All Users = C:\ProgramData
Теперь мы знаем, что это за папка и какая переменная нам нужна (знают сразу те, кто прочел справочник в отличии от вас, видимо)
Затем мы берём и открываем наше чудо под названием Справочник по NSIS (http://forum.oszone.net/thread-168287.html), читаем страничку Переменные NSIS (Variables), прочтя, находим такую строку на страничке:
$APPDATA — папка с данными учётной записи пользователя (c:\Documents and Settings\Ваше имя\Application Data\ или c:\Documents and Settings\All Users\Application Data\). Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.
Соответственно, делаем вывод, что эта та переменная, которая нам нужна, но лишь с той поправкой, что перед её использованием нам необходимо использовать команду SetShellVarContext all, чтобы значение переменной указывало не в профиль пользователя, а в профиль всех пользователей.
SetShellVarContext all
CopyFiles "$EXEDIR\Data\IFX\*.*" "$APPDATA\IFX"
SetShellVarContext current
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC