Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.
Как вариант »
Если речь о звуке, то можно попробовать bass.dll. По моему, это самый лучший вариант для воспр. звука в NSIS
Как вариант можно заюзать внешнее консольное приложение для проигрывания аудио, например sounder.exe (30 Кб), сам не тестил, т.к. лень и хочется спать
В своё время для сборки контры я использовал mpg123.exe для проигрывания mp3 файла сразу после запуска установщика, но там вес файла был ~350 Кб »
Буду посмотреть, хотя консолей хотелось бы избегать...
Если речь о звуке, то можно попробовать bass.dll. По моему, это самый лучший вариант для воспр. звука в NSIS »
Косяков в работе с Юникодом нет? Цикличность и прочее по воспроизведению держит, мультиформатна для треков, или только один какой поддерживает?
Зы, .. Хм, а кто ее разработчик? что-то все ссылки ведут на трешевые свалки длл.. Для Нсис есть ее описание примеры в работе на сайте ничего не нашел..?
Приветствую, подскажите решение, в скрипте nsi всего одна секция, но она разрослась, используются все стандартные переменные начиная от $0 и до $R9, и накладываются друг на друга, стала появлятся ошибка, каким образом лучше всего можно оптимизировать эту структуру?
Приветствую, подскажите решение, в скрипте nsi всего одна секция, но она разрослась, используются все стандартные переменные начиная от $0 и до $R9, и накладываются друг на друга, стала появлятся ошибка, каким образом лучше всего можно оптимизировать эту структуру? »
Странный вопрос...
Секция сама разрослась? Нет возможности добавить в код дополнительных переменных? Нет возможности раскидать код по функциям? Ошибка? Какая? Каким образом? Какую структуру?
Вы с такими вопросами лучше к гадалке сходите, которая ещё и в NSIS при этом шарит, она сразу и вашу всю секцию увидит, и вашу "структуру" и посоветует, как лучше код оптимизировать
а как завершить процесс с помощью плагина System?
где можно найти ProcessFunc работающий с 3 версией NSIS'a?
а как завершить процесс с помощью »
Можно использовать KillProc plug-in (http://nsis.sourceforge.net/KillProc_plug-in)
где можно найти ProcessFunc работающий с 3 версией NSIS'a? »
У Вячеслава (он ведь автор), он не обновил хидер к выходу справочника, хотя я ему писал насчет этого, так что вопросы по этому поводу к нему :not-me:
Не хотелось бы использовать плагины для этой задачи, можно же наверно средствами WinApi...
можно же наверно средствами WinApi... »
System::Call "kernel32::OpenProcess(i0x0001, i0, i1160)i.r0"
System::Call "kernel32::TerminateProcess(ir0, i1)i.r1"
где 1160 - PID процесса
K.A.V., а по имени процесса можно?
K.A.V., а по имени процесса можно? »
Насколько я понимаю, нужно писать функцию перечисления процессов, как в вышеупомянутом ProcessFunc
Всем привет!
Если речь о звуке, то можно попробовать bass.dll. По моему, это самый лучший вариант для воспр. звука в NSIS »
А вы можете привести пример сценария с использованием этой библиотеки? Например, чтобы звучала фоновая музыка. У меня не получается создать рабочий код. Вот как делаю я (пример):
XPStyle on
Name "Test"
OutFile "TestBass.exe"
Caption "Test Bass"
BrandingText 'Test'
!include "MUI2.nsh"
InstallDir "$EXEDIR"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "English"
Section "OGG"
SectionEnd
Function .onInit
InitPluginsDir
File /oname=$PLUGINSDIR\BASS.dll BASS.dll
File /oname=$PLUGINSDIR\mymusic.ogg mymusic.ogg
StrCpy $R5 "$PLUGINSDIR\mymusic.ogg"
; Инициализация
System::Call '$PLUGINSDIR\BASS::BASS_Init(i -1,i 44100,i 0,i 0,i 0)'
; Создание файлового потока
System::Call '$PLUGINSDIR\BASS::BASS_StreamCreateFile(i 0,t R5,i 0,i 0,i 4)'
; Воспроизведение канала
System::Call '$PLUGINSDIR\BASS::BASS_ChannelPlay(i 0, i 0)'
FunctionEnd
Function .onGUIEnd
System::Call '$PLUGINSDIR\BASS::BASS_ChannelStop()'
System::Call '$PLUGINSDIR\BASS::BASS_StreamFree()'
System::Call '$PLUGINSDIR\BASS::BASS_Free()'
FunctionEnd
Но звук не воспроизводится. Если честно я не совсем понял, как правильно надо использовать вызовы из сторонних DLL в NSIS, что нужно писать и откуда брать данные, которые нужно указывать в скобках вызова функций.
Спасибо.
А вы можете привести пример сценария с использованием этой библиотеки? »
Уже было (Пост 872 стр 88 ) Bass.dll лучше скачать последнюю версию (та что во вложении глючная) с сайта разработчика http://www.un4seen.com/
Там же доки (полезные тем, кто разбирается в программировании)
На русском : http://www.tiflocomp.ru/games/design/sound_games/bass.php
Применимо к NSIS много полезного в известном хидере Bass.nsh by Diego Pedroso (под рукой сейчас нет, но в сети навалом)
PS вот пример : https://yadi.sk/d/gzFnjE_JZSNEw
как правильно надо использовать вызовы из сторонних DLL в NSIS »
Согласно докам к System плагину. Кое что есть в справочнике. Правда изложение доков оставляет желать лучшего и специфика использования весьма мутная... Так что вопросы лучше адресовать гуру, например Вячеславу kotkovets, (думаю не нахмурится за "перевод стрелок" :) )
Спасибо, буду пытаться разобраться. Но сравнив код, который наваял я, и который показан в примере MKN, у меня возникает множество вопросов. Ясный перец с наскоку здесь не разберешься, особенно если в программировании полный ноль. Справку к плагину System я смотрел, но через переводчик гугл. Только понял, что для передачи в функции целых значений надо использовать литеру "i", для строки - "t", а если это логическое значение, то тогда как? Потом очень неясный вопрос с параметром HWND. Откуда его брать? В общем пока тупик. Понимаете, не хотелось бы тупо копировать часть кода, т.к. нет маневра. Изменяешь условия примера и ничего не работает. Ладно, не буду вас отвлекать.
Возвращаясь к библиотеке bass.dll. Просидел всю ночь за мануалами и выявил следующие недостатки при использовании её в NSIS:
- при включении в сценарии параметра поддержки стилей XP (XPStyle on) > воспроизведение не работает;
- при включении в сценарии параметра компиляции юникодной версии (Unicode true) > воспроизведение не работает;
- при использовании в сценарии графической оболочки MUI или MUI2 (директива !include "MUI.nsh" (!include "MUI2.nsh")) > воспроизведение не работает.
При тестировании использовалась последняя версия bass.dll и NSIS v3.0b с официальных сайтов разработчика.
Вот немного переделанный рабочий сценарий, предложенный MKN (Пост 872 стр 88 ):
; Простой GUI - версия ANSI - при отключенной поддержки стилей ХР
; Unicode true ; если включить, то воспроизведение не работает
!include "LogicLib.nsh"
!define BASS_DLL "bass.dll"
!define BASS_LOC "$PLUGINSDIR\${BASS_DLL}"
!define MP3 "mymusic.ogg"
!define MP3_LOC "$PLUGINSDIR\mymusic.ogg"
OutFile "Bass_SimpleGUI.exe"
ShowInstDetails show
; XPStyle on ; если включить, то воспроизведение не работает
Page license
Page components
Page directory
Page instfiles
Section "Ogg"
SectionEnd
Function .onInit
InitPluginsDir
File "/oname=${MP3_LOC}" "${MP3}"
File "/oname=${BASS_LOC}" "${BASS_DLL}"
; Выполняем инициализацию аудио устройства
System::Call '${BASS_LOC}::BASS_Init(i -1,i 44100,i 0,i 0,i n) b.r0'
; Создаем файловый поток для воспроизведения
System::Call '${BASS_LOC}::BASS_StreamCreateFile(b 0,t "${MP3_LOC}",i 0,i 0,i 0) i.r1'
; Если файловый поток успешно создан (не равен 0), то
${If} $1 != "0"
StrCpy $R5 "Initialization OK."
; Устанавливаем для канала флаг зацикливания при воспроизведении
System::Call '${BASS_LOC}::BASS_ChannelFlags(i r1, i 4, i 4) i.R0'
; Запускаем воспроизведение канала
System::Call '${BASS_LOC}::BASS_ChannelPlay(i r1, b 0) i.R4'
; Получаем номер ошибки
System::Call '${BASS_LOC}::BASS_ErrorGetCode(i) i.R1'
${Else}
; Закрываем все существующие каналы воспроизведения и освобождаем системные ресурсы
System::Call '${BASS_LOC}::BASS_Free()'
StrCpy $R5 "Initialization failed."
${EndIf}
; Выводим сообщение о параметрах воспроизведения (для отладки)
MessageBox MB_ICONINFORMATION|MB_OK "HSTREAM handler = $1. $\r$\n\
$R5 $\r$\n\
BASS_ChannelFlags returned - $R0. $\r$\n\
BASS_ChannelPlay returned - $R4. $\r$\n\
BASS_ErrorGetCode - $R1."
FunctionEnd
Function .onGUIEnd
; Останавливаем воспроизведение канала
System::Call '${BASS_LOC}::BASS_ChannelStop(i r1)'
; Освобождаем системные ресурсы
System::Call '${BASS_LOC}::BASS_StreamFree(i r1)'
; Закрываем все существующие каналы воспроизведения и освобождаем системные ресурсы
System::Call '${BASS_LOC}::BASS_Free()'
FunctionEnd
При передаче в функцию строки с именем файла, который необходимо воспроизвести, согласно документации System, можно указывать тип строки: t - TCHAR text, ANSI string или w - WCHAR text, Unicode string. То есть, если я правильно понял, то при компиляции юникодной версии инсталлятора команду
System::Call '${BASS_LOC}::BASS_StreamCreateFile(b 0,t "${MP3_LOC}",i 0,i 0,i 0) i.r1'
надо изменить на
System::Call '${BASS_LOC}::BASS_StreamCreateFile(b 0,w "${MP3_LOC}",i 0,i 0,i 0) i.r1'
Но это не помогает - воспроизведение не работает.
Еще в функции BASS_StreamCreateFile есть флаг BASS_UNICODE, который указывает, что имя файла задано в кодировке Unicode. Но установка этого флага не дает положительного результата
!define BASS_UNICODE 0x80000000
System::Call '${BASS_LOC}::BASS_StreamCreateFile(b 0,w "${MP3_LOC}",i 0,i 0,i ${BASS_UNICODE}) i.r1'
- воспроизведение не работает.
Это проблемы библиотеки bass.dll или NSIS? Можно ли как-то решить все эти вопросы? Или может быть я что-то делаю неправильно?
- при включении в сценарии параметра поддержки стилей XP (XPStyle on) > воспроизведение не работает;
- при использовании в сценарии графической оболочки MUI или MUI2 (директива !include "MUI.nsh" (!include "MUI2.nsh")) > воспроизведение не работает. »
Откуда такие сведения ? У меня воспроизведение работает и при XPStyle on и при !include "MUI2.nsh". Какая тут вообще может быть связь ?
В каком месте играть музыке, выбираешь сам.
Про Unicode не знаю, нет в нём надобности. Но скорее всего будет работать, т.к. библиотека эта в каком только ПО не применяется...
Откуда такие сведения ? »
Сидел пробовал так и сяк - у меня не работает. А вот когда я взял старую версию библиотеки bass v2.3.0.3, то воспроизведение запускается при любых комбинациях параметров XPStyle, Unicode, MUI и MUI2 в тексте сценария. Почему не работает bass v2.4.10.0 - я не знаю. Перепробовал все версии библиотеки bass от 2.4.0.0 до текущей - нема дела. И только с bass v2.3.0.3 без проблем заработало. Возможно причина действительно только на моей системе.
Что мешает проверить работу библиотеки bass v2.4.10.0 в юникодной версии инсталлятора? То что Вам нет надобности использовать использовать юникодную версию не значит, что эта надобность не возникнет у другого пользователя, например, MaGoth (сообщение 1263 (http://forum.oszone.net/post-2386687-1263.html)) интересовался этим вопросом. ;)
Добавлено:
Все ребята, отбой. Проблема была в моей системе (спасибо MKN за наводку). Переустановил. Теперь все путем - все воспроизводится. Прошу прощения за причиненные неудобства.
Что мешает проверить работу библиотеки bass v2.4.10.0 в юникодной версии инсталлятора? »
А вам что мешает?
То что Вам нет надобности использовать использовать юникодную версию не значит, что эта надобность не возникнет у другого пользователя »
Если у кого-то есть надобность использовать юникодную версию, это не значит, что я должен заранее сам это протестировать за кого-то и сказать ему о результате
Кому надо - сам пусть для себя и проверяет, в чем вопрос то? Как будто здесь кто-то кому-то обязан...Руки есть, интернет есть, качайте что нужно и тестируйте сами
MaGoth (сообщение 1263) интересовался этим вопросом »
Не поверите, но в интернете все равны, у всех одинаковые возможности
Я, например, ни разу ничего не тестировал в уникодной версии NSIS даже будучи автором справочника, т.к.
нет в нём надобности »
Если взялись за изучение NSIS, то учитесь делать/тестировать сами то, что вам нужно, а мы подскажем, насколько есть знаний и опыта
Blok,
То что библиотека работает и в UNICODE - 100%
Но, в доке : "в структуре BASS_DEVICEINFO значение по умолчанию ANSI"
Т.е. надо это дело подружить с NSIS. Каким образом, надо думать...
То что библиотека работает и в UNICODE - 100% »
Да работает, уже удостоверился в этом. Всем спасибо. ;)
kotkovets
13-08-2014, 01:27
где можно найти ProcessFunc работающий с 3 версией NSIS'a? »
будет время обновлю
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC