Войти

Показать полную графическую версию : Notepad++. Собственный инсталлер


hb860
03-03-2008, 18:10
Предлагаю свой вариант установки Notepad++ (http://notepad-plus.sourceforge.net/ru/site.htm)
Хочу оговориться, Notepad++ прекрасно работает и без установки. Это скорее для энтузиастов.
Порядок действий
1. Качаем исходную информацию(всё находится в разделе "Скачать" оффициального сайта)
1.1 Качаем программу, например, в формате ZIP-ахива, с оффициального сайта(ссылка выше)
1.2 Качаем файл локализации russian.xml
1.3 Берем логотипчик там же(в моём случае npp.logo5.png)
1.4 Берем плагины
1.5 Берем справку CHM
2. Распаковываем архив(в моём случае в папку d:\npp), кладем в неё russian.xml и переименовываем в nativeLang.xml, туда же кладем справку
3. Берем две иконки, одну для инсталлера, другую для деинсталятора. Предположим, что скрипт для установки лежит в c:\nsis
Создаем папку c:\nsis\icons, кладём туда иконки и называем modern-install.ico и modern-uninstall.ico
4. Логотипчик открываем в любой программе, которая умеет сохранять изображения в BMP, и сохраняем в файл npp_logo5.bmp;
создаем папку c:\nsis\bmp и кладем полученный файл туда.
5. Добавляем плагины в папку d:\npp\plugins
6. Компилим скрипт, получаем инсталлятор, который ставится с ключом /S тихо(не создавая ярлык на рабочем столе), или "громко" с выбором того, что ставить

Примечание.
1. Можно избавиться от манипуляций с картинками если убрать это:
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "BMP\npp_logo5.bmp"
!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
!define MUI_HEADERIMAGE_RIGHT
2. Можно избавиться от манипуляций с иконками если заменить это:
!define MUI_ICON "Icons\modern-install.ico"
!define MUI_UNICON "Icons\modern-uninstall.ico"
На это
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"

Также целесообразно обратить внимание на следующие определения в начале скрипта:
!define PRODUCT_NAME "Notepad++"
!define PRODUCT_VER "4.8.1"
!define out_file "npp.exe" - имя файла исталятора
!define src_dir "d:\npp" - путь к файлам для включения в дистрибутив

Собственно, скрипт:
!define PRODUCT_NAME "Notepad++"
!define PRODUCT_VER "4.8.1"
!define out_file "npp.exe"
!define src_dir "d:\npp"

; MUI 1.67 compatible ------
!include "MUI.nsh"
;SetCompress off
SetCompressor /SOLID lzma
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "Icons\modern-install.ico"
!define MUI_UNICON "Icons\modern-uninstall.ico"

!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "BMP\npp_logo5.bmp"
!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
!define MUI_HEADERIMAGE_RIGHT


!define MUI_COMPONENTSPAGE_NODESC
; Welcome page
!insertmacro MUI_PAGE_WELCOME
;dir
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
;!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Russian"

; MUI end ------

Name "${PRODUCT_NAME}"
Caption "${PRODUCT_NAME} ${PRODUCT_VER}"
OutFile "${out_file}"
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
ShowInstDetails show
ShowUninstDetails show

InstType "Полная"
InstType "Сокращенная"
InstType "Минимальная"

Section "!${PRODUCT_NAME}"
SectionIn 1 2 3 RO
SetOutPath "$INSTDIR"
File /r /x "nppshellext.dll" /x "Notepad++.UserManual.chm" "${src_dir}\*.*"

WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayName" "${PRODUCT_NAME} ${PRODUCT_VER}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "UninstallString" '"$INSTDIR\uninst.exe"'
WriteUninstaller "uninst.exe"

SetShellVarContext All
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME} ${PRODUCT_VER}"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME} ${PRODUCT_VER}\${PRODUCT_NAME} ${PRODUCT_VER}.lnk" "$INSTDIR\notepad++.exe" "" "$INSTDIR\notepad++.exe" 0
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME} ${PRODUCT_VER}\Удалить ${PRODUCT_NAME} ${PRODUCT_VER}.lnk" "$INSTDIR\uninst.exe" "" "$INSTDIR\uninst.exe" 0
SectionEnd

Section "Справка"
SectionIn 1
SetShellVarContext All
SetOutPath "$INSTDIR"
File "${src_dir}\Notepad++.UserManual.chm"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME} ${PRODUCT_VER}\${PRODUCT_NAME} Справка.lnk" "$INSTDIR\Notepad++.UserManual.chm"
SectionEnd

Section "Контекстное меню Проводника"
SectionIn 1 2
SetOutPath "$INSTDIR"
File "${src_dir}\nppshellext.dll"
RegDLL "$INSTDIR\nppshellext.dll"
SectionEnd

Section "Ярлык на рабочий стол"
SectionIn 1
IfSilent +3
SetShellVarContext All
CreateShortCut "$DESKTOP\${PRODUCT_NAME} ${PRODUCT_VER}.lnk" "$INSTDIR\notepad++.exe" "" "$INSTDIR\notepad++.exe" 0
SectionEnd

Section "Uninstall"
; Remove registry keys
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
; Remove directories used
UnRegDLL "$INSTDIR\nppshellext.dll"
SetShellVarContext All
RMDir /r "$SMPROGRAMS\${PRODUCT_NAME} ${PRODUCT_VER}"
RMDir /r "$INSTDIR"
Delete "$DESKTOP\${PRODUCT_NAME} ${PRODUCT_VER}.lnk"
SectionEnd

Function un.onInit
MessageBox MB_YESNO|MB_ICONQUESTION "Удалить ${PRODUCT_NAME} ${PRODUCT_VER}?" IDYES NoAbort
Abort ; causes uninstaller to quit.
NoAbort:
FunctionEnd

dimmell
10-03-2008, 13:57
А зачем столь сложные манипуляции, если инсталятором с офсайта ставится русский и с плагиними и втихую с ключем -S ?

hb860
11-03-2008, 10:18
Это скорее для энтузиастов. »

Compilyator
15-06-2008, 13:43
У меня вопрос, как добавить интеграцию просмоторщика хтмл страниц по-умолчанию в ие? В оригинальном это есть, тут можно добавить?

hb860
15-06-2008, 21:56
Поподробней...это что ? Не пользуюсь сам этой возможностью.




© OSzone.net 2001-2012