Показать полную графическую версию : [архив].: NSIS - все вопросы :.
kotkovets, подскажи пожалста, вот например при установки проги я хочу запустить патч запускаю его через команду ExecWait например, соответственно он запускается и пользователю остается нажать на кнопку generate например, возможно ли что бы сам инсталлятор нажимал эту кнопку (тоесть эмулировать нажатие на кнопку самим нсис)...встречал такой инстальник но не на нсис...
И еще по аналогии вопрос..перепаковал я аимп и хочу запихнуть туда DFX Audio Enhancer например возможно ли включить в репак оригинальный файл .exe DFX Audio Enhancer и в тихом режиме его установить что бы не появлялись окна исталлятора DFX Audio Enhancer.. спасибо!
Вот пытаюсь перепаковать DFX Audio Enhancer 11.0.14 не получается поставить драйвер в папке плага есть файлы
dfx11_0ntamd64.cat
dfx11_0ntx86.cat
ptdevcon32.exe
ptdevcon64.exe
dfx11_0.inf
dfx11_0x64.inf
dfx11_0.sys
dfx11_0x64.sys
Соответственно под х64 и х86, пробовал так
ExecWait "rundll32.exe SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\DFX\Universal\Drivers\dfx11_0.inf"
Не получается чето...
Vincent7
26-08-2012, 00:29
Возможно execwait в тихом режиме нужно выполнить
Возможно execwait в тихом режиме нужно выполнить »
Да не не то...
ExecWait "rundll32.exe SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\DFX\Universal\Drivers\dfx11_0.inf" »
Касательно этой команды, можно попробовать указать путь $SYSDIR\RUNDLL32.EXE
Касательно конкретно установки Dfx драйвера - эта команда вряд ли его установит...
В дистрибутив не даром входят DevCon компоненты (ptdevcon32.exe и ptdevcon64.exe) а также похоже, что и сам установщик DfxSetupDrv.exe. Как всё это действует, знают только разрабы...
Можно конечно взять за основу "классический" DevCon http://support.microsoft.com/kb/311272
Или DPInst - http://msdn.microsoft.com/en-us/library/ff544775.aspx. Только сработает ли... Попробуй.
Также похоже, что учитывается и архитектура процессоров ( amd64 и x86-64), что требует соответствующего выбора при установке драйверов. Это можно определять кодом :
Section
System::Alloc 32
Pop $0
System::Call "Kernel32::GetNativeSystemInfo(i) v (r0)"
System::Call "*$0(&i2 .r1)"
System::Free $0
StrCmp $1 9 0 +2
DetailPrint PROCESSOR_ARCHITECTURE_AMD64
StrCmp $1 6 0 +2
DetailPrint PROCESSOR_ARCHITECTURE_IA64
StrCmp $1 0 0 +2
DetailPrint PROCESSOR_ARCHITECTURE_INTEL
StrCmp $1 0xffff 0 +2
DetailPrint PROCESSOR_ARCHITECTURE_UNKNOWN
SectionEnd
Вообще установка из NSIS "не типовых" драйверов - дело скользское... А для классической установки драйверов, давно назрела пора в плагине. Тот что имеется (http://nsis.sourceforge.net/InstDrv_plug-in), уж очень дремучий и не универсальный... По сути не рабочий...
wolkow70
26-08-2012, 19:09
Я для Revo Uninstaller под разную архитектуру так делал:
${If} ${RunningX64}
${DisableX64FSRedirection}
ExecWait "rundll32.exe SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\revoflt.inf"
${EnableX64FSRedirection}
${Else}
ExecWait "rundll32.exe SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\revoflt.inf"
${EndIf}
${If} ${RunningX64}
${DisableX64FSRedirection}
ExecWait "rundll32.exe SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\revoflt.inf"
${EnableX64FSRedirection}
${Else}
ExecWait "rundll32.exe SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\revoflt.inf"
${EndIf} »
Да в рево так работает тоже так делал...
А как на счет эмуляции нажатия на кнопки самим нсис?
wolkow70
27-08-2012, 12:43
А как на счет эмуляции нажатия на кнопки самим нсис? »
Не доводилось заниматься... Пока сочетаю с AutoIt. Хотя язык во многом схожий.
А как на счет эмуляции нажатия на кнопки самим нсис? »
FindWindow $0 '#32770' 'Моя программа 1.0'
; Ищем окно инсталлятора
IsWindow $0 +2 0
MessageBox MB_OK|MB_ICONSTOP "Указанное окно не найдено" idOK error
GetDlgItem $1 $0 1
; Получаем дескриптор кнопки "Далее"
MessageBox MB_OK|MB_ICONINFORMATION "После нажатия на кнопку ОК будет нажата кнопка 'Далее'"
SendMessage $1 ${BM_CLICK} 0 0
; Нажимаем кнопку
error:
PS
Нужен инклуд библиотеки
!include "winmessages.nsh"
Creator000
27-08-2012, 21:02
че такое http://i40.fastpic.ru/big/2012/0827/47/2be7679807639d7ccf22c6a886b3bc47.png
в HM NIS Edit. просто объекты в ini файле переставил местами.
Однако разобрацо нада »
Ну...Давайте разберём вместе, раз вам мой пример мало чего дал :)
Для того, чтобы нажать на кнопку - нужно сначала узнать её дескриптор
Если вы хотите нажать на кнопку внешнего инсталлятора, то сначала вам необходимо найти дескриптор окна инсталлятора, чтобы потом получить дескриптор кнопки
FindWindow $0 '#32770' 'Моя программа 1.0'
Можете добавить проверку наличия окна командой IsWindow
IsWindow $0 +2 0
MessageBox MB_OK|MB_ICONSTOP "Указанное окно не найдено" idOK error
Если вам необходимо нажать на кнопку в своём инсталляторе, то можно не использовать вышеупомянутые 2 команды (поиск и проверка наличия окна), а сразу перейти к получения дискриптора кнопки
GetDlgItem $1 $HWNDPARENT 1
При исполнении команды GetDlgItem, мы помещаем в переменную $1 дескриптор элемента у которого идентификатор 1 (смотрите ID элементов непосредственно через программы просмотров ресурсов, такие как ResHacker и Restorator)
Переменная $HWNDPARENT - это дескриптор окна вашего пакета инсталлятора, если вы определяете дескриптор окна внешнего инсталлятора с использованием команды FindWindow, то замените $HWNDPARENT переменной $0
В нашем случае идентификатор под номером 1 в команде GetDlgItem - это кнопка Далее в диалогах NSIS
Вот и всё, после того как узнали дескриптор кнопки, эмулируем нажатие посылкой Win сообщения
SendMessage $1 ${BM_CLICK} 0 0
-------
че такое
Поисковик Google (http://lmgtfy.com/?q=Win32+Error+Code+5) ещё никто не отменял
Попробуйте запустить программу от имени администратора, может UAC балуется? :)
смотрите ID элементов непосредственно через программы просмотров ресурсов, такие как ResHacker и Restorator »
Ах воно оно что а тодумаю как конкретно узнать...спасибо буду експерементировать...
kotkovets
28-08-2012, 20:43
Ах воно оно что а тодумаю как конкретно узнать... »
Все это упрощенно и быстро можно узнать - http://forum.oszone.net/thread-129417.html
В пакет AutoIt входит весьма полезная утилитка - Au3Info.exe
Это программка наведением прицела на элемент диалога позволяет узнать все нужные параметры окошка
и параметры элементов диалога, остается фактически тока нужные "циферки" вставить в скрипт NSIS
Creator000
29-08-2012, 23:45
Где можно узнать больше о nsDialog? мне эта штука больше понравилась чем IO.
чтобы кто-то разжевал поподробней для чего и как работают эти функции.
Где можно узнать больше о nsDialog? »
Здесь : http://nsis.sourceforge.net/NsDialogs_FAQ\
http://nsis.sourceforge.net/Docs/nsDialogs/Readme.html
http://nsis.sourceforge.net/Include/nsDialogs.nsh
http://nsis.sourceforge.net/Category:NsDialogs_Examples
Creator000
30-08-2012, 17:31
MKN, а что нибудь по русски есть?
Creator000,
Есть Promt, Lingvo, Google Translate. Переведи док. и выложи здесь. :)
volk1234
31-08-2012, 12:48
Creator000
Перестаньте использовать форум как чат!
Creator000
31-08-2012, 20:28
мне не подходит инструкция. с помощью команды page мы создаем страницу. а мне нужно не страницу, а целый интерфейс пользователя, который я смог бы потом подключать в коде непосредственно самого установщика
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC