|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
.: NSIS - все вопросы :. часть 2.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
------- Отправлено: 12:02, 09-12-2012 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Отправлено: 17:23, 02-09-2013 | #511 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать В том то и дело, что нельзя
|
Отправлено: 18:01, 02-09-2013 | #512 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата tony1990:
Цитата dix75:
Цитата dix75:
Цитата K.A.V.:
Подсказка: ищите в скрипте слова, которые появляются в сообщениях при запуске программы удаления |
||||
------- Отправлено: 21:20, 02-09-2013 | #513 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Вызов стандартного диалога выбора каталога/файла (принтера/компьютера) c помощью функции SHBrowseForFolder
Полезно при работе со стандартными страницами для обзора до или после установки и при помещении кнопки обзора на любой странице. (Есть конечно Dialogs plug-in, но в нём нет некоторых моментов, доступных при оперирировании флагами функции ) OutFile "SHBrowseForFolder_test.exe" Section StrCpy $9 "Folder Dialog Title" System::Store "s r9" ; создаём структуру обозревателя System::Call '*(i $HWNDPARENT, i 0, t "", t r9, i 0x40|0x4000, i 0, i, i) i.r1' System::Call 'shell32::SHBrowseForFolderA(i r1) i.r2' System::Free $1 ;получаем путь для выбранной папки/файла System::Call 'shell32::SHGetPathFromIDListA(i $2, t "" r3)' MessageBox MB_OK "Selected : $3" ;Функция SHGetMalloc извлекает указатель на интерфейс IMalloc оболочки. ;Расширение оболочки должно использовать этот интерфейс для выделения памяти, ;позднее освобождаемой оболочкой. System::Call 'shell32::SHGetMalloc(*i . r4)' ; IMalloc->Free call System::Call '$4->5(i r2)' ; IMalloc->Release System::Call '$4->2()' System::Store "p3 l" SectionEnd Флаги BROWSEINFO structure ( BIF_BROWSEINCLUDEFILES ) http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx Флагов много, вот некоторые : ; 0x0000040 - с кнопкой "Создать папку" ; 0x00000200 - без кнопки "Создать папку" ; 0x00004000 - обзор, включая файлы ; 0x00000010 - с EditBox_ом над деревом папок флаг можно записывать короче : 0x40 и т.д. , а также назначать через !define BIF_BROWSEINCLUDEFILES ps если кто владеет программированием - может доработать диалог, как здесь : http://www.manhunter.ru/assembler/23...forfolder.html Хорошо было бы приспособить этот тюнинг для NSIS, в виде плагина... |
Последний раз редактировалось MKN, 03-09-2013 в 09:50. Отправлено: 09:26, 03-09-2013 | #514 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата:
!include "MUI2.nsh" Name "Components Example" OutFile Components.exe InstallDir $TEMP RequestExecutionLevel user !define MUI_PAGE_CUSTOMFUNCTION_SHOW "CompShowProc" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "English" Section "Component1" SectionEnd Section "Component2" SectionEnd Section "Component3" SectionEnd Function CompShowProc System::Call 'kernel32::GetDiskFreeSpaceEx(t"$instdir",*l.r1,*l,*l)' System::Int64Op $1 / 1024 Pop $1 StrCpy $4 'Space available: $1 KB' FindWindow $0 "#32770" "" $HWNDPARENT System::Call 'USER32::CreateWindowEx(i0,t "STATIC",t "$4",i ${WS_CHILD}|${WS_VISIBLE},i0,i203,i150,i20,i $0,i222,i0,i0) $R2' GetDlgItem $1 $0 1006 GetDlgItem $2 $0 222 SendMessage $1 ${WM_GETFONT} 0 0 $3 SendMessage $2 ${WM_SETFONT} $3 1 FunctionEnd |
|
Отправлено: 13:51, 03-09-2013 | #515 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата tony1990:
В приведённом примере ведь всё на месте и никуда не исчезает. Либо измени размер 1023, либо смести своё окно-надпись в свободное место. Те же грабли , что и с кнопкой... |
|
Последний раз редактировалось MKN, 03-09-2013 в 16:53. Отправлено: 15:22, 03-09-2013 | #516 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Эффект "кругов на воде" на BMP рисунке.
Получается с помощью инносетаповской waterctrl.dll и следующего кода : !AddPluginDir ".\" !include MUI2.nsh OutFile "WaterCtrl_test.exe" ReserveFile waterctrl.dll !define MUI_WELCOMEFINISHPAGE_BITMAP WizModernImage-Is.bmp !define MUI_PAGE_CUSTOMFUNCTION_PRE pre !define MUI_PAGE_CUSTOMFUNCTION_LEAVE leave !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_INSTFILES !define MUI_PAGE_CUSTOMFUNCTION_Pre pre !define MUI_PAGE_CUSTOMFUNCTION_LEAVE leave !insertmacro MUI_PAGE_FINISH !insertmacro MUI_LANGUAGE "English" Function .onGUIEnd SetPluginUnload manual waterctrl::disablewater System::Free FunctionEnd Function .onInit InitPluginsDir SetOutPath $PLUGINSDIR File waterctrl.dll ;SetOutPath $TEMP FunctionEnd Function Pre ; Load Image (LR_CREATEDIBSECTION|LR_LOADFROMFILE = 0x2010) System::Call 'user32::LoadImage(i,t,i,i,i,i,) i (0,"$PLUGINSDIR\modern-wizard.bmp",0,0,0,0x2010) .s' Pop $R0 System::Call '$PLUGINSDIR\waterctrl::enablewater(i,i,i,i,i,i) i ($HWNDPARENT,0,0,$R0,3,50)' System::Call '$PLUGINSDIR\waterctrl::setwaterparent(i $HWNDPARENT)' System::Call '$PLUGINSDIR\waterctrl::flattenwater()' System::Call '$PLUGINSDIR\waterctrl::waterblob(i,i,i,i) i (70,198,10,1000)' FunctionEnd Function leave System::Call '$PLUGINSDIR\waterctrl::disablewater()' FunctionEnd Section Sleep 300 SectionEnd |
Последний раз редактировалось MKN, 27-05-2020 в 16:17. Отправлено: 17:55, 05-09-2013 | #517 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Эффект пламени на BMP изображении
Для эффекта используется инносетаповская firectrl.dll. Т.к. пламя какое то бледненькое, лучше использовать WizModernImage-Is.bmp светлого цвета. !AddPluginDir ".\" !include MUI.nsh OutFile "Flame_Effects_test.exe" ReserveFile firectrl.dll !define MUI_WELCOMEFINISHPAGE_BITMAP WizModernImage-Is.bmp !define MUI_PAGE_CUSTOMFUNCTION_PRE pre !define MUI_PAGE_CUSTOMFUNCTION_LEAVE leave !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_INSTFILES !define MUI_PAGE_CUSTOMFUNCTION_Pre pre !define MUI_PAGE_CUSTOMFUNCTION_LEAVE leave !insertmacro MUI_PAGE_FINISH !insertmacro MUI_LANGUAGE "English" Function .onGUIEnd SetPluginUnload manual firectrl::disablefire System::Free FunctionEnd Function .onInit InitPluginsDir SetOutPath $PLUGINSDIR File firectrl.dll SetOutPath $TEMP FunctionEnd Function Pre System::Call 'user32::LoadImage(i,t,i,i,i,i,) i (0,"$PLUGINSDIR\modern-wizard.bmp",0,0,0,0x2010) .s' Pop $R0 System::Call '$PLUGINSDIR\firectrl::enablefire(i,i,i,i,i) i ($HWNDPARENT,0,0,$R0,50)' FunctionEnd Function leave System::Call '$PLUGINSDIR\firectrl::disablefire()' FunctionEnd Section Sleep 300 SectionEnd |
Последний раз редактировалось MKN, 27-05-2020 в 16:17. Отправлено: 10:49, 06-09-2013 | #518 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Положение окна 1023 получается регулировать, но вот его размеры нет. Меняю параметры, идущие за положением - на размеры окна они не влияют. Хотелось бы поместить всё-таки строчку о доступном размере на стандартное место, дабы не контрастировать с предыдущей страницей директории
!include "MUI2.nsh" Name "Components Example" OutFile Components.exe InstallDir $TEMP RequestExecutionLevel user !insertmacro MUI_PAGE_DIRECTORY !define MUI_PAGE_CUSTOMFUNCTION_SHOW "CompShowProc" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "English" Section "Component1" SectionEnd Section "Component2" SectionEnd Section "Component3" SectionEnd Function CompShowProc System::Call 'kernel32::GetDiskFreeSpaceEx(t"$instdir",*l.r1,*l,*l)' System::Int64Op $1 / 1024 Pop $1 StrCpy $4 'Space available: $1 KB' FindWindow $0 "#32770" "" $HWNDPARENT GetDlgItem $R5 $0 1023 System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) b ($R5, 0, 0, 180, 75, 10, 0x201)" System::Call 'USER32::CreateWindowEx(i0,t "STATIC",t "$4",i ${WS_CHILD}|${WS_VISIBLE},i0,i203,i150,i20,i $0,i222,i0,i0) $R2' GetDlgItem $1 $0 1006 GetDlgItem $2 $0 222 SendMessage $1 ${WM_GETFONT} 0 0 $3 SendMessage $2 ${WM_SETFONT} $3 1 FunctionEnd |
Последний раз редактировалось tony1990, 08-09-2013 в 20:45. Отправлено: 16:16, 08-09-2013 | #519 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата tony1990:
System::Call "User32::SetWindowPos(i$R5, i0, i0, i180, i150, i15, 0x0004)" ; Флаги устанавливают - исходя из задачи : http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545(v=vs.85).aspx ; по русски : http://www.firststeps.ru/mfc/winapi/win/r.php?96 Также по хорошему, надо , сделать привязку к базовым единицам, чтобы при ином разрешении экрана, выбранные координаты не уехали... (А может и не обязательно... ) Гемор одним словом. Не проще ли подправить размер окна в ресурсах ? |
|
Последний раз редактировалось MKN, 09-09-2013 в 13:08. Отправлено: 10:38, 09-09-2013 | #520 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 2 | dimadr | Наборы обновлений для Windows XP/2003/Windows 7 | 267 | 14-02-2020 08:25 | |
[архив].: NSIS - все вопросы :. | kotkovets | Автоматическая установка приложений | 3387 | 09-12-2012 11:56 | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 1 | jameszero | Наборы обновлений для Windows XP/2003/Windows 7 | 1491 | 22-07-2011 22:42 | |
Выбор|модернизация процессора .:[все вопросы]:. Часть I | Myxa | Выбор отдельных компонентов компьютера и конфигурации в целом | 1845 | 01-01-2011 19:18 | |
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|