ToB企服应用市场:ToB评测及商务社交产业平台

标题: Packaging.DebUOS 专门为 dotnet 应用制作 UOS 安装包 [打印本页]

作者: 石小疯    时间: 2024-9-12 10:25
标题: Packaging.DebUOS 专门为 dotnet 应用制作 UOS 安装包
Packaging.DebUOS 是我所在的团队开发开源的一款专门用在为 dotnet 的应用制作成为符合要求的 UOS 统信系统软件安装包的工具,此工具可以辅助开发者使用现有的工具链经过简朴的配置即可完成安装包的制作
计划思想

Packaging.DebUOS 旨在通过使用 csproj 项目文件等方式进行配置,避免直接处置惩罚deb包的打包细节,从而降低学习成本。它内置了大量默认属性,可以直接开箱即用而无需进行大量配置。此外,它依靠于 dotnet 构建命令,能与现有工具链无缝集成,方便接入团队旧有的CI/CD服务。除了提供简朴易用的方法外,还提供了高级的命令行方法,以满足高定制 deb 包制作的需求。在高级命令行用法部门将对这些高级方法进行增补先容
使用方法

第一步,安装 NuGet 库。通过 NuGet 管理器或接纳如下代码编辑 csproj 项目文件安装 Packaging.DebUOS 库
  1.   <ItemGroup>
  2.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  3.   </ItemGroup>
复制代码
安装 Packaging.DebUOS 库不会影响到你的应用代码逻辑,仅仅只用来收集构建 UOS 应用安装包所需的配置信息,以及深度集成到 dotnet 构建命令内里
第二步,配置 UOS 的 AppId 属性值。如下面代码,编辑 csproj 项目文件,设置 AppId 属性。按照 UOS 的规范,请务必使用厂商的倒置域名+产物名作为应用包名,如 com.example.demo 格式,前半部门为厂商域名倒置,后半部门为产物名,只答应小写字母
  1.   <PropertyGroup>
  2.     <AppId>com.example.demo</AppId>
  3.   </PropertyGroup>
复制代码
详细更改可参阅 FileDownloader 项目标更改内容: 配置 ID 用来打包 - dotnet-campus/dotnetCampus.FileDownloader@2d5769b - GitHub
第三步,执行命令行打包。在原有的 dotnet publish 命令内里,带上 -t:CreateDebUOS 参数,即可在正常发布完成之后,自动使用发布的输出文件制作成为符合要求的 UOS 统信系统软件安装包
  1. dotnet publish -c release -r linux-x64 --self-contained true -t:CreateDebUOS
复制代码
如此即可完成一个最为简朴的符合要求的 UOS 统信系统软件安装包的制作。输出的安装包将会放在发布文件夹内里,可以将其拷贝到开发者的 UOS 系统上进行测试安装,预计正常都能安装成功
以上就是通过 Packaging.DebUOS 制作 UOS 统信系统软件安装包的最简朴步骤。但相信对于大部门开发者来说,仅仅只是打出安装包还不能满足需求,开发者们还渴望能够更好的配置安装包的更多信息,比如说安装到开始菜单的图标、开始菜单显示的应用名、配置安装包版本号等等,以下更多配置部门将会给出更多打包属性以满足开发者的更多定制需求
更多配置

以下枚举出一些常用配置属性,更多的可配置属性请参阅 DebUOSConfiguration 配置大全 文档枚举的属性,或参考本文末尾的全部配置项章节
以下是对这些属性进行配置的 csproj 代码文件示例
  1.   <ItemGroup>
  2.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  3.   </ItemGroup>      com.dotnetcampus.unofiledownloader    1.0.1  <ItemGroup>
  4.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  5.   </ItemGroup>UnoFileDownloader  <ItemGroup>
  6.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  7.   </ItemGroup>下载器    Download32x32Icon.png    The file downloader.    文件下载器,代码完全开源    The UNO file downloader.    https://github.com/dotnet-campus/dotnetCampus.FileDownloader    dotnet-campus  
复制代码
完成以上配置即可构建出一个比较完备的 deb 安装包了
以上的示例对应的真实项目代码变更请参阅: 加上更多打包属性 - dotnet-campus/dotnetCampus.FileDownloader@a834677 - GitHub
如渴望自动在发布之后输出符合 UOS 规范的 deb 包,渴望不必要在命令行添加 -t:CreateDebUOS 参数,则可以通过配置 true 属性到 csproj 从而实现在发布之后,自动执行打包,如以下代码
  1.   <PropertyGroup>
  2.     <AutoCreateDebUOSAfterPublish>true</AutoCreateDebUOSAfterPublish>
  3.   </PropertyGroup>
复制代码
如果仅通过属性配置依然无法达到预期的安装包制作要求,可以参考以下的高级命令行用法
高级命令行用法

命令行的使用方法是通过 dotnet tool 调用 Packaging.DebUOS.Tool 工具进行打包。通过 Packaging.DebUOS.Tool 工具可以作为 dpkg-deb 工具在 Windows 上的部门功能替代品
使用命令行工具比较适合创建构建更为复杂的 deb 安装包,可以有更强的定制化,适合对 UOS 安装包规范较熟悉的开发者使用
使用以下命令进行更新或安装工具:
  1. dotnet tool update -g Packaging.DebUOS.Tool
复制代码
将已经预备好的符合 UOS 安装包文件组织规范的文件夹打包为 deb 安装包:
  1. dotnet dpkg-debuos -b C:\lindexi\DebPacking -o C:\lindexi\UOS\Foo.deb
复制代码
以上的 C:\lindexi\DebPacking 为已预备好的符合 UOS 安装包文件组织规范的文件夹,以上的 C:\lindexi\UOS\Foo.deb 为打包输出的文件。其中 -o 指定打包输出文件参数可以忽略,如忽略此参数,则将会在打包文件夹输出 deb 安装包
通过命令行工具打包的方法,可以让开发者自行组织 UOS 安装包文件夹,可以让开发者有更自由更高级的定制
开源地址

此工具使用最友好的 MIT 协议在 GitHub 上完全开源,详细请看: https://github.com/dotnet-campus/dotnetcampus.DotNETBuildSDK
如有问题欢迎到 GitHub 上提 Issus 交换
参考文档

感谢

如使用过程有问题,欢迎加入国产应用开发群交换: 810052083
全部配置项

大部门配置都是可选项,以下仅仅作为示例参考使用
  1. <DebControlFile>Assets\control</DebControlFile>
  2. <DebPostinstFile>Assets\PostInstall.sh</DebPostinstFile>
  3. <DebPrermFile>Assets\PreRm.sh</DebPrermFile>
  4. <DebPostrmFile>Assets\PostRm.sh</DebPostrmFile>
  5. <DebPreinstFile>Assets\preinst.sh</DebPreinstFile>
  6. <DebInfoFile>Assets\Info.json</DebInfoFile>
  7. <DebDesktopFile>Assets\Demo.desktop</DebDesktopFile>
  8. <AppId>com.example.demo</AppId>
  9. <UOSAppId>com.example.demo</UOSAppId>
  10. <Version>1.2.3</Version>
  11. <UOSDebVersion>1.2.3</UOSDebVersion>
  12. <DebControlSection>utils</DebControlSection>
  13. <DebControlPriority>optional</DebControlPriority>
  14. <Architecture>amd64</Architecture>
  15. <DebControlMultiArch>foreign</DebControlMultiArch>
  16. <DebControlBuildDepends>debhelper (>=9)</DebControlBuildDepends>
  17. <DebControlStandardsVersion>3.9.6</DebControlStandardsVersion>
  18. <DebControlMaintainer>dotnet-campus</DebControlMaintainer>
  19. <DebControlHomepage>https://github.com/dotnet-campus/dotnetcampus.DotNETBuildSDK</DebControlHomepage>
  20. <DebControlDescription>The file downloader.</DebControlDescription>
  21. <DebControlDepends></DebControlDepends>
  22. <AppName>UnoFileDownloader</AppName>
  23. <AppNameZhCN>下载器</AppNameZhCN>
  24. <InfoPermissions>autostart;notification;trayicon;clipboard;account</InfoPermissions>
  25. <DesktopCategories>Other</DesktopCategories>
  26. <DesktopKeywords>deepin;downloader</DesktopKeywords>
  27. <DesktopKeywordsZhCN>工具;下载器</DesktopKeywordsZhCN>
  28. <DesktopComment>The file downloader.</DesktopComment>
  29. <DesktopCommentZhCN>这是一个下载器</DesktopCommentZhCN>
  30. <DesktopNoDisplay>false</DesktopNoDisplay>
  31. <DesktopExec>/opt/apps/$(AppId)/files/bin/$(AssemblyName)</DesktopExec>
  32. <DesktopIcon>$(UOSAppId)</DesktopIcon>
  33. <DesktopType>Application</DesktopType>
  34. <DesktopTerminal>false</DesktopTerminal>
  35. <DesktopStartupNotify>true</DesktopStartupNotify>
  36. <DesktopMimeType>audio/aac;application/aac;</DesktopMimeType>
  37. <PackingFolder>obj\DebUOSPacking\Packing\</PackingFolder>
  38. <WorkingFolder>obj\DebUOSPacking\</WorkingFolder>
  39. <ProjectPublishFolder>$([MSBuild]::NormalizePath($(MSBuildProjectDirectory), $(PublishDir)))</ProjectPublishFolder>
  40. <DebUOSOutputFilePath>bin\Foo.deb</DebUOSOutputFilePath>
  41. <UOSDebIconFolder>Assets\Icons\</UOSDebIconFolder>
  42. <SvgIconFile>Assets\Icons\Logo.svg</SvgIconFile>
  43. <Png16x16IconFile>Assets\Icons\Logo16x16.png</Png16x16IconFile>
  44. <ExcludePackingDebFileExtensions>.pdb;.dbg;.md</ExcludePackingDebFileExtensions>
复制代码
FAQ

如安在 deb 包内里添加符号 pdb 文件

添加 ExcludePackingDebFileExtensions 属性配置,重新指定打包时应该有哪些后缀被清除。由于默认的 ExcludePackingDebFileExtensions 属性包含了 .pdb .dbg .md 文件,因此符号 pdb 文件将被清除
  1.   <ItemGroup>
  2.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  3.   </ItemGroup>  .dbg;.md   
复制代码
如何添加更多文件加入 deb 打包里

一般情况下,能够输出到发布路径的,就能加入到 deb 包内里。比如在 csproj 配置某些文件如果较新则拷贝等
如果必要动态编写构建逻辑,则可在 Publish 之后,在 CreateDebUOS 之前,进行动态加入文件。如以下例子,添加的是构建信息 Version.txt 文件到打包的 deb 内里
  1.   <ItemGroup>
  2.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  3.   </ItemGroup>    $([System.IO.Path]::Combine($(PublishDir), "Version.txt"))      $([System.DateTimeOffset]::get_Now().ToString())  <ItemGroup>
  4.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  5.   </ItemGroup>  <ItemGroup>
  6.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  7.   </ItemGroup>  <ItemGroup>
  8.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  9.   </ItemGroup>  <ItemGroup>
  10.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  11.   </ItemGroup>  <ItemGroup>
  12.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  13.   </ItemGroup>  <ItemGroup>
  14.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  15.   </ItemGroup>  <ItemGroup>
  16.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  17.   </ItemGroup>  <ItemGroup>
  18.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  19.   </ItemGroup>  <ItemGroup>
  20.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  21.   </ItemGroup>  <ItemGroup>
  22.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  23.   </ItemGroup>   
复制代码
如何添加 vlc 依靠

在 PropertyGroup 里的 DebControlDepends 属性的添加 vlc,libvlc-dev 依靠,代码如下
  1.   <ItemGroup>
  2.     <PackageReference Include="Packaging.DebUOS" Version="3.16.3"/>
  3.   </ItemGroup>  vlc,libvlc-dev  
复制代码
由于 LibVLCSharp 难以维护 Linux 复杂的 VLC 版本,因此软件带 VLC 是推荐声明依靠。声明依靠之后,将在安装 deb 安装包的时候要求依靠负载。如使用 dpkg 命令,则在缺失依靠时不给安装,且给出其依靠说明。如使用图形界面的安装器,比如麒麟系统的 kylin-installer 安装器,一般都会自动从软件包源安装依靠

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4