|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
.: NSIS - все вопросы :. часть 2.
|
Ветеран Сообщения: 1216 |
![]() Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
------- Отправлено: 12:02, 09-12-2012 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать Вот спасибо. Пол дня пытался понять, что не так. Я и подозревал, что что то считывается невидимое, потому что, если напрямую присваивал любые одинаковые значения, то было всё правильно.
Начну знакомство с очисткой. P.S. Я так понял, что нельзя в моём конкретном примере обойтись как нибудь без $\n и неизвестной для меня очистки? Ведь будет только одна строка. |
Отправлено: 23:28, 07-04-2023 | #2711 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Самый простой способ хранения значений в файле - использовать ini-файл (ReadINIStr/WriteINIStr)
|
Отправлено: 23:35, 07-04-2023 | #2712 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать Попробую.
Добавлено: Всё получилось и работает как надо. Это я так хочу использовать "уникальную метку" системы. Но не уверен, что данные, те что я использую будут уникальными для всех систем: В связи с этим еще один вопрос, откуда в системе виндовс можно взять "метку", чтобы на 100 процентов или почти на 100 процентов эти данные были "уникальными" для каждой системы? |
Последний раз редактировалось inco1, 08-04-2023 в 07:03. Отправлено: 23:39, 07-04-2023 | #2713 |
Ветеран Сообщения: 2371
|
Профиль | Отправить PM | Цитировать Цитата inco1:
|
|
Отправлено: 09:24, 08-04-2023 | #2714 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать MKN, приветствую.
Как записать ID винта? Или ID винта это его серийный номер? |
Отправлено: 09:37, 08-04-2023 | #2715 |
Ветеран Сообщения: 2371
|
Профиль | Отправить PM | Цитировать inco1,
есть миниатюрный плагин для определения инфы о HDD (см. прикреплённый файл) или Цитата:
|
|
Последний раз редактировалось MKN, 08-04-2023 в 12:47. Причина: й файл) Отправлено: 12:04, 08-04-2023 | #2716 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz, Доброго вам дня и здоровья.
Походу в вашем коде поиска строки баг. Вчера целый день потратил, чтобы найти проблему. Я то ведь сразу вставлял ваш код в мой огромный код и строку не искало. А экзешник с одного вашего кода четко и быстро находит. Я потом давай убирать с моего кода по строкам всё, пока не нашел причину. Вот экзешник с вашим кодом, который прекрасно находит слово "Word.com" в файле hosts: RequestExecutionLevel user SilentInstall silent !include Util.nsh !include LogicLib.nsh !include StrFunc.nsh ${Using:StrFunc} StrLoc !define FileReadAuto `!insertmacro FileReadAuto` !macro FileReadAuto ISUTF16LE HANDLE READLINE StrCmp ${ISUTF16LE} 0 0 +3 FileRead ${HANDLE} ${READLINE} Goto +2 FileReadUTF16LE ${HANDLE} ${READLINE} !macroend !define FileFindStrStruct `(i, i, &t${NSIS_MAX_STRLEN}) p` !define FileFindStr `!insertmacro FileFindStr` !macro FileFindStr OUTPUT FILENAME STRTOFIND Push '${STRTOFIND}' Push '${FILENAME}' ${CallArtificialFunction} FileFindStr_macro Pop ${OUTPUT} !macroend !macro FileFindStr_macro Exch $0 Exch Exch $1 Push $2 Push $3 Push $4 Push $5 Push $6 Push $7 StrCpy $5 0 StrCpy $7 0 FileOpen $2 $0 R IfErrors FileFindStr_macro_end FileReadWord $2 $4 ${If} $4 = 0xFEFF StrCpy $3 1 ${Else} StrCpy $3 0 ${EndIf} FileSeek $2 0 SET ${Do} ${FileReadAuto} $3 $2 $4 ${IfThen} ${Errors} ${|} ${ExitDo} ${|} IntOp $5 $5 + 1 ${StrLoc} $6 $4 $1 > ${If} $6 != '' System::Call '*${FileFindStrStruct} (r5, r6, r4) .r7' ${ExitDo} ${EndIf} ${Loop} FileClose $2 FileFindStr_macro_end: StrCpy $0 $7 Pop $7 Pop $6 Pop $5 Pop $4 Pop $3 Pop $2 Pop $1 Exch $0 !macroend Section ${FileFindStr} $0 '$SYSDIR\drivers\etc\hosts' 'Word.com' ${If} $0 <> 0 MessageBox MB_OK " Нужное слово найдено " ${Else} MessageBox MB_OK " Нужное слово НЕ найдено " ${EndIf} SectionEnd RequestExecutionLevel user SilentInstall silent !include Util.nsh !include LogicLib.nsh !include StrFunc.nsh ${Using:StrFunc} StrLoc !define FileReadAuto `!insertmacro FileReadAuto` !macro FileReadAuto ISUTF16LE HANDLE READLINE StrCmp ${ISUTF16LE} 0 0 +3 FileRead ${HANDLE} ${READLINE} Goto +2 FileReadUTF16LE ${HANDLE} ${READLINE} !macroend !define FileFindStrStruct `(i, i, &t${NSIS_MAX_STRLEN}) p` !define FileFindStr `!insertmacro FileFindStr` !macro FileFindStr OUTPUT FILENAME STRTOFIND Push '${STRTOFIND}' Push '${FILENAME}' ${CallArtificialFunction} FileFindStr_macro Pop ${OUTPUT} !macroend !macro FileFindStr_macro Exch $0 Exch Exch $1 Push $2 Push $3 Push $4 Push $5 Push $6 Push $7 StrCpy $5 0 StrCpy $7 0 FileOpen $2 $0 R IfErrors FileFindStr_macro_end FileReadWord $2 $4 ${If} $4 = 0xFEFF StrCpy $3 1 ${Else} StrCpy $3 0 ${EndIf} FileSeek $2 0 SET ${Do} ${FileReadAuto} $3 $2 $4 ${IfThen} ${Errors} ${|} ${ExitDo} ${|} IntOp $5 $5 + 1 ${StrLoc} $6 $4 $1 > ${If} $6 != '' System::Call '*${FileFindStrStruct} (r5, r6, r4) .r7' ${ExitDo} ${EndIf} ${Loop} FileClose $2 FileFindStr_macro_end: StrCpy $0 $7 Pop $7 Pop $6 Pop $5 Pop $4 Pop $3 Pop $2 Pop $1 Exch $0 !macroend Section ${FileFindStr} $0 '$SYSDIR\drivers\etc\hosts' 'Word.com' ${If} $0 <> 0 MessageBox MB_OK " Нужное слово найдено " ${Else} MessageBox MB_OK " Нужное слово НЕ найдено " ${EndIf} SectionEnd Function .onInit Var /GLOBAL Proga ReadRegStr $Proga HKLM "SOFTWARE\Test" "Test" FunctionEnd |
Отправлено: 14:46, 09-04-2023 | #2717 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:22, 09-04-2023 | #2718 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz,
Теперь заработало, как надо. Спасибо за оперативный отклик. P.S. Сравнивал скорость поиска по ${LineRead} и вашим кодом. Брал 400 строк и нужная вконце, одна строка - одно слово. Ваш код находит мгновенно, а через ${LineRead} около 8-10 секунд. |
Отправлено: 15:44, 09-04-2023 | #2719 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать Всем доброго дня.
Помогите, пожалуйста с такой проблемой. В одной из папок имеются одна папка с известным названием и несколько неизвестных папок ("Test kkkkkk", "Test ххх", "Test yyyyyyyy", "Test zzzz", ....). Во всех папок первое слово одинаковое. Нужно удалить неизвестные папки, у которых значения k, x, Y, z, ... непостоянные (неизвестные). Как вариант подойдет что нибудь типа "удалить все папки, кроме одной с известным названием". |
Отправлено: 19:30, 25-04-2023 | #2720 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|