如何为使用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
相关产品推荐
相关产品推荐

