Пользовательская кнопка INI переключателя через Eclipse - PullRequest
0 голосов
/ 03 августа 2009

Я использую меню Eclipse Create InstallOptions для создания пользовательской страницы INI с переключателями для переупаковки установщика Blackberry Desktop.

Для каждого типа есть 2 раздела: «Интернет» и «Предприятие».

Мне нужно, чтобы пользователь выбрал 1 из 2 вариантов, и, в зависимости от их выбора, страница перенесет выбор, выбранный на пользовательской странице, перейдет на страницу INSTFILES и продолжит до конца.

Мне не удалось найти какую-либо конкретную документацию по загрузке страниц INI для загрузки в сценарий (я, вероятно, неправильно выполняю поиск), а затем передать данные с одной страницы на другую (в соответствии с полями, которые я предполагаю?)

Любая помощь приветствуется. Даже если это сказать мне, что я слепой и не могу прочитать документ (хотя ссылка поможет :))

Вот код INI:


; Автоматически создается мастером сценариев установки EclipseNSIS
; 29 июля 2009 г. 17:42:56

[Настройки]
NumFields = 7
Title = RIM BlackBerry Desktop 5.0 установка
CancelEnabled = 1

[Поле 1]
Тип = RadioButton
Слева = 15
Top = 28
Right = 100
Низ = 38
Text = Интернет
State =
Флаги = УВЕДОМЛЕНИЕ

[Поле 4]
Тип = RadioButton
Слева = 15
Top = 95
Right = 100
Bottom = 105
Text = Enterprise
Флаги = УВЕДОМЛЕНИЕ

[Поле 2]
Тип = GroupBox
Слева = 0
Top = 10
Right = 300
Низ = 75
Text =

[Поле 5]
Тип = Метка
Left = 30
Top = 42
Right = 235
Низ = 52
Текст = Для пользователей, которые НЕ находятся на сервере Enterprise (Exchange)

[Поле 6]
Тип = Метка
Слева = 30
Top = 111
Right = 235
Bottom = 121
Текст = Выберите это, только если вы находитесь на сервере Exchange

[Поле 3]
Тип = GroupBox
Слева = 0
Top = 75
Right = 300
Bottom = 140

[Поле 7]
Тип = Метка * * тысяча восемьдесят-одна Слева = 0
Top = 0
Право = 130
Низ = 10
Текст = Пожалуйста, выберите способ установки


... А вот код NSI:


Автоматически создается мастером сценариев EclipseNSIS
29 июля 2009 г. 17:42:16

Название "BlackBerry Desktop"

RequestExecutionLevel admin

Общие определения символов
! define VERSION 5.0.0.11
! определить КОМПАНИИ RIM
! определить URL http://www.blackberry.com

Определения символов MUI
! определить MUI_ICON BBD.ico
! определить MUI_LICENSEPAGE_RADIOBUTTONS

включенные файлы
! include Sections.nsh
! include MUI2.nsh

Зарезервированные файлы
Резервный файл "$ {NSISDIR} \ Plugins \ AdvSplash.dll"

Страницы установщика
! insertmacro MUI_PAGE_WELCOME
! insertmacro MUI_PAGE_LICENSE license.txt
! insertmacro MUI_PAGE_COMPONENTS
! insertmacro MUI_PAGE_INSTFILES
! insertmacro MUI_PAGE_FINISH
Языки установщика
! insertmacro MUI_LANGUAGE Английский

Атрибуты установщика
OutFile RIM_BlackBerry_Desktop_5.0.exe
InstallDir «Файлы установки $ TEMP \ RIM BlackBerry Desktop 5.0»
CRCC проверить на
XPStyle на
ShowInstDetails скрыть
VIProductVersion 5.0.0.11
VIAddVersionKey / LANG = $ {LANG_ENGLISH} ProductName "BlackBerry Desktop"
VIAddVersionKey / LANG = $ {LANG_ENGLISH} ProductVersion "$ {VERSION}"
VIAddVersionKey / LANG = $ {LANG_ENGLISH} CompanyName "$ {COMPANY}"
VIAddVersionKey / LANG = $ {LANG_ENGLISH} CompanyWebsite "$ {URL}"
VIAddVersionKey / LANG = $ {LANG_ENGLISH} FileVersion "$ {VERSION}"
VIAddVersionKey / LANG = $ {LANG_ENGLISH} Описание файла ""
VIAddVersionKey / LANG = $ {LANG_ENGLISH} LegalCopyright ""

Установочные разделы
Секция / о Main SEC0000
SetOutPath $ INSTDIR
SetOverwrite ifdiff
; ФАЗА ИСПЫТАНИЙ
SectionEnd

SectionGroup / e "BlackBerry Desktop Section"
Раздел / o Интернет SEC0001
SetOutPath $ INSTDIR \ DRIVERS
SetOverwrite ifdiff
; Execwait 'msiexec / i "$ INSTDIR \ BlackBerry USB и драйверы модема_ENG (DM5.0b28) .msi" / passive'
SetOutPath $ INSTDIR
SetOverwrite ifdiff
; Файл / r *
; ExecWait '"$ INSTDIR \ Setup.exe" / S / v / qb!'
SectionEnd

Секция / Предприятие SEC0002
SetOutPath $ INSTDIR \ DRIVERS
SetOverwrite ifdiff
; Execwait 'msiexec / i "$ INSTDIR \ BlackBerry USB и драйверы модема_ENG (DM5.0b28) .msi" / passive'
SetOutPath $ INSTDIR
SetOverwrite ifdiff
; Файл / r *
; Удалить / REBOOTOK "$ INSTDIR \ Setup.ini"
; Переименуйте / REBOOTOK "$ INSTDIR \ Setup_Enterprise.ini" "$ INSTDIR \ Setup.ini"
; ExecWait '"$ INSTDIR \ Setup.exe" / S / v / qb!'
SectionEnd
SectionGroupEnd

Раздел описания
! insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
! insertmacro MUI_DESCRIPTION_TEXT $ {SEC0000} $ (SEC0000_DESC)
! insertmacro MUI_DESCRIPTION_TEXT $ {SEC0001} $ (SEC0001_DESC)
! insertmacro MUI_FUNCTION_DESCRIPTION_END

Установочные языковые строки
TODO Обновите языковые строки с соответствующими переводами.

LangString SEC0000_DESC $ {LANG_ENGLISH} "Установка для пользователей BlackBerry, не входящих в Exchange / Enterprise"
LangString SEC0001_DESC $ {LANG_ENGLISH} «Установка для пользователей Exchange / Enterprise BlackBerry»

Ответы [ 2 ]

0 голосов
/ 04 августа 2009

Закончилось, используя nsDialogs. Нет графического интерфейса, но, похоже, больше контроля с точки зрения дизайна.

Получил страницу переключателя для нормальной работы, за исключением того, что при запуске установщика отображается пользовательская страница с подпунктом «Лицензионное соглашение».

Код NSI:

Название "BlackBerry Desktop"

RequestExecutionLevel admin

Общие определения символов
! define VERSION 5.0.0.11
! определить КОМПАНИИ RIM
! определить URL http://www.blackberry.com

Определения символов MUI
! определить MUI_ICON Blackberry.ico
! определить MUI_LICENSEPAGE_RADIOBUTTONS

включенные файлы
! include Sections.nsh
! include MUI2.nsh
! include nsDialogs.nsh
! include LogicLib.nsh

Переменные Var / GLOBAL AccountType
Var InstallerВыбрать
Var Label
Var Label_2
Var Label_3
Var RadioButton_1
Вар RadioButton_2
Var / GLOBAL RadioButton_1_State
Var / GLOBAL RadioButton_2_State

Зарезервированные файлы
Резервный файл "$ {NSISDIR} \ Plugins \ AdvSplash.dll"

Установочные страницы
! insertmacro MUI_PAGE_WELCOME
! insertmacro MUI_PAGE_LICENSE license.txt
; Пользовательский установщик страницыВыберите InstallerSelectLeave
PageEx custom
PageCallbacks InstallerSelect InstallerSelectLeave
Подпись ""
PageExEnd
! insertmacro MUI_PAGE_INSTFILES
! insertmacro MUI_PAGE_FINISH
Языки установщика
! insertmacro MUI_LANGUAGE Английский

Атрибуты установщика
OutFile "RIM_BlackBerry_Desktop_5.0.exe"
InstallDir «Файлы установки $ TEMP \ RIM BlackBerry Desktop 5.0»
CRCC проверить на
XPStyle на
ShowInstDetails скрыть
VIProductVersion 5.0.0.11
VIAddVersionKey / LANG = $ {LANG_ENGLISH}
ProductName "BlackBerry Desktop"
VIAddVersionKey / LANG = $ {LANG_ENGLISH}
ProductVersion "$ {VERSION}"
VIAddVersionKey / LANG = $ {LANG_ENGLISH}
CompanyName "$ {COMPANY}"
VIAddVersionKey / LANG = $ {LANG_ENGLISH}
CompanyWebsite "$ {URL}"
VIAddVersionKey / LANG = $ {LANG_ENGLISH}
FileVersion "$ {VERSION}"
VIAddVersionKey / LANG = $ {LANG_ENGLISH}
FileDescription "" VIAddVersionKey
/ LANG = $ {LANG_ENGLISH} LegalCopyright ""

; Проверьте функцию администратора
Функция CheckAdmin
; Проверьте, есть ли у текущего пользователя права администратора
userInfo :: getAccountType
pop $ AccountType
strCmp $ AccountType "Admin" +3
messageBox MB_OK "У вас нет прав администратора. $ \ n $ \ nУстановка отменена"
Выйти
возврат
FunctionEnd

; Выберите Функции страницы типа установки
Функция InstallerВыбрать
nsDialogs :: create 1018
Pop $ InstallerSelect

    ${If} $InstallerSelect == error <br>
            Abort <br>
    ${EndIf} <br>

    ${NSD_CreateLabel} 0 0 100% 12u "Please select an installation type..." <br>
    Pop $Label <br>

    ${NSD_CreateLabel} 10% 30% 90% 20 "For users who are NOT on the Enterprise (Exchange) server" <br>
    Pop $Label_2 <br>

    ${NSD_CreateLabel} 10% 70% 90% 20 "For users who are on the Enterprise (Exchange) server" <br>
    Pop $Label_3         <br>

    ${NSD_CreateRadioButton} 5% 20% 100% 20 "Internet" <br>
    Pop $RadioButton_1 <br>

    ${NSD_CreateRadioButton} 5% 60% 100% 20 "Enterprise" <br>
    Pop $RadioButton_2 <br>

    ${If} $RadioButton_1_State == ${BST_CHECKED} <br>
            ${NSD_Check} $RadioButton_1 <br>
    ${EndIf}  <br>

    ${If} $RadioButton_2_State == ${BST_CHECKED} <br>
            ${NSD_Check} $RadioButton_2 <br>
    ${EndIf} <br>

    nsDialogs::Show  <br>

FunctionEnd

Функция InstallerSelectLeave
$ {NSD_GetState} $ RadioButton_1 $ RadioButton_1_State
$ {NSD_GetState} $ RadioButton_2 $ RadioButton_2_State
FunctionEnd

Разделы установщика

Секция -Основной SEC0000
Позвоните CheckAdmin

SetOutPath $INSTDIR\BB_MS
SetOverwrite ifdiff
File /r BB_MS\*
SetOutPath $INSTDIR\Drivers
SetOverwrite ifdiff
File /r DRIVERS\*
SetOutPath $INSTDIR\ISSetupPrerequisites
SetOverwrite ifdiff
File /r ISSetupPrerequisites\*
SetOutPath $INSTDIR
SetOverwrite ifdiff
File "_setup.exe"
File "0x0409.ini"
File "Autorun.inf"
File "BBDMUtil.dll"
File "BlackBerry Desktop Software.msi"
File "BlackBerrySetup.exe"
File "Data1.cab"
File "FLEXnet_patch_Q113020.exe"
File "install.txt"
File "install_ENT_silent.cmd"
File "install_ENT_ui.cmd"
File "install_INT_silent.cmd"
File "install_INT_ui.cmd"
File "setup.bmp"
File "Setup_Internet.ini"
File "Setup_Enterprise.ini"
File "WindowsInstaller-KB893803-x86.exe"

; Проверяет выбранный метод установки
StrCmp $ RadioButton_1_State 1 Интернет 0
StrCmp $ RadioButton_2_State 1 Корпоративный Интернет

 Internet: <br>
Execwait 'msiexec /i "$INSTDIR\Drivers\BlackBerry USB and Modem Drivers_ENG (DM5.0b28).msi" /passive /norestart' <br>
Rename "$INSTDIR\Setup_Internet.ini" "$INSTDIR\Setup.ini" <br>
Sleep 1000 <br>
ExecWait '"$INSTDIR\BlackBerrySetup.exe" /S /v/passive' <br>
    Goto End <br>

Предприятие:
Execwait 'msiexec / i "$ INSTDIR \ Drivers \ BlackBerry USB и драйверы модема_ENG (DM5.0b28) .msi" / пассивный / norestart'
Переименуйте «$ INSTDIR \ Setup_Enterprise.ini» в «$ INSTDIR \ Setup.ini»
Сон 1000
ExecWait '"$ INSTDIR \ BlackBerrySetup.exe" / S / v / passive'

END:
SectionEnd

Функции установщика
Функция .onInit
InitPluginsDir
Нажмите $ R1
Файл /oname=$PLUGINSDIR\spltmp.bmp Blackberry.bmp
advsplash :: show 1000 600 400 0x666666 $ PLUGINSDIR \ spltmp
Pop $ R1
Pop $ R1 FunctionEnd

0 голосов
/ 03 августа 2009

Вы можете начать с создания глобальной переменной с Var IsEnterprise или что-то в этом роде.

Чтобы настоящая страница работала, вы должны вставить команду страницы где-нибудь между существующими макросами MUI_PAGE

page EnterprisePageCreate EnterprisePageLeave

EnterprisePageCreate и EnterprisePageLeave должны быть функциями nsis, функция создания должна создавать страницу, а функция выхода должна получать состояние переключателей и сохранять его в глобальном $ IsEnterprise (информацию о том, как это сделать, можно найти в readme и примеры InstallOptions)

Затем вы можете использовать $ IsEnterprise в разделе.

Но поскольку у вас уже есть раздел Enterprise, я бы предположил, что вы просто хотите переключить этот раздел. Если это так, нет необходимости сохранять состояние в var, вы можете переключить «флажок» раздела с помощью макросов в section.nsh в функции EnterprisePageLeave.

Вы также упоминаете, что хотите перейти на страницу InstFiles, посмотрев опубликованный вами сценарий. Я бы просто поместил пользовательскую страницу перед страницей компонентов, а при включенном корпоративном радио включите раздел, в противном случае включите его. выключи и сделай это только для чтения.


На несвязанной заметке недостаточно просто использовать RequestExecutionLevel admin, когда UAC выключен или

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...