一步步教你在 Windows 上構(gòu)建 dotnet 系應(yīng)用的 UOS 軟件安裝包

一步步教你在 Windows 上構(gòu)建 dotnet 系應(yīng)用的 UOS 軟件安裝包

本文將詳細(xì)指導(dǎo)您如何一步步為 dotnet 系列應(yīng)用創(chuàng)建符合 UOS 統(tǒng)信系統(tǒng)軟件安裝包的要求。我們這里提到的 dotnet 系列應(yīng)用,是指那些能夠在 linux 平臺上構(gòu)建 ui 框架的應(yīng)用,包括但不限于 CPF 應(yīng)用、UNO 應(yīng)用、Avalonia 應(yīng)用等。

通過利用 dotnet 系的自發(fā)布自包含功能,可以將這些應(yīng)用發(fā)布為獨(dú)立應(yīng)用,進(jìn)而執(zhí)行 deb 包的二進(jìn)制打包過程,從而滿足應(yīng)用在 UOS 統(tǒng)信系統(tǒng)上的軟件安裝包需求。

整體步驟可以分為三個主要部分:

步驟一:發(fā)布應(yīng)用 步驟二:組織文件結(jié)構(gòu) 步驟三:打包 deb 文件 本文將按照這些步驟順序,逐步指導(dǎo)您在 windows 上為 dotnet 系應(yīng)用創(chuàng)建符合要求的 UOS 統(tǒng)信系統(tǒng)軟件安裝包。

步驟一 發(fā)布應(yīng)用 無論是 CPF 應(yīng)用、UNO 應(yīng)用還是 Avalonia 應(yīng)用,構(gòu)建符合要求的 UOS 軟件安裝包的第一步都是對應(yīng)用項(xiàng)目進(jìn)行發(fā)布,并且發(fā)布為獨(dú)立應(yīng)用。以下是這些應(yīng)用的大概發(fā)布命令行,請根據(jù)您的實(shí)際需求進(jìn)行調(diào)整:

dotnet publish -c release -r linux-x64 --self-contained true

發(fā)布完成后,您可以使用發(fā)布的文件夾來制作符合要求的 UOS 軟件安裝包。為了簡化學(xué)習(xí)過程,本文將逐步進(jìn)行。在編寫過程中,本文將先略去本文未涉及的知識點(diǎn)。但請放心,按照本文的方法,您可以構(gòu)建出一個符合要求的 UOS 軟件安裝包,只是本文略過了部分可選的擴(kuò)展功能。

在進(jìn)入步驟二之前,建議將發(fā)布的文件夾復(fù)制到 UOS 系統(tǒng)上進(jìn)行測試,確保應(yīng)用本身能夠正常運(yùn)行。

步驟二 組織文件結(jié)構(gòu) 本文采用盡可能多的手動打包過程,所需工具僅包括文本編輯器、WSL(適用于 Linux 的 Windows 子系統(tǒng))和 dpkg 工具。本文使用 WSL 僅是為了使用 dpkg 工具,盡量使用官方推薦的打包工具。事實(shí)上,整個過程可以在 Windows 上完成,但為了減少引入額外工具,本文仍然使用 dpkg 工具進(jìn)行打包,稍后您會看到 dpkg 工具的使用僅有一句話。

2.1 準(zhǔn)備打包環(huán)境 在開始之前,需要先準(zhǔn)備好打包環(huán)境:

  • 文本編輯器:請勿使用 Windows 自帶的記事本,因?yàn)槠淠J(rèn)行為通常會寫入文件的 bom 頭,導(dǎo)致 Linux 系統(tǒng)無法識別而崩潰。推薦使用 sublimeText 或 vim 工具。
  • debian 的 WSL 工具:下載地址:https://www.php.cn/link/109a44b224f37495f1e879070e9de39e WSL – microsoft Learn。
  • dpkg 工具:默認(rèn)已在 Debian 中包含,您只需打開 Debian WSL 命令行,輸入 dpkg 進(jìn)行測試,即可確認(rèn)是否已安裝。如果未安裝,請在網(wǎng)上搜索安裝方法。 為什么在 WSL 中選擇 Debian 版本?請自行搜索 uos 和 debian 關(guān)系 以了解原因。

2.2 準(zhǔn)備文件結(jié)構(gòu) 準(zhǔn)備工作完成后,即可開始正式的打包過程。首先明確目標(biāo):您現(xiàn)在擁有 Debian 的 WSL 工具和 UI 框架獨(dú)立發(fā)布后的文件夾,這意味著其二進(jìn)制文件可以在 UOS 上直接雙擊運(yùn)行。您需要做的就是將獨(dú)立發(fā)布后的文件夾打包進(jìn)安裝包中,并添加符合 UOS 規(guī)范要求的圖標(biāo)、應(yīng)用信息等。

根據(jù)《應(yīng)用打包規(guī)范》文檔中心-統(tǒng)信UOS生態(tài)社區(qū),可以了解到符合 UOS 規(guī)范要求的安裝包實(shí)際上也是一個 deb 包。不同之處僅在于文件結(jié)構(gòu)組織形式和部分配置內(nèi)容。

根據(jù)《如何構(gòu)建符合要求的 UOS 軟件安裝包 – VVavE》文檔,可以看到在 UOS 規(guī)范下的安裝包的文件結(jié)構(gòu)組織形式如下:

│  ├─DEBIAN │      control │      └─opt     └─apps         └─org.dotnetcampust.exampleapplication             │  info             │              ├─entries             │  ├─applications             │  │      org.dotnetcampust.exampleapplication.desktop             │  │                  │  └─icons             │      └─hicolor             │          └─24x24             │              └─apps             │                      org.dotnetcampust.exampleapplication.png             │                                  └─files                 └─bin                     │  ExampleApplication                     │  ExampleApplication.deps.json                     │  ExampleApplication.dll                     │  ExampleApplication.pdb                     │  ExampleApplication.runtimeconfig.json                     │  ExampleApplication.uprimarker                     │  WindowsBase.dll                     │  Microsoft.CSharp.dll

感謝 VVavE 潮汐 的博客,本文接下來將大量引用其中的知識內(nèi)容。

本文將按照文件夾組織的順序,告訴您如何進(jìn)行組織。

2.2.1 DEBIAN 文件夾 安裝包的文件結(jié)構(gòu)組織的根目錄包含了 DEBIAN 和 opt 兩個文件夾。其中,DEBIAN/ 文件夾是構(gòu)建過程文件夾,包含軟件包構(gòu)建過程相關(guān)的控制文件。在本文中,只需放入 control 構(gòu)建控制文件即可,此文件完全遵循 Debian 官方規(guī)范。

為了方便理解,本文將以 UnoFileDownloader 下載器為例,詳細(xì)說明手動打包的細(xì)節(jié)。

在開始制作安裝包時,您還需要為應(yīng)用命名,即為 AppID 應(yīng)用的唯一標(biāo)識進(jìn)行命名。在 UOS 中采用與 android 系統(tǒng)相似的規(guī)范,應(yīng)用商店只接受使用域名倒置規(guī)則命名的應(yīng)用。請務(wù)必使用廠商的倒置域名+產(chǎn)品名作為應(yīng)用包名,如 com.example.demo,前半部分為廠商域名倒置,后半部分為產(chǎn)品名。如果使用非擁有者的域名作為前綴,可能會引起該域名擁有者進(jìn)行申訴,導(dǎo)致軟件被申訴下架或刪除。

這里必須特別強(qiáng)調(diào),只允許使用小寫字母。在本文下方出現(xiàn)的任何 AppID 或 appid 或 ${appid} 等占位符里,都需要采用此應(yīng)用的唯一標(biāo)識字符串,請務(wù)必確保手工打包時,各處命名都使用相同的字符串。

本文中對 UnoFileDownloader 下載器命名為 org.dotnetcampust.unofiledownloader 應(yīng)用。盡管看起來有些不習(xí)慣且可讀性較差,但這是 UOS 官方的規(guī)范,只有遵守。

首先創(chuàng)建工作文件夾,接下來所有文件組織結(jié)構(gòu)都在此工作文件夾中進(jìn)行。例如,我這里創(chuàng)建的是 C:lindexiWork 文件夾。

在工作文件夾中先創(chuàng)建 DEBIAN 文件夾,請確保大小寫,在 Linux 上是大小寫敏感的。

進(jìn)入 DEBIAN 文件夾,再創(chuàng)建名為 control 的文本文件。接著打開文本編輯器,編輯 control 文件。此 control 文件要求使用 UTF-8 格式編碼,且不帶 BOM 頭。所謂 BOM 頭就是在文件的前兩個字節(jié)中寫入編碼信息,這是在 Windows 上常用的方式,原本 BOM 頭是用來指示編碼大小端的,后來被大家廣泛用于識別文件的編碼。使用 SublimeText 編輯時,默認(rèn)配置是不帶 BOM 頭的。

按照 Debian 的規(guī)范,編寫 control 文件的內(nèi)容,如以下示例:

Package: org.dotnetcampust.unofiledownloader Version: 1.1.3 Section: utils Priority: optional Architecture: amd64 Multi-Arch: foreign Build-Depends: debhelper (>=9) Standards-Version: 3.9.6 Maintainer: lindexi<lindexi_gd> Homepage: https://blog.lindexi.com/ Description: 下載器. </lindexi_gd>

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享