|
Компьютерный форум 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 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата vahe-91:
|
|
------- Отправлено: 19:53, 09-11-2013 | #741 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата vahe-91:
http://nsis.sourceforge.net/Rnd http://nsis.sourceforge.net/Random А также: |
|
Отправлено: 10:44, 10-11-2013 | #742 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать Всем привет , у меня есть вопрос ! Можно ли разбить на тома инсталлятор как в Inno Setup ?
|
Отправлено: 13:40, 10-11-2013 | #743 |
Пользователь Сообщения: 110
|
Профиль | Сайт | Отправить PM | Цитировать Делаю патчер с проверкой MD5 файла. При каких-либо отличиях выводятся свои сообщения. При наличии измененного этим патчем файла (сооб.1) и при несоответствии оригинального файла (сооб.2). Возврат к поиску другой папки после Сооб.2 оправдан. А вот после Сооб.1 приходится выполнять лишнее действие. Даже два, так как приходится щелкать еще и в окне запроса подтверждения отмены установки.
Можно ли закрыть программу инсталляции сразу после вывода сообщения 1, а не возвращаться для отдельной отмены установки? !include "MUI2.nsh" !include "VPatchLib.nsh" !include "Logiclib.nsh" !include "ProcessFunc.nsh" SetCompressor /SOLID lzma !define PRODUCT_NAME "Screenshot Captor" !define PRODUCT_VERSION "4.7.2" !define pkgdir "d:\pr_ScreenshotCaptor.472" !define BRANDING "©KOPEJKIN, 10/2013" !define MUI_ABORTWARNING !define MUI_ABORTWARNING_TEXT "Отменить установку русификатора ${PRODUCT_NAME} ${PRODUCT_VERSION}?" !define MUI_WELCOMEFINISHPAGE_BITMAP "${pkgdir}\res\logo.bmp" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "${pkgdir}\res\top_rus_inst_r.bmp" !define MUI_HEADERIMAGE_RIGHT !insertmacro MUI_PAGE_LICENSE "lic_rus.rtf" !define MUI_PAGE_HEADER_TEXT "Информация" !define MUI_LICENSEPAGE_TEXT_BOTTOM " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " !define MUI_LICENSEPAGE_BUTTON "Далее" !insertmacro MUI_PAGE_LICENSE "ug_rus.rtf" !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Check !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_LANGUAGE "Russian" Caption "Русификация ${PRODUCT_NAME} ${PRODUCT_VERSION}" Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" BrandingText "${BRANDING}" InstallDir "" OutFile "sc472rus.kopejkin.exe" RequestExecutionLevel admin ShowInstDetails show ShowUninstDetails show Section "-Русификатор" SetOutPath $INSTDIR CreateDirectory "$INSTDIR\Backup" CopyFiles /SILENT $INSTDIR\ScreenshotCaptor.exe $INSTDIR\Backup\ScreenshotCaptor.exe.bak DetailPrint "Подготовка к изменению файла ScreenshotCaptor.exe..." !insertmacro VPatchFile "sc472rus.pat" "$INSTDIR\ScreenshotCaptor.exe" "$INSTDIR\temporaryfile.exe" SectionEnd Function .OnInit ${KillProcess} "ScreenshotCaptor.exe" $0 FunctionEnd Function .onVerifyInstDir IfFileExists "$INSTDIR\ScreenshotCaptor.exe" PathGood Abort PathGood: FunctionEnd Function Check StrCpy $0 "$INSTDIR\ScreenshotCaptor.exe" md5dll::GetMD5File "$0" Pop $1 StrCpy $R1 $1 ${If} $R1 == 2422E63F23D86C754C5CB9606196D036 ${ElseIf} $R1 == 5755a1c31f67191f0fbcaa9548c48e8e MessageBox MB_OK|MB_DEFBUTTON2|MB_ICONINFORMATION "\ РУССКАЯ версия УЖЕ установлена на этом компьютере.$\n$\n\ Нажмите кнопку 'OK' для закрытия этого сообщения$\n\ и ОТМЕНИТЕ установку данного русификатора." IDOK Quit ; Здесь применяем команду Quit, а не Abort. Тогда после нажатия кнопки ОК программа установки будет закрыта . ${Else} MessageBox MB_OK|MB_ICONSTOP| "Здесь - ($INSTDIR),$\n\ находится файл программы, для изменения которого$\n\ данный русификатор НЕ ПРЕДНАЗНАЧЕН!$\n$\n\ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~$\n\ Возможные причины: $\n\ - выбрана неверная папка ${PRODUCT_NAME} ${PRODUCT_VERSION};$\n\ - программа ${PRODUCT_NAME} ${PRODUCT_VERSION} не установлена;$\n\ - попытка локализовать ${PRODUCT_NAME} другой версии;$\n\ - попытка локализовать измененный оригинальный файл.$\n$\n\ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~$\n$\n\ Нажмите 'OK' для выбора другой папки или ОТМЕНЫ установки." IDOK Abort ${EndIf} FunctionEnd |
Последний раз редактировалось Kopejkin, 11-11-2013 в 13:55. Отправлено: 13:42, 10-11-2013 | #744 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата Kopejkin:
|
|
------- Последний раз редактировалось kotkovets, 10-11-2013 в 15:44. Отправлено: 15:36, 10-11-2013 | #745 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Возможно ли в NSIS реализовать мониторинг создания ключей реестра, какой либо программой ?
Т.е. перехват обращений к реестру. Вроде как для этого есть функция CmRegisterCallback... Вскользь про это было здесь : http://www.xakep.ru/magazine/xa/102/114/1.asp |
Отправлено: 12:44, 11-11-2013 | #746 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата MKN:
А нужно ли это установщику? |
|
------- Отправлено: 14:24, 11-11-2013 | #747 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
То что эти ключи и данные остаются в реестре - полбеды. В ряде случаев именно из-за их наличия, не возможно повторно установить программу, либо программа просто не станет работать... Поэтому полная зачистка реестра от этой заразы, как перед установкой, так и при деинсталляции ПО, была бы очень полезна. Поэтому есть смысл мониторить образование таких ключей Цитата kotkovets:
|
||
Отправлено: 14:40, 11-11-2013 | #748 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Когда то рассматривался вопрос об использовании в качестве картинок - файлов формата Jpg
Есть код, позволяющий использовать Jpg и Gif файлы, а также изменять их размер : !include MUI2.nsh Page Custom mypage !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "Russian" OutFile "Jpg-Resize-test.exe" ; Ссылка на идентификатор интерфейса, описывающий тип указателя интерфейса для возврата в ppvRet. !ifndef IID_IPicture !define IID_IPicture {7BF80980-BF32-101A-8BBB-00AA00300CAB} !endif !define SRCCOPY 0xCC0020 !define IMAGEPATH "$EXEDIR\Pict.jpg" ; !define NEWSIZEW 300 !define NEWSIZEH 200 Function mypage nsDialogs::Create 1044 Pop $0 System::Call 'oleaut32::OleLoadPicturePath(w "${IMAGEPATH}",i0r2,i0,i0,g"${IID_IPicture}",*i.r9)i.r1' ${If} $1 = 0 System::Call 'user32::GetDC(i0)i.s' System::Call 'gdi32::CreateCompatibleDC(iss)i.r1' System::Call 'gdi32::CreateCompatibleBitmap(iss,i${NEWSIZEW},i${NEWSIZEH})i.r2' System::Call 'user32::ReleaseDC(i0,is)' System::Call $9->3(*i.r3)i.r4 ; IPicture->get_Handle ${If} $4 = 0 System::Call 'gdi32::SetStretchBltMode(ir1,i4)' System::Call '*(&i40,&i1024)i.r4' ; BITMAP / BITMAPINFO System::Call 'gdi32::GetObject(ir3,i24,ir4)' System::Call 'gdi32::SelectObject(ir1,ir2)i.s' System::Call '*$4(i40,i.r6,i.r7,i0,i,i.s)' ; Grab size and bits-ptr AND init as BITMAPINFOHEADER System::Call 'gdi32::GetDIBits(ir1,ir3,i0,i0,i0,ir4,i0)' ; init BITMAPINFOHEADER System::Call 'gdi32::GetDIBits(ir1,ir3,i0,i0,i0,ir4,i0)' ; init BITMAPINFO System::Call 'gdi32::StretchDIBits(ir1,i0,i0,i${NEWSIZEW},i${NEWSIZEH},i0,i0,ir6,ir7,is,ir4,i0,i${SRCCOPY})' System::Call 'gdi32::SelectObject(ir1,is)' System::Free $4 ${EndIf} System::Call 'gdi32::DeleteDC(ir1)' System::Call $9->2() ; IPicture->release() ${EndIf} ${NSD_CreateBitmap} 1u 1u ${NEWSIZEW} ${NEWSIZEH} "" Pop $9 ;Not required when the control size matches: ${NSD_AddStyle} $9 ${SS_CENTERIMAGE} SendMessage $9 ${STM_SETIMAGE} ${IMAGE_BITMAP} $2 nsDialogs::Show System::Call 'gdi32::DeleteObject(ir2)' FunctionEnd Section SectionEnd |
Отправлено: 13:37, 12-11-2013 | #749 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать При создании на стандартной финишной странице отмеченного чекбокса ( MUI_FINISHPAGE_RUN ), для запуска после установки (т.е. после закрытия PAGE_FINISH) чего либо ,
чтобы этого запуска не было, сначала надо снять отметку с чекбокса, а потом кликнуть Finish. Иногда это не преемлемо и мешает управлению событиями... Но на FINISHPAGE можно активировать кнопку "Cancel", нажатие которой, закроет страницу без запуска чего либо, даже если чекбокс отмечен. OutFile "FinishCancelEnabled_test.exe" !include MUI2.nsh !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_INSTFILES #Do NOT use MUI_FINISHPAGE_CANCEL_ENABLED ! !define MUI_FINISHPAGE_RUN "$windir\explorer.exe" !define MUI_PAGE_CUSTOMFUNCTION_SHOW CancelEnabled !insertmacro MUI_PAGE_FINISH !insertmacro MUI_LANGUAGE "English" !ifndef SC_CLOSE !define SC_CLOSE 0xF060 !endif Function CancelEnabled EnableWindow $mui.Button.Cancel 1 System::Call 'USER32::GetSystemMenu(i $hwndparent,i0)i.s' System::Call 'USER32::EnableMenuItem(is,i${SC_CLOSE},i0)' FunctionEnd Section SectionEnd |
Последний раз редактировалось MKN, 13-11-2013 в 11:46. Отправлено: 11:38, 13-11-2013 | #750 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|