|
Компьютерный форум 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 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата K.A.V.:
|
|
Отправлено: 10:16, 14-03-2015 | #1541 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Привет народ,
Имеется вопрос.. Ковыряю один инсталлер, формально всё по тех. части оригинального уже воссоздал и прописал что нужно.. Но, не работает как надо только кусок мелкого оформления. Не отображаются тексты на странице Велком и её заголовка.. Пример в картинках: Скрытый текст
Пример кода..
;=============================================================================== ;Modification Development Kit Setup Script ;=============================================================================== ; Conditional Compilation ; !define MDK_SMALL ; exclude stuff !define MDK_COLOR ; modified NSIS ; !define MOD_INCLUDE_PLAYERKIT ; Compiler Settings CRCCheck force SetCompressor lzma !ifdef G2MDK_SMALL SetCompressorDictSize 128 ; see RAM table !else SetCompressorDictSize 32 ; see RAM table !endif ; DictSize Compress Decompress ; 8 MB 141 MB 10 MB (default) ; 12 MB 179 MB 14 MB ; 16 MB 217 MB 18 MB ; 24 MB 293 MB 26 MB ; 32 MB 369 MB 35 MB ; 48 MB 521 MB 50 MB ; 64 MB 673 MB 66 MB ; 96 MB 977 MB 98 MB ; 128 MB 1281 MB 130 MB ; 192 MB 1889 MB 194 MB AllowRootDirInstall true !ifdef G2MDK_SMALL !packhdr "packhdr.tmp" "upx --best packhdr.tmp" !endif ; Includes !include "MUI.nsh" !include "Sections.nsh" !include ".\setup\g2mod.nsh" ; Version Definitions !define VER_MAJOR 0 !define VER_MINOR 0 !define VER_PATCH 0 !define VER_FLAGS 0 !define VER_TEXT "${VER_MAJOR}.${VER_MINOR}" !ifndef G2MDK_SMALL !define VER_FILE "${VER_MAJOR}.${VER_MINOR}" !else !define VER_FILE "${VER_MAJOR}.${VER_MINOR}" !endif !define NAME_LONG "Modification Development Kit" !define UNREG_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\MDK" OutFile "..." InstallDir "..." InstallDirRegKey HKLM "..." ;=============================================================================== ; MUI Name "G2MDK ${VER_TEXT}" ;BrandingText "${NAME_LONG}" ;LicenseForceSelection radiobuttons ; Configuration (all) !ifdef MDK_COLOR !define MUI_BGCOLOR "000000" !define MUI_TEXTCOLOR "CDCBEB" !define MUI_FINISHPAGE_LINK_COLOR "0xFDF8F8" !endif !define MUI_ICON ".ico" !define MUI_UNICON ".ico" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_RIGHT !define MUI_HEADERIMAGE_BITMAP ".bmp" !define MUI_WELCOMEFINISHPAGE_BITMAP ".bmp" !define MUI_UNWELCOMEFINISHPAGE_BITMAP ".bmp" ; Configuration (Installer) !define MUI_WELCOMEPAGE_TITLE_3LINES !define MUI_WELCOMEPAGE_TEXT "Dieser Assistent wird Sie durch die Installation \ von MDK (${NAME_LONG}) begleiten.\r\n\r\nEs wird empfohlen vor der \ Installation alle anderen Programme zu schlieЯen.\r\n\r\n$_CLICK" !define MUI_FINISHPAGE_NOREBOOTSUPPORT !define MUI_FINISHPAGE_TITLE_3LINES !define MUI_FINISHPAGE_LINK "..." !define MUI_FINISHPAGE_LINK_LOCATION "..." ; Setup Pages (Installer) !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE ".rtf" Page custom PageReinstall PageLeaveReinstall !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH ; Configuration (Uninstaller) !define MUI_WELCOMEPAGE_TITLE_3LINES !define MUI_WELCOMEPAGE_TEXT "Dieser Assistent wird Sie durch die \ Deinstallation von GMDK (${NAME_LONG}) begleiten.\r\n\r\n\ Bitte beenden Sie alle MDK-Tools,\r\n\ bevor Sie mit der Deinstallation fortfahren.\r\n\r\n$_CLICK" !define MUI_FINISHPAGE_TITLE_3LINES ; Setup Pages (Uninstaller) !insertmacro MUI_UNPAGE_WELCOME !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_COMPONENTS !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH ; Setup Language !insertmacro MUI_LANGUAGE "German" ; Reserve Files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ... Код восстанавливал изучая оригинал(написан на базе Нсиськи 2.0), сам использую Нсис юникод 2.46.5. Компилил как в Анси, так и в Юнике, и взде одинаково, - текст не отображается.. В чем грабля может быть ?! |
Отправлено: 07:48, 15-03-2015 | #1542 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата MaGoth:
Цитата MaGoth:
Цитата MaGoth:
MUI_BGCOLOR есть, а вот MUI_TEXTCOLOR нет, соответственно, цвет на фон то применяется, а на текст - нет Пишите свою функцию с установкой цветов на тексты командой SetCtlColors, либо ковыряйте include файл интерфейса и добавляйте такую дефиньку, чтобы применяла цвета на текст |
|||
------- Последний раз редактировалось K.A.V., 15-03-2015 в 11:00. Отправлено: 10:54, 15-03-2015 | #1543 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать K.A.V.,
Не напомнишь случаем хенделы этих текстовых полей и окна..? Ковырял ковырял интерфес, но что-то кроме как изменения цвета фона в них, ничего более не наковырял. Может ковырялка не того калибра ?! Да и залезть в ресурсы интерфейса пока нет возможности... |
Отправлено: 08:39, 20-03-2015 | #1544 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата MaGoth:
Цитата K.A.V.:
в котором прописаны все детали интерфейса, установка цветов, текста, изображений и т.д. Цитата MaGoth:
В своём коде замените ваши куски этими: !define MUI_PAGE_CUSTOMFUNCTION_SHOW "WelcomeFinishColors_K.A.V._Example" ; Setup Pages (Installer) !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE ".rtf" Page custom PageReinstall PageLeaveReinstall !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !define MUI_PAGE_CUSTOMFUNCTION_SHOW "WelcomeFinishColors_K.A.V._Example" !insertmacro MUI_PAGE_FINISH ; Setup Pages (Uninstaller) !define MUI_PAGE_CUSTOMFUNCTION_SHOW "un.WelcomeFinishColors_K.A.V._Example" !insertmacro MUI_UNPAGE_WELCOME !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_COMPONENTS !insertmacro MUI_UNPAGE_INSTFILES !define MUI_PAGE_CUSTOMFUNCTION_SHOW "un.WelcomeFinishColors_K.A.V._Example" !insertmacro MUI_UNPAGE_FINISH И ещё обратите внимание на то, что необходимо использовать 2 разные функции для установщика и деинсталлятора сами функции Function WelcomeFinishColors_K.A.V._Example ReadINIStr $0 "$PLUGINSDIR\ioSpecial.ini" "Field 2" "HWND" SetCtlColors $0 ${MUI_TEXTCOLOR} ${MUI_BGCOLOR} ReadINIStr $0 "$PLUGINSDIR\ioSpecial.ini" "Field 3" "HWND" SetCtlColors $0 ${MUI_TEXTCOLOR} ${MUI_BGCOLOR} GetDlgItem $0 $HWNDPARENT 1037 SetCtlColors $0 ${MUI_TEXTCOLOR} ${MUI_BGCOLOR} GetDlgItem $0 $HWNDPARENT 1038 SetCtlColors $0 ${MUI_TEXTCOLOR} ${MUI_BGCOLOR} FunctionEnd Function un.WelcomeFinishColors_K.A.V._Example ReadINIStr $0 "$PLUGINSDIR\ioSpecial.ini" "Field 2" "HWND" SetCtlColors $0 ${MUI_TEXTCOLOR} ${MUI_BGCOLOR} ReadINIStr $0 "$PLUGINSDIR\ioSpecial.ini" "Field 3" "HWND" SetCtlColors $0 ${MUI_TEXTCOLOR} ${MUI_BGCOLOR} GetDlgItem $0 $HWNDPARENT 1037 SetCtlColors $0 ${MUI_TEXTCOLOR} ${MUI_BGCOLOR} GetDlgItem $0 $HWNDPARENT 1038 SetCtlColors $0 ${MUI_TEXTCOLOR} ${MUI_BGCOLOR} FunctionEnd |
|||
------- Отправлено: 12:19, 20-03-2015 | #1545 |
Старожил Сообщения: 152
|
Профиль | Отправить PM | Цитировать Как определить за NAT находится пк или нет с помощью NSIS?
|
Отправлено: 12:06, 30-03-2015 | #1546 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Limonica:
Я, например, не шарю в сетевых технологиях и чтобы понять, чего вы действительно хотите от кода - я перед написанием кода должен проштудировать документацию относительно вашего вопроса и только после этого понять, какой функционал необходим в коде Если готового плагина/решения нет на сайте NSIS - то я должен буду сначала понять, что такое NAT и понять, что нужно для того, чтобы приступить к написанию кода к определению за NAT/не за NAT, а это дополнительное потраченное время, лично для меня это время будет потрачено зря, т.к. мне эта тема не интересна Так вот что хотелось бы сказать в итоге (и, думаю, нужно внести эти "пожелания-инструкции" в шапку в каком-нибудь более понятном формате, если я не очень грамотно выражусь сейчас): Если вы просите помощи в написании кода, описывайте подробно, какие команды необходимо видеть в коде, т.к. не все мы тут супер-мега-опытные-знающие всё обо всём в мире IT, сократите время ожидания кода себе и уважайте время тех, кто вам помогает. Например, по вашему вопросу можно было бы составить сообщение типа такого (опять же, если я всё правильно понял про NAT, прочитав инфу в инете): Скрытый текст
Как определить за NAT находится пк или нет с помощью NSIS? Если готового решения нет, то необходим следующий функционал: 1. Определить IP адрес локальной машины 2. Определить, входит ли этот адрес в диапазоны локальных зарезервированных сетей типа 192.168.255.255, 10.255.255.255 и бла бла бла перечисляем дальше Т.е. по сути, нам что нужно, определить это? Если IP адрес компьютера входит в диапазон локальных сетей, то мы за NAT? Если я всё правильно понял, то можно реализовать так (или не так, если я всё-таки нифига не понял ): В любом случае, может быть, код кому-нибудь пригодится, если это не решение вашего вопроса) Name "GetIP Test" OutFile "GetIP Test.exe" Function .onInit call GetIP quit FunctionEnd Function GetIP System::Alloc 400 pop $R0 System::Call 'ws2_32::WSAStartup(i 0x202, i R0)' System::Call 'ws2_32::gethostname(t .r0, i ${NSIS_MAX_STRLEN}) i .r1' System::Call 'ws2_32::gethostbyname(t "$0") i.R1' System::Call '*$R1(&v12,*i.R2)' System::Call '*$R2(i.R3)' System::Call 'ws2_32::inet_ntoa(i R3) t.R4' System::Call 'ws2_32::WSACleanup()' System::Free $R0 ; $0 - имя хоста ; $R4 - IP адрес Push '$R4' Call CheckIP Pop $0 ; в $0 результат, смотрим инфу ниже: ; 1 - LoopBack IP (localhost, indicates no connection to a LAN or to the internet). ; 2 - Automatic Private IP Address (no DHCP server). ; 3 - Network IP. ; 4 - Internet IP. StrCpy $1 "Мы за NAT" StrCmp $0 "4" 0 +2 StrCpy $1 "Мы не за NAT" MessageBox MB_OK|MB_ICONINFORMATION "IP - $R4$\noutput - $0$\n$\n$1" FunctionEnd Function CheckIP Exch $0 Push $1 ; Check 127.x.x.x Push '127.0.0.0' Push $0 Call VersionCheck Pop $1 StrCmp $1 2 '' Range1 ; IP cannot be in range of LoopBack addresses Push '127.255.255.255' Push $0 Call VersionCheck Pop $1 StrCmp $1 1 LoopBack ; We found a LoopBack IP ; Check 10.x.x.x Range1: Push '10.0.0.0' Push $0 Call VersionCheck Pop $1 StrCmp $1 2 '' Range2 ; IP cannot be in range 1 Push '10.255.255.255' Push $0 Call VersionCheck Pop $1 StrCmp $1 1 LanIp ; We found a LanIp ; Check 172.16.x.x to 172.31.x.x Range2: Push '172.16.0.0' Push $0 Call VersionCheck Pop $1 StrCmp $1 2 '' Range3 ; IP cannot be in range 2 Push '172.31.255.255' Push $0 Call VersionCheck Pop $1 StrCmp $1 1 LanIp ; We found a LanIp ; Check 192.168.x.x Range3: Push '192.168.0.0' Push $0 Call VersionCheck Pop $1 StrCmp $1 2 '' Range4 ; IP cannot be in range 3 Push '192.168.255.255' Push $0 Call VersionCheck Pop $1 StrCmp $1 1 LanIp ; We found a LanIp ; Check 169.254.x.x Range4: Push '169.254.0.0' Push $0 Call VersionCheck Pop $1 StrCmp $1 2 '' InternetIp ; It should be an internet IP Push '169.254.255.255' Push $0 Call VersionCheck Pop $1 StrCmp $1 1 APA ; We found an Automatic Private IP Address Goto InternetIp ; Remaining addresses are internet IPs LoopBack: StrCpy $1 1 Goto Exit APA: StrCpy $1 2 Goto Exit LanIp: StrCpy $1 3 Goto Exit InternetIp: StrCpy $1 4 Exit: Exch $1 Exch 1 Exch $0 Exch 1 FunctionEnd Function VersionCheck Exch $0 ;second versionnumber Exch Exch $1 ;first versionnumber Push $R0 ;counter for $0 Push $R1 ;counter for $1 Push $3 ;temp char Push $4 ;temp string for $0 Push $5 ;temp string for $1 StrCpy $R0 "-1" StrCpy $R1 "-1" Start: StrCpy $4 "" DotLoop0: IntOp $R0 $R0 + 1 StrCpy $3 $0 1 $R0 StrCmp $3 "" DotFound0 StrCmp $3 "." DotFound0 StrCpy $4 $4$3 Goto DotLoop0 DotFound0: StrCpy $5 "" DotLoop1: IntOp $R1 $R1 + 1 StrCpy $3 $1 1 $R1 StrCmp $3 "" DotFound1 StrCmp $3 "." DotFound1 StrCpy $5 $5$3 Goto DotLoop1 DotFound1: Strcmp $4 "" 0 Not4 StrCmp $5 "" Equal Goto Ver2Less Not4: StrCmp $5 "" Ver2More IntCmp $4 $5 Start Ver2Less Ver2More Equal: StrCpy $0 "0" Goto Finish Ver2Less: StrCpy $0 "1" Goto Finish Ver2More: StrCpy $0 "2" Finish: Pop $5 Pop $4 Pop $3 Pop $R1 Pop $R0 Pop $1 Exch $0 FunctionEnd Section SectionEnd |
|
------- Отправлено: 17:21, 30-03-2015 | #1547 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Необходимо переименовать все файлы в папке, чтобы вместо имён была нумерация ( варианты 0,1,2 и т.д. или 01, 02 и т.д. или 001 002 и т.д. ) без расширений
Также интересует выборочное переименование , типа, переимен. начиная с такого то по такой то файл и др сочетания... Использовал такой код : Но почему то получается хаотичное переименование, особенно если много файлов... |
Последний раз редактировалось MKN, 31-03-2015 в 17:06. Отправлено: 17:00, 31-03-2015 | #1548 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Function RenameFiles Var /global n StrCpy $n 1 Delete "$TEMP\tmpfile.ini" ClearErrors FindFirst $0 $1 $DESKTOP\D\*.* loop: StrCmp $1 "" done StrCmp $1 "." next StrCmp $1 ".." next ReadINIStr $2 "$TEMP\tmpfile.ini" "tmp" "$1" StrCmp $2 "1" next 0 Rename "$DESKTOP\D\$1" "$DESKTOP\D\$n" WriteINIStr "$TEMP\tmpfile.ini" "tmp" "$n" "1" IntOp $n $n + 1 next: FindNext $0 $1 Goto loop done: FindClose $0 Delete "$TEMP\tmpfile.ini" FunctionEnd Цитата MKN:
Соответственно, чтобы сделать этот процесс правильным - нам нужно запоминать, какой файл уже был переименован (чтобы повторно его не обрабатывать), для этого сбрасываем имена переименованных файлов во временный файл и перед каждой командой переименования проверяем наличие записи о текущем файле Ещё один момент, когда перечисляешь все файлы в папке командой Find*, в переменную имени файла сбрасывается значение "." и "..", из-за чего счетчик так же может быть не правильным, проверку на эти значения я так же прописал Ну и ещё один момент - счетчик нужно менять только после операции переименования, а не после/перед командой FindNext, т.к. опять же, счетчик будет не правильным Цитата MKN:
p.s. я бы вообще, сделал всё это дело через функцию Locate (красивее/удобнее), но т.к. она багованная с самого 2.46 и при указании некоторых команд (например ReadINIStr) в callback функцию, она просто завершается - из-за этого этот вариант отпадает |
||
------- Отправлено: 18:31, 31-03-2015 | #1549 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата K.A.V.:
Наверное такое переименование проще сделать батником. Там это в три строки делается... |
|
Последний раз редактировалось MKN, 01-04-2015 в 12:22. Отправлено: 18:44, 31-03-2015 | #1550 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|