|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив].: NSIS - все вопросы :. |
|
[архив].: NSIS - все вопросы :.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
|
|
Отправлено: 23:35, 17-06-2006 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Доброго времени суток!
При создании аддона с помощью NSIS возникла необходимость читать значения ключа из реестра по "плавающему" пути. Значение ключа KEY лежит в HKEY_LOCAL_MACHINE\Software\Alter\ВЕРСИЯ\Prog . где "ВЕРСИЯ" - версия программы, которая может быть любой и постоянно меняется... Как в этом случае можно считать значение ключа KEY? Заранее спасибо. |
Отправлено: 00:05, 25-03-2011 | #1001 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать martinello
Только в цикле с перечислением ключей и значений выбранной ветки реестра EnumRegKey или EnumRegValue И кстати приведите несколько значений "ВЕРСИЯ" что-то должно совпадать. либо в начале или в конце строки, что-то общее должно быть и дальше методом сравнения общего, прочитать значение ключа. Как то так... |
------- Последний раз редактировалось kotkovets, 25-03-2011 в 00:59. Отправлено: 00:18, 25-03-2011 | #1002 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать kotkovets
Примеры ВЕРСИЯ: 10.0, 10.4, 11.8, 12.3, 13.0, 14.7 и т.д. Из общего тут, вроде только точка в третьем разряде. Версий уже слишком много вышло, да и выйдет еще множество, поэтому просто завязываться на конкретное поле - не самый лучший вариант. Все ведь не перечислишь. И для будущих версий тоже должно работать... Вот и ломаю голову. |
Отправлено: 09:40, 25-03-2011 | #1003 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата martinello:
По сути значения "версия" состоит из 3 цифр и четырех символов. 1. Натравливаем в цикле с перечислением, фильтр, который отсекает все значения, кроме числовых. 2. Проверяем длину строк на 4 символа, все остальное отсекаем. 3. У нас уже есть путь к ветке реестра, можем уже считывать ключи реестра Недостаток в том, если есть еще ветки удовлетворяющим условиям, то будут ложные данные считаны И довольно все это сложно перемудрено не туда... !include "MUI2.nsh" !include "WordFunc.nsh" !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "Russian" OutFile "StrDo.exe" ShowInstDetails show Section ${Do} ;перечисляем разделы в ветке After (разделы в $1) EnumRegKey $1 HKLM "SOFTWARE\After" $0 IntOp $0 $0 + 1 ${StrFilter} "$1" "1" "." "" "$2" ;фильтр: только цифры и точка в $2 StrLen $3 $2 ;вычисляем длину строки в $3 ${IfNot} $2 == "" ; оператор If с условием, если $2 не равно пустому значению ${AndIf} $3 = 4 ; логика И (если $2 не равно пустому значению И длина строки $3 = 4) DetailPrint "найденный раздел: $1" ReadRegStr $4 HKLM "SOFTWARE\After\$1\Prog" "Key" ;теперь можно считывать значения ключеей (к примеру: Key) DetailPrint `Значение ключа [ Key ] - "$4"` ${Break} ;выход из цикла ${EndIf} ${LoopUntil} $1 == "" SectionEnd |
|
------- Последний раз редактировалось kotkovets, 25-03-2011 в 14:44. Отправлено: 14:35, 25-03-2011 | #1004 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
Решил проблему с помощью плагина Registry для NSIS http://nsis.sourceforge.net/Registry_plug-in В итоге открываю ветку для поиска HKEY_LOCAL_MACHINE\Software\Alter и ищу в ней тот самый KEY. Спасибо за код, он пригодится как пример для похожих подзадач |
|
Отправлено: 17:12, 25-03-2011 | #1005 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Доброго времени суток!
Кто-нибудь знает, есть ли возможность изменения текста на начальной странице удаления MUI_UNPAGE_WELCOME и на конечной странице удаления MUI_UNPAGE_FINISH ? В справке об этом молчок... Упоминается почему-то только страница подтверждения MUI_UNPAGE_CONFIRM. Правда, есть еще UninstallText, но его включение никаким образом не влияет ни на одну надпись (или я не так им пользуюсь). Заранее спасибо. |
Отправлено: 13:23, 27-03-2011 | #1006 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата martinello:
!define MUI_UNTEXT_WELCOME_INFO_TITLE "Всем привет!" !define MUI_UNTEXT_WELCOME_INFO_TEXT "Это моя супер прога!" UninstallText text [subtext] - применяется при классическом фейсе, на страничке confirm page, на модерне напрямую эта команда игнорируется, потому что "заменена" константами !define ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- В NSIS нет стандартных страничек приветствия и завершения. Эти странички "самодельные" и прорисовываются через nsDialogs - для MUI2, и через InstallOptions - для MUI, при классике выбрать можно любой из этих стандартных плагинов в комлекте NSIS |
|
------- Последний раз редактировалось kotkovets, 27-03-2011 в 17:49. Отправлено: 14:39, 27-03-2011 | #1007 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
Столкнулся с другой проблемой. Нужно в текстовом файле искать строки, добавлять, удалять. Если с поиском и вставкой проблем нет, то вот полностью удалить строку не получается - после удаления в файле на этом месте образуется пустой абзац (строка без символов). Делал через ${LineFind} и ${WordReplace}. Как можно полностью удалить найденную строчку?.. |
|
Отправлено: 18:14, 27-03-2011 | #1008 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать martinello
В NSIS пустая строка означает: $\r$\n $\n - создание новой строки $\r - перевод каретки на начало строки $\t - знак табуляции Те самые невидимые символы строки. Через макрос ${LineFind} вот так будет это выглядеть: ${WordReplace} '$R9' 'Строка' '' "+" '$R9' ${Select} "$R9" ${Case3} "$\r$\n" "$\r" "$\n" ${WordReplace} '$R9' '$R9' '' "+" '$R9' ${CaseElse} ${EndSelect} Макрос ${WordReplace} вложен в логику, для того, чтобы текст не превратился в одну строчку |
------- Последний раз редактировалось kotkovets, 27-03-2011 в 21:42. Отправлено: 20:03, 27-03-2011 | #1009 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать кто подскажет, как правильно написать в скрипте такую команду "bin\javaw.exe -jar JDownloader.jar"
|
Отправлено: 15:12, 28-03-2011 | #1010 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Мультимедиа - WinAmp .:[ обсуждение всех версий ]:. | ssaram | Программное обеспечение Windows | 406 | 12-02-2022 19:45 | |
WinstyleMonitor .:[все вопросы]:. | Mr dUSHA | Проект WinStyle | 331 | 12-02-2014 13:15 | |
Delphi - Delphi .: [все вопросы] :. | Serega | Программирование и базы данных | 94 | 04-05-2013 18:45 | |
Доступ - Никак не удаляются файлы (AVI и все остальные форматы) .:[все вопросы]:. | Microsoft Windows 2000/XP | 105 | 30-06-2010 11:58 | ||
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|