你想要把 Avalonia 的 C# 工程打包成一个可安装的桌面程序(如 Windows 的 exe 安装包、macOS 的 dmg 或 Linux 的 deb/rpm),而不只是生成零散的可执行文件,我会给你详细的、分平台的打包方案。
核心打包思路
Avalonia 官方推荐使用 Avalonia.ReactiveUI.Templates 自带的打包工具,或结合 .NET 自带的 publish 命令 + 第三方打包工具(如 Inno Setup、WiX、dotnet-bundle)来实现可安装程序的制作。以下是最常用、最稳定的 Windows 平台打包方案(也是国内开发者最常用的)。
第一步:先发布项目(生成单文件 / 自包含程序)
首先需要将 Avalonia 项目发布为可执行文件,推荐使用自包含 + 单文件模式,这样用户无需安装.NET 运行时。
1. 发布命令(终端 / 命令行)
打开项目目录,执行以下命令(以 Windows x64 为例):
bash
运行
# Windows x64 自包含 + 单文件 + 裁剪未使用依赖dotnet publish -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true /p:TrimMode=partial /p:PublishReadyToRun=true参数说明:
- -c Release:发布 Release 版本
- -r win-x64:指定运行时(win-x86/win-arm64/osx-x64/linux-x64 等)
- --self-contained true:自包含(包含.NET 运行时)
- PublishSingleFile=true:打包为单个 exe 文件
- IncludeNativeLibrariesForSelfExtract=true:包含本地库并自解压
- TrimMode=partial:裁剪未使用的代码(减小体积)
发布完成后,文件会生成在 项目目录/bin/Release/net8.0/win-x64/publish/ 下(根据你的.NET 版本调整)。
第二步:制作可安装程序(Windows 平台)
推荐使用 Inno Setup(免费、易用、功能强)来将发布后的 exe 打包成带安装界面的 exe 安装包。
步骤 1:安装 Inno Setup
- 下载地址:https://jrsoftware.org/isdl.php
- 安装完成后,打开 Inno Setup Compiler。
步骤 2:编写 Inno Setup 脚本
新建脚本文件(如MyAvaloniaApp.iss),替换以下内容为你的项目信息:
ini
; 脚本由 Inno Setup 生成[Setup]; 基本信息AppName=EasyPlot ; 你的应用名称AppVersion=1.0.0 ; 版本号AppPublisher=你的名字/公司AppPublisherURL=https://your-url.comDefaultDirName={autopf}\EasyPlot ; 默认安装路径(Program Files)DefaultGroupName=EasyPlotOutputDir=Output ; 安装包输出目录OutputbaseFilename=EasyPlot-Setup ; 安装包文件名Compression=lzma2/max ; 最高压缩率SolidCompression=yes; 权限(管理员权限,如需写入Program Files)PrivilegesRequired=admin[Files]; 复制发布后的所有文件到安装目录Source: "bin\Release\net8.0\win-x64\publish\*"; DestDir: "{app}"; Flags: recursesubdirs createallsubdirs[Icons]; 创建桌面快捷方式Name: "{commondesktop}\EasyPlot"; Filename: "{app}\EasyPlot.exe"; WorkingDir: "{app}"; 创建开始菜单快捷方式Name: "{group}\EasyPlot"; Filename: "{app}\EasyPlot.exe"; WorkingDir: "{app}"; 创建卸载快捷方式Name: "{group}\卸载 EasyPlot"; Filename: "{uninstallexe}"[Run]; 安装完成后是否启动程序Filename: "{app}\EasyPlot.exe"; Description: "{cm:LaunchProgram,EasyPlot}"; Flags: nowait postinstall skipifsilent[UninstallDelete]; 卸载时删除残留文件Type: filesandordirs; Name: "{app}"Type: filesandordirs; Name: "{userappdata}\EasyPlot"步骤 3:编译安装包
- 在 Inno Setup 中打开上述脚本文件
- 点击菜单栏「编译」→「编译」(或按 F9)
- 编译完成后,在Output目录下会生成可双击安装的EasyPlot-Setup.exe
其他平台打包方案
1. macOS 平台
- 发布命令:dotnet publish -c Release -r osx-x64 --self-contained true /p:PublishSingleFile=true
- 打包工具:使用create-dmg制作 dmg 安装包
- bash
- 运行
- # 安装create-dmg brew install create-dmg # 制作dmg create-dmg --volname "EasyPlot" --app-drop-link 450 120 --icon "EasyPlot.app" 150 120 "EasyPlot.dmg" "publish/"
2. Linux 平台
- 发布命令:dotnet publish -c Release -r linux-x64 --self-contained true /p:PublishSingleFile=true
- 打包工具:deb 包:使用dpkg-debrpm 包:使用rpmbuildAppImage:使用appimagetool
进阶:使用 Avalonia 官方打包工具(可选)
Avalonia 提供了Avalonia.Packaging NuGet 包,可简化打包流程:
- 安装包:
- bash
- 运行
- dotnet add package Avalonia.Packaging
- 打包命令:
- bash
- 运行
- dotnet avalonia package -c Release -r win-x64
- (该方式更适合快速打包,功能不如 Inno Setup 灵活)
总结
- 基础步骤:先通过dotnet publish生成自包含的单文件程序,再用打包工具制作安装包。
- Windows 首选:Inno Setup(免费、易用、功能全),适合制作带安装界面、快捷方式、卸载功能的 exe 安装包。
- 关键参数:发布时使用--self-contained true和PublishSingleFile=true,确保用户无需安装.NET 运行时即可运行。
如果需要更简化的打包流程(比如免安装的绿色版),直接将 publish 目录压缩为 zip 即可;如果需要企业级安装包(如 MSI),可使用 WiX Toolset 替代 Inno Setup。

