Пользователь
Сообщения: 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
|