Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.
Begin2Fly
04-06-2016, 22:52
Подскажите как правильно задать условие для работы инсталлятора? Нужно чтобы он запускался только от 7 и выше. »
1. Надо получить версию Windows. Как вы это сделаете - решать только вам: либо из реестра, либо из свойств системного файла, либо через API Windows, либо через функционал NSIS. В шапке есть, например, WinVer2.nsh. В справочнике по NSIS есть инструкции.
2. Собственно, задать условие в функции .onInit, например так:
(в переменной $OS хранится номер версии)
${IfNot} $OS == "6.1" ; Windows 7
${AndIfNot} $OS == "6.2" ; Windows 8
${AndIfNot} $OS == "6.3" ; Windows 8.1
${AndIfNot} $OS == "10.0" ; Windows 10
MessageBox MB_OK|MB_TOPMOST|MB_USERICON "Программа работает только на Windows 7, 8 и 10."
Quit
${EndIf}
Dodakaedr
04-06-2016, 23:14
Begin2Fly, благодарю. Если так указать
${If} $os < "6.1" ; Windows 7
MessageBox MB_OK|MB_TOPMOST|MB_USERICON "Программа работает только на Windows 7, 8 и 10."
Quit
${EndIf}будет работать? Проверить нет возможности.
Dodakaedr,
!include "WinVer.nsh"
Function .onInit
${If} ${AtLeastWin7} ;запуск, только начиная от Win7
MessageBox MB_OK "Win7"
${Else}
MessageBox MB_OK "NO Win7 !"
${EndIf}
FunctionEnd
Krinkels
20-06-2016, 00:05
Представляю Botva3.dll. Переделана из Botva2.dll, и переименована, дабы не путаться. Для оригинальных функций сделаны функции обертки( для комфортной работы с nsis ) + чуть чуть переписан код.
Желательно потестить более сведущим в nsis нежели мне. В архиве либа + пара примеров
Begin2Fly
10-07-2016, 01:21
NSIS 3.0
https://sourceforge.net/projects/nsis/files/NSIS%203/3.0/
Парни, чет не пойму...
вставляю в код
!define MUI_ICON "путь к иконке"
даже на стандартный
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
не рагирует
компилю, все без проблем, а значок стандартный ....
____________________________________________________
вот... нашел
Icon "D:\YandexDisk\DELPHI\ICO\Vista_Icons\Alerts\Alert 10.ico"
Здравствуйте. Подскажите, пожалуйста, можно ли заблокировать один из элементов ListView?
По типу "EnableWindow $var 0". Чтоб отображался, но был не кликабельным...
http://fs5.directupload.net/images/160813/wzh5nxlm.png
Пытался загуглить, но ничего не нашёл.
ZaxBoys66
28-08-2016, 14:44
NSIS Script Generator
I created a script generator for NSIS ansi and I hope to be useful to users.
http://www.nsisfans.com/data/attachment/forum/201608/29/223028rsp1187b8jezsr1z.png
Подскажите почему установленная программа определяется как 32bit, хотя реально установлена 64bit. Проблема nsis или надо что-то дописывать?
Begin2Fly
18-09-2016, 15:57
DeDyJIR, информацию для деинсталляции надо записывать в соответствующий раздел.
SetRegView 64 поможет, прочитайте в справочнике.
Круглые разноцветные кнопки.
http://s017.radikal.ru/i444/1609/dd/555b31cc1bf2.jpg
Делаем их с помощью уже известной SkinButton.dll (см. тему выше)
Только меняем рисунки в png скине :
http://s018.radikal.ru/i511/1609/13/856e4dfc83ce.jpg
На самом деле, кликабельная область - квадрат, но благодаря прозрачности PNG мы видим круг. (Единственное, кнопки не нужно делать большого размера и соблюдать пропорции.)
Генерировать скин с кругами можно таким же образом, как и с прямоугольниками. Только используем соответствующую команду ImageMagick, которую можно добавить в скин генератор.
Коллеги, моё почтение.
Разбираюсь с паролем на инсталлятор.
Вроде всё работает как надо, кроме кнопки Отмена.
Ну то есть при нажатии "Отмена" диалог должен закрываться, а он выдаёт текст из MessageBox MB
То ли конфликт какой у плага с MessageBox, то ли лыжи не едут.
Использую плагин для третьей версии NSIS. Прицепляю его тоже к посту.
Задача как понимаете чтобы при клике на отмену - диалог закрывался вообще без появления мессаджбокса.
Спасибо за помощь.
Код у меня такой (гибрид примера из плагина с примером из справочника)
!include "LogicLib.nsh"
SetCompressor /SOLID lzma
Name "InputBox"
OutFile "InputBox.exe"
RequestExecutionLevel user
ShowInstDetails show
Unicode true
XPStyle on
Page instfiles
# Just for testing
!addplugindir /x86-unicode "..\bin"
Function .onInit
InitPluginsDir
Dialogs::InputBox 0 "Заголовок" "Введите кодовую фразу" "GO!" "Отмена" 0
StrCmp $0 "Это пароль" okPass 0
MessageBox MB_ICONSTOP|MB_YESNO "Пароль неверный!!$\r$\nПовторить ввод пароля?" IDYES -2
quit
okPass:
FunctionEnd
Section ""
sleep 100
SectionEnd
Begin2Fly
09-10-2016, 04:37
Задача как понимаете чтобы при клике на отмену - диалог закрывался вообще без появления мессаджбокса. »
!include "LogicLib.nsh"
SetCompressor /SOLID lzma
Name "InputBox"
OutFile "InputBox.exe"
RequestExecutionLevel user
ShowInstDetails show
XPStyle on
Page instfiles
Function .onInit
InitPluginsDir
Dialogs::InputBox 0 "Заголовок" "Введите кодовую фразу" "GO!" "Отмена" 1 2
${if} $1 = 1
StrCmp $2 "pass" okPass 0
MessageBox MB_ICONSTOP|MB_YESNO "Пароль неверный!$\r$\nПовторить ввод пароля?" IDYES -3 IDNO 0
Quit
${else}
Quit
${endif}
okPass:
FunctionEnd
Section ""
sleep 100
SectionEnd
ZaxBoys66
03-11-2016, 18:51
How can color ComboBox?
How can color ComboBox control with the same color as the window?
I tried but it does not work SetCtlColors
ZaxBoys66,
Похоже, что тебе ответили на http://forums.winamp.com/showthread.php?t=398803
Особенно забавно :) :
Don't expect this to get fixed because the ComboBox is a really stupid control, it custom draws its borders and the sizes are locked down.
Dodakaedr
17-11-2016, 11:54
Подскажите, пожалуйста, имеет ли значение версия nsis для работы этого примера из справки?
!include "MUI2.nsh"
!include "TextFunc.nsh"
!include "WordFunc.nsh"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
ShowInstDetails show
OutFile Test.exe
Caption "Replace text"
Section
${LineFind} "$EXEDIR\file.txt" "" "1:-1" "Replace"
IfErrors 0 +2
MessageBox MB_ICONSTOP|MB_OK "Файл не найден!"
SectionEnd
Function Replace
${WordReplace} '$R9' 'Counter-Strike' 'www.counter-strike.net' "+" '$R9'
#здесь пишем еще раз макрос ${WordReplace} при небходимости
Push $0
FunctionEnd
Пользуюсь версией 3.0b2. Ложу файл file.txt возле установщика с единственной в файле строкой Counter-Strike для примера, но замена не происходит.
Ложу файл file.txt возле установщика с единственной в файле строкой Counter-Strike для примера, но замена не происходит. »
в таком коде и не произойдёт... ${WordReplace} поместит результат замены в переменную, а не сделает замену в файле...
Для замены текста в файле нужен другой код. Примеры есть в теме.
Dodakaedr
17-11-2016, 13:26
MKN, каким должно быть содержание файла file.txt чтобы заработал пример?
Dodakaedr,
Не пойму, где всё-таки надо произвести замену ? Если в файле, то нужен другой код. Если в переменной, то проще такой код :
!include "MUI2.nsh"
!include "TextFunc.nsh"
!include "WordFunc.nsh"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
OutFile Test.exe
Section
${LineRead} "$EXEDIR\file.txt" "1" $R0
MessageBox MB_OK '$R0'
${WordReplace} "$R0" "Counter-Strike" "www.counter-strike.net" "+" $R1
MessageBox MB_OK '$R1'
SectionEnd
Если, к примеру, в file.txt будет такой текст : bla-bla-bla Counter-Strike
то после выполнения кода в $R1 будет : bla-bla-bla www.counter-strike.net
Dodakaedr
17-11-2016, 13:52
Если в файле, то нужен другой код »
Да, в самом файле. В справке статья называется "Замена строки в текстовом файле.". Оба месаджа идентичны, вот что выдает ваш код http://i84.fastpic.ru/big/2016/1117/89/e73a7b2f52ceffab892f3a7a6b953e89.png
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC