|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум 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 |
|
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата vahe-91:
![]() |
|
|
------- Отправлено: 19:53, 09-11-2013 | #741 |
|
Ветеран Сообщения: 2398
|
Профиль | Отправить 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 |
|
Пользователь Сообщения: 117
|
Профиль | Сайт | Отправить 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 |
|
Ветеран Сообщения: 2398
|
Профиль | Отправить 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 |
|
Ветеран Сообщения: 2398
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
То что эти ключи и данные остаются в реестре - полбеды. В ряде случаев именно из-за их наличия, не возможно повторно установить программу, либо программа просто не станет работать... Поэтому полная зачистка реестра от этой заразы, как перед установкой, так и при деинсталляции ПО, была бы очень полезна. Поэтому есть смысл мониторить образование таких ключей Цитата kotkovets:
|
||
|
Отправлено: 14:40, 11-11-2013 | #748 |
|
Ветеран Сообщения: 2398
|
Профиль | Отправить 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 |
|
Ветеран Сообщения: 2398
|
Профиль | Отправить 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 | |
|