PDA

Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 [103] 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

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}будет работать? Проверить нет возможности.

MKN
06-06-2016, 08:30
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/

aesoem
31-07-2016, 20:09
Парни, чет не пойму...
вставляю в код
!define MUI_ICON "путь к иконке"
даже на стандартный
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
не рагирует
компилю, все без проблем, а значок стандартный ....
____________________________________________________
вот... нашел
Icon "D:\YandexDisk\DELPHI\ICO\Vista_Icons\Alerts\Alert 10.ico"

BuZzOFF
13-08-2016, 11:10
Здравствуйте. Подскажите, пожалуйста, можно ли заблокировать один из элементов 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

DeDyJIR
18-09-2016, 11:35
Подскажите почему установленная программа определяется как 32bit, хотя реально установлена 64bit. Проблема nsis или надо что-то дописывать?

Begin2Fly
18-09-2016, 15:57
DeDyJIR, информацию для деинсталляции надо записывать в соответствующий раздел.
SetRegView 64 поможет, прочитайте в справочнике.

MKN
29-09-2016, 16:25
Круглые разноцветные кнопки.

http://s017.radikal.ru/i444/1609/dd/555b31cc1bf2.jpg

Делаем их с помощью уже известной SkinButton.dll (см. тему выше)
Только меняем рисунки в png скине :
http://s018.radikal.ru/i511/1609/13/856e4dfc83ce.jpg
На самом деле, кликабельная область - квадрат, но благодаря прозрачности PNG мы видим круг. (Единственное, кнопки не нужно делать большого размера и соблюдать пропорции.)
Генерировать скин с кругами можно таким же образом, как и с прямоугольниками. Только используем соответствующую команду ImageMagick, которую можно добавить в скин генератор.

Serg866
09-10-2016, 03:36
Коллеги, моё почтение.

Разбираюсь с паролем на инсталлятор.
Вроде всё работает как надо, кроме кнопки Отмена.
Ну то есть при нажатии "Отмена" диалог должен закрываться, а он выдаёт текст из 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

MKN
05-11-2016, 09:45
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 для примера, но замена не происходит.

MKN
17-11-2016, 13:17
Ложу файл file.txt возле установщика с единственной в файле строкой Counter-Strike для примера, но замена не происходит. »
в таком коде и не произойдёт... ${WordReplace} поместит результат замены в переменную, а не сделает замену в файле...
Для замены текста в файле нужен другой код. Примеры есть в теме.

Dodakaedr
17-11-2016, 13:26
MKN, каким должно быть содержание файла file.txt чтобы заработал пример?

MKN
17-11-2016, 13:33
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