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

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

Аватара для K.A.V.

Ленивый кусок мяса


Contributor


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

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


Цитата Kopejkin:
Правильно ли написаны примеры подобные нижеприведенному в Справочнике по NSIS »
читать дальше »

Примеры написаны правильно, вопрос в другом: что вы хотите реализовать

В справочнике заключено в "секции" (именно по Setcion страничке) - это всего лишь пример исполнения команд

Цитата Kopejkin:
В таком виде, все что написано между Section, не работает, »
И не должно срабатывать, ибо...Ответил выше, секции отрабатываются поочерёдно, и "косметические" изменения (в вашем случае имя секции) вам не отобразятся, т.к. секции отрабатываются в сам момент начала процесса установки

Код:
Код: Выделить весь код
 SectionGetText ${TEST_SEC} $0
 StrCpy $0 "$0 - $WINDIR"
 SectionSetText ${TEST_SEC} $0
Вам нужно поместить скажем, в custom page перед показом странички компонентов, т.е. вот так:


Код: Выделить весь код
 Page Custom SectionName
!insertmacro MUI_PAGE_COMPONENTS
и добавить функцию:
Код: Выделить весь код
Function SectionName
 SectionGetText ${TEST_SEC} $0
 StrCpy $0 "$0 - Мой текст"
 SectionSetText ${TEST_SEC} $0
FunctionEnd
Обратите внимание на то, что данная функция будет отрабатываться каждый раз при переходе с предыдущей стрнаницы инсталлера на страничку компонентов, т.е. текст будет постоянно добавляться...Можно этого избежать, прописывая имя секции в команде назначения текста:
Код: Выделить весь код
Function SectionName
 StrCpy $0 "Имя моей секции - Добавляемый текст"
 SectionSetText ${TEST_SEC} $0
FunctionEnd
Либо, можете прописывать данную команду в функцию .onInit, имя секции изменится только при запуске инсталлятора
Вообще, вам нужно было описать конкретную цель и задачи, мы бы дали вам конкретный совет и, возможно, готовый код...А гадать, что вам именно нужно, предоставляя кучу примеров, как-то неохото...


Цитата Kopejkin:
скрывать секции PROGRUS и PROGUKR, если установка выполняется на 64 разрядной системе и, наоборот, скрывать PROGRUS64 и PROGUKR64 при установке на 32 разрядной системе? Если можно, укажите поточнее, где или что об этом написано в справке или справочнике. А если поделитесь кодом - буду очень благодарен. »
читать дальше »

В начале кода создайте переменную:
Код: Выделить весь код
var IsWow64Process
Пропимсываем определение типа процесса
Код: Выделить весь код
 
Function .onInit
  System::Call kernel32::GetCurrentProcess()i.s
  System::Call kernel32::IsWow64Process(is,*i.s)
  Pop $IsWow64Process
FunctionEnd
Если $IsWow64Process = 0 - 32-bit процесс

Т.е. там же, в функции .onInit уже пляшем от значения переменной $IsWow64Process и скрываем "лишние" секции
Скрыть секцию легко - достаточно назначить пустое имя секции:
Код: Выделить весь код
 
Function .onInit
   System::Call kernel32::GetCurrentProcess()i.s
   System::Call kernel32::IsWow64Process(is,*i.s)
   Pop $IsWow64Process
 StrCmp $IsWow64Process "1" 0 +3
 call Is64Bit
 goto +2
 call Is32Bit
FunctionEnd 

Function Is64Bit
; Скрываем секции, если процесс 64 битный
 SectionSetText ${PROGRUS} ""
 SectionSetText ${PROGUKR} ""  
FunctionEnd

Function Is32Bit
; Скрываем секции, если процесс 32 битный
 SectionSetText ${PROGRUS64} ""
 SectionSetText ${PROGUKR64} ""   
FunctionEnd
Кстати, не забудьте, что если у вас секции по умолчанию отмечены для установки, то скрытая секция всё равно отработает все команды (скрытие секции не снимает флаг её отметки, а всего лишь скрывает от пользователя)


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

Потому что у вас команда на создание деинсталлятора прописана в функцию, которая выполняется при взаимодействии с компонентами!
Код: Выделить весь код
Function .onSelChange
; Выбор между компонентам 1 и 4
  !insertmacro StartRadioButtons $1
    !insertmacro RadioButton ${SecRUS}
    !insertmacro RadioButton ${SecUKR}
    !insertmacro RadioButton ${SecRUS64}
    !insertmacro RadioButton ${SecUKR64}
  !insertmacro EndRadioButtons

 ;Create uninstaller
  WriteUninstaller "$INSTDIR\Uninstall.exe"
FunctionEnd
Переместите данную команду в post секцию ниже всех...


Цитата tony1990:
Частично разобрался. !define MUI_PAGE_CUSTOMFUNCTION_SHOW "CompShowProc" нужно ставить перед страницей которую кастомизируешь. Но... вопрос остался. При добавлении кнопки таким способом инсталлятор зависает на странице компонентов »
Цитата tony1990:
Предположения? »
Не умеем мы предполагать, скрипт в студию

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

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

Отправлено: 17:22, 06-08-2013 | #434