|
Компьютерный форум 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 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать Begin2Fly,
Спасибо. Еще чуток лет и я постигну азы NSIS. И еще вопрос, в NSIS есть такое, чтобы MessageBox было без MB_YESNO и т.д, а чтобы окошко показывалось, к примеру с моей фразой нужное количество секунд? И, где вы берете все эти коды? Ведь в справке их нет. |
Последний раз редактировалось динозавра, 22-08-2019 в 07:42. Отправлено: 05:34, 22-08-2019 | #2291 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата динозавра:
Include\ содержит заголовочные файлы (.nsh), подключаемые через !include. Многие хорошо документированы Examples\ -- примеры к nsh и плагинам Docs\ -- документы к nsh и плагинам 2. https://nsis.sourceforge.io/Developer_Center -- дополнительные плагины, примеры Цитата динозавра:
А вот пример MessageBox с таймаутом: Скрытый текст
Name "MessageBoxTimeout" OutFile "MessageBoxTimeout.exe" RequestExecutionLevel user Page instfiles Section "" SectionEnd ; заголовок Var MsgBoxTitle ; текст Var MsgBoxText ; таймаут в милисекундах Var MsgBoxTimeout ; параметр uType (комбинация значений) ; https://docs.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-messageboxa Var MsgBoxParams Function .onInit StrCpy $MsgBoxTimeout 3500 ; время в милисекундах StrCpy $MsgBoxTitle "MessageBoxTimeoutA func test" StrCpy $MsgBoxText "Timeout set to $MsgBoxTimeout msec." StrCpy $MsgBoxParams 0x00001000 ; MB_SYSTEMMODAL IntOp $MsgBoxParams $MsgBoxParams | 0x00010000 ; MB_SETFOREGROUND IntOp $MsgBoxParams $MsgBoxParams | 0x00000030 ; MB_ICONEXCLAMATION IntOp $MsgBoxParams $MsgBoxParams | 0x00000004 ; MB_YESNO System::Call "user32::MessageBoxTimeoutA(p $HWNDPARENT, t '$MsgBoxText', t '$MsgBoxTitle', i $MsgBoxParams, i 0, i $MsgBoxTimeout)i.s" Pop $0 MessageBox MB_OK|MB_ICONINFORMATION "result = $0" Quit FunctionEnd |
||
Последний раз редактировалось iglezz, 22-08-2019 в 11:33. Отправлено: 10:28, 22-08-2019 | #2292 |
Ветеран Сообщения: 2371
|
Профиль | Отправить PM | Цитировать Цитата динозавра:
Пример попроще(суть та же, что и выше) : OutFile "MsgBoxTimeoutTest.exe" !define MsgBoxTimeout "!insertmacro macro__MsgBoxTimeout" !macro macro__MsgBoxTimeout text caption_text time System::Call "user32::MessageBoxTimeout(i$HWNDPARENT, t`${text}`, t`${caption_text}`,i0,i0, i${time})" !macroend Section ${MsgBoxTimeout} "Сообщение закроется через 2 секунды" "MessageBoxTimeout" 2000 SectionEnd Цитата iglezz:
|
||
Последний раз редактировалось MKN, 22-08-2019 в 13:24. Отправлено: 13:15, 22-08-2019 | #2293 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать Всем привет.
Вот, что у меня получилось. Скрытый текст
!define NAME "Registry cleaning" VIProductVersion "0.0.0.1" VIAddVersionKey "LegalCopyright" "© Lbyjpfdh" VIAddVersionKey "FileVersion" "0.1" VIAddVersionKey "FileDescription" "Cleaning and editing the registry" VIAddVersionKey "ProductName" "For version Total Uninstall 6.27.0.565" VIAddVersionKey "ProductVersion" "0.0.0.1" Name "${NAME}" Caption "${NAME}" OutFile "Cleaning and editing the registry.exe" InstallDir "$TEMP" Icon "icon.ico" !include x64.nsh !include "FileFunc.nsh" !include "LogicLib.nsh" SilentInstall silent SetCompress off Section SetOutPath "$TEMP" SetOverwrite on File "..\..\..\..\install\Registry cleaning.exe" File "..\..\..\..\install\TrashRegFull.exe" File "..\..\..\..\install\TrashRegX64Full.exe" File "..\..\..\..\install\ACL.TXT" File "..\..\..\..\install\ACLL.TXT" File "..\f.bat" Delete "$APPDATA\mntemp" Delete "$WINDIR\System32\linjqbyk.kfl" Delete "$SYSDIR\linjqbyk.kfl" Delete "$WINDIR\SysWOW64\linjqbyk.kfl" SectionEnd Section ${DisableX64FSRedirection} Delete "$WINDIR\System32\linjqbyk.kfl" Delete "$SYSDIR\linjqbyk.kfl" SectionEnd Function .onInit System::Call "kernel32::GetUserDefaultLCID() i.r0" IntOp $LANGUAGE $0 & 0xFFFF IntFmt $0 "%04X" $0 FunctionEnd Section ${If} $0 = 0419 MessageBox MB_YESNO|MB_TOPMOST|MB_USERICON "Хотие очистить реестр от триальных ключей?" IDYES a IDNO b Abort a: Exec '"$INSTDIR\Registry cleaning.exe"' nsExec::Exec '"$INSTDIR\f.bat"' MessageBox MB_OK|MB_TOPMOST|MB_USERICON "Реестр от триальных ключей очищен." b: Delete "$INSTDIR\*.*" Abort MessageBox MB_OK|MB_TOPMOST|MB_USERICON "Реестр от триальных ключей очищен." Delete "$INSTDIR\*.*" ${EndIf} ${If} $0 != 0419 MessageBox MB_YESNO|MB_TOPMOST|MB_USERICON "Wanting to clear the registry of trial keys?" IDYES c IDNO d Abort c: Exec '"$INSTDIR\Registry cleaning.exe"' nsExec::Exec '"$INSTDIR\f.bat"' MessageBox MB_OK|MB_TOPMOST|MB_USERICON "The registry of trial keys is cleared." d: Delete "$INSTDIR\*.*" Abort MessageBox MB_OK|MB_TOPMOST|MB_USERICON "The registry of trial keys is cleared." Delete "$INSTDIR\*.*" ${EndIf} SectionEnd Теперь по порядку. Registry cleaning.exe" это файл с кодом: Скрытый текст
OutFile "Registry cleaning.exe" !define MsgBoxTimeout "!insertmacro macro__MsgBoxTimeout" !macro macro__MsgBoxTimeout text caption_text time System::Call "user32::MessageBoxTimeout(i$HWNDPARENT, t`${text}`, t`${caption_text}}`,i0,i0, i${time})" !macroend SilentInstall silent SetCompress off !include "LogicLib.nsh" Function .onInit System::Call "kernel32::GetUserDefaultLCID() i.r0" IntOp $LANGUAGE $0 & 0xFFFF IntFmt $0 "%04X" $0 FunctionEnd Section ${If} $0 = 0419 ${MsgBoxTimeout} "Процес очистки закончится через несколько секунд." "Registry cleaning" 2500 ${EndIf} ${If} $0 != 0419 ${MsgBoxTimeout} "The cleaning process will end in a few seconds." "Registry cleaning" 2500 ${EndIf} SectionEnd Файлы TrashRegFull.exe и TrashRegX64Full.exe - это "вылеченные" TrashReg, чтобы могла работать в форсированом, скрытом режиме. Файлы ACL.TXT и ACLL.TXT - это получение прав владельца на ключ реестра с использованием встроенной команды REGINI. Файлы - mntemp и linjqbyk.kfl один из многих видов защиты Гаврилы. Файл f.bat - это батник с таким содержимым: Скрытый текст
@echo off start /wait TrashRegFull.exe /forced start /wait TrashRegX64Full.exe /forced REGINI "%temp%\acl.txt" reg delete "HKEY_LOCAL_MACHINE\SECURITY" /va /f reg add "HKEY_LOCAL_MACHINE\SECURITY" /v SecFlagsR0E /t reg_dword /d 4294967295 /f reg add "HKEY_LOCAL_MACHINE\SECURITY" /v SecFlagsR0D /t reg_dword /d 4294967295 /f REGINI "%temp%\acll.txt" exit /b Для чего сделана эта "поделка"? После применения возобновляется работа Total Uninstall 6.27.0.565 с недоломаным лекарством от RmK-FreE. Лекарству от Jongan тоже в помощь. Так же попутно очищается реестр от "мусорных" ключей, отвечающих за триальный период многих програм. Готовая поделка лежит тут - https://www.upload.ee/files/10389548...istry.zip.html Огромная благодарность всем отозвавшимся на мои просьбы о помощи (начиная с моего первого "помогите" Отправлено: 20:53, 09-08-2015 | #1739) Так и не осилил "прикрутить" показ иконки в Registry cleaning.exe и избавиться от кнопки ОК. (Так, было бы красивей и практичней, может, кто поможет и в этом), но для начала сойдет и так. |
Последний раз редактировалось динозавра, 23-08-2019 в 14:49. Отправлено: 07:35, 23-08-2019 | #2294 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Привет народ,
![]() Вообщем, я тут по граблям реестра:: Имеется такой батник: reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Games\Gothic II\System\Spacer.exe" /t REG_SZ /f /d DisableNXShowUI" "HIGHDPIAWARE Function DepInstExceptionEx IfFileExists "$INSTDIR\System\Spacer.exe" 0 +7 ReadRegStr $R0 HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\System\Spacer.exe" StrCmp $R0 "HIGHDPIAWARE" 0 ACFlagsLayers DeleteRegValue HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\System\Spacer.exe" WriteRegStr HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\System\Spacer.exe" "DisableNXShowUI" StrCpy $R0 0 FunctionEnd 1. как поправить код в нсис чтобы работало на осях Вынь ХР ... Вынь 10 ? 2. если код в нсис не поправить, то как передать из скрипта путь игры расположенный на компе клиента ? 3. или есть какой может вариант как батник поправить, тога бы его в тихом режиме запускать без вывода окон и прочей ереси.. ? 4. код батника из скрипта запускать напрямую можно вообще ?! Спасибо ,) |
Отправлено: 12:53, 25-08-2019 | #2295 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать Цитата MaGoth:
параметр C:\Games\Gothic II\System\Spacer.exe тип REG_SZ с данными DisableNXShowUI" "HIGHDPIAWARE Какие то данные странные DisableNXShowUI" "HIGHDPIAWARE , но это вы их так написали. То тогда, вот ваш батник без запроса: @echo off reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Games\Gothic II\System\Spacer.exe" /d DisableNXShowUI" "HIGHDPIAWARE /f exit /b А добавление вашего параметра в реестр в NSIS выглядит примерно так: (но не уверен с кавычками в данные). Или вы не это спрашивали? |
|
Последний раз редактировалось динозавра, 26-08-2019 в 15:05. Причина: Поправил код. Отправлено: 08:35, 26-08-2019 | #2296 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Цитата динозавра:
Цитата динозавра:
Цитата динозавра:
|
|||
Отправлено: 10:55, 27-08-2019 | #2297 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата MaGoth:
|
|
Отправлено: 16:30, 27-08-2019 | #2298 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 23:23, 28-08-2019 | #2299 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать Всем привет. Подскажите, можно как то поменять в строке файла .xml , в которой есть число (неизвестное) одну любую цифру на случайную или как крайний вариант на заданную?
|
Последний раз редактировалось динозавра, 14-09-2019 в 13:07. Отправлено: 12:58, 14-09-2019 | #2300 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|