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

如何为使用electron-builder的Electron应用安装器添加Python安装复选框

给Electron-builder的NSIS安装器添加Python可选安装复选框

1. 修改package.json的build配置

先在项目的package.json里配置electron-builder的NSIS选项,开启自定义脚本支持:

"build": {
  "nsis": {
    "include": "./installer-scripts/custom.nsh",
    "oneClick": false,
    "allowToChangeInstallationDirectory": true,
    "perMachine": false
  }
}
  • oneClick必须设为false,单步安装模式不支持自定义UI元素
  • include指定自定义NSIS脚本的路径

2. 编写自定义NSIS脚本

在项目根目录创建installer-scripts/custom.nsh,写入以下内容:

; 定义变量存储用户勾选状态
Var InstallPython

; 向安装向导添加自定义复选框页面
Function .onInit
  nsDialogs::Create 1018
  Pop $0

  ; 添加说明标签
  ${NSD_CreateLabel} 0 20 100% 20u "同时安装Python(数据采集功能依赖)"
  Pop $0

  ; 添加复选框,默认勾选(可根据需求修改)
  ${NSD_CreateCheckbox} 0 50 100% 20u "我需要安装Python"
  Pop $InstallPython
  ${NSD_Check} $InstallPython

  nsDialogs::Show
FunctionEnd

; 安装过程中处理Python安装逻辑
Function InstallFiles
  ; 先执行默认的应用文件安装流程
  !insertmacro INSTALL_FILES

  ; 读取用户勾选状态
  ${NSD_GetState} $InstallPython $0
  ${If} $0 == ${BST_CHECKED}
    ; 执行Python安装包,假设安装包名为python-setup.exe,已放入项目build目录
    ; /quiet 是静默安装参数,需根据Python安装包的实际支持参数调整
    ExecWait '"$INSTDIR\python-setup.exe" /quiet'
  ${EndIf}
FunctionEnd

; 可选:添加卸载Python的逻辑
Function Uninstall
  !insertmacro UNINSTALL

  ; 这里可添加Python卸载命令,需提前确认Python的卸载程序路径或参数
  ; 示例:ExecWait '"C:\Program Files\Python311\uninstall.exe" /quiet'
FunctionEnd

3. 准备Python安装包

将Python离线安装包(比如python-setup.exe)放到项目的build目录下,electron-builder会自动将其打包进安装程序,安装时会解压到$INSTDIR目录。

关键注意事项

  • Python安装包的静默参数:不同版本的Python安装包参数可能不同,比如官方包常用/quiet或/passive,需提前测试验证
  • 权限设置:如果需要全局安装Python,将perMachine设为true,此时安装器会要求管理员权限
  • 路径一致性:确保脚本中引用的Python安装包文件名与实际文件完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:50:43