NSIS实现自定义选择数据保存目录窗口

NSIS实现如下界面,选择数据保存目录,这个窗口将会在选择安装目录窗口后出现

代码如下

Var DataDir         ;定义数据目录位置

!insertmacro MUI_PAGE_WELCOME   ;欢迎页面
!insertmacro MUI_PAGE_DIRECTORY ;调用NSIS选择目录窗口
Page custom SetCustom LeaveCustom  ;自定义窗口,选择数据目录
!insertmacro MUI_PAGE_FINISH  ;安装完成

Function SetCustom  ;窗口弹出前,设置窗口的显示内容
  WriteINIStr "$PLUGINSDIR\setup.ini" "Field 1" "Text" "选择数据保存的目录,接收邮箱地址薄、发送邮箱账户、宏、邮件模板、发送任务日志以及配置将保存在这里。"  
  WriteINIStr "$PLUGINSDIR\setup.ini" "Field 2" "Text" "数据保存目录"
  ;读取数据目录
  StrCpy $DataDir "C:\Users\Public\Documents\1and1Mail\"  ;默认数据目录
  WriteINIStr "$PLUGINSDIR\setup.ini" "Field 3" "State" $DataDir  ;将会显示在数据保存目录哪里
	
  InstallOptions::initDialog /NOUNLOAD "$PLUGINSDIR\setup.ini"
  !insertmacro MUI_HEADER_TEXT $(MUI_TEXT_DIRECTORY_TITLE) $(MUI_TEXT_DIRECTORY_SUBTITLE)  ;"选定安装位置" "选定 $(^NameDA) 要安装的文件夹。"
  InstallOptions::show ;弹出窗口
  Pop $R0

FunctionEnd


Function LeaveCustom ;窗口结束后
; 判断用户输入的路径是否合法。 不知道怎么判断,有知道的可以告诉我

  ReadINIStr $DataDir "$PLUGINSDIR\setup.ini" "Field 3" State  ;读取新录入的内容
FunctionEnd

在本后面的安装过程中,可以将数据安装框 $DataDir 目录下


还有setup.ini文件如下,保存显示内容的位置,以及类型

[Settings]
NumFields=7


[Field 1] ;开头提示
Type=Label
Left=0
Right=310
Top=0
Bottom=26


[Field 2]  ;数据目录
Type=GroupBox
Left=0
Right=298
Top=70
Bottom=106


[Field 3] ;目录录入框
Type=DirRequest
Left=10
Right=254
Top=84
Bottom=97

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nsis是一款基于脚本的安装制作工具,而duilib是一款界面库,用于开发Windows桌面应用程序的用户界面。在nsis中使用duilib自定义界面非常简单。 首先,我们需要下载并安装duilib,然后在nsis的脚本中引入duilib的库文件和头文件。我们可以使用duilib提供的许多控件和样式,也可以根据需要自定义界面。 在nsis脚本中,使用duilib的关键是通过调用duilib提供的函数来创建和管理界面控件,比如按钮、文本框、标签等。我们可以设置控件的属性,如位置、大小、背景色等,并添加事件处理函数。 例如,我们可以通过以下代码创建一个窗口,并在窗口中添加一个按钮: ``` !include "MUI2.nsh" !define MUI_PAGE_CUSTOMFUNCTION_SHOW customPageCreate !insertmacro MUI_PAGE_CUSTOM nsDialogsPage nsDialogsPageLeave var hMainWnd Function customPageCreate nsDialogs::Create 1018 Pop $hMainWnd ${NSD_CreateButton} 0 0 100% 100% "点击我!" Pop $0 ${NSD_OnClick} $0 buttonClicked nsDialogs::Show FunctionEnd Function buttonClicked MessageBox MB_OK "按钮被点击了!" FunctionEnd ``` 上述代码中,我们首先使用`nsDialogs::Create`函数创建了一个窗口,并将其句柄保存在变量`$hMainWnd`中。然后,使用`NSD_CreateButton`函数创建了一个按钮,并将其句柄保存在变量$0中。接下来,我们使用`${NSD_OnClick}`函数将按钮和一个事件处理函数`buttonClicked`关联起来。最后,使用`nsDialogs::Show`函数显示窗口。 当按钮被点击时,事件处理函数`buttonClicked`会被调用,弹出一个消息框显示提示信息。 总结而言,使用nsis和duilib可以轻松地自定义界面。我们可以利用duilib提供的函数和样式,创建各种控件,并通过事件处理函数来实现各种界面交互逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值