NSIS:访问自定义页面组合框的值?

发布于 2024-09-01 01:59:39 字数 824 浏览 4 评论 0原文

我已使用 ini 文件将自定义页面添加到 NSIS 安装程序,这是一个代码

.
.
.

    ; 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 中的组合框?

I have added custom page to NSIS installer using ini files, here is a code

.
.
.

    ; 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
.
.
.

Here is a customPage.ini file

; 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

I want to set values of combobox dynamically using NSIS script, how can I access combobox in nsis?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

若水微香 2024-09-08 01:59:39

我没有方便的代码,但基本上你要做的就是将 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 文件。

I don't have code handy but basically what you do is write ini values to that ini file, just after you extract it, but before you run InstallOptions:dialog

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

See: http://nsis.sourceforge.net/Docs/InstallOptions/Readme.html

Note that in your code you aren't using the InstallOptions macros like you see in the linked webpage. Instead you are doing everything manually. Normally the InstallOptions macros extract the custom page ini files to the plugins directory. This means my code snippet might not work since you aren't following the usual pattern. So instead if the above doesn't work, try using WriteINI instead. But the concept is the same, write the value to the ini file just after extracting it, but before displaying it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文