|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
.: NSIS - все вопросы :. часть 2.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
------- Отправлено: 12:02, 09-12-2012 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать Всем доброго времени суток.
Столкнулся с двумя проблемами. В папке $WINDIR\System32\drivers\ хочу удалить файл .sys. В семерке этот файл спокойно удаляется с помощью макроса и команды: Скрытый текст
В десятке почему то не удаляется. Когда начал пробовать в десятке удалить его вручную, то он пишет, что занят процессом. Но IObit Unlocker показывает, что никаким процессом он не занят и командой "разблокировать и удалить" спокойно его удаляет. Вот такой вопрос, имеется ли в nsis команда типа "снять все атрибуты, разблокировать и удалить", чтобы удалялся в десятке файл, как это делает IObit Unlocker? И вторая проблема. Имеется батник - это вполне рабочий генератор случайного 32 значного кода с записью в нужную область реестра: Скрытый текст
@echo off cls @echo. @echo. call :randomizeSequence 32 sequence @echo sequence = '%sequence%' REG ADD HKLM\Software\Test/v TestId /t REG_SZ /d %sequence% /f exit /b :randomize set MIN=%1 set MAX=%2 set /A %3=%MIN% + (%MAX% - %MIN% + 1) * %random% / 32768 exit /b :fillArray set "array[%cnt%]=%1" set /a cnt +=1 exit /b :initialRandomize if defined ALREADYINIT (exit /b) set ALREADYINIT=true for %%a in ( 1 2 3 4 5 6 7 8 9 a b c d e f g) do ( call :fillArray %%a ) exit /b :accumulate call :randomize 1 15 index call set "char=%%array[%index%]%%" call set "%dst%=%%%dst%%%%char%" exit /b :randomizeSequence set len=%1 set dst=%2 call :initialRandomize for /L %%a in (1 1 %len%) do ( call :accumulate %%a ) exit /b Помогите, пожалуйста сделать то же самое, что в батнике только кодом. |
Отправлено: 06:15, 12-06-2020 | #2441 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата inco1:
Если "IObit Unlocker показывает, что никаким процессом он не занят и командой "разблокировать и удалить" спокойно его удаляет", то он, скорее всего, чего-то не договаривает (дабы не перегрузить пользователю мозг технической информацией ). Цитата inco1:
Скрытый текст
макрос ${GetRandomHexStringG} OUTPUT LENGTH
Запишет в переменную OUTPUT строку длиной: LENGTH символов для 1 <= LENGTH <= 32 32 символа для других значений !include "Util.nsh" !define GetRandomHexStringG '!insertmacro GetRandomHexStringG' !macro GetRandomHexStringG OUTPUT LENGTH Push ${LENGTH} ${CallArtificialFunction} GetRandomHexStringG_ Pop ${OUTPUT} !macroend !macro GetRandomHexStringG_ Push $0 ; result string Exch Exch $1 ; result chars count Push $2 ; guid string Push $3 ; length of guid string Push $4 ; counter Push $5 ; temp / char StrCpy $0 '' System::Call 'ole32::CoCreateGuid(g .r2)' StrLen $3 $2 IntOp $3 $3 - 1 ; to skip last curly bracket StrCpy $4 1 ; to skip first curly bracket Loop: IntCmp $4 $3 ExitLoop 0 ExitLoop StrCpy $5 $2 1 $4 IntOp $4 $4 + 1 StrCmp $5 '-' Loop StrCpy $0 $0$5 IntOp $1 $1 - 1 IntCmp $1 0 ExitLoop Goto Loop ExitLoop: Pop $5 Pop $4 Pop $3 Pop $2 Pop $1 Exch $0 !macroend |
||
Отправлено: 17:54, 12-06-2020 | #2442 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz,
Цитата:
|
|
Отправлено: 21:27, 12-06-2020 | #2443 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать |
Отправлено: 22:32, 12-06-2020 | #2444 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz, Спасибо, буду пробовать.
PS. Всё отлично работает. Правда буквы заглавные, но это не критично. Спасибо. |
Последний раз редактировалось inco1, 12-06-2020 в 23:01. Отправлено: 22:39, 12-06-2020 | #2445 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата inco1:
Вот такой вариант генератора позволяет задавать регистр
!define GetRandomHexStringRL '!insertmacro GetRandomHexStringR x' !define GetRandomHexStringRU '!insertmacro GetRandomHexStringR X' !macro GetRandomHexStringR CASE OUTPUT LENGTH Push ${LENGTH} Push ${CASE} ${CallArtificialFunction} GetRandomHexStringR_ Pop ${OUTPUT} !macroend !macro GetRandomHexStringR_ Exch $0 ; 'x'/'X' Exch Exch $1 ; length Push $2 ; Push $3 ; Push $4 ; Push $5 ; Push $R0 ; CSP handle returned by CryptAcquireContext() Push $R1 ; buffer address for data generated by CryptGenRandom() System::Alloc 32 Pop $R1 System::Call "advapi32::CryptAcquireContext(*i.R0, i0, i0, i1, i0x40)" System::Call "advapi32::CryptGenRandom(iR0, i32, iR1)" System::Call "advapi32::CryptReleaseContext(iR0, i0)" System::Call "*$R1(&i4.r2, &i4.r3, &i4.r4, &i4.r5)" System::Free $R0 StrCpy $R0 "%08$0" IntFmt $2 $R0 $2 IntFmt $3 $R0 $3 IntFmt $4 $R0 $4 IntFmt $5 $R0 $5 StrCpy $0 $2$3$4$5 $1 Pop $R1 Pop $R0 Pop $5 Pop $4 Pop $3 Pop $2 Pop $1 Exch $0 !macroend |
|
Отправлено: 07:20, 13-06-2020 | #2446 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Для генерации стандартного 32 значного GUID, вроде как достаточно :
(${StrFilter} из WordFunc.nsh используем для смены регистра) |
Отправлено: 11:24, 13-06-2020 | #2447 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz,
Цитата:
Рано я обрадовался. Тот первый вариант, что только с верхним регистром отлично вносит 32 знака в реестр и на семерке и на десятке. Этот вариант с нужным мне нижним регистром вносит 32 знака в реестр только на семерке. На десятке вносит 32 нуля. MKN, А как я могу прикрутить ваш код , чтобы добавлялось 32 знака из цифр и нижнего регистра в нужную ветку реестра? |
|
Последний раз редактировалось inco1, 13-06-2020 в 13:33. Отправлено: 11:53, 13-06-2020 | #2448 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:41, 13-06-2020 | #2449 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать MKN,
Это вообще не то. Я же выложил батник, он генерирует такой код d2b7daaed38c3532d7d7aa6895fb96ge iglezz выложил код, который отлично генерит в верхнем регистре 848D8134AB514E70ABE491A6551B5E99 Потом он выложил код с нижним регистром, но который генерит только в семерке, но не хочет генерить в десятке - записывает ноли. Вы выложили код, который генерит следующее {AE68BE6F-43A2-1FB4-423D-D0C358720163} это не то, что я спрашивал. |
Отправлено: 15:08, 13-06-2020 | #2450 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|