.: NSIS - все вопросы :. часть 2.
-
Limonica
Re: .: NSIS - все вопросы :. часть 2.
Не ну серьезно, неужели нельзя установить новое устройство средствами NSIS?
-
kotkovets
Re: .: NSIS - все вопросы :. часть 2.
Попробовал применить скины к инсталлятору с помощью ISSkinEx (
На некоторых скинах BrandingText выгладит неопрятно.

Например: скин tiger
Можно ли что-нибудь сделать?
В Справочнике NSIS есть пример изменения цвета BrandingText.
В стандартном примере скрипта (WelcomeFinish.nsi) - прекрасно работает.
В различных примерах со скинами (см. ссылку MKN выше) - нет.
И что самое обидное (
) в моем, вполне рабочем скрипте без скинов, самодельных окон - в общем, довольно простеньком - тоже не работает. Хотя особой надобности что-либо делать с BrandingText нет - отображается вполне прилично.
Есть ли ограничения применения этого примера? Или что необходимо учитывать?
.: NSIS - все вопросы :. часть 2.
)На некоторых скинах BrandingText выгладит неопрятно.

Например: скин tiger
Можно ли что-нибудь сделать?
В Справочнике NSIS есть пример изменения цвета BrandingText.
В стандартном примере скрипта (WelcomeFinish.nsi) - прекрасно работает.
В различных примерах со скинами (см. ссылку MKN выше) - нет.
И что самое обидное (
) в моем, вполне рабочем скрипте без скинов, самодельных окон - в общем, довольно простеньком - тоже не работает. Хотя особой надобности что-либо делать с BrandingText нет - отображается вполне прилично.Есть ли ограничения применения этого примера? Или что необходимо учитывать?
-
MKN
Re: .: NSIS - все вопросы :. часть 2.
Цитата Kopejkin:
Попробовал применить скины к инсталлятору с помощью ISSkinEx
На некоторых скинах BrandingText выгладит неопрятно.
Возможно дело в самом ISSkinEx. Также можно поэксперементировать с назначением шрифта для BrandingText и с темами.
Самый удачный "кожезаменитель" для NSIS, по моему - это SkinH.dll.
Для однокнопочных конструкций можно сделать забавный фейс инсталлятора - в виде круга. Функция , проделывающая это, уже описывалась ранее.
Код:
SystemParametersInfo с соответствующим флагом, необходима, чтобы убрать пунктирную рамку границы окна , появляющуюся при перетаскивании окна инсталлятора.
Но у меня не получилось - полностью закрасить круг. ( с прямоугольным окном получается).
Как это можно сделать, у кого какие соображения ?
Попробовал применить скины к инсталлятору с помощью ISSkinEx
На некоторых скинах BrandingText выгладит неопрятно.
.: NSIS - все вопросы :. часть 2.
Возможно дело в самом ISSkinEx. Также можно поэксперементировать с назначением шрифта для BrandingText и с темами.
Самый удачный "кожезаменитель" для NSIS, по моему - это SkinH.dll.
Для однокнопочных конструкций можно сделать забавный фейс инсталлятора - в виде круга. Функция , проделывающая это, уже описывалась ранее.
Код:
Код: Выделить всё
!include nsDialogs.nsh
!include WinMessages.nsh
Caption " "
Page Custom mypagecreate
Page InstFiles
OutFile "CreateRoundRectRgn.exe"
Var dlg
var button
Function .onGUIInit
System::Call "user32::SystemParametersInfo(i0x0025,i0,*i.R0,i0)"
System::Call "user32::SystemParametersInfo(i0x0025,i1,i0,i0)"
FunctionEnd
Function .onGUIEnd
System::Call "user32::SystemParametersInfo(i0x0025,iR0,i0,i0)"
FunctionEnd
Function mypagecreate
nsDialogs::Create 1018
Pop $dlg
System::Call "*(i, i, i, i)i.r0"; создать новую структуру
System::Call "User32::GetClientRect(i$HWNDPARENT, ir0)"; Получить новые координаты структуры - в $0
System::Call "*$0(i, i, i.r1, i.r2)"
IntOp $1 $1 + 5
IntOp $2 $2 + 30
System::Call "Gdi32::CreateRoundRectRgn(i0,i0,i200,i200,i200,i200)i.r0"
; Функция SetWindowRgn устанавливает регион окна. Регион окна устанавливает область внутри окна, где система разрешает рисовать.
;Система не выводит на экран любую часть окна, которая находится за пределами региона окна.
; Координаты окна региона окна находятся относительно левого верхнего угла не рабочей области окна.
;После успешного вызова функции SetWindowRgn системе принадлежит регион, определенный дескриптором hRgn региона.
;Система не делает копию региона. Таким образом, Вы не должны делать дополнительные вызовы функции с этим дескриптором региона.
;В частности не удаляйте этот дескриптор региона. Система удаляет дескриптор региона тогда, когда он больше не нужен.
System::Call "User32::SetWindowRgn(i$HWNDPARENT, ir0, i1)"
${NSD_CreateButton} 50u 35u 17u 16u "X"
Pop $button
${NSD_OnClick} $button done
nsDialogs::Show
FunctionEnd
Function done
SendMessage $hwndparent ${WM_CLOSE} 0 0
FunctionEnd
Section
SectionEndSystemParametersInfo с соответствующим флагом, необходима, чтобы убрать пунктирную рамку границы окна , появляющуюся при перетаскивании окна инсталлятора.
Но у меня не получилось - полностью закрасить круг. ( с прямоугольным окном получается).
Как это можно сделать, у кого какие соображения ?
-
MKN
Re: .: NSIS - все вопросы :. часть 2.
Цитата MKN:
Но у меня не получилось - полностью закрасить круг. ( с прямоугольным окном получается).
Как это можно сделать, у кого какие соображения ?
Код:
Но у меня не получилось - полностью закрасить круг. ( с прямоугольным окном получается).
Как это можно сделать, у кого какие соображения ?
.: NSIS - все вопросы :. часть 2.
Код:
Код: Выделить всё
Function mypagecreate
nsDialogs::Create 1018
Pop $dlg
SetCtlColors $HWNDPARENT "" 0x80FF00
SetCtlColors $dlg "" 0x80FF00-
MKN
Re: .: NSIS - все вопросы :. часть 2.
Цитата MKN:
Но у меня не получилось - полностью закрасить круг
не получится просто так - это заголовок окна (стиль окна системы), можно перерисовать заголовок, но стандартно не получится,
а можно убрать у окна заголовок, удалить стиль заголовка, но переместить окошко тогда не удасться
Но у меня не получилось - полностью закрасить круг
.: NSIS - все вопросы :. часть 2.
не получится просто так - это заголовок окна (стиль окна системы), можно перерисовать заголовок, но стандартно не получится,
а можно убрать у окна заголовок, удалить стиль заголовка, но переместить окошко тогда не удасться
-
K.A.V.
Re: .: NSIS - все вопросы :. часть 2.
Цитата kotkovets:
а можно убрать у окна заголовок, удалить стиль заголовка, но переместить окошко тогда не удасться
Да, мешает загловок... Убрать его , как уже выясняли, не проблема. Теперь надо организовать возможность перемещения окна НЕ за заголовок.
Самое простое - запускать вместе со скриптом утилитку для этого (типа MoveInactiveWin). Но так не интересно...
В то же время пишут, что можно сделать так :
или использовать сообщение WM_NCHITTEST, которое есть даже в WinMessages.nsh.
Только как это сделать на практике ?
а можно убрать у окна заголовок, удалить стиль заголовка, но переместить окошко тогда не удасться
.: NSIS - все вопросы :. часть 2.
Да, мешает загловок... Убрать его , как уже выясняли, не проблема. Теперь надо организовать возможность перемещения окна НЕ за заголовок.
Самое простое - запускать вместе со скриптом утилитку для этого (типа MoveInactiveWin). Но так не интересно...
В то же время пишут, что можно сделать так :
http://computista.ru/030600.shtml
или использовать сообщение WM_NCHITTEST, которое есть даже в WinMessages.nsh.
Только как это сделать на практике ?
-
MKN
Re: .: NSIS - все вопросы :. часть 2.
Цитата MKN:
Только как это сделать на практике ?
стандартно невозможно, только плагином
Только как это сделать на практике ?
.: NSIS - все вопросы :. часть 2.
стандартно невозможно, только плагином
-
vahe-91
Re: .: NSIS - все вопросы :. часть 2.
Цитата kotkovets:
только плагином
Которого не существует... Inno в этом плане как то более прогрессивен и продвинут. Чего для него только нет... Для NSIS - чего надо, того никогда нет...
только плагином
.: NSIS - все вопросы :. часть 2.
Которого не существует... Inno в этом плане как то более прогрессивен и продвинут. Чего для него только нет... Для NSIS - чего надо, того никогда нет...

-
kotkovets
Re: .: NSIS - все вопросы :. часть 2.
Никто не знает как в скрипте NSIS вызвать LaunchAdvancedAssociationUI для заданной программы?
(How to call LaunchAdvancedAssociationUI).
(How to call LaunchAdvancedAssociationUI).
-
vahe-91
Re: .: NSIS - все вопросы :. часть 2.
Цитата wolkow70:
как в скрипте NSIS вызвать LaunchAdvancedAssociationUI для заданной программы?
Дело это мутное до безобразия...
Был такой код по теме :
Код:
Только к нему много вопросов... К примеру, используемая функция IApplicationAssociationRegistrationUI, если верить примечанию, не поддерживается на Windows 8
(
А ты, как мне кажется, хочешь замутить канитель, именно применимо к ассоциированию в Win8 ? (а для других ОС и мутить нечего - всё ясно и традиционно...)
как в скрипте NSIS вызвать LaunchAdvancedAssociationUI для заданной программы?
.: NSIS - все вопросы :. часть 2.
Дело это мутное до безобразия...
Был такой код по теме :
Код:
Код: Выделить всё
!include LogicLib.nsh
!define CLSCTX_INPROC_SERVER 0x1
!define CLSID_ApplicationAssociationRegistrationUI {1968106d-f3b5-44cf-890e-116fcb9ecef1}
!define IID_IApplicationAssociationRegistrationUI {1f76a169-f994-40ac-8fc8-0959e8874710} ;[Vista+]
section
System::Call 'OLE32::CoCreateInstance(g "${CLSID_ApplicationAssociationRegistrationUI}",i 0,i ${CLSCTX_INPROC_SERVER},g "${IID_IApplicationAssociationRegistrationUI}",*i.r1)i.r0' ;ptr is now in $1 and hr in $0
${If} $1 0
System::Call '$1->3(w "MyApp")i.r0' ;IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI
System::Call '$1->2()' ;IUnknown::Release
${EndIf}
sectionendТолько к нему много вопросов... К примеру, используемая функция IApplicationAssociationRegistrationUI, если верить примечанию, не поддерживается на Windows 8
(
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
)А ты, как мне кажется, хочешь замутить канитель, именно применимо к ассоциированию в Win8 ? (а для других ОС и мутить нечего - всё ясно и традиционно...)