PDA

Показать полную графическую версию : [архив].: NSIS - все вопросы :.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [91] 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

vahe-91
22-10-2011, 18:45
возможно сделать так, чтобы установшик воспроизводил песню как в 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 лучше меня разъяснит. :)

vahe-91
22-10-2011, 22:01
kotkovets, спасибо :)

wolkow70, спасибо :gitara: :up2:

sawe
22-10-2011, 22:26
Дак себе то я сделал
Прикрепил скрипт от своей сборки 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

--

vahe-91
22-10-2011, 22:40
sawe, большое спасибо, попробую

wolkow70
23-10-2011, 10:08
Вы не правильно поняли, я советовал вам подправить File Association.nsh и вам и другим стало бы легче! »
Он по другому вообще функционирует. Хотя может попробую подумать...
Можете еще посмотреть оригинальный скрипт VLC Player. Там тот же макрос , что и в хедере задействован, только через функцию, что на мой взгляд более гибко, чем хедер переделывать.

sawe
23-10-2011, 16:49
Он по другому вообще функционирует. Хотя может попробую подумать... »
Лёд потихоньку тронулся :clapping:

kotkovets
23-10-2011, 16:52
Лёд потихоньку тронулся »
тока неизвестно в какую сторону :lol:

wolkow70
23-10-2011, 19:26
Я же только подумать обещал, а не сделать.
Реально попробовал с этим хедером работать. Намного более ограниченная вещь, чем переделанный макрос от сборки Aimp.

sawe
25-10-2011, 02:27
Часто сталкивался с задачей, когда много 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

--

Kumarov
25-10-2011, 02:56
Здравствуйте, возможно ли разбить установочный файл на части?
Например это полезно при очень больших размерах установочного пакета, тогда, если разбить пакет на небольшой исполняемый файл и файлы данных (в формате BIN или PAC), инициализация установки будет происходить быстрее.

kotkovets
25-10-2011, 08:42
Вопрос такой, а стоит овчинка выделки? »
Не стоит, многие библиотеки входят состав Visual Studio, распрастраняются в виде продуктов
VC++ 2005 - 2010 и .NET платформ.(фрамеворки)
Cоответственно простая проверочка на установку этих продуктов достаточно.
Здравствуйте, возможно ли разбить установочный файл на части? »
Очень жаль, НЕТ! Есть решения разбить на части - корявые и не стоит того внимания!
Лучше создать многотомный архив(к примеру каждый том по 100 метров), а установочным файлом распаковывать архивы.

Kumarov
25-10-2011, 10:45
Да, действительно очень жаль, а у вас есть рабочие примеры, предложенной вами схемы?

sawe
26-10-2011, 13:14
На x64 это точно сработает?

ExecWait '$SYSDIR\RegSvr32.exe /s "$SYSDIR\ContextMenu.dll"'

..

kotkovets
26-10-2011, 14:47
На x64 это точно сработает? »
работает

dix75
26-10-2011, 17:03
Добрый день!
У меня не работает KillProcDLL::KillProc "iexplore.exe"

Браузер не закрывается

sawe
26-10-2011, 17:10
У меня не работает KillProcDLL::KillProc "iexplore.exe" »
Download Master (http://forum.oszone.net/thread-95658-14.html)

..

wolkow70
28-10-2011, 03:29
Вопрос такой, а стоит овчинка выделки? »
А с зашаренными Dll как ваш макрос справляется? Есть же специальный макрос их удаления через обнуление количества обращений.

sawe
28-10-2011, 16:40
А с зашаренными Dll как ваш макрос справляется? »
Я только высказал предположение...
..




© OSzone.net 2001-2012