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

iglezz
20-06-2020, 11:11
inco1, Разумнее всего будет забыть про выравнивание по центру в MessageBox.

MKN
20-06-2020, 11:25
inco1,
Плагин(одну из вариаций самопальной messagebox.dll) однажды встречал у китайцев (на nsisfans.com). Где он там закопан, ищи уж сам.
Есть еще интересная малюсенькая прожка Wbox.exe (www.horstmuc.de ). В ней точно есть центровка текста и много чего ещё. Теоретически можно приспособить в NSIS, если разобраться как приладить Callback... Но, ИМХО, в такой возне, смысла нет...

K.A.V.
20-06-2020, 22:00
Спасибо сообществу за замечательный хелпер без него как без рук уже (он у меня работает не корректно и не отображает содержимое страниц. Приходится доставать оттуда нужные html ручками хз почему »
Возможно, система заблокировала CHM файл, т.к. он был загружен из интернета, зайдите в свойства файла и нажмите кнопку (или поставьте галочку) "Разблокировать"

MKN, по данной ссылке некий DrO в 2005 году писал, что, когда закончит с почтовым плагином, то займется этим.
Дайте, пожалуйста ссылку этого самого спец плагина. »
Так вроде и сделали...Только насколько я понял, там нет функции центровки текста, там все стили стандартные от системы
Может быть, были более свежие версии, но у меня на диске сохранилась только эта, ибо много чего качал, когда начинал знакомство с NSIS...

Что касается решения вопроса, то MKN выше уже вам дал ответ:
Если так сильно нужна центровка текста, то делайте свою DLL и в ней создавайте свой диалог через WinApi функцию DialogBox с использованием заранее созданного ресурса с окном, присвоив стиль SS_CENTER Static-элементу, в котором будет располагаться непосредственно текст вашего сообщения

inco1
25-06-2020, 19:20
Всем добрый вечер.
Вот опять застрял в одном деле.
Имеется известная служба "AdobeARMservice". Подскажите, пожалуйста, как можно изменить тип запуска с "Автоматически" на "Вручную" ?

iglezz
26-06-2020, 00:14
inco1, sc config SERVICE_NAME start= demand (https://ab57.ru/cmdlist/sc.html) через nsexec

inco1
26-06-2020, 10:56
iglezz, Спасибо. Это именно то, что нужно.

Serg866
29-06-2020, 18:06
Привет. Подскажите, пожалуйста, как модифицировать данный код, чтобы кроме 1920*1080 добавить второе возможное разрешение по принципу: если у пользователя разрешение 1920*1080 или 1366*768, то продолжаем установку, если любое другое - аборт.
Не получается сопоставить логическую конструкцию.

Function .onInit
; Получаем текущие размеры экрана
System::Call 'user32::GetSystemMetrics(i 0) i .r0' ; Ширина в пикселях
System::Call 'user32::GetSystemMetrics(i 1) i .r1' ; Высота в пикселях
${If} $0 == 1920
${AndIf} $1 == 1080
MessageBox MB_OK "Установлено разрешение 1920x1080"
${Else}
MessageBox MB_OK "Установлено любое другое разрешение"
${EndIf}
FunctionEnd

iglezz
29-06-2020, 18:16
Serg866, Например, так:System::Call 'user32::GetSystemMetrics(i 0) i .r0' ; Ширина в пикселях (основного дисплея)
System::Call 'user32::GetSystemMetrics(i 1) i .r1' ; Высота в пикселях (основного дисплея)

StrCpy $2 "$0x$1" ; делаем строку "<ширина>x<высота>"

${If} $2 != "1920x1080"
${AndIf} $2 != "1366x768"
MessageBox MB_ICONSTOP "Экран не тот, работать не буду"
Quit
${EndIf}


Для получения разрешения неосновного дисплея в многодисплейных конфигурациях код будет другой.

inco1
10-07-2020, 01:17
Всем доброй ночи.
Тут вот такое дело. Смотрю в CCleaner в "Запланированные задачи", там много всякой всячины. Такой вопрос: есть ли в NSIS команды для удаления запланированных задач?

MKN
10-07-2020, 10:21
есть ли в NSIS команды для удаления запланированных задач? »
NSIS может работать с обычными "классическими" командами, типа :

ExecWait 'SchTasks /Delete /TN “My Task”'
ExecWait 'SchTasks /Change /TN "My Task" /Disable'

http://forums.shoutcast.com/showthread.php?t=374970

https://docs.microsoft.com/ru-ru/windows-server/administration/windows-commands/schtasks
https://www.celitel.info/klad/bathelp/schtasks.htm и т.п.

или
https://nsis.sourceforge.io/Talk:Scheduled_Tasks

или можно заморочиться с API, что не имеет смысла... :
https://nsis.sourceforge.io/mediawiki/index.php?title=Scheduled_Tasks&oldid=21526

inco1
10-07-2020, 19:25
MKN, Спасибо. Наилучшим образом работает это:
nsExec::Exec 'schtasks /Delete /tn "My Task" /f'

inco1
28-07-2020, 10:03
Здравствуйте. Такой вот вопрос. Если система неким уникумом установлена на диск D.
Будут ли в таком случае работать стандартные переменные?
Интересует $PROGRAMFILES.

iglezz
28-07-2020, 10:25
inco1,
Будут.
Если система неким уникумом установлена на диск D. »
Не обязательно уникумом. По крайней мере раньше сама логика установщика Windows порождала таких кадавров

inco1
02-08-2020, 18:13
Всем доброго времени суток. Столкнулся с такой проблемой. Имеется команда "если файл не найден"
(${IfNot} ${FileExists} C:\test.exe
MessageBox MB_OK "дыр-дыр-дыр"
${EndIf}
А есть ли команда поиска нескольких файлов C:\test.exe и C:\test1.exe и C:\test2.exe и если только все отсутствуют выдать сообщение?

Begin2Fly
02-08-2020, 18:17
А есть ли команда поиска нескольких файлов C:\test.exe и C:\test1.exe и C:\test2.exe и если только все отсутствуют выдать сообщение? »
Справочник по NSIS - Статьи - Логические конструкции: ${AndIf}

inco1
02-08-2020, 18:30
Begin2Fly,
Ничего я там не понял, да и пример с ${AndIf} один единственный с равенством.
Можете дать конкретный пример?

Begin2Fly
02-08-2020, 18:35
!include Logiclib.nsh

${IfNot} ${FileExists} C:\test.exe
${AndIfNot} ${FileExists} C:\test1.exe
${AndIfNot} ${FileExists} C:\test2.exe
MessageBox MB_OK "дыр-дыр-дыр"
${EndIf}

inco1
02-08-2020, 18:41
Begin2Fly,
Спасибо, ну я и лошара.

ZVSRus
18-08-2020, 12:34
Кто подскажет в чем причина?
То, что крокозябрами должно быть Русским. Может кто сталкивался.

https://b.radikal.ru/b09/2008/ce/0b3bacaf5c15.png



PS: Вопрос снят, решение найдено.

Serg866
18-08-2020, 21:30
System::Call 'user32::GetSystemMetrics(i 0) i .r0' ; Ширина в пикселях
System::Call 'user32::GetSystemMetrics(i 1) i .r1' ; Высота в пикселях
StrCpy $2 "$0x$1" ; делаем строку "<ширина>x<высота>"
${If} $2 != "1920x1080"
${OrIf} $2 != "1366x768"
MessageBox MB_ICONSTOP "Экран не тот, работать не буду"
Quit
${EndIf} »

Почему-то не работает, ошибку показывает, даже если экран тот.




© OSzone.net 2001-2012