你好,歡迎進(jìn)入江蘇優(yōu)軟數(shù)字科技有限公司官網(wǎng)!
發(fā)布時(shí)間:2024-02-12
瀏覽次數(shù):0
接下來(lái),本文將告訴您如何按照文件夾組織的順序進(jìn)行組織。
2.2.1 文件夾
安裝包的文件結(jié)構(gòu)組織根目錄包含兩個(gè)文件夾: 和 opt。 /文件夾是構(gòu)建過(guò)程文件夾,里面包含了軟件包構(gòu)建過(guò)程相關(guān)的控制文件。本文這里只需要放入構(gòu)建控制文件即可。 該文件完全符合官方規(guī)范。
為了方便大家理解,本文將以打包下載器為例,幫助大家了解手動(dòng)打包的細(xì)節(jié)。
當(dāng)我們開(kāi)始制作安裝包的時(shí)候,我們還需要給應(yīng)用程序命名,即命名AppID應(yīng)用程序的唯一標(biāo)識(shí)。 在UOS中,系統(tǒng)也采用了類(lèi)似的規(guī)范。 應(yīng)用商店僅接受使用域名倒排規(guī)則命名的應(yīng)用程序。請(qǐng)務(wù)必使用廠商的倒排域名+產(chǎn)品名稱(chēng)作為應(yīng)用程序包名稱(chēng),例如com..demo格式。 前半部分是廠家域名倒過(guò)來(lái),后半部分是產(chǎn)品名稱(chēng)。 如果您使用非所有者的域名作為前綴,則可能會(huì)發(fā)生這種情況。 域名所有者提出投訴,導(dǎo)致軟件被下架或刪除
這里必須強(qiáng)調(diào)的是,只允許使用小寫(xiě)字母。本文下方出現(xiàn)的任何AppID或appid或${appid}等占位符都必須使用本應(yīng)用的唯一標(biāo)識(shí)字符串。 請(qǐng)確保手動(dòng)打包時(shí),各處都使用相同的字符串進(jìn)行命名。
在本文中,下載器被命名為org..。雖然看起來(lái)有點(diǎn)陌生,可讀性較差,但這就是UOS官方規(guī)范。 你只能跟著它。
首先創(chuàng)建一個(gè)工作文件夾,然后我們所有的文件都會(huì)組織到這個(gè)工作文件夾中。比如我這里創(chuàng)建的是C:\\\\Work文件夾
首先在工作文件夾中創(chuàng)建一個(gè)文件夾。 請(qǐng)確保區(qū)分大小寫(xiě)。 在 Linux 上它區(qū)分大小寫(xiě)。
進(jìn)入該文件夾并創(chuàng)建一個(gè)名為的文本文件。 然后打開(kāi)文本編輯器并編輯該文件。 該文件需要UTF-8格式編碼,并且沒(méi)有BOM頭。 所謂BOM頭,就是在文件的前兩個(gè)字節(jié)中寫(xiě)入編碼信息。 這是網(wǎng)上常用的方法。 BOM頭最初是用來(lái)表示編碼字節(jié)順序的,后來(lái)被用來(lái)識(shí)別和區(qū)分文件。 編碼。使用編輯器時(shí),默認(rèn)配置不帶BOM頭。
根據(jù)規(guī)范,寫(xiě)入文件的內(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
Homepage: https://blog.lindexi.com/
Description: 下載器.
上述各個(gè)字段/屬性的描述如下。 以下內(nèi)容來(lái)自從頭開(kāi)始制作deb文件 - 博客
/ 文件夾還可以包含許多其他文件,但在本例中不需要使用它們,因此我們將跳過(guò)它們。如果有興趣,請(qǐng)參閱新的維護(hù)者手冊(cè)
2.2.2 選擇文件夾
完成文件寫(xiě)入后,創(chuàng)建/opt/apps/${appid}/文件夾。 請(qǐng)將 ${appid} 替換為您的 AppID 值。 該文件夾是應(yīng)用程序根目錄文件夾。
在本文中,我們將創(chuàng)建 C:\\\\Work\\opt\\apps\\org..\\ 文件夾。 請(qǐng)?zhí)貏e注意文件命名的小寫(xiě)字母。
應(yīng)用程序根目錄應(yīng)包含文件、兩個(gè)目錄和一個(gè)info文件。文件結(jié)構(gòu)如下
│
│
└─opt
└─apps
└─org.dotnetcampust.exampleapplication
│ info
│
├─entries
│ ├─applications
│ │ org.dotnetcampust.exampleapplication.desktop
│ │
│ └─icons
│ └─hicolor
│ └─24x24
│ └─apps
│ org.dotnetcampust.exampleapplication.png
│
└─files
└─bin
│ UnoFileDownloader.Skia.Gtk
│ ...
下面將繼續(xù)按照這個(gè)順序?yàn)槟灰唤榻B。
2.2.2.1 文件夾
首先創(chuàng)建文件夾。 根據(jù)規(guī)范,您可以將任何文件插入files文件夾中,包括應(yīng)用程序可執(zhí)行文件。規(guī)范建議將可執(zhí)行文件放入files/bin文件夾中。 我們是聽(tīng)話(huà)的開(kāi)發(fā)者,所以我們?cè)O(shè)置了 -c -r linux-x64 --self- true 的輸出文件夾(我的是 X:\\\\Code \\.\\src\\\\.Skia.Gtk\\bin\\\\net8.0\\ linux-x64\\\\文件夾)將所有文件復(fù)制(移動(dòng))到files/bin文件夾中
2.2.2.2 文件夾
再次創(chuàng)建一個(gè)文件夾,文件夾中應(yīng)該放置的內(nèi)容是桌面/開(kāi)始菜單圖標(biāo)和應(yīng)用程序啟動(dòng)信息。 在文件夾內(nèi)創(chuàng)建一個(gè)文件夾,并創(chuàng)建一個(gè)AppId。 文件夾內(nèi)的文本文件。以同樣的方式,請(qǐng)將AppId替換為AppId。 與您的應(yīng)用程序標(biāo)識(shí)符。 在本文的示例中,將創(chuàng)建 C:\\\\Work\\opt\\apps\\org..\\\\\\org... 文件。
接下來(lái),打開(kāi)文本編輯器并編輯文本文件。 同樣,該文件需要采用UTF-8編碼格式。以下是org...文件的示例內(nèi)容。 該文件當(dāng)前使用標(biāo)準(zhǔn)格式。 相關(guān)標(biāo)準(zhǔn)及其他領(lǐng)域請(qǐng)參考文檔。
[Desktop Entry]
Categories=Network
Name=UnoFileDownloader
Name[zh_CN]=簡(jiǎn)單的下載器
Keywords=deepin;uniontech;downloader
Keywords[zh_CN]=深度;統(tǒng)信;下載器
Comment=The UnoFileDownloader can download file.
Comment[zh_CN]=可以簡(jiǎn)單下載文件。
Exec=/opt/apps/org.dotnetcampust.unofiledownloader/files/bin/UnoFileDownloader.Skia.Gtk
Icon=org.dotnetcampust.unofiledownloader
Type=Application
Terminal=false
StartupNotify=true
MimeType=audio/aac;application/aac;
以下是從官方文檔復(fù)制過(guò)來(lái)的文檔中關(guān)鍵字段的解釋。
應(yīng)用程序類(lèi)型可以參考以下值進(jìn)行設(shè)置。
除以上類(lèi)別外,填寫(xiě)其他類(lèi)別將歸入“其他申請(qǐng)”
完成 .text 文件,然后創(chuàng)建圖標(biāo)文件夾來(lái)存儲(chǔ)應(yīng)用程序圖標(biāo)。 圖標(biāo)有 svg 矢量格式和 png 非矢量格式。雖然官方文檔說(shuō)非矢量格式推薦使用 png 格式,但實(shí)際上只能使用 png 格式。 我嘗試過(guò)其他格式,例如jpg,但都不起作用。 它們將被默認(rèn)的應(yīng)用程序圖標(biāo)替換。 將jpg后綴改為png也不起作用。 的
您只需放置一份矢量格式圖標(biāo)的副本。 路徑是/icons///apps/${appid}.svg。 放置圖標(biāo)后,復(fù)制其路徑并與此文檔進(jìn)行比較,看看文件夾級(jí)別是否正確。
如果使用非矢量格式,則根據(jù)分辨率放置圖標(biāo),如:
entries/icons/hicolor/24x24/apps/${appid}.png
entries/icons/hicolor/16x16/apps/${appid}.png
同樣,放置圖標(biāo)后,請(qǐng)復(fù)制其路徑并與此文檔進(jìn)行比較。我在制作安裝包時(shí),少了一層文件夾。 經(jīng)過(guò)長(zhǎng)時(shí)間排查,發(fā)現(xiàn)是文件夾級(jí)別錯(cuò)誤。
2.2.2.3 信息文件
完成應(yīng)用程序根目錄下包含的兩個(gè)目錄和文件后,開(kāi)始編寫(xiě)info文件。該文件是應(yīng)用程序描述文件。 用于dde桌面環(huán)境安裝軟件包時(shí)自動(dòng)配置程序的安裝文件。 采用JSON格式,內(nèi)容一般如下
{
"appid": "org.dotnetcampust.unofiledownloader",
"name": "UnoFileDownloader",
"version": "1.1.3",
"arch": ["amd64", "arm64"],
"permissions":
{
"autostart": false,
"notification": false,
"trayicon": false,
"clipboard": false,
"account": false,
"bluetooth": false,
"camera": false,
"audio_record": false,
"installed_apps": false
}
}
這里需要提醒大家的是,UOS官方文檔提供的info文件示例中,文件內(nèi)容的j??son格式是錯(cuò)誤的。 該屬性和下一個(gè)屬性之間缺少逗號(hào)。 如果你想復(fù)制官方的例子,也可以 請(qǐng)確保json格式正確
寫(xiě)完這些,文件結(jié)構(gòu)就完成了。 本例完成后的文件結(jié)構(gòu)如下
C:\\lindexi\\Work
│
│
├─DEBIAN
│ control
│
└─opt
└─apps
└─org.dotnetcampust.unofiledownloader
│ info
│
├─entries
│ ├─applications
│ │ org.dotnetcampust.unofiledownloader.desktop
│ │
│ └─icons
│ └─hicolor
│ └─24x24
│ └─apps
│ org.dotnetcampust.unofiledownloader.png
│
└─files
└─bin
│ UnoFileDownloader.dll
│ UnoFileDownloader.pdb
│ UnoFileDownloader.Skia.Gtk
│ UnoFileDownloader.Skia.Gtk.deps.json
│ UnoFileDownloader.Skia.Gtk.dll
│ UnoFileDownloader.Skia.Gtk.pdb
│ UnoFileDownloader.Skia.Gtk.runtimeconfig.json
│ UnoFileDownloader.uprimarker
│ WindowsBase.dll
│ Microsoft.CSharp.dll
│ ...
完成文件結(jié)構(gòu)后,我們就進(jìn)入打包環(huán)境,開(kāi)始創(chuàng)建deb包。
第三步:打包deb文件
此示例打包使用 WSL 中的 dpkg 工具來(lái)創(chuàng)建 deb 文件。 開(kāi)始前請(qǐng)務(wù)必準(zhǔn)備好環(huán)境。 下載鏈接:
首先使用cd命令進(jìn)入工作路徑,例如本文示例中使用的C:\\Work文件夾。
cd /mnt/c/lindexi/Work
要輸入其他盤(pán)符,請(qǐng)使用/mnt/[盤(pán)符]。值得一提的是,WSL中的中文支持相當(dāng)不錯(cuò),可以放心進(jìn)入中文文件夾。
進(jìn)入后使用ls命令確保進(jìn)入正確的文件夾。 預(yù)期輸出如下
lindexi@DESKTOP-51A5UGG:/mnt/c/lindexi/Work$ ls
DEBIAN opt
接下來(lái),輸入 dpkg-deb -b 。 打包命令
lindexi@DESKTOP-51A5UGG:/mnt/c/lindexi/Work$ dpkg-deb -b . UnoFileDownloader.deb
dpkg-deb: building package 'org.dotnetcampust.unofiledownloader' in 'UnoFileDownloader.deb'.
這樣得到的.deb包就是UOS上可以使用的安裝包文件
文件權(quán)限
在 WSL 中打包 dpkg-deb 時(shí),如果你像我一樣使用磁盤(pán)路徑掛載,并且磁盤(pán)是 NTFS 格式,則可能會(huì)遇到以下錯(cuò)誤信息
dpkg-deb: error: control directory has bad permissions 777 (must be >=0755 and <=0775)
上面的錯(cuò)誤信息即使使用 chmod -R 0755 / 或 chmod -R 0755 命令也沒(méi)有用。因?yàn)槿绻?wsl 進(jìn)入 mnt 的 NTFS 磁盤(pán)格式,則無(wú)法通過(guò) chmod 設(shè)置 0755 權(quán)限。 詳情請(qǐng)參閱。
對(duì)于 NTFS,這個(gè)值是 000,而到了 777,這里太多了。 ,我們把umask的值設(shè)為022sublime text程序圖標(biāo),即右邊的755。
解決辦法是在WSL配置中設(shè)置umask=22,將權(quán)限轉(zhuǎn)換為755,具體步驟如下
進(jìn)入命令行,先提權(quán),然后創(chuàng)建或編輯/etc/wsl.conf文件
lindexi@DESKTOP-51A5UGG: sudo su
lindexi@DESKTOP-51A5UGG: vi /etc/wsl.conf
在/etc/wsl.conf文件中配置umask=22的值。 配置完成后文件內(nèi)容大致如下。 如果/etc/wsl.conf文件不存在,可以完全替換為以下內(nèi)容。 詳情請(qǐng)參閱
[automount]
enabled = true
root = /mnt/
options = "metadata,umask=22,fmask=11"
mountFsTab = false
配置完成后,需要重啟WSL才能生效。重啟WSL需要使用命令行(打開(kāi)一個(gè)新終端)輸入wsl --命令關(guān)閉,然后重啟命令行即可完成重啟。
請(qǐng)不要使用從網(wǎng)上隨意復(fù)制的關(guān)閉服務(wù)的方法。
或者為了更安全,您可以自行重新啟動(dòng)計(jì)算機(jī)。
重啟完成后,輸入 dpkg-deb -b 。 命令進(jìn)行打包。
符號(hào)
通過(guò)上述步驟得到的deb包還沒(méi)有簽名。 如需簽名請(qǐng)參考開(kāi)發(fā)者調(diào)試簽名文檔中心-同心UOS生態(tài)社區(qū)
簽名步驟需要在UOS系統(tǒng)上進(jìn)行。 對(duì)于開(kāi)發(fā)環(huán)境,甚至可以安裝未簽名的deb包。也就是說(shuō),簽名步驟是可選的。
開(kāi)始簽名之前,請(qǐng)先注冊(cè)一個(gè)開(kāi)發(fā)者賬號(hào)
然后打開(kāi)同心應(yīng)用商店sublime text程序圖標(biāo),搜索“證書(shū)工具”,安裝證書(shū)工具。
安裝完成后,進(jìn)入U(xiǎn)OS命令行。 可以使用快捷鍵ctrl+alt+T進(jìn)入,輸入cert-tool -="UOS賬號(hào)" -="UOS密碼"進(jìn)行初始化,如下命令行所示
cert-tool -username=lindexi -password=123123123
完成初始化后,就可以對(duì)未簽名的deb包進(jìn)行簽名了。 命令行格式如下
deepin-elf-sign-deb [deb-file]
請(qǐng)將[deb-file]替換為待簽名的deb包路徑
例如本文的命令行如下
deepin-elf-sign-deb UnoFileDownloader.deb
打字完畢,慢慢等待簽名。 當(dāng)您最終看到成功警告時(shí),簽名就完成了。
Signed successfully!
簽名后的deb包會(huì)放在待簽名的deb包目錄下創(chuàng)建的目錄中。 簽名完成后我們可以進(jìn)入這個(gè)文件夾查看deb文件。
為了確保簽名已經(jīng)成功,可以使用-deb-命令來(lái)驗(yàn)證簽名
首先使用cd命令進(jìn)入文件夾,然后使用如下命令驗(yàn)證簽名
deepin-deb-verify [簽名的 deb 包]
請(qǐng)將 [ deb ] 替換為您實(shí)際的 deb 包。 在此示例中,輸入以下命令
deepin-deb-verify UnoFileDownloader.deb
如果輸出[INFO],則證明簽名成功。
接下來(lái),您可以嘗試雙擊已簽名的 deb 來(lái)安裝它。
FAQ dpkg提示最終錯(cuò)誤
原因是//文件最后一行少了一個(gè)空行
dpkg提示''字段錯(cuò)誤
//可能是編輯文件時(shí),編輯器寫(xiě)入了BOM頭
您可以使用二進(jìn)制查看器查看文件的前兩個(gè)字節(jié)是否包含 BOM 標(biāo)頭。 例如EF BB BF開(kāi)頭就是一個(gè)UTF-8 BOM頭。關(guān)于BOM頭的詳細(xì)信息請(qǐng)參見(jiàn)BOM(字節(jié)順序標(biāo)記())_百度百科
解決辦法是換個(gè)文本編輯器或者手動(dòng)刪除BOM信息
dpkg提示No such file或者錯(cuò)誤
詳細(xì)的錯(cuò)誤信息是
dpkg-deb: error: failed to open package info file '/DEBIAN/control' for reading: No such file or directory
請(qǐng)確保您位于正確的文件夾中并且工作路徑正確
開(kāi)始菜單圖標(biāo)為空白或默認(rèn)應(yīng)用程序圖標(biāo)
原因是圖標(biāo)文件錯(cuò)誤或者文件路徑錯(cuò)誤。
比如我少了一層文件夾,就會(huì)寫(xiě)成512*512的文件夾。
建議放置圖標(biāo)后,將復(fù)制路徑與本文檔進(jìn)行對(duì)比,看看是否放置了錯(cuò)誤的文件夾。
確保圖標(biāo)文件的格式使用非矢量格式中的.png格式,無(wú)論是后綴名還是圖像格式本身,尤其是從網(wǎng)上下載的圖標(biāo)。如果不確定,可以使用或者自帶圖像查看工具來(lái)了解其文件格式。
矢量 svg 圖標(biāo)。 請(qǐng)確保 svg 使用簡(jiǎn)單的格式,而不是超級(jí)復(fù)雜的 svg 格式。
應(yīng)用程序啟動(dòng)崩潰
打包前,建議將發(fā)布的輸出文件夾復(fù)制到UOS中測(cè)試運(yùn)行。 首先,確保發(fā)布的二進(jìn)制文件本身可以正常運(yùn)行。
如果二進(jìn)制文件本身可以運(yùn)行但無(wú)法通過(guò)點(diǎn)擊開(kāi)始菜單啟動(dòng)或者找不到已安裝的應(yīng)用程序,請(qǐng)檢查info文件格式、字段和字段值是否符合要求,文件是否正確。
打開(kāi)控制臺(tái)調(diào)試
如果您想在打包后運(yùn)行已安裝的應(yīng)用程序進(jìn)行調(diào)試,以查看輸出控制臺(tái),您可以在打包過(guò)程中編輯.text文件并將值設(shè)置為true。這將在啟動(dòng)程序時(shí)顯示控制臺(tái)
如果還有什么不明白的地方,歡迎進(jìn)群交流。
如有侵權(quán)請(qǐng)聯(lián)系刪除!
Copyright ? 2023 江蘇優(yōu)軟數(shù)字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服務(wù)提供商
13262879759
微信二維碼