Предлагаю свой вариант установки
Notepad++
Хочу оговориться, 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