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

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

Аватара для kotkovets

Ветеран


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

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


Цитата Kopejkin:
Подскажите, пожалуйста, почему могут плохо переключаться компоненты? »
Потому что, изначально неопределенное состояние секций изначально, нужно определять в "первой" функции инсталлятора...
потому что макросу радиобутон изначально от чего то нужно переключать секции, а когда с нечего начать...
1. а именно делаем секцию отмеченную в зависимости от выбранного языка (это сильно упрощает код)
2 много лишних действий с определением разрядность оси, она уже определена в макросе ${WinPlatformArchitecture} т.е в переменной $5
значит нужно изымать лишниие функции...
ну примерно так:
читать дальше »
Код: Выделить весь код
!include "MUI2.nsh"
;!include "VPatchLib.nsh"
!include "Logiclib.nsh"
!include "WinVer2.nsh"
!include "ProcessFunc.nsh"
SetCompressor /SOLID lzma
;!define MUI_LANGDLL_REGISTRY_ROOT "HKLM"
;!define MUI_LANGDLL_REGISTRY_KEY "Software\Example\Option"
;!define MUI_LANGDLL_REGISTRY_VALUENAME "InstallerLanguage"
!define MUI_ABORTWARNING
!define MUI_CUSTOMFUNCTION_GUIINIT MUIGUIInit
!define SWP_SHOWWINDOW 0x00000040
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE ComponentsLeave
!define MUI_COMPONENTSPAGE_SMALLDESC
!insertmacro MUI_PAGE_COMPONENTS
Page custom CustomInfo
!insertmacro MUI_PAGE_INSTFILES
;-----------------------------------------------------
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_LANGUAGE "Ukrainian"
;--------------------------------------------------------------------
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
FunctionEnd
;--------------------------------------------------------------------
Caption "Example"
OutFile "example.exe"
RequestExecutionLevel admin
;-------------------------------------------------------
!insertmacro MUI_RESERVEFILE_LANGDLL
;--------------------------------
Section /o "$(PROGRUS)" SecRUS
  SetOutPath $INSTDIR
    CreateDirectory "$INSTDIR\Backup"
    ;!insertmacro VPatchFile
SectionEnd
Section /o "$(PROGUKR)" SecUKR
  SetOutPath $INSTDIR
     CreateDirectory "$INSTDIR\Backup"
     ;!insertmacro VPatchFile
SectionEnd
Section /o "$(PROGRUS64)" SecRUS64
  SetOutPath $INSTDIR
     CreateDirectory "$INSTDIR\Backup"
    ;!insertmacro VPatchFile
SectionEnd
Section /o "$(PROGUKR64)" SecUKR64
   SetOutPath $INSTDIR
    CreateDirectory "$INSTDIR\Backup"
    ;!insertmacro VPatchFile
SectionEnd
Section "-Post"
   WriteUninstaller "$INSTDIR\Uninstall.exe"
   SetAutoClose false
SectionEnd
;--------------------------------
Function .OnInit
!insertmacro MUI_LANGDLL_DISPLAY
; Для "красоты": версия, разрядность ОС
   ${WinName} $1
   ${WinType} $2
   ${WinServerName} $3
   ${WinServicePack} $4
   ${WinPlatformArchitecture} $5
   Var /Global text5
   StrCpy $text5 "$1 $2 $3 $4 (x$5)" ; что получилось - на инфо страницу
${If} $5 == 64
   ;Скрываем секции, если процесс 64 битный
     SectionSetText ${SecRUS} ""
     SectionSetText ${SecUKR} ""
     ${If} $LANGUAGE == ${LANG_RUSSIAN}
          StrCpy $R9 ${SecRUS64}
          SectionSetFlags ${SecRUS64} ${SF_SELECTED}
     ${ElseIf} $LANGUAGE == ${LANG_UKRAINIAN}
          StrCpy $R9 ${SecUKR64}
          SectionSetFlags ${SecUKR64} ${SF_SELECTED}
     ${EndIf}
${ElseIf} $5 == 32
; Скрываем секции, если процесс 32 битный
    SectionSetText ${SecRUS64} ""
    SectionSetText ${SecUKR64} ""
    ${If} $LANGUAGE == ${LANG_RUSSIAN}
          StrCpy $R9 ${SecRUS}
          SectionSetFlags ${SecRUS} ${SF_SELECTED}
    ${ElseIf} $LANGUAGE == ${LANG_UKRAINIAN}
          StrCpy $R9 ${SecUKR}
          SectionSetFlags ${SecUKR} ${SF_SELECTED}
    ${EndIf}
${EndIf}

FunctionEnd

;---------------------------------------------------------
Function MUIGUIInit
; Получаем CRC exe-файла в папке установленной программы
   CRCCheck::GenCRC "$INSTDIR\WinSnap64.exe"
   Pop $R1
   CRCCheck::GenCRC "$INSTDIR\WinSnap.exe"
   Pop $R2
   StrCpy $1 $R1
   StrCpy $2 $R2
; Определяем, что установлено: оригинал или локализация.
## скрипт определения
FunctionEnd

;-----------------------------------------------------------------
Function .onSelChange
; Выбор только одного компонента из 4
  !insertmacro StartRadioButtons $R9
    !insertmacro RadioButton ${SecRUS}
    !insertmacro RadioButton ${SecUKR}
    !insertmacro RadioButton ${SecRUS64}
    !insertmacro RadioButton ${SecUKR64}
  !insertmacro EndRadioButtons
FunctionEnd
;-----------------------------------------------------------------------
Function ComponentsLeave
  SectionGetFlags ${SecRUS} $0
  SectionGetFlags ${SecUKR} $1
  SectionGetFlags ${SecRUS64} $2
  SectionGetFlags ${SecUKR64} $3
Var /Global text_lang
    StrCmp $0 "1" +2 0
    StrCmp $2 "1" 0 +3
           StrCpy $4 "$(lang_rus)"
           StrCpy $text_lang "$4"
    StrCmp $1 "1" +2 0
    StrCmp $3 "1" 0 +3
           StrCpy $4 "$(lang_ukr)"
           StrCpy $text_lang "$4"
FunctionEnd

Function CustomInfo
!insertmacro MUI_HEADER_TEXT $(confirm_select) $(confirm_select_subtitle)
  InitPluginsDir
  File /oname=$PLUGINSDIR\msg.ini "msg.ini"
  WriteINIStr $PLUGINSDIR\msg.ini "Field 1" "Text" "$(text1)"
  WriteINIStr $PLUGINSDIR\msg.ini "Field 2" "Text" "$(text2)"
  WriteINIStr $PLUGINSDIR\msg.ini "Field 4" "Text" "$(text4)"
  WriteINIStr $PLUGINSDIR\msg.ini "Field 5" "Text" "$text5"
  WriteINIStr $PLUGINSDIR\msg.ini "Field 6" "Text" "$(text6)"
  WriteINIStr $PLUGINSDIR\msg.ini "Field 7" "Text" "$INSTDIR"
  WriteINIStr $PLUGINSDIR\msg.ini "Field 8" "Text" "$(text8)"
  WriteINIStr $PLUGINSDIR\msg.ini "Field 9" "Text" "$(text9)"
  WriteINIStr $PLUGINSDIR\msg.ini "Field 10" "Text" "$text_lang"
  
InstallOptions::initDialog /NOUNLOAD "$PLUGINSDIR\msg.ini"
InstallOptions::show
FunctionEnd
;-----------------------------------------
; Раздел (секция) деинсталлятора
Section "un.install" ;SecUN
   delete "$INSTDIR\WinSnap64.exe"
   delete "$INSTDIR\WinSnap.exe"
   Rename $INSTDIR\Backup\WinSnap64.exe.bak $INSTDIR\WinSnap64.exe
   Rename $INSTDIR\Backup\WinSnap.exe.bak $INSTDIR\WinSnap.exe
   delete "$INSTDIR\Uninstall.exe"
   DeleteRegKey HKLM "Software\Alexander Avdonin\WinSnap\Option"
   RMDir /r "$INSTDIR\Backup"
   SetAutoClose false
SectionEnd
;----------------------------------------------------------------
LangString text2 ${LANG_RUSSIAN} "Установка будет выполнена со следующими параметрами:"
LangString text2 ${LANG_UKRAINIAN} "Встановлення буде виконано з наступними параметрами:"
LangString text9 ${LANG_RUSSIAN} "Выбранный язык WinSnap:"
LangString text9 ${LANG_UKRAINIAN} "Обрана мова WinSnap:"
LangString lang_rus ${LANG_RUSSIAN} "Русский язык"
LangString lang_rus ${LANG_UKRAINIAN} "Російська мова"
LangString lang_ukr ${LANG_RUSSIAN} "Украинский язык"
LangString lang_ukr ${LANG_UKRAINIAN} "Українська мова"
LangString text4 ${LANG_RUSSIAN} "Операционная система:"
LangString text4 ${LANG_UKRAINIAN} "Операційна система:"
LangString text6 ${LANG_RUSSIAN} "Папка установки файлов:"
LangString text6 ${LANG_UKRAINIAN} "Папка призначення:"
LangString confirm_select ${LANG_RUSSIAN} "Подготовка завершена!"
LangString confirm_select ${LANG_UKRAINIAN} "Підготовку завершено!"
LangString confirm_select_subtitle ${LANG_RUSSIAN} "Все готово к локализации программы"
LangString confirm_select_subtitle ${LANG_UKRAINIAN} "Усе підготовлено до локалізації програми"
; Текст сообщения, когда устанавливаемый компонент не выбран
LangString not_component ${LANG_RUSSIAN} "Для продолжения выберите желаемую версию перевода !"
LangString not_component ${LANG_UKRAINIAN} "Щоб продовжити, оберіть бажану версію перекладу !"
; Текст названия компонента (раздела, секции)
LangString PROGRUS ${LANG_RUSSIAN} "Русская версия (x86)"
LangString PROGRUS ${LANG_UKRAINIAN} "Російська версія (x86)"
LangString PROGUKR ${LANG_RUSSIAN} "Украинская версия (x86)"
LangString PROGUKR ${LANG_UKRAINIAN} "Українська версія (x86)"
LangString PROGRUS64 ${LANG_RUSSIAN} "Русская версия (x64)"
LangString PROGRUS64 ${LANG_UKRAINIAN} "Російська версія (x64)"
LangString PROGUKR64 ${LANG_RUSSIAN} "Украинская версия (x64)"
LangString PROGUKR64 ${LANG_UKRAINIAN} "Українська версія (x64)"

Цитата MaGoth:
Зы, Есть что ни будь по моему вопросу выше, о непонятках с размером устанавливаемых файлов ?! »
мистика... зы..

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.

Это сообщение посчитали полезным следующие участники:

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