Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.
Всё как всегда... : »
Примерно так да, но у меня тут свои грабли нарисовались с расшаренным Нсис, впрочем уже разрешил все, но все равно спасибки.. :)
Вышел релиз NSIS 2.50 (изменения (http://nsis.sourceforge.net/Docs/AppendixF.html#v2.50)).
Также NSIS v3.0 перешла в стадию beta 3 (изменения (http://nsis.sourceforge.net/Docs/AppendixF.html#v3.0b3)).
С наступающим Новым годом! :wink2:
В данном случае, сохраняю состояние в INI и при закрытии установщика восстанавливаю оттуда.
А можно ли это состояние без записи сохранить и восстановить? »
Ну так создайте себе свою переменную (http://kav-soft.ru/onlineHelp/NSIS/index.html?page=source%2Fvariables.html) и храните в ней значение, в чем проблема то?
Привет народ,
Подскажите где разжиться файликом определения венды последней версии для ЮТФ8 или 16 ЛЕ?
И напомните плиз, как запустить консоль без вывода ее окон, помню что где-то было это расписано, даже делал раньше но в справке ни нашел..
Спасибо.
И напомните плиз, как запустить консоль без вывода ее окон, помню что где-то было это расписано, даже делал раньше но в справке ни нашел.. »
nsExec: запуск консольных утилит (http://kav-soft.ru/onlineHelp/NSIS/index.html?page=source%2Fplugins%2FnsExec.html) либо ExecDos (http://nsis.sourceforge.net/ExecDos_plug-in) плагин
nsExec: запуск консольных утилит »
Ога, спс..
А с первым вопросом не подскажешь что и как ?!
Ибо у меня со старым файлом что-то компилится не желает под юником... :dont-know
Особо интересует Вин 10 и определение архитектуры винды.
MaGoth, я с юникодом вообще не работал (и пока не собираюсь), так что по вопросам данных сборок я ничего подсказать не могу
Dodakaedr
02-01-2016, 18:47
Как программно обновить информацию об ассоциациях?
Ребят, всегда мне помогаете с решением вопросов по инсталлеру.
Спасибо вам!
Ещё одна задача у меня возникла:
нужно сделать проверку на размер файла, т.е не хеш-сумма, а именно размер по байтам.
Соответственно если размер совпадает - продолжение установки, если нет - прерывание.
но при этом сами кнопки MessageBox берут язык системной локали. Как обойти это? »
А никак, точнее, "простым стандартным способом" - никак, тоже с этим столкнулся делая многоязычные инсталлеры - просто смирился
Как вариант либо писать свои messagebox (ну типа плагином показывать свои сообщения со своим текстом на кнопках), либо ковырять исходники NSIS...
Как программно обновить информацию об ассоциациях? »
Что имеется в виду? Если честно, не совсем понятно
Если вы про "обновить значки" в системе после манипуляций в реестре, чтобы файлы с новым зарегистрированным расширением приняли описание файла/нужный значок - то может быть вам нужна команда
${RefreshShellIcons}
подключить не забудьте
!include "FileFunc.nsh"
нужно сделать проверку на размер файла »
Ну так справочку то когда читать начнём?
GetSize (http://kav-soft.ru/onlineHelp/NSIS/index.html?page=source%2FNSIS_help%2FGetSize.html) + StrCmp (http://kav-soft.ru/onlineHelp/NSIS/index.html?page=source%2Fcode_example%2Fstrfunc%2FStrCmp.html) для сравнения с другим размером
${GetSize} "$windir" "/M=explorer.exe /S=0B /G=0" $0 $1 $2
MessageBox MB_OK|MB_ICONINFORMATION "$0"
ZaxBoys66
02-01-2016, 21:52
I have a question.
It is possible that NSIS can download files using the program Aria2c.exe?
Documentation
https://aria2.github.io/manual/ru/html/aria2c.html#cmdoption-d
Ну так справочку то когда читать начнём?
GetSize + StrCmp для сравнения с другим размером »
Благодарствую!
Я видел этот пример в справке, но не сразу разобрался как его для себя адаптировать.
Получился такой пример кода секции:
Section
${GetSize} "E:\Program Files\NSIS-3.0b2\Examples" "/M=2.nsi /S=466B /G=0" $0 $1 $2
Pop $0
StrCmp $0 "466" +3
MessageBox MB_OK "Ошибка"
Quit
SectionEnd
вроде работает).
Dodakaedr
02-01-2016, 23:40
K.A.V., Если вы про "обновить значки" в системе
Да про это. Спасибо!
MaGoth, я с юникодом вообще не работал (и пока не собираюсь), так что по вопросам данных сборок я ничего подсказать не могу »
Членово...
Впрочем у меня сейчас другая проблема нарисовалась, решил изменить ини файл и поймал болт на выходе..
Пример кода:
ReadINIStr $0 "$INSTDIR\System\Gothic.ini" "[ENGINE]" "zTexCacheOutTimeMSec"
MessageBox MB_OK $0
- выводится только пустой массагин-бокс;
или при использовании Энума:
EnumINI::Section "$INSTDIR\System\Gothic.ini" "[ENGINE]"
Pop $R2
; $R2 - количество параметров
StrCmp $R2 "error" done3
loop3:
IntCmp $R2 "0" done3 done3 0
Pop $R3
ReadINIStr $R4 "$INSTDIR\System\Gothic.ini" "[ENGINE]" "$R3"
MessageBox MB_OK|MB_ICONINFORMATION "Параметр: $R3 $\n Значение: $R4"
IntOp $R2 $R2 - 1
Goto loop3
done3:
- вообще ничего не выводится (здесь скорее всего либу надо под Юник пилить ?!).
Кусок кода из ини файла для тестов:
...
[ENGINE]
zDetailTexturesEnabled=1
; ... here you can define if the engine should support detail textures (default: 1)
zSubdivSurfacesEnabled=0
; ... with this setting you can activate subdiving surface for progressive meshes (untestet, default: 0)
zTexCacheOutTimeMSec=240000
zTexCacheSizeMaxBytes=32000000
zSndCacheOutTimeMSec=10000
zSndCacheSizeMaxBytes=20000000
; ... with these settings you can tune the memory usage of the texture and sound resources.
; if you have more ram than 512 MB, greater values will improve performance
...
Кто-нить сталкивался с подобным и как побороть ?! (Нсиська на юниках... 2.46.5)
Как можно принудительно задать язык интерфейса, не используя »
Зачем оно вам нужно?
Использую LoadLanguageFile и LangString для отображения сообщений на разных языках, но при этом сами кнопки MessageBox берут язык системной локали. Как обойти это? »
А глянуть можно что у вас за кнопки такие особенные?!
Ибо у меня все стандарное используется и все на мультилангах работает, пример:
...
wrong:
MessageBox MB_YESNO|MB_ICONQUESTION "$(TextInstallationListInv)" IDYES done
Pop $R0
Abort
...
StrCmp $VerifyMessageOnce "done" +3
MessageBox MB_OK|MB_ICONINFORMATION "$(TextVerifyInstDir)"
StrCpy $VerifyMessageOnce "done"
Abort
done:
...
LangString TextInstallationListInv ${LANG_ENGLISH} "Installation list is invalid.$\r$\nAre you sure you want to continue deinstallation?"
LangString TextInstallationListInv ${LANG_ROMANIAN} "Directorul în care doriți să instalați nu este valid.$\r$\nSunteți sigur că doriți să continuați dezinstalarea?"
LangString TextInstallationListInv ${LANG_GERMAN} "Die Installation Liste ist ungultig.$\r$\nFortsetzen zu deinstallieren?"
LangString TextInstallationListInv ${LANG_RUSSIAN} "Инсталляционный перечень недействителен.$\r$\nВсё равно продолжить деинсталляцию?"
LangString TextInstallationListInv ${LANG_ITALIAN} "Il percorso d'installazione sembra non essere corretto.$\r$\nSei sicuro di voler continuare la disinstallazione?"
LangString TextInstallationListInv ${LANG_CZECH} "Zvolený adresář se zdá být nesprávný.$\r$\nOpravdu chcete pokračovat v odinstalaci?"
LangString TextInstallationListInv ${LANG_POLISH} "Folder instalacji wydaje się być nieprawidłowy.$\r$\nCzy jesteś pewien że chcesz kontynuować odinstalowywanie?"
LangString TextInstallationListInv ${LANG_SPANISH} "El directorio de la instalación parece ser inválido.$\r$\n¿Está seguro que quiere continuar con la desinstalación?"
;--------------------------------
LangString TextVerifyInstDir ${LANG_ENGLISH} "Choose the directory containing installed 'Gothic II - Night of the Raven'."
LangString TextVerifyInstDir ${LANG_ROMANIAN} "Alegeți directorul unde se află instalat 'Gothic II - Noaptea Corbului'"
LangString TextVerifyInstDir ${LANG_GERMAN} "Wählen Sie das Verzeichnis aus, in welchem sich 'Gothic II - Die Nacht des Raben' befindet."
LangString TextVerifyInstDir ${LANG_RUSSIAN} "Выберите каталог, в который установлена игра 'Готика 2 - Ночь Ворона'."
LangString TextVerifyInstDir ${LANG_ITALIAN} "Scegli la cartella in cui è installato 'Gothic II - La Notte del Corvo'."
LangString TextVerifyInstDir ${LANG_CZECH} "Vyberte adresář, v němž je nainstalován 'Gothic II - Noc Havrana'."
LangString TextVerifyInstDir ${LANG_POLISH} "Wybierz folder zawierający zainstalowane 'Gothic II - Noc Kruka'."
LangString TextVerifyInstDir ${LANG_SPANISH} "Elija el directorio que tiene instalado 'Gothic II - La Noche del Cuervo'."
Впрочем у меня сейчас другая проблема нарисовалась, решил изменить ини файл и поймал болт на выходе.. »
В команде ReadINIStr при указании секции из которой мы читаем, символы квадратных скобок не нужны
У вас:
ReadINIStr $0 "$INSTDIR\System\Gothic.ini" "[ENGINE]" "zTexCacheOutTimeMSec"
А должно быть:
ReadINIStr $0 "$INSTDIR\System\Gothic.ini" "ENGINE" "zTexCacheOutTimeMSec"
У вас:
EnumINI::Section "$INSTDIR\System\Gothic.ini" "[ENGINE]"
А должно быть:
EnumINI::Section "$INSTDIR\System\Gothic.ini" "ENGINE"
Нарыл тут некий "MessageBox Plug-in", но следы его теряются »
Я ведь уже дал пример своего MB с помощью DlgHost Plugin.
В команде ReadINIStr при указании секции из которой мы читаем, символы квадратных скобок не нужны »
Интересно, и чего об этом нигде не отражено? :closed-to
Сейчас проверим в работе..
В таком случае кнопка отмены принимает значение системной локали, игнорируя язык установщика. »
Т.е. Кнопки "ОК", "Кансел" и прочее подобное ?! Я правильно понял, это у вас не переводится ?
Здесь скорее всего проблема не в этом, а в том что сам инсталлер подстраивается под язык винды(об этом забывать не стоит).
Например, если вы запустите свой инсталлер в немецкой/английской Винде, то должны увидеть, что эти мессаги сменятся на язык установленный по уполчанию в системе, их не требуется переводить. :yes:
За исключением случаев, в которых вы наклепали своих именований для кноп, но с этим я не парился, поэтому ничего не скажу... :dont-know
Ну об этом я и веду речь - очевидный недостаток NSIS. Получается, что часть компонентов заимствована согласно API ОСи, что ни есть правильно, недостаток кода. »
Да, такая привязка очень членовая вещь.. Но опять-же, не в ней может быть дело, приведу как пример случай из своей практики.
Адаптировал одну прогу на 8 лангов, все в ЮТФ 16-ЛЕ, по умолчанию знаю, что все тексты хоть врознь, хоть в кучу будут корректно отображаться на экране. Запускаю польску прогу и вижу кучу ?????
Оказалась проблема в том, что винда по своему некоторые функции мультиланга обрабатывает, не зависимо от того что я хотел бы видеть, но при этом, все тексты корректно отобразились у поляка на компе..
Короче, тут надо реально тестить и смотреть как оно отображается на компе у носителей языка, ну, ли брать в руки бубен и переписывать все это хозяйство под себя.
Но я лично с этим заморачиваться не стал, забил бол на это дело. Что и тебе советую... :yes:
Ну об этом я и веду речь - очевидный недостаток NSIS. Получается, что часть компонентов заимствована согласно API ОСи, что ни есть правильно, недостаток кода. »
лол
Загляните в исходники NSIS и разочаруйтесь в нём раз и навсегда, все (ну или почти все) команды, доступные в NSIS - это API функции (конечно же, если речь ведём про Windows), по вашему мнению получается, что весь NSIS это один сплошной недостаток, т.к. NSIS юзает для функционала команды из библиотек системы.
Я, например, не считаю это каким-то недостатком, что NSIS работает с API, т.к. в этом его уникальность и гибкость, к NSIS можно без труда наклепать плагин для расширения функционала и он будет работать, чего нет "из коробки" - разраб может допилить функционалом через плагин или даже с помощью system-плагина, если нужно не что-то сильно навороченное
Как ни странно, но на NSIS можно писать не только инсталлеры, но и приложения, правда это всё выглядит не очень удобно и функционально, если проект серьёзный
Что касается стандартных текстов на кнопках сообщений - юзается api функция MessageBox (https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms645505%28v=vs.85%29.aspx) и да, никакие строки в NSIS-коде не заставят эту функцию показывать текст в зависимости от языка инсталлера, т.к. текст зависит от языка системы пользователя
Почему не стали писать свой функционал кнопок? А зачем? Какой смысл усложнять код и извращаться с кастомными кнопками в NSIS? В таком виде пользователю хотя бы всегда будет понятно, на какую кнопку он жмёт - Да или Отмена, а не что-то начирканное кастомное писателем инсталлятора, который не дай бог написал свой первый инсталлер и залил его в сеть
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC