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

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

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


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

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


В скрипте много "мусора", который используется для запоминания и пояснения (для меня), а также кусков чужих скриптов.
читать дальше »

Код: Выделить весь код
;--------------------------------
; Подключаем библиотеку «современного» интерфейса пользователя: Modern UI
; Команда !include позволяет включить в тело скрипта файл (у нас - MUI2.nsh,
; который трактуется компилятором так, как будто бы он является текстом скрипта.

!include "MUI2.nsh"

;--------------------------------
; Задаем степень и режим сжатия исходных файлов. Командная опция /SOLID
; указывает компилятору поместить все сжимаемые данные в один блок,
; тем самым еще больше увеличив степень сжатия файлов инсталлятора.

SetCompressor /SOLID lzma

;--------------------------------
;Задаем перечень констант
;ABCD_EFRTX – имя константы, "Xxxx" — её значение.

; Имя приложения
!define PRODUCT_NAME "UITest"

; Версия приложения
!define PRODUCT_VERSION "1.0"

; Папка, где будут храниться исходные файлы, подлежащие сжатию.
!define pkgdir "d:\package"

; Запоминаем язык установки InstallerLanguage
!define MUI_LANGDLL_REGISTRY_ROOT "HKLM"
!define MUI_LANGDLL_REGISTRY_KEY "Software\UITest\Option"
!define MUI_LANGDLL_REGISTRY_VALUENAME "InstallerLanguage"

; Указываем отображать картинку в заголовках страниц (кроме WELCOME)
!define MUI_HEADERIMAGE ; По умолчанию исп. nsis.bmp
  ;Указываем, где лежит файл нужной вам картинки (если нужно)
!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\win.bmp"

; Настраиваем интерфейс. Константа MUI_ABORTWARNING определяет, выдавать ли
; предупреждение при закрытии инсталятора пользователем. Типа: «Вы действительно
; хотите прервать установку ..бла бла » с кнопками «да» и «нет».

!define MUI_ABORTWARNING

; Константой MUI_ICON определяем значок инсталятора. Без константы исп. modern-install.ico:
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"

; Константой MUI_UNICON определяем значок деинсталятора. Без констант исп. modern-uninstall.ico:
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall-colorful.ico"

; Если вам вообще не нужны описания секций и компонентов, можете отключить их,
; задав пустую константу:
   ;!define MUI_COMPONENTSPAGE_NODESC  ; Расположить её нужно в начале скрипта
; инсталлятора, но ПЕРЕД вызовом макроса MUI_PAGE_COMPONENTS.
; Или можете переместить описание секций ПОД полем выбора компонентов,
; аналогично примеру выше, но константу НАДО определить:

!define MUI_COMPONENTSPAGE_SMALLDESC

; Для отображения описания СПРАВА поля компонентов (по умолчанию) НИЧЕГО не дописывать.

;--------------------------------------------------------------------------------
; Определяем страницы инсталлятора, которые будут видны конечному пользователю.
; Макросы вызываются из MUI2.nsh.
; Станицы установки:

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "$(License)"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES

; Страницы удаления:
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_COMPONENTS
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH

; Указываем доступные языки инсталяции:
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_LANGUAGE "Ukrainian"

!insertmacro MUI_RESERVEFILE_LANGDLL  ; что это такое????

; Предоставляем пользователю при запуске инсталятора выбрать язык установки:
; - Русский или Украинский. Язык запроса выбора - Английский.
; Это - функция инсталяции

Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
;!undef MUI_ICON                                 ; что это ???
;!define MUI_ICON         "uninstall.ico"        ; что это ???
FunctionEnd
;--------------------------------------------------------------------
;Указываем деинсталлятору использовать язык инсталлятора
;Это - функция деинсталяции

Function un.onInit
  !insertmacro MUI_UNGETLANGUAGE
FunctionEnd

;--------------------------------------------------------------------
; Текст внизу окон (вместо nullsoft bla-bla
BrandingText "KOPEJKIN"

; Назначаем инсталлятору заголовок, отражающий его назначение. Используем константы.
; Команда Name задает название кнопки инсталлятора на панели задач.

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"

; Команда Caption задает заголовок окна инсталятора
   ;Caption "Локализация ${PRODUCT_NAME} ${PRODUCT_VERSION}"
; В мультиязычном инсталляторе будем использовать модифицированный текст,
; предоставляемый языковыми файлами инсталлятора. Поэтому для команды Name
; можно использовать константы команды Caption, а её не использовать?

;--------------------------------------------------------------------
; Задаем папку установки по умолчанию. Макрос MUI_PAGE_DIRECTORY работает с системной
; переменной  $INSTDIR, т.е. читает её значение перед отображением страницы
; пользователю и записывает в неё путь к папке, выбранной пользователем ПОСЛЕ
; закрытия этой страницы. Чтобы на этой странице показать пользователю путь к папке
; по умолчанию, необходимо задать начальное значение $INSTDIR специальной командой InstallDir.

InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"

; Можно получить путь к папке установки из реестра, если доступно
InstallDirRegKey HKCU "Software\UITest" ""

; Задаем имя файла нашего инсталлятора командой OutFile. Можно использовать
; константы, или вписать что угодно самостоятельно.
OutFile "${PRODUCT_NAME}.${PRODUCT_VERSION}.exe"  ; Получится: UITest.1.0.exe

; Для новых ОС (Vista, Windows 7/8) можно запросить права пользователя ???
RequestExecutionLevel user

; Указываем режим отображения хода выполнения инсталляции (протокола).
; Наш случай: (ничего не пишем) - протокол скрыт, и появляется только при нажатии кнопки
; «Детали». Возможные значения: hide, show и nevershow. По умолчанию - hide;
; nevershow отключает и вышеупомянутую кнопку, show — показывает все.
  ;ShowInstDetails show

; Организация возможности выбора пользователем желаемых компонентов реализуется
; макросом страницы MUI_PAGE_COMPONENTS.

;--------------------------------
;Reserve Files
  
  ;If you are using solid compression, files that are required before
  ;the actual installation should be stored first in the data block,
  ;because this will make your installer start faster.
;--------------------------------
; Installer Sections

Section "$(PROGRUS)" SecRUS
  SetOutPath "$INSTDIR"
  File "1.txt"
SectionEnd

Section "$(PROGUKR)" SecUKR
  SetOutPath "$INSTDIR"
  File "2.txt"
SectionEnd
  
  ;Function .onSelChange
  ;!insertmacro StartRadioButtons $1
  ;!insertmacro RadioButton ${firstsec}
  ;!insertmacro RadioButton ${secondsec}
  ;!insertmacro EndRadioButtons
  ;FunctionEnd
; При использовании этих макросов для секций пишет, что должно быть не более 3 параметров. 
; А у меня выходит 4 (Разбираться)

; Ниже: Ещё не разбирался. В таком виде файлы картинок устанавливаются! с учетом выбранного 
; языка установки, но только при повторном запуске программы установки.

Section ;$(Install)
SectionIn 1

   SetOutPath "$INSTDIR"
  
  ;ADD YOUR OWN FILES HERE...
  ;File "1.txt"
  ;File "2.txt"
  ;Store installation folder
  ;WriteRegStr HKLM "Software\UITest" "" $INSTDIR
; RU-EN section
            ReadRegStr $R0 HKLM "Software\UITest\Option" "InstallerLanguage"
            StrCmp $R0 "1049" RussianLanguage
            StrCmp $R0 "1058" UkrainianLanguage
            goto NotRightLanguage
        RussianLanguage:
            File "label1_ru.bmp"
            goto NotRightLanguage

        UkrainianLanguage:
            File "label1_ukr.bmp"
            goto NotRightLanguage

        NotRightLanguage:
  ;Create uninstaller
  WriteUninstaller "$INSTDIR\Uninstall.exe"

SectionEnd

; Ниже: Относится к секции RU-EN. Появляется сообщение с кнопкой ОК
Section "-Hide"
            ReadRegStr $R0 HKLM "Software\UITest\Option" "InstallerLanguage"
            StrCmp $R0 "1049" RussianLanguage
            StrCmp $R0 "1058" UkrainianLanguage
            goto NotRightLanguage
        RussianLanguage:
           MessageBox MB_OK "Установка русского рисунка"
            goto NotRightLanguage

        UkrainianLanguage:
           MessageBox MB_OK "Установка украинского рисунка"
            goto NotRightLanguage

        NotRightLanguage:

SectionEnd

;--------------------------------
;Uninstall Section

Section "Un.$(locUN)" SecUN
  delete "$INSTDIR\1.txt"
  delete "$INSTDIR\2.txt"
  delete "$INSTDIR\label1_ru.bmp"
  delete "$INSTDIR\label1_ukr.bmp"
  delete "$INSTDIR\Uninstall.exe"
  DeleteRegKey /ifempty HKLM "Software\UITest\Option"
  ;RMDir "$INSTDIR"
SectionEnd

;----------------------------------------------------------------
; Файлы с текстом Лицензионного соглашения на разных языках
LicenseLangString License ${LANG_RUSSIAN} "lic_rus.txt"
LicenseLangString License ${LANG_UKRAINIAN} "lic_ukr.txt"
   
; Текст описания секции Install
LangString DESC_PROGRUS ${LANG_RUSSIAN} "Русская версия программы"
LangString DESC_PROGRUS ${LANG_UKRAINIAN} "Російська версія програми"
LangString DESC_PROGUKR ${LANG_RUSSIAN} "Украинская версия программы"
LangString DESC_PROGUKR ${LANG_UKRAINIAN} "Українська версія програми"
; Текст названия секции Install
LangString PROGRUS ${LANG_RUSSIAN} "Русская версия"
LangString PROGRUS ${LANG_UKRAINIAN} "Російська версія"
LangString PROGUKR ${LANG_RUSSIAN} "Украинская версия"
LangString PROGUKR ${LANG_UKRAINIAN} "Українська версія"

; Текст описания секции Uninstall
LangString DESC_UNIN ${LANG_RUSSIAN} "Удалить локализованную версию и восстановить английский язык программы."
LangString DESC_UNIN ${LANG_UKRAINIAN} "Видалити локалізовану версію та відновити англійську мову програми."
; Текст названия секции Uninstall
LangString locUN ${LANG_RUSSIAN} "Отменить локализацию"
LangString locUN ${LANG_UKRAINIAN} "Скасувати локалізацію"

; -ИСПРАВЛЕНО- Макрос, который показывает текст описания секции Install
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
   !insertmacro MUI_DESCRIPTION_TEXT ${SecRUS} $(DESC_PROGRUS)
   !insertmacro MUI_DESCRIPTION_TEXT ${SecUKR} $(DESC_PROGUKR)
!insertmacro MUI_FUNCTION_DESCRIPTION_END

; -ИСПРАВЛЕНО- Макрос, который показывает текст описания секции Uninstall
!insertmacro MUI_UnFUNCTION_DESCRIPTION_BEGIN
   !insertmacro MUI_DESCRIPTION_TEXT ${SecUN} $(DESC_UNIN)
!insertmacro MUI_UnFUNCTION_DESCRIPTION_END

; Ниже: Пока не знаю для чего это.
;LangString LNG_BMP1 ${LANG_UKRAINIAN} "label1_ukr.bmp"
;LangString LNG_BMP1 ${LANG_RUSSIAN} "label1_ru.bmp"

Последний раз редактировалось Kopejkin, 03-08-2013 в 16:08.


Отправлено: 12:27, 03-08-2013 | #428