|
Компьютерный форум 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 |
![]() Пользователь Сообщения: 95
|
Профиль | Отправить PM | Цитировать Цитата MKN:
![]() |
|
Отправлено: 17:35, 06-03-2014 | #1081 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось wolkow70, 11-03-2014 в 17:51. Отправлено: 15:01, 11-03-2014 | #1082 |
Ветеран Сообщения: 2371
|
Профиль | Отправить PM | Цитировать Цитата wolkow70:
ClearErrors EnumRegKey $0 HKCR "SOFTWARE\Test" 0 IfErrors 0 keyexist # key does not exist keyexist: ClearErrors ReadRegStr $0 HKLM "SOFTWARE\Test" "" ${If} ${Errors} ; или , в зависимости от ситуации, используем ${If} $0 == "" # key does not exist ${EndIf} |
|
Последний раз редактировалось MKN, 12-03-2014 в 11:09. Отправлено: 10:46, 12-03-2014 | #1083 |
Ветеран Сообщения: 2371
|
Профиль | Отправить PM | Цитировать может кому пригодится - конвертация размера файла из KB в MB :
OutFile "Size_test.exe" Var InSize Var OutSize Section ;задаём размер в KB, который надо конвертировать ;StrCpy $InSize 1024 StrCpy $InSize 2048 StrCpy $1 $InSize IntCmp $1 1024 +3 +1 +3 StrCpy $1 "$1.0KB" Goto +12 IntOp $1 $1 * 100 IntOp $1 $1 / 1024 StrCpy $2 $1 "" -1 StrCpy $3 $1 1 -2 StrCpy $1 $1 -2 IntCmp $2 5 +1 +2 +1 IntOp $3 $3 + 1 StrCmp $3 10 +1 +3 StrCpy $3 0 IntOp $1 $1 + 1 StrCpy $1 "$1.$3 MB" StrCpy $OutSize $1 MessageBox MB_ICONINFORMATION|MB_OK '$InSize KB = $OutSize' SectionEnd |
Отправлено: 12:20, 13-03-2014 | #1084 |
Ветеран Сообщения: 2371
|
Профиль | Отправить PM | Цитировать Пользовательские иконки из DLL - в MessageBox
Уже был макрос для этого , но можно использовать и такой вариант : outfile MessageBoxIco_test.exe !define MSGBOXPARAMS '(i, i, i, t, t, i, t, i, i, i) i' !define ID_ICO 16 Section System::Call 'Kernel32::LoadLibrary(t "Fileicons.dll") i .r1' IntCmp $1 0 Err Err 0 System::Call '*${MSGBOXPARAMS}(40, $HWNDPARENT, r1, "Текст сообщения", " Заголовок", 0x80|0x0, i ${ID_ICO}, 0, 0, 0) .r3' System::Call 'User32::MessageBoxIndirect(i r3) v r4' System::Call 'Kernel32::FreeLibrary(i r1) v r4' System::Free $3 Err: SectionEnd ; Кнопки и надписи действий на кнопках ; 0x0 - ОК ; 0x1 - ОК Отмена ; 0x2 - Прервать Повтор Пропустить ; 0x3 - Да Нет Отмена ; 0x4 - Да Нет ; 0x5 - Повтор Отмена ; 0x6 - Отмена Повторить Продолжить ; 0x4000 - ОК Справка Номер ID_ICO необходимой иконки из DLL - смотрим в любом редакторе ресурсов. |
Последний раз редактировалось MKN, 14-03-2014 в 10:45. Отправлено: 10:39, 14-03-2014 | #1085 |
Пользователь Сообщения: 112
|
Профиль | Сайт | Отправить PM | Цитировать Есть такой плагин WPatch
Вместе с ним идет пример сценария. ; WPatch - Sample script !system "rmdir /s /Q dir_to_patch" !system "xcopy /E /Q /H dir1\* dir_to_patch\" !ifdef TARGETDIR !addplugindir "${TARGETDIR}" !else !addplugindir "..\..\bin" !endif Name "Sample WPatch" OutFile Sample.exe ShowInstDetails show InstallDir $EXEDIR\dir_to_patch Page directory Page instfiles Section InitPluginsDir SectionEnd !include WGenPatDir.nsh Section IfErrors 0 +2 MessageBox MB_OK "There has been some errors !" SectionEnd В примере также имеются папки с файлами dir1 и dir2. Соответственно, первая - с исходными файлами и папками, вторая - с измененными. После запуске батника создается файл отличий *.pat и WGenPatDir.nsh, который в дальнейшем будет использоваться для пропатчивания. Если я правильно понял вторую строку, то содержимое папки dir1 должно скопироваться в папку dir_to_patch во время компиляции сценария? Созданный патч Sample.exe после запуска "натравливается" на содержимое этой папки dir_to_patch. В реальности, папка dir_to_patch удаляется, а такая же, с исходным содержимым папки dir1, не появляется. В чем прикол? В русскоязычном Руководстве о параметрах команды !system написано не очень много и не совсем по-русски. Практически же, я в InstallDir прописываю путь к нужной мне (исходной) папке, содержимое которой дублируется в папке dir1 для создания данных патча , а выделенные красным строки игнорирую, как комментарий. |
Последний раз редактировалось Kopejkin, 16-03-2014 в 15:16. Отправлено: 15:10, 16-03-2014 | #1086 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата Kopejkin:
!system - компилятор задействует системные ресурсы (приложения) Цитата:
2 копируется содержимое каталога dir1 в каталог dir_to_patch (этот каталог создается заново, для того, что бы не попали в проект файлы предыдущей компиляции) Цитата Kopejkin:
|
|||
------- Последний раз редактировалось kotkovets, 17-03-2014 в 15:34. Отправлено: 15:29, 17-03-2014 | #1087 |
Пользователь Сообщения: 112
|
Профиль | Сайт | Отправить PM | Цитировать Используя в сценарии этот код
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}_Localize" !define PRODUCT_UNINST_ROOT_KEY "HKLM" SetShellVarContext all CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}" CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Удалить русификатор ${PRODUCT_NAME}.lnk" "$INSTDIR\unrus.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}${PRODUCT_VERSION}. Удалить русификатор" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\unrus.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "1.0" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "©Kopejkin, 03/2014" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\unrus.exe" WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "NoModify" 0x00000001 На Win7 ярлык нормально отображается в меню Пуск. Как правильно написать и для Win 8? Разрядность ОС - только х64 |
Последний раз редактировалось Kopejkin, 21-03-2014 в 17:36. Отправлено: 15:42, 21-03-2014 | #1088 |
![]() Пользователь Сообщения: 95
|
Профиль | Отправить PM | Цитировать Kopejkin, если во всем сценарии нет ошибок, то все ярлыки будут созданы согласно указанным командам. По крайней мере у себя я таких проблем не наблюдаю (пользуюсь NSIS v3.0a2). Вот проверил на виртуалке:
|
Отправлено: 02:54, 22-03-2014 | #1089 |
Пользователь Сообщения: 112
|
Профиль | Сайт | Отправить PM | Цитировать Flix, поделитесь этим тестовым сценарием, пожалуйста. Попробую сам разобраться, а для этого потребуется 100% рабочий.
|
Последний раз редактировалось Kopejkin, 22-03-2014 в 03:56. Отправлено: 03:51, 22-03-2014 | #1090 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|