這次教程里還是用 nspawn
技術,但是我們選擇不一樣的系統. 這次我們選擇 ArchLinux
來做
為什么選擇 ArchLinux
呢,有如下原因.
同時因為有之前的文章,這里會說的比較簡單
Deepin
以外移植 Deepin
包最完善的發行版并且還要把 QQ 替換為 NtrQQ
根據我的測試,如果沒有足夠新的 pacman
還是不要嘗試用 pacstrap
了
這樣子容易搞出一些 GPG 簽名的問題
除了去 nspawn.org 尋找,我發現 ArchLinux 官方提供了一個精簡的 bootstrap 系統
去鏡像站逛一逛!
來到網易鏡像站,打開下面的連接
https://mirrors.163.com/archlinux/iso/latest/
找到 archlinux-bootstrap-xxxx.xx.xx-x86_64.tar.gz
下載下來
解壓之后這個就是我們需要的 rootfs 了
直接抄作業吧,保存到 /etc/systemd/nspawn/archlinux.nspawn
[exec]Boot = truePrivateUsers = no[Files]# XorgBindReadOnly = /tmp/.X11-unix# GPUBind = /dev/dri# NVIDIA 有顯卡才寫Bind = /dev/nvidia0Bind = /dev/nvidiactlBind = /dev/nvidia-modesetBind = /dev/nvidia-uvmBind = /dev/nvidia-uvm-toolsBind = /dev/shm# ControllerBind=/dev/input# PulseAudioBindReadOnly=/run/user/1000/pulse# AppIndicatorBindReadOnly=/run/user/1000/bus# Home Dir# 請在這里修改為具體的路徑,這里不能識別變量Bind = /home/$HOME[Network]VirtualEthernet = noPrivate=no
rootfs 必須可以從 /var/lib/machines/archlinux
訪問
所以具體用什么手段來實現我就不展開說了
首先啟動容器
machinectl start archlinux
接著進入容器
machinectl shell archlinux
這里我做了以下操作,列一下,不展開說了
multilib
和 community
倉庫yay
之后的我會用 yay
來替代 pacman
從容器里面退出來,以新添加的用戶身份進去
machinectl shell 你的用戶名@archlinux
不打算安裝 NtrQQ 的話,直接從倉庫里安裝 aur/deepin-wine-qq
就完事了
yay -S aur/deepin-wine-qq
運行也很簡單
/opt/apps/com.qq.im.deepin/files/run.sh
原作者的倉庫在 這里
至于什么替換成 DeepinWine 之類的看作者倉庫的說明就好了
如果要使用 NtrQQ 就得自己去拉倉庫然后自行構建
偷懶的可以直接用我的倉庫,在 這里
我來說一下魔改的思路
NtrQQ 無外乎給 QQ 打個補丁進去,所以我們在準備階段直接解壓一份 NtrQQ 到目錄里即可
來看看 PKGBUILD
我用注釋標出需要注意的地方
build() { msg "Extracting DPKG package ..." mkdir -p "${srcdir}/dpkgdir" tar -xvf data.tar.xz -C "${srcdir}/dpkgdir" sed "s/(Categories.*$)/1Network;/" -i "${srcdir}/dpkgdir/opt/apps/${debpkgname}/entries/applications/${debpkgname}.desktop" sed "s/run.sh".*/run.sh"/" -i "${srcdir}/dpkgdir/opt/apps/${debpkgname}/entries/applications/${debpkgname}.desktop" msg "Extracting Deepin Wine QQ archive ..." 7z x -aoa "${srcdir}/dpkgdir/opt/apps/${debpkgname}/files/files.7z" -o"${srcdir}/deepinqqdir" msg "Cleaning up the original package directory ..." # 這里刪掉了原來的 QQ 文件夾 rm -r "${srcdir}/deepinqqdir/drive_c/Program Files/Tencent/QQ" #msg "Patching reg files ..." #patch -p1 -d "${srcdir}/deepinqqdir/" < "${srcdir}/reg.patch" msg "Creating font file link ..." ln -sf "/usr/share/fonts/wenquanyi/wqy-microhei/wqy-microhei.ttc" "${srcdir}/deepinqqdir/drive_c/windows/Fonts/wqy-microhei.ttc" msg "Copying latest QQ installer to ${srcdir}/deepinqqdir/drive_c/Program Files/Tencent/ ..." # 這里拷貝了一個安裝包 需要刪掉 install -m644 "${srcdir}/${qq_installer}-${pkgver}.exe" "${srcdir}/deepinqqdir/drive_c/Program Files/Tencent/" #find -L "${srcdir}/deepinqqdir/dosdevices" -maxdepth 1 -type l -delete msg "Repackaging app archive ..." # 這里重新打包了整個 wine 文件系統 7z a -t7z -r "${srcdir}/files.7z" "${srcdir}/deepinqqdir/*"}
所以只要你往里面扔個打包好的 NtrQQ 就完事了
注意這里的 NtrQQ 必須內置 TXSSO
找一下 TXSSO 安裝包,解壓里面的 TXSSO
文件夾直接扔進 QQ/Bin
文件夾下面就可以了
這也是一種綠色的 TXSSO 部署方式,不需要給系統安裝
NtrQQ 本身就是可以綠色運行的,所以拷貝安裝包這一行也給他揚了
但是這樣子你會發現啟動 QQ 以后并沒有讓 NtrQQ 成功掛鉤,并且運行一段時間以后 QQ 還是會彈出已損壞錯誤
這是因為 NtrQQ 的注入點 msimg32.dll
沒有成功加載.
我也不知道為什么會這樣子,但可以通過修改 Wine 配置來完成
只需要把 msimg32
設定為 原裝先于內建
即可
雖然你可以選擇每次運行前先跑一下 winecfg 來調整設置
但是直接給修改一下注冊表來自帶這個設置不好嗎?
wine 的函數頂替配置在 user.reg
的 [Software\Wine\DllOverrides]
部分
我們在最后加入一行
"msimg32"="native,builtin"
就可以讓 wine 優先加載當前目錄下面的 msimg32.dll
從而成功加載 NtrQQ
對運行腳本我們也需要做一些修改
因為 NtrQQ 在 Wine 中可以不需要安裝,總之就是非常的綠色和便攜.
所以我們也要刪掉 run.sh
里面運行安裝包的一段
Run(){ extract_archive "$ARCHIVE_FILE_DIR/helper_archive.7z" "$ARCHIVE_FILE_DIR/helper_archive.md5sum" "$SPECIFY_SHELL_DIR" if [ -n "$PATCH_LOADER_ENV" ] && [ -n "$EXEC_PATH" ];then export $PATCH_LOADER_ENV fi if [ -n "$EXEC_PATH" ];then # 這里開始 # if [ ! -f "$WINEPREFIX/reinstalled" ];then # touch $WINEPREFIX/reinstalled # env LC_ALL=zh_CN.UTF-8 WINEDLLOVERRIDES="winemenubuilder.exe=d" $START_SHELL_PATH $BOTTLENAME $APPVER "$QQ_INSTALLER_PATH" "$@" # if [ $APPRUN_CMD = "deepin-wine5" ]; then # echo "5" > $WINEPREFIX/deepin # fi # else # 只需要保留這一段 env LC_ALL=zh_CN.UTF-8 $START_SHELL_PATH $BOTTLENAME $APPVER "$EXEC_PATH" "$@" # fi # 到這里結束 else env LC_ALL=zh_CN.UTF-8 $START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@" fi}
改完 run.sh
需要重新計算 MD5 并且更新 PKGBUILD
里面的 md5sums
接下來還可以修改一下 PKGBUILD
里面的包名,我這里改為了 deepin-wine-ntrqq
之后,打包,蕪湖,起飛!
因為 wine 目錄里面有一些特殊文件,在 nspawn 里面會顯示找不到這些文件
所以我的打包是在 Fedora 上,也就是主機系統里進行的
在下面的命令中忽略掉了依賴. 如果不需要忽略依賴可以選擇第二條命令
makepkg --nodeps -f --cleanbuild# 自動下載依賴makepkg --syncdeps
安裝打包出來的東西
# 文件名可能不同yay -U deepin-wine-ntrqq-9.4.8.27843-1-x86_64.pkg.tar.gz
完事,可以直接運行了
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
山西省分行營業部太原交通銀行支行地址?交通銀行山西省分行營業部的地址在太原市解放路35號。它位于解放路寬銀幕電影院以南100多米,解放路以西。如果你想走上一個很高的樓梯,卷首墻很高,很顯眼,很容易找到??梢杂檬謾C上的地圖軟件搜索一下。如果做不到,可以導航。地圖的位置是準確的。山西省分行營業部太原交通銀行支行地址?太原交通銀行山西分行營業部地址在山西省太原市迎澤區青年路3號。...
parameters是什么意思?參數[English][P?“R?m?t?Z][beauty][P?“R?m?t?Z]n.因子,特征邊界(限制性)因子(參數的復數名詞)參數行列式例句:1。兩個關鍵字都可以與構造函數參數一起使用。]這兩個關鍵字可以用作構造函數參數。2.亞洲網通在一組參數內運行。wrongparameters是什么意思?我們必須在時間范圍內工作。這是分布參數。MATLAB里simul...
是白雪的冰柜好還是阪神的冰柜好?當然是白雪公主。它首先使用德國技術和壓縮機。全部采用純銅管,其展示柜全部采用風冷無霜技術。這是冰柜行業最優質的技術。該公司旗下還有兩個品牌,雪蜻蜓版神。它的生產基地在江蘇,阪神是白雪公主的品牌和白雪公主的公司做的,但是價格相對便宜,所以不夠切料。0-@qq.com阪神是明星買的,頂開式冰柜700多升如雪。阪神的價格在3800左右。阪神冰柜價格是多少?冰柜大多用于商場...