Semi.Avalonia应用打包配置:自定义安装选项
【免费下载链接】Semi.Avalonia 项目地址: https://gitcode.com/IRIHI_Technology/Semi.Avalonia
概述
Semi.Avalonia作为跨平台UI框架,支持在Windows、Linux、macOS和Android等多平台部署应用。本文将详细介绍如何通过项目配置实现自定义安装选项,包括平台特定打包参数、权限设置和资源管理。
项目结构分析
Semi.Avalonia的演示项目采用模块化结构,各平台打包配置分散在不同的项目文件中:
demo/
├── Semi.Avalonia.Demo.Android/ # Android平台配置
├── Semi.Avalonia.Demo.Desktop/ # 桌面平台(Windows/Linux/macOS)
├── Semi.Avalonia.Demo.Drm/ # DRM保护版本
└── Semi.Avalonia.Demo.Web/ # WebAssembly版本
核心打包配置文件包括:
- 桌面应用:Semi.Avalonia.Demo.Desktop.csproj
- Android应用:AndroidManifest.xml
- Web应用:index.html
桌面平台打包配置
基础输出设置
桌面项目默认配置为Windows可执行文件,通过.csproj文件控制输出类型:
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
关键配置说明:
OutputType:WinExe生成带GUI的Windows应用,Exe生成控制台应用ApplicationManifest: 指定应用程序清单文件,控制UAC权限和兼容性
发布选项配置
启用Native AOT编译可显著减小应用体积并提高启动速度:
<!-- 在Semi.Avalonia.Demo.Desktop.csproj中取消注释 -->
<PublishAot>true</PublishAot>
<PublishTrimmed>true</PublishTrimmed>
发布命令示例:
dotnet publish -c Release -r win-x64 /p:PublishAot=true
自定义安装路径
通过添加Windows Installer XML(WIX)或使用ClickOnce部署实现自定义安装路径。在项目中添加安装程序项目,并配置:
<PropertyGroup>
<InstallerOutputPath>$(OutputPath)installer</InstallerOutputPath>
<DefaultInstallDirectory>$(ProgramFilesFolder)\IRIHI Technology\SemiDemo</DefaultInstallDirectory>
</PropertyGroup>
Android平台打包配置
权限管理
AndroidManifest.xml控制应用权限和安装选项:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto">
<uses-permission android:name="android.permission.INTERNET" />
<application android:label="Semi.Avalonia" android:icon="@drawable/Icon" />
</manifest>
关键属性:
android:installLocation:auto(默认): 优先安装到SD卡internalOnly: 强制安装到内部存储preferExternal: 优先安装到外部存储
应用图标配置
Android应用图标通过资源目录组织不同分辨率版本:
Resources/
├── drawable/ # 默认分辨率
├── drawable-v31/ # Android 12+适配
└── drawable-night-v31/ # 深色模式图标
WebAssembly打包配置
Web版本通过index.html控制安装行为,支持PWA(渐进式Web应用)配置:
<head>
<link rel="manifest" href="/manifest.json">
<meta name="theme-color" content="#4285F4">
<link rel="apple-touch-icon" href="/icon-192x192.png">
</head>
添加manifest.json实现安装选项自定义:
{
"name": "Semi.Avalonia Demo",
"short_name": "SemiDemo",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"description": "Semi.Avalonia WebAssembly Demo"
}
跨平台资源管理
共享资源配置
通过项目引用实现资源共享:
<ItemGroup>
<ProjectReference Include="..\Semi.Avalonia.Demo\Semi.Avalonia.Demo.csproj"/>
</ItemGroup>
平台特定资源
使用条件编译包含平台特定资源:
<ItemGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
<None Include="Assets\windows\**" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
<ItemGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))">
<None Include="Assets\linux\**" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
高级打包选项
安装程序自定义
对于Windows平台,可通过添加WIX项目创建专业安装程序:
- 添加WIX工具集依赖:
<PackageReference Include="WixToolset.Build.Tasks" Version="4.0.0" />
- 创建
.wxs文件定义安装界面和行为:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SemiDemo" Language="1033" Version="1.0.0"
Manufacturer="IRIHI Technology" UpgradeCode="PUT-GUID-HERE">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<!-- 定义安装组件和对话框 -->
</Product>
</Wix>
依赖项管理
控制运行时依赖项打包策略:
<ItemGroup>
<PackageReference Include="Avalonia.Desktop" Version="$(AvaloniaVersion)"/>
<!-- 排除不必要的依赖 -->
<PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="2.88.3"
Condition="$([MSBuild]::IsOSPlatform('Linux'))" />
</ItemGroup>
部署验证
打包测试命令
各平台发布命令示例:
# Windows桌面应用
dotnet publish demo/Semi.Avalonia.Demo.Desktop -c Release -r win-x64
# Android应用
dotnet publish demo/Semi.Avalonia.Demo.Android -c Release -f net8.0-android
# Web应用
dotnet publish demo/Semi.Avalonia.Demo.Web -c Release
输出验证
发布成功后,检查输出目录结构:
- 桌面应用:
bin/Release/net8.0/win-x64/publish/ - Android应用:
bin/Release/net8.0-android/android-arm64/publish/ - Web应用:
bin/Release/net8.0/browser-wasm/publish/wwwroot/
总结
通过合理配置项目文件和利用Avalonia框架特性,可以实现高度自定义的应用打包流程。关键要点包括:
- 使用平台特定项目文件分离配置
- 利用条件编译控制资源和依赖
- 针对不同平台优化发布选项
- 通过安装程序项目实现高级安装界面
完整的打包配置示例可参考项目中的演示模块:
【免费下载链接】Semi.Avalonia 项目地址: https://gitcode.com/IRIHI_Technology/Semi.Avalonia
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



