[архив].: NSIS - все вопросы :.

Ответить
 • Просмотры: 35
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

возможно сделать так, чтобы установшик воспроизводил песню как в Inno Setup ? Изображение
Аватара пользователя
MKN

Re: [архив].: NSIS - все вопросы :.

Сообщение MKN »

Цитата vahe-91:



возможно сделать так, чтобы установшик воспроизводил песню как в Inno Setup ?
[архив].: NSIS - все вопросы :.




Да мы Вам сами споем.
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

Цитата vahe-91:



возможно сделать так, чтобы установшик воспроизводил песню как в Inno Setup ?
[архив].: NSIS - все вопросы :.




Посмотри
EBanner plug-in


А также с помощью bass.dll (отдельно нужно искать(version 2.0.0.23), где то есть даже пример в сети с кнопками, не помню)



еще :

[url=http://nsis.sourceforge.net/Play_Sound]http://nsis.sourceforge.net/Play_Sound


Вообщем то давно этим занимался, возможно sawe лучше меня разъяснит. Изображение
Аватара пользователя
sawe

Re: [архив].: NSIS - все вопросы :.

Сообщение sawe »

kotkovets, спасибо Изображение



wolkow70, спасибо Изображение Изображение
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

Цитата wolkow70:



Дак себе то я сделал

Прикрепил скрипт от своей сборки PotPlayer. Посмотрите, как там сделано . У меня все прекрасно работает.
[архив].: NSIS - все вопросы :.




Вы не правильно поняли, я советовал вам подправить File Association.nsh и вам и другим стало бы легче!




Цитата vahe-91:



возможно сделать так, чтобы установшик воспроизводил песню как в Inno Setup
[архив].: NSIS - все вопросы :.




Могу только добавить, что лучше всего он кушает 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





--
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

MKN, Пример к всему вышесказанному, будет полезно всем:


читать дальше »




Код:

Код: Выделить всё

!include "MUI2.nsh"
Page Custom pre post
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE Russian
OutFile "test.exe"
ShowInstDetails show
var dialog
var RadioButton1
var RadioButton2
var RadioButton3
var RadioButton4
var CheckBox1
var CheckBox2
var CheckBox3
var CheckBox4
var Check1
var Check2
var Check3
var Check4
var rButton1
var rButton2
var rButton3
var rButton4
var Button
var Button1
Function pre
   nsDialogs::Create 1018
   Pop $dialog
	${NSD_CreateRadioButton} 0 0 40% 6% "Группа_1, Радио_1"
		Pop $RadioButton1
	${NSD_SetState} $RadioButton1 1 ;Группа_1, радио_1 при показе странички, делаем отмеченным
	${NSD_CreateRadioButton} 0 12% 40% 6% "Группа_1, Радио_2"
		Pop $RadioButton2
		${NSD_AddStyle} $RadioButton1 ${WS_GROUP} ;определяем группу переключений 1
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	${NSD_CreateRadioButton} 50% 0 40% 6% "Группа_2, Радио_1"
		Pop $RadioButton3
	${NSD_SetState} $RadioButton3 1 ;Группа_2, радио_1 при показе странички, делаем отмеченным
	${NSD_CreateRadioButton} 50% 12% 40% 6% "Группа_2, Радио_2"
		Pop $RadioButton4
		${NSD_AddStyle} $RadioButton3 ${WS_GROUP} ;определяем группу переключений 2
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	${NSD_CreateButton} 40u 40u 140u 15u `Кнопка переключений радиобутонов`
	        Pop $Button
        ${NSD_OnClick} $Button ButtonClick
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ${NSD_CreateCheckBox} 0 65u 56u 12u "Чебокс_1"
               Pop $CheckBox1
        ${NSD_CreateCheckBox} 0 85u 56u 12u "Чебокс_2"
               Pop $CheckBox2
        ${NSD_CreateCheckBox} 150u 65u 56u 12u "Чебокс_3"
               Pop $CheckBox3
        ${NSD_CreateCheckBox} 150u 85u 56u 12u "Чебокс_4"
               Pop $CheckBox4
          ;все чебоксы отмечены
        ${NSD_SetState} $CheckBox1 1
        ${NSD_SetState} $CheckBox2 1
        ${NSD_SetState} $CheckBox3 1
        ${NSD_SetState} $CheckBox4 1
	${NSD_CreateButton} 40u 105u 140u 15u `Кнопка переключений чекбоксов`
	      Pop $Button1
        ${NSD_OnClick} $Button1 ButtonClickCheckBox
    nsDialogs::Show
FunctionEnd
Function ButtonClick ;функция обработки события нажатия кнопки
  Pop $Button
  ${NSD_GetState} $RadioButton1 $rButton1
  ${NSD_GetState} $RadioButton2 $rButton2
  ${NSD_GetState} $RadioButton3 $rButton3
  ${NSD_GetState} $RadioButton4 $rButton4
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;Логика И-ИЛИ для группы 1
  ${If} $rButton1 == 1
  ${AndIf} $rButton2 == 0
      ${NSD_SetState} $RadioButton1 0
      ${NSD_SetState} $RadioButton2 1
  ${Else}
      ${NSD_SetState} $RadioButton1 1
      ${NSD_SetState} $RadioButton2 0
  ${EndIf}
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;Логика И-ИЛИ для группы 2
  ${If} $rButton3 == 1
  ${AndIf} $rButton4 == 0
      ${NSD_SetState} $RadioButton3 0
      ${NSD_SetState} $RadioButton4 1
  ${Else}
      ${NSD_SetState} $RadioButton3 1
      ${NSD_SetState} $RadioButton4 0
  ${EndIf}
FunctionEnd
Function ButtonClickCheckBox
   Pop $Button1
   ;снимаем статусы чекбоксов:
   ${NSD_GetState} $CheckBox1 $Check1
   ${NSD_GetState} $CheckBox2 $Check2
   ${NSD_GetState} $CheckBox3 $Check3
   ${NSD_GetState} $CheckBox4 $Check4
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;Логика ИЛИ-ИЛИ для чекбоксов
   ${If} $Check1 == 1
   ${Orif} $Check2 == 1
   ${Orif} $Check3 == 1
   ${Orif} $Check4 == 1
        ${NSD_SetState} $CheckBox1 0
        ${NSD_SetState} $CheckBox2 0
        ${NSD_SetState} $CheckBox3 0
        ${NSD_SetState} $CheckBox4 0
   ${Else}
        ${NSD_SetState} $CheckBox1 1
        ${NSD_SetState} $CheckBox2 1
        ${NSD_SetState} $CheckBox3 1
        ${NSD_SetState} $CheckBox4 1
   ${EndIf}
FunctionEnd
Function post
  ;снимаем статусы радибутонов:
  ${NSD_GetState} $RadioButton1 $rButton1
  ${NSD_GetState} $RadioButton2 $rButton2
  ${NSD_GetState} $RadioButton3 $rButton3
  ${NSD_GetState} $RadioButton4 $rButton4
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     ;снимаем статусы чекбоксов:
   ${NSD_GetState} $CheckBox1 $Check1
   ${NSD_GetState} $CheckBox2 $Check2
   ${NSD_GetState} $CheckBox3 $Check3
   ${NSD_GetState} $CheckBox4 $Check4
FunctionEnd
Section ""
   DetailPrint "состояние Чебокс_1 == $Check1"
   DetailPrint "состояние Чебокс_2 == $Check2"
   DetailPrint "состояние Чебокс_3 == $Check3"
   DetailPrint "состояние Чебокс_4 == $Check4"
   DetailPrint "========================================"
   DetailPrint "========================================"
   DetailPrint "состояние Группа_1, Радио_1 == $rButton1"
   DetailPrint "состояние Группа_1, Радио_2 == $rButton2"
   DetailPrint "состояние Группа_2, Радио_1 == $rButton3"
   DetailPrint "состояние Группа_2, Радио_2 == $rButton4"
SectionEnd
Аватара пользователя
MKN

Re: [архив].: NSIS - все вопросы :.

Сообщение MKN »

Цитата sawe:



Вы не правильно поняли, я советовал вам подправить File Association.nsh и вам и другим стало бы легче!
[архив].: NSIS - все вопросы :.




Он по другому вообще функционирует. Хотя может попробую подумать...

Можете еще посмотреть оригинальный скрипт VLC Player. Там тот же макрос , что и в хедере задействован, только через функцию, что на мой взгляд более гибко, чем хедер переделывать.
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

Цитата wolkow70:



Он по другому вообще функционирует. Хотя может попробую подумать...
[архив].: NSIS - все вопросы :.




Лёд потихоньку тронулся Изображение
Аватара пользователя
MKN

Re: [архив].: NSIS - все вопросы :.

Сообщение MKN »

Цитата sawe:



Лёд потихоньку тронулся
[архив].: NSIS - все вопросы :.




тока неизвестно в какую сторону Изображение
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

Я же только подумать обещал, а не сделать.

Реально попробовал с этим хедером работать. Намного более ограниченная вещь, чем переделанный макрос от сборки Aimp.
Ответить

Вернуться в «Автоматическая установка приложений»