Semi.Avalonia应用打包配置:自定义安装选项

Semi.Avalonia应用打包配置:自定义安装选项

【免费下载链接】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版本

核心打包配置文件包括:

桌面平台打包配置

基础输出设置

桌面项目默认配置为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项目创建专业安装程序:

  1. 添加WIX工具集依赖:
<PackageReference Include="WixToolset.Build.Tasks" Version="4.0.0" />
  1. 创建.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框架特性,可以实现高度自定义的应用打包流程。关键要点包括:

  1. 使用平台特定项目文件分离配置
  2. 利用条件编译控制资源和依赖
  3. 针对不同平台优化发布选项
  4. 通过安装程序项目实现高级安装界面

完整的打包配置示例可参考项目中的演示模块:

【免费下载链接】Semi.Avalonia 【免费下载链接】Semi.Avalonia 项目地址: https://gitcode.com/IRIHI_Technology/Semi.Avalonia

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值