Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка приложений (http://forum.oszone.net/forumdisplay.php?f=61)
-   -   Notepad++. Собственный инсталлер (http://forum.oszone.net/showthread.php?t=101982)

hb860 03-03-2008 18:10 752559

Notepad++. Собственный инсталлер
 
Вложений: 1
Предлагаю свой вариант установки 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


dimmell 10-03-2008 13:57 756996

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

hb860 11-03-2008 10:18 757680

Цитата:

Цитата hb860
Это скорее для энтузиастов. »


Compilyator 15-06-2008 13:43 826497

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

hb860 15-06-2008 21:56 826794

Поподробней...это что ? Не пользуюсь сам этой возможностью.


Время: 05:16.

Время: 05:16.
© OSzone.net 2001-