Показать полную графическую версию : [архив].: NSIS - все вопросы :.
возможно сделать так, чтобы установшик воспроизводил песню как в Inno Setup ? :unsure:
wolkow70
22-10-2011, 19:28
возможно сделать так, чтобы установшик воспроизводил песню как в Inno Setup ? »
Да мы Вам сами споем.
kotkovets
22-10-2011, 19:28
возможно сделать так, чтобы установшик воспроизводил песню как в Inno Setup ? »
Посмотри EBanner plug-in (http://nsis.sourceforge.net/EBanner_plug-in)
А также с помощью bass.dll (отдельно нужно искать(version 2.0.0.23), где то есть даже пример в сети с кнопками, не помню)
http://forums.winamp.com/showthread.php?t=195814
еще :
http://nsis.sourceforge.net/Play_Sound
Вообщем то давно этим занимался, возможно sawe лучше меня разъяснит. :)
kotkovets, спасибо :)
wolkow70, спасибо :gitara: :up2:
Дак себе то я сделал
Прикрепил скрипт от своей сборки PotPlayer. Посмотрите, как там сделано . У меня все прекрасно работает. »
Вы не правильно поняли, я советовал вам подправить File Association.nsh и вам и другим стало бы легче!
возможно сделать так, чтобы установшик воспроизводил песню как в Inno Setup »
Могу только добавить, что лучше всего он кушает MP3 файлы с любым битрейном и повтором, а mid файлы долго запихивает, по этому привёл пример с банером. Если вместо SW_HIDE использовать SW_SHOW увидите плеер.
;Определения пользователя!
!define SND_NAME "music.mid" # версия ${SND_NAME}
;Определяем свою переменную!
Var HMCI
ReserveFile "${NSISDIR}\Plugins\system.dll"
ReserveFile "${SND_NAME}"
Function onGuiInit
InitPluginsDir # обязательно инициировать каталог плагина!
SetOutPath $PLUGINSDIR # обязательно определить каталог плагина!
File "Sounds\${SND_NAME}" # от куда брать файл!
;Вставляем простой банер на тот случай если вы используете midi файлы, что бы заполнить паузу
Banner::show /set 76 "Пожалуйста подождите." "Идет подготовка к установке..."
System::Call 'msvfw32.dll::MCIWndCreate(i 0, i 0,i 0x0070, t "$PLUGINSDIR\${SND_NAME}") i .r0'
StrCpy $HMCI $0 # сохраняет MCI описание окна на WM_CLOSE в секции!
SendMessage $HMCI 0x0490 0 0 $0 # проверка поддерживаемого формата!
IntCmp $0 0 nosup
ShowWindow $HMCI SW_HIDE # если вы хотите, чтобы mci окно было скрыто!
SendMessage $HMCI 0x0465 0 "STR:play" # Используй "STR:play" или "STR:play repeat", но "repeat" проблемна с файлами midi!
Banner::destroy # придушить банер
nosup:
FunctionEnd
Section main ; секция установки!
SectionEnd
Function .onGUIEnd
;закрывает плеер!
SendMessage $hmci ${WM_CLOSE} 0 0
FunctionEnd
--
sawe, большое спасибо, попробую
wolkow70
23-10-2011, 10:08
Вы не правильно поняли, я советовал вам подправить File Association.nsh и вам и другим стало бы легче! »
Он по другому вообще функционирует. Хотя может попробую подумать...
Можете еще посмотреть оригинальный скрипт VLC Player. Там тот же макрос , что и в хедере задействован, только через функцию, что на мой взгляд более гибко, чем хедер переделывать.
Он по другому вообще функционирует. Хотя может попробую подумать... »
Лёд потихоньку тронулся :clapping:
kotkovets
23-10-2011, 16:52
Лёд потихоньку тронулся »
тока неизвестно в какую сторону :lol:
wolkow70
23-10-2011, 19:26
Я же только подумать обещал, а не сделать.
Реально попробовал с этим хедером работать. Намного более ограниченная вещь, чем переделанный макрос от сборки Aimp.
Часто сталкивался с задачей, когда много DLL-ок, нужно положить в системную папку.
А если такие DLL-ки уже существует и даже кем-то используются, и таких если возникает много.
Вот накалякал простой макрос для подобного случая. Вопрос такой, а стоит овчинка выделки?
!define RegApplicate "Software\Thinga\WinMega" # куст приложения!
!define MyPATH "D:\Test\SysDll" # место паковки программы ${MyPATH}
;---------
!macro CheckeInstall SysDll
IfFileExists "$SYSDIR\${SysDll}.dll" 0 +3
WriteRegStr HKLM "${RegApplicate}\SysDLL" "${SysDll}" 0 # значение в новом разделе!
Goto ${SysDll}
SetOutPath $SYSDIR
SetDateSave off
SetOverwrite ifnewer
File "${MyPATH}\${SysDll}.dll"
WriteRegStr HKLM "${RegApplicate}\SysDLL" "${SysDll}" 1 # значение в новом разделе!
WriteRegStr HKLM "${RegApplicate}\SysDLL" "SetFirst" 1 # значение в новом разделе!
${SysDll}:
!macroend
!macro unCheckeInstall SysDll
ReadRegStr $0 HKLM "${RegApplicate}\SysDLL" ${SysDll}
StrCmp $0 1 0 +2
Delete "$SYSDIR\${SysDll}.dll"
!macroend
Section # секция установки файлов!
ReadRegStr $0 HKLM "${RegApplicate}\SysDLL" "SetFirst"
Iferrors nonexistent exist # перепрыгнуть!
nonexistent:
!insertmacro CheckeInstall "msvca71" # обозвать только имя DLL
!insertmacro CheckeInstall "msvcb71" # обозвать только имя DLL
!insertmacro CheckeInstall "msvcc71" # обозвать только имя DLL
!insertmacro CheckeInstall "msvcd71" # обозвать только имя DLL
exist:
;---------
SectionEnd
;---------
Section Uninstall # секция удаления!
!insertmacro unCheckeInstall "msvca71"
!insertmacro unCheckeInstall "msvcb71"
!insertmacro unCheckeInstall "msvcc71"
!insertmacro unCheckeInstall "msvcd71"
DeleteRegKey HKLM "${RegApplicate}"
DeleteRegKey /ifempty HKLM "Software\Thinga"
SectionEnd
--
Здравствуйте, возможно ли разбить установочный файл на части?
Например это полезно при очень больших размерах установочного пакета, тогда, если разбить пакет на небольшой исполняемый файл и файлы данных (в формате BIN или PAC), инициализация установки будет происходить быстрее.
kotkovets
25-10-2011, 08:42
Вопрос такой, а стоит овчинка выделки? »
Не стоит, многие библиотеки входят состав Visual Studio, распрастраняются в виде продуктов
VC++ 2005 - 2010 и .NET платформ.(фрамеворки)
Cоответственно простая проверочка на установку этих продуктов достаточно.
Здравствуйте, возможно ли разбить установочный файл на части? »
Очень жаль, НЕТ! Есть решения разбить на части - корявые и не стоит того внимания!
Лучше создать многотомный архив(к примеру каждый том по 100 метров), а установочным файлом распаковывать архивы.
Да, действительно очень жаль, а у вас есть рабочие примеры, предложенной вами схемы?
На x64 это точно сработает?
ExecWait '$SYSDIR\RegSvr32.exe /s "$SYSDIR\ContextMenu.dll"'
..
kotkovets
26-10-2011, 14:47
На x64 это точно сработает? »
работает
Добрый день!
У меня не работает KillProcDLL::KillProc "iexplore.exe"
Браузер не закрывается
У меня не работает KillProcDLL::KillProc "iexplore.exe" »
Download Master (http://forum.oszone.net/thread-95658-14.html)
..
wolkow70
28-10-2011, 03:29
Вопрос такой, а стоит овчинка выделки? »
А с зашаренными Dll как ваш макрос справляется? Есть же специальный макрос их удаления через обнуление количества обращений.
А с зашаренными Dll как ваш макрос справляется? »
Я только высказал предположение...
..
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC