hb860
24-10-2008, 21:52
Приветствую, форумчане.
Всвязи с тем что уже неоднократно слышу просьбы замутить сабж, собственно, мучу:)
Итак, постановка задачи: требуется обеспечить возможность установки темы иконок тулбара Notepad++ с применением после установки, а также обеспечить возможность тихой установки оной.
Сборка c темой Crystal++ приложена к этому сообщению. Ставится: Notepad Toolbar Skin.exe /S
Как сделать самому(на примере темы Crystal++)
1. Создаем d:\npp_toolbar\
2. в d:\npp_toolbar\Icons\ кладем файлы темы(d:\npp_toolbar\Icons\blank.ico,d:\npp_toolbar\Icons\close_disabled.ico,d:\npp_toolbar\Icons\clo se_hover.ico)
3. Кладем toolbarIcons.xml в d:\npp_toolbar\toolbarIcons.xml
Компилим скрипт. Что он делает
1. Копирует в папку c:\Program Files\Notepad++\CrystalToolbar\ иконки, указанные в d:\npp_toolbar\Icons\
2. смотрит наличие doLocalConf.xml, если есть
2.1 Пихает ToolbarIcons.xml в c:\Program Files\Notepad++\ и правит там config.xml для применения темы
2.2 если нет, делает тоже самое в %appdata%\notepad++ для текущего пользователя
Использование с инсталятором.
После тихой установки официального исталера нет файла config.xml. Мой скрипт его не генерит, а только правит. Чтоб он создался, необходимо
Вариант 1. Запустить после установки notepad++, он создат config.xml, потом прибить его taskkill
Вариант 2. Скопировать config.xml в %appdata%\notepad++ или файлы config.xml и doLocalConf.xml в c:\Program Files\Notepad++\
Вариант 3. Перепаковать notepad++ моим скриптом, включив нужные файлы http://forum.oszone.net/thread-101982.html
После этого запускать Notepad Toolbar Skin.exe /S
Скрипт пакует и применяет только одну тему. Если возникнет интерес/необходимость пользователей - фукциональность будет расширена.
Для скрипта нужен плагин http://nsis.sourceforge.net/XML_plug-in
Код скрипта:
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "Notepad Toolbar Skin"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "XML.nsh"
SetCompressor /SOLID lzma
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Russian"
; MUI end ------
Name "${PRODUCT_NAME}"
OutFile "${PRODUCT_NAME}.exe"
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
ShowInstDetails show
ShowUnInstDetails show
Var e
Function .onInit
ReadRegStr $INSTDIR HKEY_LOCAL_MACHINE "SOFTWARE\Notepad++" ""
StrCpy $R0 $INSTDIR
StrCpy $INSTDIR "$INSTDIR\CrystalToolbar\"
FunctionEnd
Section "MainSection" SEC01
SetAutoClose false
SetOutPath "$INSTDIR"
File /r "d:\npp_toolbar\Icons\*.*"
StrCpy $e "LoadFile:config.xml"
IfFileExists "$R0\doLocalConf.xml" OneUser MultiUser
MultiUser:
SetOutPath "$APPDATA\Notepad++\"
Goto end
OneUser:
SetOutPath "$R0"
Goto end
end:
File "d:\npp_toolbar\toolbarIcons.xml"
${xml::LoadFile} "$OUTDIR\toolbarIcons.xml" $0
${xml::GotoPath} "/NotepadPlus/ToolBarIcons/Theme" $0
${xml::SetAttribute} "pathPrefix" "$INSTDIR\" $0
DetailPrint "Theme path:$R9"
${xml::SaveFile} "" $0
${xml::LoadFile} "$OUTDIR\config.xml" $0
${xml::GotoPath} "/NotepadPlus/GUIConfigs/GUIConfig" $0
${xml::SetText} "large" $0
${xml::SaveFile} "" $0
${xml::Unload}
SectionEnd
P.S. Лично мне чихать какие у этой программы иконки. Для меня это мощный рабочий инструмент
Проверялось: Windows XP sp3 x86. Теоретически работает во всех NT6.x при запуске исталятора с повышенными привелегиями.
Всвязи с тем что уже неоднократно слышу просьбы замутить сабж, собственно, мучу:)
Итак, постановка задачи: требуется обеспечить возможность установки темы иконок тулбара Notepad++ с применением после установки, а также обеспечить возможность тихой установки оной.
Сборка c темой Crystal++ приложена к этому сообщению. Ставится: Notepad Toolbar Skin.exe /S
Как сделать самому(на примере темы Crystal++)
1. Создаем d:\npp_toolbar\
2. в d:\npp_toolbar\Icons\ кладем файлы темы(d:\npp_toolbar\Icons\blank.ico,d:\npp_toolbar\Icons\close_disabled.ico,d:\npp_toolbar\Icons\clo se_hover.ico)
3. Кладем toolbarIcons.xml в d:\npp_toolbar\toolbarIcons.xml
Компилим скрипт. Что он делает
1. Копирует в папку c:\Program Files\Notepad++\CrystalToolbar\ иконки, указанные в d:\npp_toolbar\Icons\
2. смотрит наличие doLocalConf.xml, если есть
2.1 Пихает ToolbarIcons.xml в c:\Program Files\Notepad++\ и правит там config.xml для применения темы
2.2 если нет, делает тоже самое в %appdata%\notepad++ для текущего пользователя
Использование с инсталятором.
После тихой установки официального исталера нет файла config.xml. Мой скрипт его не генерит, а только правит. Чтоб он создался, необходимо
Вариант 1. Запустить после установки notepad++, он создат config.xml, потом прибить его taskkill
Вариант 2. Скопировать config.xml в %appdata%\notepad++ или файлы config.xml и doLocalConf.xml в c:\Program Files\Notepad++\
Вариант 3. Перепаковать notepad++ моим скриптом, включив нужные файлы http://forum.oszone.net/thread-101982.html
После этого запускать Notepad Toolbar Skin.exe /S
Скрипт пакует и применяет только одну тему. Если возникнет интерес/необходимость пользователей - фукциональность будет расширена.
Для скрипта нужен плагин http://nsis.sourceforge.net/XML_plug-in
Код скрипта:
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "Notepad Toolbar Skin"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "XML.nsh"
SetCompressor /SOLID lzma
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Russian"
; MUI end ------
Name "${PRODUCT_NAME}"
OutFile "${PRODUCT_NAME}.exe"
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
ShowInstDetails show
ShowUnInstDetails show
Var e
Function .onInit
ReadRegStr $INSTDIR HKEY_LOCAL_MACHINE "SOFTWARE\Notepad++" ""
StrCpy $R0 $INSTDIR
StrCpy $INSTDIR "$INSTDIR\CrystalToolbar\"
FunctionEnd
Section "MainSection" SEC01
SetAutoClose false
SetOutPath "$INSTDIR"
File /r "d:\npp_toolbar\Icons\*.*"
StrCpy $e "LoadFile:config.xml"
IfFileExists "$R0\doLocalConf.xml" OneUser MultiUser
MultiUser:
SetOutPath "$APPDATA\Notepad++\"
Goto end
OneUser:
SetOutPath "$R0"
Goto end
end:
File "d:\npp_toolbar\toolbarIcons.xml"
${xml::LoadFile} "$OUTDIR\toolbarIcons.xml" $0
${xml::GotoPath} "/NotepadPlus/ToolBarIcons/Theme" $0
${xml::SetAttribute} "pathPrefix" "$INSTDIR\" $0
DetailPrint "Theme path:$R9"
${xml::SaveFile} "" $0
${xml::LoadFile} "$OUTDIR\config.xml" $0
${xml::GotoPath} "/NotepadPlus/GUIConfigs/GUIConfig" $0
${xml::SetText} "large" $0
${xml::SaveFile} "" $0
${xml::Unload}
SectionEnd
P.S. Лично мне чихать какие у этой программы иконки. Для меня это мощный рабочий инструмент
Проверялось: Windows XP sp3 x86. Теоретически работает во всех NT6.x при запуске исталятора с повышенными привелегиями.