NSIS: Доступ к значениям поля со списком пользовательской страницы? - PullRequest
2 голосов
/ 05 мая 2010

Я добавил пользовательскую страницу в установщик NSIS с использованием ini-файлов, вот код

.
.
.

    ; Welcome page
    !insertmacro MUI_PAGE_WELCOME
    Page custom customPage "" ": custom page"
.
.
.
Function customPage
   GetTempFileName $R0
   File /oname=$R0 customPage.ini
   InstallOptions::dialog $R0
   Pop $R1
   StrCmp $R1 "cancel" done
   StrCmp $R1 "back" done
   StrCmp $R1 "success" done
   error: MessageBox MB_OK|MB_ICONSTOP "InstallOptions error:$\r$\n$R1"
   done:
FunctionEnd
.
.
.

Вот файл customPage.ini

; Ini file generated by the HM NIS Edit IO designer.
[Settings]
NumFields=2

[Field 1]
Type=Label
Text=Select Version:
Left=4
Right=53
Top=16
Bottom=26

[Field 2]
Type=Combobox
Text=Combobox
ListItems=
Left=53
Right=138
Top=14
Bottom=107

Я хочу установить значения комбобокса динамически, используя скрипт NSIS, как я могу получить доступ к комбобоксу в nsis?

1 Ответ

2 голосов
/ 05 мая 2010

У меня нет удобного кода, но в основном вы пишете значения ini в этот файл ini, сразу после его извлечения, но перед тем, как запустить InstallOptions:dialog

!insertmacro INSTALLOPTIONS_WRITE "customPage.ini" "Field 2" "State" "Blah|Value2|Foo|Bar"

См .: http://nsis.sourceforge.net/Docs/InstallOptions/Readme.html

Обратите внимание, что в вашем коде вы не используете макросы InstallOptions, как вы видите на связанной веб-странице. Вместо этого вы делаете все вручную. Обычно макросы InstallOptions извлекают ini-файлы пользовательских страниц в каталог плагинов. Это означает, что мой фрагмент кода может не работать, поскольку вы не следуете обычному шаблону. Поэтому, если вышеперечисленное не работает, попробуйте использовать WriteINI. Но концепция та же, записать значение в файл ini сразу после его извлечения, но перед его отображением.

...