Electron.NET 打包与分发:使用electron-builder创建安装程序
概述
Electron.NET 集成了 Visual Studio 的发布系统,通过 electron-builder 创建可分发的 Electron 软件包。该过程利用 .NET 的构建系统,同时自动生成必要的 Electron 配置文件。ASP.NET 应用和控制台应用的发布过程略有不同:ASP.NET 应用使用 SelfContained=true 进行文件夹发布,控制台应用使用 SelfContained=false 进行文件夹发布。
创建发布配置文件
在 Properties/PublishProfiles/ 目录下添加发布配置文件。
ASP.NET 应用配置文件(Windows)
win-x64.pubxml:
<?xml version="1.0" encoding="utf-8"?>
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<TargetFramework>net8.0</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<SelfContained>true</SelfContained>
<PublishSingleFile>false</PublishSingleFile>
</PropertyGroup>
</Project>
ASP.NET 应用配置文件(Linux)
linux-x64.pubxml:
<?xml version="1.0" encoding="utf-8"?>
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<TargetFramework>net8.0</TargetFramework>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
<SelfContained>true</SelfContained>
<PublishSingleFile>false</PublishSingleFile>
</PropertyGroup>
</Project>
控制台应用配置文件(Windows)
win-x64.pubxml:
<?xml version="1.0" encoding="utf-8"?>
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<TargetFramework>net8.0</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<SelfContained>false</SelfContained>
<PublishSingleFile>false</PublishSingleFile>
<PublishReadyToRun>false</PublishReadyToRun>
</PropertyGroup>
</Project>
控制台应用配置文件(Linux)
linux-x64.pubxml:
<?xml version="1.0" encoding="utf-8"?>
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<TargetFramework>net8.0</TargetFramework>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
<SelfContained>false</SelfContained>
<PublishSingleFile>false</PublishSingleFile>
</PropertyGroup>
</Project>
配置 Electron Builder
ElectronNET.Core 会在 Properties\electron-builder.json 下自动添加默认的 electron-builder.json 文件。以下是一个示例配置:
src/ElectronNET.ConsoleApp/Properties/electron-builder.json
{
"$schema": "https://raw.githubusercontent.com/electron-userland/electron-builder/refs/heads/master/packages/app-builder-lib/scheme.json",
"compression": "maximum",
//"afterPack": "bin/Assets/afterPack.js",
//"beforePack": "bin/Assets/beforePack.js",
"buildNumber": "",
"linux": {
"target": [
"tar.xz"
//"AppImage",
//"rpm",
//"deb",
//"pacman"
],
"executableArgs": [ "--no-sandbox" ],
"icon": "bin/Assets/icon.png",
"artifactName": "${name}-${arch}-${version}.${ext}"
},
"win": {
"target": [
{
"target": "portable",
"arch": "x64"
}
],
"icon": "bin/Assets/icon.ico"
},
"mac": {
"icon": "bin/Assets/icon.icns"
}
}
更多可用配置选项详见 electron-builder 官方文档。
从 Visual Studio 发布
- 在解决方案资源管理器中右键单击项目
- 选择“发布”
- 选择发布配置文件(Windows/Linux)
- 点击“发布”
发布过程将:
- 构建 .NET 应用程序
- 复制所有需要的文件
- 安装 npm 依赖项
- 运行 electron-builder
[!NOTE]
在 Windows 上为 Linux 配置运行发布时,Electron.NET 将自动使用 WSL 进行特定于平台的步骤。
发布后,最终结果将位于 publish\Release\netx.0\xxx-xxx\。
MacOS 构建注意事项
[!NOTE] 无法在 Windows 机器上创建 macOS 构建,因为它们需要 Windows 不支持的符号链接(根据 此 Electron 问题)。可以在 Linux 或 macOS 机器上生成 macOS 构建。
后续步骤
- Startup Methods - 了解打包应用的不同启动模式
- Debugging - 调试打包的应用程序
- Migration Guide - 更新现有项目以适应新的发布方式
优势
✅ 原生 VS 集成 - 使用熟悉的发布工作流
✅ 跨平台构建 - 从 Windows 构建 Linux 软件包
✅ 自动配置 - 无需手动设置 electron-builder
✅ 多种软件包类型 - NSIS、AppImage、DMG 等
✅ CI/CD 就绪 - 轻松集成到构建管道
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



