You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NSIS安装完成后如何创建桌面、开始菜单快捷方式及添加自定义页面

完全可以创建单个自定义页面集成你需要的复选框、单选按钮、程序组配置项,不需要拆分多个页面,用NSIS自带的nsDialogs插件即可实现。

以下是两种适配你现有页面序列的实现方案,可根据改造成本选择:

方案1:改造现有自定义页面(最小改动)

你现有代码中已经在!insertmacro MUI_PAGE_INSTFILES之后声明了Page custom nsDialogShortcut ngDialogShortcutPageLeave自定义页面,直接在这个页面的创建回调里新增需要的控件即可,不需要调整现有页面顺序,也不用额外新增页面。
参考实现代码如下:

; 提前声明控件变量
Var hCtl_Radio_ServiceA
Var hCtl_Radio_ServiceB
Var hCtl_Checkbox_AutoStart
Var hCtl_Text_StartMenuGroup
Var hCtl_Btn_BrowseGroup

Function nsDialogShortcut
  !insertmacro MUI_HEADER_TEXT "附加配置" "请选择你需要的安装选项后点击下一步"
  nsDialogs::Create 1018
  Pop $0
  
  ; 添加单选按钮组(示例为选择要重启的服务)
  ${NSD_CreateRadioButton} 0 0 100% 12u "重启服务A"
  Pop $hCtl_Radio_ServiceA
  ${NSD_SetState} $hCtl_Radio_ServiceA ${BST_CHECKED} ; 设置默认选中
  ${NSD_CreateRadioButton} 0 15u 100% 12u "重启服务B"
  Pop $hCtl_Radio_ServiceB
  
  ; 添加自定义复选框
  ${NSD_CreateCheckBox} 0 35u 100% 12u "系统重启后自动启动应用"
  Pop $hCtl_Checkbox_AutoStart
  
  ; 添加程序组配置项
  ${NSD_CreateLabel} 0 55u 30u 12u "程序组:"
  Pop $0
  ${NSD_CreateText} 35u 55u 70% 12u "我的应用程序" ; 默认程序组名称
  Pop $hCtl_Text_StartMenuGroup
  ${NSD_CreateBrowseButton} 107u 55u 25u 12u "浏览..."
  Pop $hCtl_Btn_BrowseGroup
  ${NSD_OnClick} $hCtl_Btn_BrowseGroup BrowseStartMenuGroupCallback
  
  nsDialogs::Show
FunctionEnd

; 程序组浏览按钮点击回调
Function BrowseStartMenuGroupCallback
  nsDialogs::SelectFolder "请选择程序组存放位置" ""
  Pop $0
  ${IfNot} $0 == error
    ${NSD_SetText} $hCtl_Text_StartMenuGroup $0
  ${EndIf}
FunctionEnd

; 离开页面时统一处理所有选择结果
Function ngDialogShortcutPageLeave
  ; 读取单选按钮选择结果
  ${NSD_GetState} $hCtl_Radio_ServiceA $0
  ${If} $0 == ${BST_CHECKED}
    StrCpy $R0 "ServiceA"
  ${Else}
    StrCpy $R0 "ServiceB"
  ${EndIf}
  
  ; 读取复选框状态
  ${NSD_GetState} $hCtl_Checkbox_AutoStart $1
  
  ; 读取程序组配置,直接赋值给开始菜单变量即可复用原有创建逻辑
  ${NSD_GetText} $hCtl_Text_StartMenuGroup $SMDir
  
  ; 此处可直接添加对应操作:重启服务、创建快捷方式、写入配置等
FunctionEnd

使用该方案后,你可以删掉原有的!insertmacro MUI_PAGE_STARTMENU 0 $SMDir声明,所有配置在单个自定义页面完成即可。

方案2:保留原有页面结构(适合新手快速实现)

如果你不想自己实现程序组浏览、校验逻辑,也可以保留现有的MUI_PAGE_STARTMENU,只把需要的复选框、单选按钮加到已有的nsDialogShortcut自定义页面中,页面整体顺序不需要调整,逻辑改动最小。

注意事项

由于自定义页面放在MUI_PAGE_INSTFILES之后,所有控件的选择结果可以直接在离开回调中执行对应操作,不需要等到后续页面处理。如果需要根据用户选择跳过后续页面,可以在离开回调中设置$0 = 1实现跳转。

内容的提问来源于stack exchange,提问作者JDGuide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:09:03