PDA

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


Страниц : 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

profcom
22-01-2013, 10:21
Появился вопрос допустим при помощи функции CreateWindowEx мы создали кнопку, как мы можем отследить ее нажатие в реальном времени? Макросы nsDialogs не работают с такими кнопками. Может как вариант получать ее состояние через какое то время установленное таймером? Или возможны другие варианты?

MKN
22-01-2013, 13:38
при помощи функции CreateWindowEx мы создали кнопку, как мы можем отследить ее нажатие в реальном времени? »
Я знаю вариант только с помощью ButtonEvent плагина (ButtonEvent.dll) :
Заодно назовём это
Пример 3 Использование функции CreateWindowEx для создания кнопки. ( + создание MessageBox с помощью API )

!AddPluginDir ".\"
!include MUI2.nsh

Page custom fnc_Create
;!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

!define IDC_ABOUT 1300

OutFile "test3_CreateWindowEx.exe"
Var dlg

Function fnc_Create
nsDialogs::Create 1018
Pop $dlg

System::Call `*(i,i,i,i)i(1,34,200,100).R0`
System::Call `user32::MapDialogRect(i$HWNDPARENT,iR0)`
System::Call `*$R0(i.s,i.s,i.s,i.s)`
System::Free $R0
FindWindow $R0 "#32770" "" $HWNDPARENT
System::Call 'user32::CreateWindowEx(i0,t"Button",t"About",i${BS_PUSHBUTTON}|${WS_CHILD}|${WS_VISIBLE}|${WS_TABSTOP},i20,i10,i100,i30,i$HWNDPARENT,i${IDC_ABOU T},ir0,i0)i.R0'
GetFunctionAddress $0 FuncAbout
ButtonEvent::AddEventHandler /NoUnload ${IDC_ABOUT} $0

nsDialogs::Show
FunctionEnd

Function FuncAbout
System::Call 'user32::MessageBox(i$HWNDPARENT,t"Была нажата кнопка About",t"About",i0x40)'
FunctionEnd

Section
SectionEnd



BS_PUSHBUTTON - Создается обычная кнопка.

WS_TABSTOP - Этот стиль указывает орган управления, на который можно переключиться при помощи клавиши <Tab>.
Данный стиль может быть использован только дочерними окнами в диалоговых панелях .

MessageBox function :
http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx


Наверняка можно обойтись без плагина...

kysk
22-01-2013, 13:55
Ребят привет, помогите пожалуйста убрать с страницы установки Кнопочку "Детали.."
Не могу найти где она правится...

alert30
22-01-2013, 14:40
kysk, http://forum.oszone.net/post-1884707.html#post1884707

kysk
22-01-2013, 15:00
Ребят один момент есть, как сделать чтобы при запуске инсталятора играла музыка и заканчевалась вплоть до его закрытия.
Заранее извиняюсь если вопрос уже существует, не нашел...

alert30
22-01-2013, 15:10
kysk, может это:
вопрос - http://forum.oszone.net/post-1361791.html#post1361791
ответ - ниже http://forum.oszone.net/post-1361863.html#post1361863

kysk
22-01-2013, 15:27
alert30, а куда прописывать этот скрипт?

K.A.V.
22-01-2013, 15:28
Ребят один момент есть, как сделать чтобы при запуске инсталятора играла музыка и заканчевалась вплоть до его закрытия. »
Уважаемый, скачайте пожалуйста наш Справочник по NSIS (http://forum.oszone.net/thread-168287.html) на русском языке, там читайте следующую страничку:

Описание плагинов => NewAdvSplash: изображение перед запуском

Данный плагин может показывать как изображения перед запуском инсталлятора, так и позволяет проиграть музыкальную композицию, даже в формате MP3

alert30, а куда прописывать этот скрипт? »
Перевод справки NSIS => Стандартные функции

kysk
22-01-2013, 16:04
Нечего не выходит с добавлением трека... Можно лично от вас готовый код, может что-то не то делаю.

MKN
22-01-2013, 16:53
Для проигрывания аудио во время установки можно использовать такой известный код :

!define SND_NAME "sound.mp3"

OutFile "sound.exe"

!include "MUI2.nsh"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
!define MUI_ABORTWARNING
InstallDir "$TEMP"

Function .onInit
InitPluginsDir
SetOutPath $PLUGINSDIR
File "${SND_NAME}"
System::Call 'msvfw32.dll::MCIWndCreate(i 0, i 0,i 0x0070, t "$PLUGINSDIR\${SND_NAME}") i .r0'
SendMessage $0 0x0465 0 "STR:play repeat"
System::Call 'user32.dll::ShowWindow(i r0, i 0)'
FunctionEnd

Section
SectionEnd


sound.mp3 - ваш файл.

K.A.V.
22-01-2013, 16:54
Нечего не выходит с добавлением трека... Можно лично от вас готовый код, может что-то не то делаю. »
Можно лично от вас код, который Вы сами написали, и который не работает?

kysk
22-01-2013, 17:06
Я писал по этой теме: http://forum.oszone.net/thread-67386-44.html

K.A.V.
22-01-2013, 17:18
Я писал по этой теме: http://forum.oszone.net/thread-67386-44.html »
Что вы хотели сказать данной ссылкой?

Вы спросили:
как сделать чтобы при запуске инсталятора играла музыка »
На что я вам дал информацию, по которой можно реализовать нужный вам функционал

Вы мне отвечаете:
Нечего не выходит с добавлением трека »
Вы пробовали сами что-то написать? Так покажите, что наработали и мы укажем вам на ваши ошибки

А словосочетание
Можно лично от вас готовый код»
Меня убивает и здесь данные слова никто слышать не желает
Мы можем набросать готовый код, но только в том случае, если видим, что лично Вы что-то пытаетесь сами написать своими руками

kysk
22-01-2013, 17:22
!define SND_NAME "sound.mp3" - здесь же прописывается путь к аудио файлу? так: "D:\sound.wav" -- Ошибка MCI - пишет что данный файл не найден.. что делать?

Вышеуказанную запись, я понял, больше не повторится.
Мне просто срочно нужно это узнать, а на счет того что я делаю своими руками я отвечу так: я умею очень многое но не в плане конечно же инсталятора я его начал изучать только вчера, приспособиться трудновато к скриптам, поэтому чтобы не сидеть не париться как минимум два дня, мне легче спросить у знатоков, и уже отрубно знать что и куда писать.

MKN
22-01-2013, 17:34
здесь же прописывается путь к аудио файлу? так: "D:\sound.wav" »
Не так. Это только имя твоего файла. Например, bla-bla.mp3
Кстати , этот код проигрывает и MIDI файлы. Чтобы не маяться дурью и не утяжелять дистр MP3 файлом, лучше уж проигрывать MIDI.

Например: !define SND_NAME "hotel_california.mid"

kysk
22-01-2013, 17:39
Хм.. Куда тогда прописывается путь?

MKN
22-01-2013, 17:50
Куда тогда прописывается путь? »
Путь уже задан - $PLUGINSDIR. Не заморачивайся, просто скопируй код, укажи свой файл и кури справочник. :)

kysk
22-01-2013, 17:53
Ребят ну че никто не может обьяснить? Ну ткните пальцем, не врубаюсь я нифига у мну одни ошибки кидает пишет типо строка File "${SND_NAME}" содержит ошибку! Фиг его знает что делать, поткинь чистый код без всяких там включений инсталятора, финиша, старта страниц. Чисто код и куда его ставить.

MKN
22-01-2013, 17:57
kysk,
Мы можем набросать готовый код, но только в том случае, если видим, что лично Вы что-то пытаетесь сами написать своими руками »
Что означает - ты свой код наконец то покажешь или нет?

kysk
22-01-2013, 18:06
====Вот скрипт инсталла====

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "setup"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "web"
!define PRODUCT_WEB_SITE "http://www.mycompany.com"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"

; MUI 1.67 compatible ------
!include "MUI.nsh"

; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"

;Проигрывание музыки------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Начало
!define SND_NAME "sound.wav"
OutFile "sound.exe"

; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!insertmacro MUI_PAGE_LICENSE "C:\Documents and Settings\Admin\Рабочий стол\лиц\1.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES

; Language files
!insertmacro MUI_LANGUAGE "Russian"

; MUI end ------


Function .onInit -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Сам скрипт
InitPluginsDir
SetOutPath $PLUGINSDIR
File "${SND_NAME}"
System::Call 'msvfw32.dll::MCIWndCreate(i 0, i 0,i 0x0070, t "$PLUGINSDIR\${SND_NAME}") i .r0'
SendMessage $0 0x0465 0 "STR:play repeat"
System::Call 'user32.dll::ShowWindow(i r0, i 0)'
FunctionEnd

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "setup.exe"
InstallDir "$PROGRAMFILES\setup"
ShowInstDetails show
ShowUnInstDetails show

Section "MainSection" SEC01
SectionEnd

Section -AdditionalIcons
SetOutPath $INSTDIR
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateDirectory "$SMPROGRAMS\setup"
CreateShortCut "$SMPROGRAMS\setup\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\setup\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd

Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd


Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "Удаление программы $(^Name) было успешно завершено."
FunctionEnd

Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Вы уверены в том, что желаете удалить $(^Name) и все компоненты программы?" IDYES +2
Abort
FunctionEnd

Section Uninstall
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"

Delete "$SMPROGRAMS\setup\Uninstall.lnk"
Delete "$SMPROGRAMS\setup\Website.lnk"

RMDir "$SMPROGRAMS\setup"

DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
SetAutoClose true
SectionEnd




© OSzone.net 2001-2012