Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Flix

Пользователь


Сообщения: 87
Благодарности: 49

Профиль | Отправить PM | Цитировать


Цитата Kopejkin:
Я попытался переделать вариант Flix, использующий скины SkinSharp, в инсталлятор с функцией удаления. Чтобы деинсталлятор тоже был "одет". »
Не надо было ничего переделывать, а только по аналогии добавить все тоже самое для деинсталлятора.
читать дальше »
Код: Выделить весь код
# Поддержка Unicode
Unicode true

!include MUI2.nsh

!define PRODUCT_NAME "'Install-Uninstall SkinH'"
SetCompressor lzma
BrandingText "Nullsoft Scriptable Install System"


##################### Диалоги ИНСТАЛЛЯЦИИ #######################
; Подключаем стиль оформления к интерфейсу
!define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit
; Показываем диалог приветствия
!insertmacro MUI_PAGE_WELCOME
; Показываем диалог с лицензией
!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt"
; Включаем элемент с описанием компонентов в диалоге компонентов
!define MUI_PAGE_CUSTOMFUNCTION_SHOW ENABLEDStyle
; Включаем элемент с описанием компонентов при наведении курсора мышки
!define MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION ENABLEDStyle
; Показываем диалог с выбором компонентов установки
!insertmacro MUI_PAGE_COMPONENTS
; Показываем диалог с выбором пути установки
!insertmacro MUI_PAGE_DIRECTORY
; Показываем диалог установки файлов
!insertmacro MUI_PAGE_INSTFILES
; Показываем диалог завершения установки
!insertmacro MUI_PAGE_FINISH
#################################################################

################### Диалоги ДЕИНСТАЛЛЯЦИИ #######################
; Подключаем стиль оформления к интерфейсу
!define MUI_CUSTOMFUNCTION_UNGUIINIT un.onGUIIni
; Показываем диалог приветствия
!insertmacro MUI_UNPAGE_WELCOME
; Показываем диалог подтверждения
!insertmacro MUI_UNPAGE_CONFIRM
; Включаем элемент с описанием компонентов в диалоге компонентов
!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.ENABLEDStyle
; Включаем элемент с описанием компонентов при наведении курсора мышки
!define MUI_CUSTOMFUNCTION_UNONMOUSEOVERSECTION un.ENABLEDStyle
; Показываем диалог с выбором компонентов деинсталляции
!insertmacro MUI_UNPAGE_COMPONENTS
; Показываем диалог удаления файлов
!insertmacro MUI_UNPAGE_INSTFILES
; Показываем диалог завершения
!insertmacro MUI_UNPAGE_FINISH
#################################################################

; Язык инсталлятора - Русский
!insertmacro MUI_LANGUAGE "Russian"

; Имя инсталлятора
Name "${PRODUCT_NAME}"
; Путь и имя файла инсталлятора
OutFile "UninSkinH.exe"

; Путь установки по умолчанию
InstallDir "$PROGRAMFILES\My application"

Section "Секция 1" SEC1
; Файлы для установки
SectionEnd

Section "Секция 2" SEC2
; Файлы для установки
SectionEnd

Section "Секция 3" SEC3
  SetOutPath $INSTDIR
  ;Create uninstaller
  WriteUninstaller "$INSTDIR\Uninstall.exe"
SectionEnd 

; Секция деинсталлятора
Section "Uninstall" SEC4
  delete "$INSTDIR\Uninstall.exe"
  SetShellVarContext all
  RMDir /r "$INSTDIR"
SectionEnd

; Описание компонентов =ИНСТАЛЛЯТОРА=
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC1} "Описание первой секции"
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC2} "Описание второй секции"
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC3} "Описание третьей секции"
!insertmacro MUI_FUNCTION_DESCRIPTION_END

; Описание компонентов =ДЕИНСТАЛЛЯТОРА=
!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC4} "Описание секции деинсталлятора"
!insertmacro MUI_UNFUNCTION_DESCRIPTION_END

; Функция скинизации интерфейса при инициализации GUI =ИНСТАЛЛЯТОРА=
Function onGUIInit
  InitPluginsDir
  SetOutPath $PLUGINSDIR
  File "${NSISDIR}\Plugins\x86-unicode\SkinH.dll"
  File "${NSISDIR}\Contrib\Skins\0012.she"
  
  # Убираем дефект отображения текста с надписью бренда -------
    ; Получаем дескриптор элемента управления с надписью бренда
    GetDlgItem $0 $HWNDPARENT 1028
    ; Включаем элемент управления (1- включить, 0- отключить)
    EnableWindow $0 1
  # -----------------------------------------------------------
  
  ;При помощи функции SkinH_AttachExt загружаем файл стиля с именем 0012.she
  System::Call SkinH::SkinH_AttachExt(t'$PLUGINSDIR\0012.she',,i-150,i-0,i-0)
  
  #################### Patches for SkinSharp ####################
  System::Call Kernel32::GetModuleHandle(t"SkinH.dll")i.r0
  IntOp $0 $0 + 0x0002CA98
  System::Call Kernel32::GetCurrentProcess()i.s
  System::Call Kernel32::VirtualProtectEx(is,ir0,i4,i0x40,*i)
  System::Call "*$0(&i1 0)"
  ###############################################################
FunctionEnd

; Функция выгрузки SkinH.dll при закрытии GUI =ИНСТАЛЛЯТОРА=
Function .onGUIEnd
  System::Call Kernel32::GetModuleHandle(t"SkinH.dll")i.s
  System::Call Kernel32::FreeLibrary(is)
  System::Call Kernel32::SetCurrentDirectory(t"$EXEDIR\")
FunctionEnd

; Функция скинизации интерфейса при инициализации GUI =ДЕИНСТАЛЛЯТОРА=
Function un.onGUIIni
  InitPluginsDir
  SetOutPath $PLUGINSDIR
  File "${NSISDIR}\Plugins\x86-unicode\SkinH.dll"
  File "${NSISDIR}\Contrib\Skins\0012.she"
  
  # Убираем дефект отображения текста с надписью бренда -------
    ; Получаем дескриптор элемента управления с надписью бренда
    GetDlgItem $0 $HWNDPARENT 1028
    ; Включаем элемент управления (1- включить, 0- отключить)
    EnableWindow $0 1
  # -----------------------------------------------------------
  
  ;При помощи функции SkinH_AttachExt загружаем файл стиля с именем 0012.she
  System::Call SkinH::SkinH_AttachExt(t'$PLUGINSDIR\0012.she',,i-30,i-0,i-0)
  
  #################### Patches for SkinSharp ####################
  System::Call Kernel32::GetModuleHandle(t"SkinH.dll")i.r0
  IntOp $0 $0 + 0x0002CA98
  System::Call Kernel32::GetCurrentProcess()i.s
  System::Call Kernel32::VirtualProtectEx(is,ir0,i4,i0x40,*i)
  System::Call "*$0(&i1 0)"
  ###############################################################
FunctionEnd

; Функция выгрузки SkinH.dll при закрытии GUI =ДЕИНСТАЛЛЯТОРА=
Function un.onGUIEnd
  System::Call Kernel32::GetModuleHandle(t"SkinH.dll")i.s
  System::Call Kernel32::FreeLibrary(is)
  System::Call Kernel32::SetCurrentDirectory(t"$EXEDIR\")
FunctionEnd

; Функция, которая включает элемент с описанием компонентов.
; Используется для диалога с выбором компонентов при инсталляции.
Function ENABLEDStyle
  ; Выполняем поиск окна
  FindWindow $0 "#32770" "" $HWNDPARENT
  ; Получаем дескриптор элемента управления с описанием компонентов
  GetDlgItem $1 $0 1043
  ; Включаем элемент управления
  EnableWindow $1 1
FunctionEnd

; Функция, которая включает элемент с описанием компонентов.
; Используется для диалога с выбором компонентов при деинсталляции.
Function un.ENABLEDStyle
  ; Выполняем поиск окна
  FindWindow $0 "#32770" "" $HWNDPARENT
  ; Получаем дескриптор элемента управления с описанием компонентов
  GetDlgItem $1 $0 1043
  ; Включаем элемент управления
  EnableWindow $1 1
FunctionEnd
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:26, 01-03-2014 | #1062