本文將詳細(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>