mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-12-16 03:52:04 +08:00
Compare commits
83 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6d4dc4d7d9 | |||
| 995aad5273 | |||
| 851bf9fcc6 | |||
| 00da7fc010 | |||
| 9fd8f5144f | |||
| b31c4bf134 | |||
| 66ace92775 | |||
| 74e82aca00 | |||
| e175a80e57 | |||
| 27cd65a48f | |||
| a5cb1f81f8 | |||
| 2fb32f84d7 | |||
| 6c6b5ff67e | |||
| d3790780dd | |||
| 00245232bf | |||
| 5cb05e9956 | |||
| 72208fd378 | |||
| f63cdff0aa | |||
| 6c43ce51b4 | |||
| a85a7aeb0c | |||
| 70014b29ef | |||
| 808471c330 | |||
| cf0be8a2f1 | |||
| fffb56c098 | |||
| 2dab9ef7ce | |||
| adf35abfc7 | |||
| 6ef513d6f5 | |||
| 550827f97c | |||
| 29f42c95b4 | |||
| ee68f6e26a | |||
| aff9996515 | |||
| 075478029d | |||
| f766e8577c | |||
| 08191c17ed | |||
| 7665dbe6d9 | |||
| 7711c186fd | |||
| 93d41ac3e2 | |||
| 59ec3d5822 | |||
| a5d1a04573 | |||
| e434aa9116 | |||
| dc789132d3 | |||
| 9b5beadbcc | |||
| 635171998d | |||
| b757d09901 | |||
| 84f0eefc27 | |||
| f9cac7619c | |||
| 8ae5efe50c | |||
| 58798dd0c6 | |||
| fdced1f2c3 | |||
| aaa5b724e4 | |||
| bbff9aa85f | |||
| 4a469f2a82 | |||
| 58400ed5ff | |||
| 2de9de6633 | |||
| eba3d9f728 | |||
| d8dce3b62c | |||
| 81f49ae83c | |||
| 160d2ecf9d | |||
| d31be64151 | |||
| 77ec7ff2bf | |||
| 6201ec2ed6 | |||
| ed344e7a6c | |||
| ed61089844 | |||
| e3435ad29a | |||
| 0e705a955a | |||
| 77d91f31b2 | |||
| c0b7c99c43 | |||
| cfbffc1a68 | |||
| 490b6ce28d | |||
| 75ae205cbf | |||
| ee49a4aec1 | |||
| 364983ac5b | |||
| ef375f32b9 | |||
| 4ff2d0815d | |||
| 8df919cadb | |||
| 89b812e6a6 | |||
| 803eb09b5a | |||
| 6397130bb2 | |||
| 8a4a5f4ee3 | |||
| 3529dc1503 | |||
| 09eb12d750 | |||
| bf95889b93 | |||
| 76d3fd556e |
30
.github/workflows/auto-building.yml
vendored
Normal file
30
.github/workflows/auto-building.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
name: Auto Building Wine Runner
|
||||||
|
run-name: ${{ github.actor }} Auto Building Wine Runner 🚀
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
workflow_dispatch:
|
||||||
|
jobs:
|
||||||
|
Explore-GitHub-Actions:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Building DEB
|
||||||
|
env:
|
||||||
|
GUSER: ${{ secrets.GUSER }}
|
||||||
|
PASSWORD: ${{ secrets.PASSWORD }}
|
||||||
|
UPLOADURL: ${{ secrets.UPLOADURL }}
|
||||||
|
run: |
|
||||||
|
# 配置环境
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install git dpkg-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qt5-qmake -y
|
||||||
|
git clone https://github.com/gfdgd-xi/deep-wine-runner
|
||||||
|
cd deep-wine-runner
|
||||||
|
make build
|
||||||
|
mv spark-deepin-wine-runner.deb ~
|
||||||
|
- name: upload result
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: spark-deepin-wine-runner.deb
|
||||||
|
path: /home/runner/spark-deepin-wine-runner.deb
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
21
AddWineDebMirrorForDeepin20.sh
Executable file
21
AddWineDebMirrorForDeepin20.sh
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
echo 网址:http://deb.wine.wine-runner.gfdgdxi.top/
|
||||||
|
if [[ ! -f /etc/apt/sources.list.d/gfdgdxi-list-winehq.list ]]; then
|
||||||
|
echo 未添加源,现在开始添加!
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install wget gpg
|
||||||
|
if [[ -f /tmp/github.sh ]]; then
|
||||||
|
rm -v /tmp/github.sh
|
||||||
|
fi
|
||||||
|
cd /tmp
|
||||||
|
wget http://deb.wine.wine-runner.gfdgdxi.top/sources/github.sh
|
||||||
|
bash github.sh
|
||||||
|
rm github.sh
|
||||||
|
echo 添加完成,现在安装 Wine!
|
||||||
|
else
|
||||||
|
echo 已添加源,忽略,现在安装 Wine!
|
||||||
|
sudo apt update
|
||||||
|
fi
|
||||||
|
sudo apt install winehq-devel -y
|
||||||
|
echo 安装完成,按回车键退出!
|
||||||
|
read
|
||||||
@@ -43,8 +43,8 @@ programEnv = [
|
|||||||
["($PROGRAMPATH)", programPath],
|
["($PROGRAMPATH)", programPath],
|
||||||
["($VERSION)", version],
|
["($VERSION)", version],
|
||||||
["($THANK)", thankText],
|
["($THANK)", thankText],
|
||||||
["($MAKER)", "RacoonGX 团队,By gfdgd xi"],
|
["($MAKER)", "gfdgd xi"],
|
||||||
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} RacoonGX 团队,By gfdgd xi"],
|
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi"],
|
||||||
["($?)", "0"],
|
["($?)", "0"],
|
||||||
["($PLATFORM)", platform.system()],
|
["($PLATFORM)", platform.system()],
|
||||||
["($DEBUG)", "1"]
|
["($DEBUG)", "1"]
|
||||||
@@ -301,7 +301,7 @@ class Command():
|
|||||||
|
|
||||||
def Version(self):
|
def Version(self):
|
||||||
print(f"版本:{version}")
|
print(f"版本:{version}")
|
||||||
print(f"©2020~{time.strftime('%Y')} RacoonGX 团队,By gfdgd xi")
|
print(f"©2020~{time.strftime('%Y')} gfdgd xi")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def Pause(self) -> int:
|
def Pause(self) -> int:
|
||||||
@@ -650,7 +650,7 @@ if __name__ == "__main__":
|
|||||||
if len(sys.argv) - optionAll < 2:
|
if len(sys.argv) - optionAll < 2:
|
||||||
print("Wine 运行器自动配置文件解析器交互环境")
|
print("Wine 运行器自动配置文件解析器交互环境")
|
||||||
print(f"版本:{version}")
|
print(f"版本:{version}")
|
||||||
print(f"©2020~{time.strftime('%Y')} RacoonGX 团队,By gfdgd xi")
|
print(f"©2020~{time.strftime('%Y')} By gfdgd xi")
|
||||||
print("--------------------------------------------------------------")
|
print("--------------------------------------------------------------")
|
||||||
while True:
|
while True:
|
||||||
commandLine = input(">")
|
commandLine = input(">")
|
||||||
|
|||||||
47
InstallBox86-cn.sh
Executable file
47
InstallBox86-cn.sh
Executable file
@@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
if [[ `whoami` != root ]]; then
|
||||||
|
echo 请以 root 权限运行
|
||||||
|
echo 按任意键退出
|
||||||
|
read
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
PCArch=`dpkg --print-architecture`
|
||||||
|
if [[ $PCArch != "aarch64" ]] && [[ $PCArch != "arm64" ]]; then
|
||||||
|
echo 非 ARM 架构,无法继续
|
||||||
|
echo 按任意键退出
|
||||||
|
read
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
which box86
|
||||||
|
if [[ $? == 0 ]]; then
|
||||||
|
echo 已安装,结束
|
||||||
|
echo 按回车键退出
|
||||||
|
read
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo 使用国内源
|
||||||
|
#sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list
|
||||||
|
sudo bash -c "echo deb http://jihulab.com/gfdgd-xi/box86-debs/-/raw/master/debian ./ > /etc/apt/sources.list.d/box86.list"
|
||||||
|
wget -qO- http://jihulab.com/gfdgd-xi/box86-debs/-/raw/master/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box86-debs-archive-keyring.gpg
|
||||||
|
echo "adding key..."
|
||||||
|
installBox=box86-generic-arm
|
||||||
|
if [[ $PCArch == "arm64" ]]; then
|
||||||
|
sudo bash -c "echo deb http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box64-debs/debian ./ > /etc/apt/sources.list.d/box64.list"
|
||||||
|
wget -qO- http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box64-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box64-debs-archive-keyring.gpg
|
||||||
|
installBox="box86-generic-arm box64-generic-arm libc6:armhf"
|
||||||
|
sudo dpkg --add-architecture armhf
|
||||||
|
fi
|
||||||
|
echo " + sudo apt update"
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install binfmt-support -y
|
||||||
|
echo apt 源添加完毕!按回车键继续安装 Box86/Box64,若想要停止安装,则请按 Ctrl+C 或按终端右上角 ×(叉叉)退出
|
||||||
|
echo 按回车键后将会自动安装包名为 box86-generic-arm、box64-generic-arm(box64 要在 aarch64 系统才可安装)的 Box86/Box64 包(适用于通用 ARM 系统)
|
||||||
|
echo 其他特殊版本及其包名可见如下链接(如适用于 rk3399 的版本):
|
||||||
|
echo " - Box64:https://github.com/ryanfortner/box64-debs/"
|
||||||
|
echo " - Box86:https://github.com/ryanfortner/box86-debs/"
|
||||||
|
echo " - Box64(国内镜像):https://jihulab.com/gfdgd-xi/box64-debs"
|
||||||
|
echo " - Box64(国内镜像):https://jihulab.com/gfdgd-xi/box86-debs"
|
||||||
|
read
|
||||||
|
sudo apt install -y $installBox
|
||||||
|
echo 安装完成!按回车键退出
|
||||||
|
read
|
||||||
@@ -19,17 +19,29 @@ if [[ $? == 0 ]]; then
|
|||||||
read
|
read
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
#sudo wget https://itai-nelken.github.io/weekly-box86-debs/debian/box86.list -O /etc/apt/sources.list.d/box86.list
|
echo 使用 Github 源
|
||||||
echo deb http://box86.gfdgdxi.top / > /etc/apt/sources.list.d/box86.list
|
#sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list
|
||||||
|
sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list
|
||||||
|
wget -qO- https://ryanfortner.github.io/box86-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box86-debs-archive-keyring.gpg
|
||||||
echo "adding key..."
|
echo "adding key..."
|
||||||
wget -qO- http://box86.gfdgdxi.top/KEY.gpg | sudo apt-key add -
|
installBox=box86-generic-arm
|
||||||
installBox=box86
|
|
||||||
if [[ $PCArch == "arm64" ]]; then
|
if [[ $PCArch == "arm64" ]]; then
|
||||||
installBox="box86 box64"
|
sudo wget https://ryanfortner.github.io/box64-debs/box64.list -O /etc/apt/sources.list.d/box64.list
|
||||||
|
wget -qO- https://ryanfortner.github.io/box64-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box64-debs-archive-keyring.gpg
|
||||||
|
installBox="box86-generic-arm box64-generic-arm"
|
||||||
sudo dpkg --add-architecture armhf
|
sudo dpkg --add-architecture armhf
|
||||||
fi
|
fi
|
||||||
echo " + sudo apt update"
|
echo " + sudo apt update"
|
||||||
sudo apt update
|
sudo apt update
|
||||||
|
sudo apt install binfmt-support -y
|
||||||
|
echo apt 源添加完毕!按回车键继续安装 Box86/Box64,若想要停止安装,则请按 Ctrl+C 或按终端右上角 ×(叉叉)退出
|
||||||
|
echo 按回车键后将会自动安装包名为 box86-generic-arm、box64-generic-arm(box64 要在 aarch64 系统才可安装)的 Box86/Box64 包(适用于通用 ARM 系统)
|
||||||
|
echo 其他特殊版本及其包名可见如下链接(如适用于 rk3399 的版本):
|
||||||
|
echo " - Box64:https://github.com/ryanfortner/box64-debs/"
|
||||||
|
echo " - Box86:https://github.com/ryanfortner/box86-debs/"
|
||||||
|
echo " - Box64(国内镜像):https://jihulab.com/gfdgd-xi/box64-debs"
|
||||||
|
echo " - Box64(国内镜像):https://jihulab.com/gfdgd-xi/box86-debs"
|
||||||
|
read
|
||||||
sudo apt install -y $installBox
|
sudo apt install -y $installBox
|
||||||
echo 安装完成!按回车键退出
|
echo 安装完成!按回车键退出
|
||||||
read
|
read
|
||||||
@@ -23,6 +23,7 @@ def exit():
|
|||||||
sys.exit()
|
sys.exit()
|
||||||
# 获取云列表
|
# 获取云列表
|
||||||
sourcesList = [
|
sourcesList = [
|
||||||
|
"http://dll.wine-runner.gfdgdxi.top",
|
||||||
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/dlls",
|
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/dlls",
|
||||||
"http://gfdgdxi.msns.cn/wine-runner-list/dlls"
|
"http://gfdgdxi.msns.cn/wine-runner-list/dlls"
|
||||||
]
|
]
|
||||||
@@ -31,7 +32,8 @@ print("获取列表中……", end="")
|
|||||||
try:
|
try:
|
||||||
lists = json.loads(requests.get(f"{url}/list.json").text)
|
lists = json.loads(requests.get(f"{url}/list.json").text)
|
||||||
except:
|
except:
|
||||||
print("\r列表获取失败!")
|
print("\r列表获取失败!按回车键退出")
|
||||||
|
input()
|
||||||
exit()
|
exit()
|
||||||
print("\r列表获取成功!")
|
print("\r列表获取成功!")
|
||||||
|
|
||||||
|
|||||||
105
InstallFoxpro.py
Executable file
105
InstallFoxpro.py
Executable file
@@ -0,0 +1,105 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# 使用系统默认的 python3 运行
|
||||||
|
###########################################################################################
|
||||||
|
# 作者:gfdgd xi
|
||||||
|
# 版本:2.1.0
|
||||||
|
# 更新时间:2022年08月25日
|
||||||
|
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
|
||||||
|
# 基于 Python3 构建
|
||||||
|
###########################################################################################
|
||||||
|
#################
|
||||||
|
# 引入所需的库
|
||||||
|
#################
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
import updatekiller
|
||||||
|
import req as requests
|
||||||
|
try:
|
||||||
|
sourcesList = [
|
||||||
|
"http://foxpro.wine-runner.gfdgdxi.top/list.json",
|
||||||
|
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/Visual FoxPro/list.json"
|
||||||
|
]
|
||||||
|
change = False
|
||||||
|
for i in sourcesList:
|
||||||
|
try:
|
||||||
|
netList = json.loads(requests.get(i).text)
|
||||||
|
change = True
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
if not change:
|
||||||
|
netList = json.loads(requests.get(sourcesList[0]).text)
|
||||||
|
except:
|
||||||
|
print("使用离线列表")
|
||||||
|
netList = [
|
||||||
|
["3.0 Runtime Service Pack 1", "http://foxpro.wine-runner.gfdgdxi.top/VFP3SP1RT.EXE", "VFP3SP1RT.EXE"],
|
||||||
|
["5.0 Runtime Service Pack 1", "http://foxpro.wine-runner.gfdgdxi.top/VFP5SP1RT.EXE", "VFP5SP1RT.EXE"],
|
||||||
|
["6.0 Runtime Service Pack 5", "http://foxpro.wine-runner.gfdgdxi.top/VFP6SP5RT.EXE", "VFP6SP5RT.EXE"],
|
||||||
|
["7.0 Runtime Service Pack 0", "http://foxpro.wine-runner.gfdgdxi.top/VFP7SP0RT.EXE", "VFP7SP0RT.EXE"],
|
||||||
|
["7.0 Runtime Service Pack 1", "http://foxpro.wine-runner.gfdgdxi.top/VFP7SP1RT.EXE", "VFP7SP1RT.EXE"],
|
||||||
|
["8.0 Runtime Service Pack 0", "http://foxpro.wine-runner.gfdgdxi.top/VFP8SP0RT.EXE", "VFP8SP0RT.EXE"],
|
||||||
|
["8.0 Runtime Service Pack 1", "http://foxpro.wine-runner.gfdgdxi.top/VFP8SP1RT.EXE", "VFP8SP1RT.EXE"],
|
||||||
|
["9.0 Runtime Service Pack 1", "http://foxpro.wine-runner.gfdgdxi.top/VFP9SP1RT.EXE", "VFP9SP1RT.EXE"],
|
||||||
|
["9.0 Runtime Service Pack 2 with Hotfixes", "http://foxpro.wine-runner.gfdgdxi.top/VFP9SP2RT.EXE", "VFP9SP2RT.EXE"]
|
||||||
|
]
|
||||||
|
def Download(wineBotton: str, id: int, wine: str) -> int:
|
||||||
|
try:
|
||||||
|
os.remove(f"/tmp/deepin-wine-runner-FoxPro/{netList[id][2]}")
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
os.system(f"aria2c -x 16 -s 16 -d '/tmp/deepin-wine-runner-FoxPro' -o '{netList[id][2]}' \"{netList[id][1]}\"")
|
||||||
|
return os.system(f"WINEPREFIX='{wineBotton}' {wine} '/tmp/deepin-wine-runner-FoxPro/{netList[id][2]}'")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
if "--help" in sys.argv:
|
||||||
|
print("作者:gfdgd xi")
|
||||||
|
print("版本:1.0.0")
|
||||||
|
print("本程序可以更方便的在 wine 容器中安装 Visual FoxPro")
|
||||||
|
sys.exit()
|
||||||
|
if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
|
||||||
|
print("您未指定需要安装 Visual FoxPro 的容器和使用的 wine,无法继续")
|
||||||
|
print("参数:")
|
||||||
|
print("XXX 参数一 参数二 参数三(可略)")
|
||||||
|
print("参数一为需要安装的容器,参数二为需要使用的wine,参数三为是否缓存(可略),三个参数位置不能颠倒")
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
homePath = os.path.expanduser('~')
|
||||||
|
print('''
|
||||||
|
mmmmmm mmmmm
|
||||||
|
# mmm m m # "# m mm mmm
|
||||||
|
#mmmmm #" "# #m# #mmm#" #" " #" "#
|
||||||
|
# # # m#m # # # #
|
||||||
|
# "#m#" m" "m # # "#m#"
|
||||||
|
|
||||||
|
|
||||||
|
''')
|
||||||
|
|
||||||
|
print("请选择以下的 Visual FoxPro 进行安装(不保证能正常安装运行)")
|
||||||
|
for i in range(0, len(netList)):
|
||||||
|
print(f"{i} Visual FoxPro {netList[i][0]}")
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
choose = input("请输入要选择的 Visual FoxPro 版本(输入“exit”退出):").lower()
|
||||||
|
if choose == "exit":
|
||||||
|
break
|
||||||
|
choose = int(choose)
|
||||||
|
except:
|
||||||
|
print("输入错误,请重新输入")
|
||||||
|
continue
|
||||||
|
if 0 <= choose and choose < len(netList):
|
||||||
|
break
|
||||||
|
if choose == "exit":
|
||||||
|
exit()
|
||||||
|
print(f"您选择了 Visual FoxPro {netList[choose][0]}")
|
||||||
|
if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}"):
|
||||||
|
print("已经缓存,使用本地版本")
|
||||||
|
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
|
||||||
|
input("安装结束,按回车键退出")
|
||||||
|
exit()
|
||||||
|
print("开始下载")
|
||||||
|
os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
|
||||||
|
os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/vcpp'")
|
||||||
|
os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/vcpp' -o '{netList[choose][2]}' \"{netList[choose][1]}\"")
|
||||||
|
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
|
||||||
|
input("安装结束,按回车键退出")
|
||||||
@@ -17,7 +17,9 @@ echo '" #"# # # #" # #" # #mmmm# # #'
|
|||||||
echo ' ## ##" # # # #"""" # # # #'
|
echo ' ## ##" # # # #"""" # # # #'
|
||||||
echo ' # # mm#mm # # "#mm" # # #mm#"'
|
echo ' # # mm#mm # # "#mm" # # #mm#"'
|
||||||
echo ' # '
|
echo ' # '
|
||||||
|
echo
|
||||||
|
echo "WineHQ 官网:https://wiki.winehq.org/"
|
||||||
|
echo 当前使用国内镜像源:https://mirrors-i.tuna.tsinghua.edu.cn/help/wine-builds/
|
||||||
|
|
||||||
ubuntuSource=(
|
ubuntuSource=(
|
||||||
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ jammy main | sudo tee /etc/apt/sources.list.d/winehq.list"
|
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ jammy main | sudo tee /etc/apt/sources.list.d/winehq.list"
|
||||||
@@ -28,11 +30,11 @@ ubuntuSource=(
|
|||||||
debianSource=(
|
debianSource=(
|
||||||
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ buster main | sudo tee /etc/apt/sources.list.d/winehq.list"
|
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ buster main | sudo tee /etc/apt/sources.list.d/winehq.list"
|
||||||
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ bullseye main | sudo tee /etc/apt/sources.list.d/winehq.list"
|
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ bullseye main | sudo tee /etc/apt/sources.list.d/winehq.list"
|
||||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources"
|
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ bookworm main | sudo tee /etc/apt/sources.list.d/winehq.list"
|
||||||
)
|
)
|
||||||
# 选择发行版
|
# 选择发行版
|
||||||
echo "WineHQ 官网:https://wiki.winehq.org/"
|
#echo "WineHQ 官网:https://wiki.winehq.org/"
|
||||||
echo "国内镜像源:https://mirrors-i.tuna.tsinghua.edu.cn/help/wine-builds/"
|
#echo "国内镜像源:https://mirrors-i.tuna.tsinghua.edu.cn/help/wine-builds/"
|
||||||
echo
|
echo
|
||||||
echo "选择发行版:"
|
echo "选择发行版:"
|
||||||
echo "0. Debian"
|
echo "0. Debian"
|
||||||
@@ -43,7 +45,7 @@ echo "选择系统版本"
|
|||||||
if [ $system = "0" ]; then
|
if [ $system = "0" ]; then
|
||||||
echo "0. Debian 10 (Buster)"
|
echo "0. Debian 10 (Buster)"
|
||||||
echo "1. Debian 11 (Bullseye)"
|
echo "1. Debian 11 (Bullseye)"
|
||||||
echo "2. Debian Testing (Bookworm)"
|
echo "2. Debian 12 (Bookworm)"
|
||||||
fi
|
fi
|
||||||
if [ $system = "1" ]; then
|
if [ $system = "1" ]; then
|
||||||
echo "0. Ubuntu 22.04"
|
echo "0. Ubuntu 22.04"
|
||||||
|
|||||||
95
InstallNewWineHQOrg.sh
Executable file
95
InstallNewWineHQOrg.sh
Executable file
@@ -0,0 +1,95 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 使用系统默认的 bash 运行
|
||||||
|
###########################################################################################
|
||||||
|
# 作者:gfdgd xi
|
||||||
|
# 版本:2.2.0
|
||||||
|
# 更新时间:2022年09月25日
|
||||||
|
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
|
||||||
|
# 基于 Python3 构建
|
||||||
|
###########################################################################################
|
||||||
|
#################
|
||||||
|
# 引入所需的库
|
||||||
|
#################
|
||||||
|
echo
|
||||||
|
echo 'm m " m m mmmm '
|
||||||
|
echo '# # # mmm m mm mmm # # m" "m'
|
||||||
|
echo '" #"# # # #" # #" # #mmmm# # #'
|
||||||
|
echo ' ## ##" # # # #"""" # # # #'
|
||||||
|
echo ' # # mm#mm # # "#mm" # # #mm#"'
|
||||||
|
echo ' # '
|
||||||
|
echo
|
||||||
|
echo "WineHQ 官网:https://wiki.winehq.org/"
|
||||||
|
echo 当前不使用国内镜像源
|
||||||
|
|
||||||
|
ubuntuSource=(
|
||||||
|
"sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources"
|
||||||
|
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/impish/winehq-impish.sources"
|
||||||
|
"sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/focal/winehq-focal.sources"
|
||||||
|
"sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/bionic/winehq-bionic.sources"
|
||||||
|
)
|
||||||
|
debianSource=(
|
||||||
|
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/buster/winehq-buster.sources"
|
||||||
|
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bullseye/winehq-bullseye.sources"
|
||||||
|
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources"
|
||||||
|
)
|
||||||
|
# 选择发行版
|
||||||
|
echo "WineHQ 官网:https://wiki.winehq.org/"
|
||||||
|
echo "国内镜像源:https://mirrors-i.tuna.tsinghua.edu.cn/help/wine-builds/"
|
||||||
|
echo
|
||||||
|
echo "选择发行版:"
|
||||||
|
echo "0. Debian"
|
||||||
|
echo "1. Ubuntu"
|
||||||
|
read system
|
||||||
|
# 选择版本
|
||||||
|
echo "选择系统版本"
|
||||||
|
if [ $system = "0" ]; then
|
||||||
|
echo "0. Debian 10 (Buster)"
|
||||||
|
echo "1. Debian 11 (Bullseye)"
|
||||||
|
echo "2. Debian 12 (Bookworm)"
|
||||||
|
fi
|
||||||
|
if [ $system = "1" ]; then
|
||||||
|
echo "0. Ubuntu 22.04"
|
||||||
|
echo "1. Ubuntu 21.10"
|
||||||
|
echo "2. Ubuntu 20.04,Linux Mint 20.x"
|
||||||
|
echo "3. Ubuntu 18.04,Linux Mint 19.x"
|
||||||
|
fi
|
||||||
|
read systemVersion
|
||||||
|
# 选择 Wine
|
||||||
|
echo "选择 Wine:"
|
||||||
|
echo "0. 稳定分支"
|
||||||
|
echo "1. 开发分支"
|
||||||
|
echo "2. Staging 分支"
|
||||||
|
read programVersion
|
||||||
|
# 初步配置
|
||||||
|
sudo apt-key del "D43F 6401 4536 9C51 D786 DDEA 76F1 A20F F987 672F"
|
||||||
|
sudo dpkg --add-architecture i386
|
||||||
|
#sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
sudo mkdir -pm755 /etc/apt/keyrings
|
||||||
|
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
# 检测 apt-fast 或 ss-apt-fast 是否存在
|
||||||
|
apt="apt"
|
||||||
|
which apt-fast > /dev/null
|
||||||
|
if [ $? == 0 ]; then
|
||||||
|
apt="apt-fast"
|
||||||
|
fi
|
||||||
|
which ss-apt-fast > /dev/null
|
||||||
|
if [ $? == 0 ]; then
|
||||||
|
apt="ss-apt-fast"
|
||||||
|
fi
|
||||||
|
which aptss > /dev/null
|
||||||
|
if [ $? == 0 ]; then
|
||||||
|
apt="aptss"
|
||||||
|
fi
|
||||||
|
# 添加源
|
||||||
|
if [ $system = "0" ]; then
|
||||||
|
bash -c "${debianSource[$systemVersion]}"
|
||||||
|
fi
|
||||||
|
if [ $system = "1" ]; then
|
||||||
|
bash -c "${ubuntuSource[$systemVersion]}"
|
||||||
|
fi
|
||||||
|
sudo $apt update
|
||||||
|
# 安装 Wine
|
||||||
|
wineInstall=("sudo $apt install --install-recommends winehq-stable" "sudo $apt install --install-recommends winehq-devel" "sudo $apt install --install-recommends winehq-staging")
|
||||||
|
${wineInstall[$programVersion]}
|
||||||
|
echo "按回车键退出"
|
||||||
|
read
|
||||||
11
Makefile
11
Makefile
@@ -15,6 +15,7 @@ package:
|
|||||||
mkdir deb/opt/apps/deepin-wine-runner/LANG -pv
|
mkdir deb/opt/apps/deepin-wine-runner/LANG -pv
|
||||||
cp -rv helperset deb/opt/apps/deepin-wine-runner/
|
cp -rv helperset deb/opt/apps/deepin-wine-runner/
|
||||||
#cp -rv VM-source/VirtualMachine VM
|
#cp -rv VM-source/VirtualMachine VM
|
||||||
|
|
||||||
cp -rv VM-source/deepin-wine-runner.svg VM
|
cp -rv VM-source/deepin-wine-runner.svg VM
|
||||||
cp -rv VM-source/Windows7X64Auto.iso VM
|
cp -rv VM-source/Windows7X64Auto.iso VM
|
||||||
cp -rv VM-source/Windows7X86Auto.iso VM
|
cp -rv VM-source/Windows7X86Auto.iso VM
|
||||||
@@ -22,6 +23,7 @@ package:
|
|||||||
cp -rv Test/ deb/opt/apps/deepin-wine-runner/
|
cp -rv Test/ deb/opt/apps/deepin-wine-runner/
|
||||||
cp -rv information.json package-script
|
cp -rv information.json package-script
|
||||||
zip -v -q -r package-script.zip package-script
|
zip -v -q -r package-script.zip package-script
|
||||||
|
cp -rv InstallBox86-cn.sh deb/opt/apps/deepin-wine-runner/
|
||||||
cp -rv VM deb/opt/apps/deepin-wine-runner
|
cp -rv VM deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv 2048 deb/opt/apps/deepin-wine-runner/
|
cp -rv 2048 deb/opt/apps/deepin-wine-runner/
|
||||||
cp -rv Download.py deb/opt/apps/deepin-wine-runner/
|
cp -rv Download.py deb/opt/apps/deepin-wine-runner/
|
||||||
@@ -31,6 +33,8 @@ package:
|
|||||||
cp -rv QemuRun.py deb/opt/apps/deepin-wine-runner
|
cp -rv QemuRun.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv kill.sh deb/opt/apps/deepin-wine-runner
|
cp -rv kill.sh deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv updatekiller.py deb/opt/apps/deepin-wine-runner
|
cp -rv updatekiller.py deb/opt/apps/deepin-wine-runner
|
||||||
|
cp -rv AddWineDebMirrorForDeepin20.sh deb/opt/apps/deepin-wine-runner
|
||||||
|
cp -rv InstallNewWineHQOrg.sh deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv InstallWineOnDeepin23Alpha.py deb/opt/apps/deepin-wine-runner
|
cp -rv InstallWineOnDeepin23Alpha.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv wrestool deb/opt/apps/deepin-wine-runner
|
cp -rv wrestool deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv Mount.sh deb/opt/apps/deepin-wine-runner
|
cp -rv Mount.sh deb/opt/apps/deepin-wine-runner
|
||||||
@@ -46,6 +50,8 @@ package:
|
|||||||
rm -rfv deb/opt/apps/deepin-wine-runner/wine/winelist.json
|
rm -rfv deb/opt/apps/deepin-wine-runner/wine/winelist.json
|
||||||
cp -rv req deb/opt/apps/deepin-wine-runner
|
cp -rv req deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv pardus-chroot deb/opt/apps/deepin-wine-runner
|
cp -rv pardus-chroot deb/opt/apps/deepin-wine-runner
|
||||||
|
cp -rv WineLib deb/opt/apps/deepin-wine-runner
|
||||||
|
cp -rv InstallFoxpro.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv BuildDesktop.py deb/opt/apps/deepin-wine-runner
|
cp -rv BuildDesktop.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv ChangePassword.sh deb/opt/apps/deepin-wine-runner
|
cp -rv ChangePassword.sh deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv trans deb/opt/apps/deepin-wine-runner
|
cp -rv trans deb/opt/apps/deepin-wine-runner
|
||||||
@@ -111,6 +117,8 @@ package:
|
|||||||
cp -rv RemoveQemuUser.sh deb/opt/apps/deepin-wine-runner
|
cp -rv RemoveQemuUser.sh deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv InstallBox86.sh deb/opt/apps/deepin-wine-runner
|
cp -rv InstallBox86.sh deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv InstallRuntime deb/opt/apps/deepin-wine-runner
|
cp -rv InstallRuntime deb/opt/apps/deepin-wine-runner
|
||||||
|
mkdir -pv deb/opt/apps/deepin-wine-runner/entries/
|
||||||
|
cp -rv deb/usr/share/applications deb/opt/apps/deepin-wine-runner/entries/applications
|
||||||
python3 UpdateTime.py
|
python3 UpdateTime.py
|
||||||
python3 RemovePycacheFile.py
|
python3 RemovePycacheFile.py
|
||||||
sudo rm -rfv /tmp/spark-deepin-wine-runner-builder/
|
sudo rm -rfv /tmp/spark-deepin-wine-runner-builder/
|
||||||
@@ -140,7 +148,7 @@ package:
|
|||||||
|
|
||||||
sudo chown -R root:root /tmp/spark-deepin-wine-runner-builder
|
sudo chown -R root:root /tmp/spark-deepin-wine-runner-builder
|
||||||
|
|
||||||
dpkg -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner.deb
|
dpkg-deb -Z xz -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner.deb
|
||||||
sudo rm -rfv /tmp/spark-deepin-wine-runner-builder
|
sudo rm -rfv /tmp/spark-deepin-wine-runner-builder
|
||||||
|
|
||||||
|
|
||||||
@@ -149,6 +157,7 @@ install:
|
|||||||
sudo apt update ; true
|
sudo apt update ; true
|
||||||
#sudo dpkg -i spark-deepin-wine-runner.deb
|
#sudo dpkg -i spark-deepin-wine-runner.deb
|
||||||
sudo apt reinstall ./spark-deepin-wine-runner.deb -y --allow-downgrades
|
sudo apt reinstall ./spark-deepin-wine-runner.deb -y --allow-downgrades
|
||||||
|
rm spark-deepin-wine-runner.deb -vf
|
||||||
|
|
||||||
remove:
|
remove:
|
||||||
sudo apt purge spark-deepin-wine-runner -y
|
sudo apt purge spark-deepin-wine-runner -y
|
||||||
|
|||||||
10
PackageConfig/0/DEBIAN/control
Normal file
10
PackageConfig/0/DEBIAN/control
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Package: @@PACKAGE@@
|
||||||
|
Version: @@VERSION@@
|
||||||
|
Architecture: @@ARCH@@
|
||||||
|
Maintainer: @@MAKER@@
|
||||||
|
Depends: @@DEPENDS@@
|
||||||
|
Section: non-free/otherosfs
|
||||||
|
Priority: optional
|
||||||
|
Multi-Arch: foreign
|
||||||
|
Installed-Size: @@SIZE@@
|
||||||
|
Description: @@DESCRIPTION@@
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Categories=;
|
||||||
|
Comment=@@NAME@@
|
||||||
|
Encoding=UTF-8
|
||||||
|
Exec="/opt/apps/@@PACKAGE@@/files/run.sh" --uri
|
||||||
|
GenericName=@@NAME@@
|
||||||
|
Icon=@@ICONLIST@@
|
||||||
|
MimeType=@@MIMETYPE@@
|
||||||
|
Name=@@NAME@@.desktop
|
||||||
|
StartupNotify=false
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
X-Created-By=
|
||||||
|
X-Deepin-Vendor=user-custom
|
||||||
113
PackageConfig/0/opt/apps/@@PACKAGE@@/files/run.sh
Normal file
113
PackageConfig/0/opt/apps/@@PACKAGE@@/files/run.sh
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Copyright (C) 2016 Deepin, Inc.
|
||||||
|
#
|
||||||
|
# Author: Li LongYu <lilongyu@linuxdeepin.com>
|
||||||
|
# Peng Hao <penghao@linuxdeepin.com>
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Copyright (C) 2022 The Spark Project
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Modifier shenmo <shenmo@spark-app.store>
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
#######################函数段。下文调用的额外功能会在此处声明
|
||||||
|
|
||||||
|
Get_Dist_Name()
|
||||||
|
{{
|
||||||
|
if grep -Eqii "Deepin" /etc/issue || grep -Eq "Deepin" /etc/*-release; then
|
||||||
|
DISTRO='Deepin'
|
||||||
|
elif grep -Eqi "UnionTech" /etc/issue || grep -Eq "UnionTech" /etc/*-release; then
|
||||||
|
DISTRO='UniontechOS'
|
||||||
|
else
|
||||||
|
DISTRO='OtherOS'
|
||||||
|
fi
|
||||||
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
####获得发行版名称
|
||||||
|
|
||||||
|
#########################预设值段
|
||||||
|
|
||||||
|
version_gt() { test "$(echo "$@" | tr " " "
|
||||||
|
" | sort -V | head -n 1)" != "$1"; }
|
||||||
|
####用于比较版本?未实装
|
||||||
|
BOTTLENAME="@@@BOTTLENAME@@@"
|
||||||
|
APPVER="@@@APPVER@@@"
|
||||||
|
EXEC_PATH="@@@EXEC_PATH@@@"
|
||||||
|
##### 软件在wine中的启动路径
|
||||||
|
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
||||||
|
export MIME_TYPE=""
|
||||||
|
#####没什么用
|
||||||
|
export DEB_PACKAGE_NAME="@@@DEB_PACKAGE_NAME@@@"
|
||||||
|
####这里写包名才能在启动的时候正确找到files.7z,似乎也和杀残留进程有关
|
||||||
|
export APPRUN_CMD="@@@APPRUN_CMD@@@"
|
||||||
|
#####wine启动指令,建议
|
||||||
|
EXPORT_ENVS=""
|
||||||
|
|
||||||
|
export SPECIFY_SHELL_DIR=`dirname $START_SHELL_PATH`
|
||||||
|
|
||||||
|
ARCHIVE_FILE_DIR="/opt/apps/$DEB_PACKAGE_NAME/files"
|
||||||
|
|
||||||
|
export WINEDLLPATH=/opt/$APPRUN_CMD/lib:/opt/$APPRUN_CMD/lib64
|
||||||
|
|
||||||
|
export WINEPREDLL="$ARCHIVE_FILE_DIR/dlls"
|
||||||
|
|
||||||
|
DISABLE_ATTACH_FILE_DIALOG=""
|
||||||
|
##默认为空。若为1,则不使用系统自带的文件选择,而是使用wine的
|
||||||
|
##对于deepin/UOS,大部分的应用都不需要使用wine的,如果有需求(比如wine应用选择的限定种类文件系统的文管不支持)
|
||||||
|
##请填1。
|
||||||
|
##注意:因为非DDE的环境不确定,所以默认会在非Deepin/UOS发行版上禁用这个功能。如果你确认在适配的发行版上可以正常启动,请注释或者删除下面这段
|
||||||
|
|
||||||
|
##############<<<<<<<<<禁用文件选择工具开始
|
||||||
|
Get_Dist_Name
|
||||||
|
#此功能实现参见结尾函数段
|
||||||
|
if [ "$DISTRO" != "Deepin" ] && [ "$DISTRO" != "UniontechOS" ];then
|
||||||
|
DISABLE_ATTACH_FILE_DIALOG="1"
|
||||||
|
echo "非deepin/UOS,默认关闭系统自带的文件选择工具,使用Wine的"
|
||||||
|
echo "如果你想改变这个行为,请到/opt/apps/$DEB_PACKAGE_NAME/files/$0处修改"
|
||||||
|
echo "To打包者:如果你要打开自带请注意在适配的发行版上进行测试"
|
||||||
|
echo "To用户:打包者没有打开这个功能,这证明启用这个功能可能造成运行问题。如果你要修改这个行为,请确保你有一定的动手能力"
|
||||||
|
fi
|
||||||
|
##############>>>>>>>>>禁用文件选择工具结束
|
||||||
|
|
||||||
|
##############<<<<<<<<<屏蔽mono和gecko安装器开始
|
||||||
|
##默认屏蔽mono和gecko安装器
|
||||||
|
{['''#if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then
|
||||||
|
|
||||||
|
#export WINEDLLOVERRIDES="mscoree,mshtml="
|
||||||
|
#echo "为了降低打包体积,默认关闭gecko和momo,如有需要,注释此行(仅对spark-wine7-devel有效)"
|
||||||
|
|
||||||
|
#fi''', '''if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then
|
||||||
|
|
||||||
|
export WINEDLLOVERRIDES="mscoree,mshtml="
|
||||||
|
echo "为了降低打包体积,默认关闭gecko和momo,如有需要,注释此行(仅对spark-wine7-devel有效)"
|
||||||
|
|
||||||
|
fi'''][int(disabledMono.isChecked())]}
|
||||||
|
##############>>>>>>>>>屏蔽mono和gecko安装器结束
|
||||||
|
|
||||||
|
#########################执行段
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if [ -z "$DISABLE_ATTACH_FILE_DIALOG" ];then
|
||||||
|
export ATTACH_FILE_DIALOG=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$EXPORT_ENVS" ];then
|
||||||
|
export $EXPORT_ENVS
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$EXEC_PATH" ];then
|
||||||
|
if [ -z "${{EXEC_PATH##*.lnk*}}" ];then
|
||||||
|
$START_SHELL_PATH $BOTTLENAME $APPVER "C:/windows/command/start.exe" "/Unix" "$EXEC_PATH" "$@"
|
||||||
|
else
|
||||||
|
$START_SHELL_PATH $BOTTLENAME $APPVER "$EXEC_PATH" "$@"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||||
|
fi
|
||||||
13
PackageConfig/list.json
Normal file
13
PackageConfig/list.json
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[
|
||||||
|
"@@PACKAGE@@",
|
||||||
|
"@@VERSION@@",
|
||||||
|
"@@ARCH@@",
|
||||||
|
"@@MAKER@@",
|
||||||
|
"@@DEPENDS@@",
|
||||||
|
"@@SIZE@@",
|
||||||
|
"@@DESCRIPTION@@"
|
||||||
|
"@@ICONLIST@@",
|
||||||
|
"@@NAME@@",
|
||||||
|
"@@MIMETYPE@@",
|
||||||
|
"@@CATEGORIES@@"
|
||||||
|
]
|
||||||
46
README.md
46
README.md
@@ -1,10 +1,10 @@
|
|||||||
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
|
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
|
||||||
<h1 align="center">Wine 运行器 3.2.2</h1>
|
<h1 align="center">Wine 运行器 3.3.0</h1>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
## 介绍
|
## 介绍
|
||||||
Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。
|
Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。
|
||||||
它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作。
|
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低)。
|
||||||
此外,它还简化了如下命令,让你可以更简便地使用Wine:
|
此外,它还简化了如下命令,让你可以更简便地使用Wine:
|
||||||
```bash
|
```bash
|
||||||
env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径
|
env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径
|
||||||
@@ -44,6 +44,9 @@ env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径
|
|||||||
理论上支持全架构,如果 Python 能运行的话
|
理论上支持全架构,如果 Python 能运行的话
|
||||||
非 X86 架构会利用到 `box86`、`exagear`、`qemu` 等技术
|
非 X86 架构会利用到 `box86`、`exagear`、`qemu` 等技术
|
||||||
|
|
||||||
|
## Wine 运行器自动构建(Newest)
|
||||||
|
此只供尝鲜,不保证能用:https://github.com/gfdgd-xi/deep-wine-runner/actions/workflows/auto-building.yml
|
||||||
|
|
||||||
## 目前实现功能(部分)
|
## 目前实现功能(部分)
|
||||||
1. 用 Wine 运行 EXE
|
1. 用 Wine 运行 EXE
|
||||||
2. 支持下载/安装 Wine
|
2. 支持下载/安装 Wine
|
||||||
@@ -70,7 +73,10 @@ env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径
|
|||||||

|

|
||||||
|
|
||||||
### 龙芯应用合作社
|
### 龙芯应用合作社
|
||||||
(找时间再补图)
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 分支介绍
|
## 分支介绍
|
||||||
### main 分支
|
### main 分支
|
||||||
@@ -130,6 +136,24 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
|
|||||||

|

|
||||||
|
|
||||||
## 更新日志
|
## 更新日志
|
||||||
|
### 3.3.0(2023年07月12日)
|
||||||
|
**※1、简易打包器支持选择 Wine 版本以及修改打包生成的 deb 包的架构为 all;**
|
||||||
|
**※2、修改容器自动配置脚本的 Gitlink 源为 Gitee 源**
|
||||||
|
**※3、在安装更多 Wine 处安装 Wine 后主窗口 Wine 版本下拉框自动更新**
|
||||||
|
**※4、设置打包器在 Ubuntu 依旧打包 xz 格式的 deb 包**
|
||||||
|
**※5、修复 Wine 简易打包器 control 文件 Installed-Size 格式不规范的问题**
|
||||||
|
**※6、更换 Box86 源并支持安装 Box64(如果为 aarch64 架构)**
|
||||||
|
**※7、新增 Wine 自建源(支持 Debian10、Deepin20)**
|
||||||
|
**※8、修改 WineHQ 安装器使其支持选择国内清华大学镜像源或 WineHQ 官方源**
|
||||||
|
**※9、新增 Visual FoxPro 安装器**
|
||||||
|
**※10、新增安装局部运行库以解决部分低版本系统运行高版本 Wine 的问题且不与其他运行库和兼容层冲突**
|
||||||
|
**※11、支持调用原版的 Exagear 以及 Qemu User(i386、x86_64) 运行 Wine**
|
||||||
|
12、新增自动构建:https://github.com/gfdgd-xi/deep-wine-runner/actions/workflows/auto-building.yml(只供尝鲜)
|
||||||
|
13、新增 Wine 日构建(在“安装更多 Wine”处可以获取,目前有 i386、amd64、i386+amd64、amd64+wow64 mode、aarch64)
|
||||||
|
14、优化容器清理脚本
|
||||||
|
15、修复部分组件没完全换源的问题,部分组件支持自动换可用源
|
||||||
|

|
||||||
|

|
||||||
### 3.2.2(2023年05月12日)
|
### 3.2.2(2023年05月12日)
|
||||||
**※1. 修改源地址(迁出 Gitlink);**
|
**※1. 修改源地址(迁出 Gitlink);**
|
||||||
**※2. 修复非 X86 架构运行器主页面虚拟机工具禁用的问题;**
|
**※2. 修复非 X86 架构运行器主页面虚拟机工具禁用的问题;**
|
||||||
@@ -588,14 +612,14 @@ Gitlink:https://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner
|
|||||||
## 运行库下载
|
## 运行库下载
|
||||||
| 架构 | 运行库下载 |
|
| 架构 | 运行库下载 |
|
||||||
|-|-|
|
|-|-|
|
||||||
| i386 | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/i386-runtime-for-qemu_1.0.0_all.deb |
|
| i386 | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/i386-runtime-for-qemu_1.0.0_all.deb |
|
||||||
| amd64 | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/amd64-runtime-for-qemu_1.0.0_all.deb |
|
| amd64 | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/amd64-runtime-for-qemu_1.0.0_all.deb |
|
||||||
| armhf | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/armhf-runtime-for-qemu_1.0.0_all.deb |
|
| armhf | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/armhf-runtime-for-qemu_1.0.0_all.deb |
|
||||||
| arm64 | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/arm64-runtime-for-qemu_1.0.0_all.deb |
|
| arm64 | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/arm64-runtime-for-qemu_1.0.0_all.deb |
|
||||||
| mips64el | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/mips64el-runtime-for-qemu_1.0.0_all.deb |
|
| mips64el | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/mips64el-runtime-for-qemu_1.0.0_all.deb |
|
||||||
| ppc64el | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/ppc64el-runtime-for-qemu_1.0.0_all.deb |
|
| ppc64el | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/ppc64el-runtime-for-qemu_1.0.0_all.deb |
|
||||||
| riscv64 | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/riscv64-runtime-for-qemu_1.0.0_all.deb |
|
| riscv64 | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/riscv64-runtime-for-qemu_1.0.0_all.deb |
|
||||||
| s390x | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/s390x-runtime-for-qemu_1.0.0_all.deb |
|
| s390x | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/s390x-runtime-for-qemu_1.0.0_all.deb |
|
||||||
|
|
||||||
## 附:用于编译 Wine 的 Docker 容器(Debian10)
|
## 附:用于编译 Wine 的 Docker 容器(Debian10)
|
||||||
内安装了编译 Wine 所需要的依赖,Wine 编译教程:https://wiki.winehq.org/Building_Wine
|
内安装了编译 Wine 所需要的依赖,Wine 编译教程:https://wiki.winehq.org/Building_Wine
|
||||||
|
|||||||
18
WineLib/install.sh
Executable file
18
WineLib/install.sh
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
CURRENT_DIR=$(cd $(dirname $0); pwd)
|
||||||
|
cd $CURRENT_DIR
|
||||||
|
if [[ -f $CURRENT_DIR/usr/ ]]; then
|
||||||
|
echo 运行库已安装,按回车键退出
|
||||||
|
read
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
aria2c -x 16 -s 16 -d /tmp https://jihulab.com/gfdgd-xi/bwrapruntime/-/raw/main/library.tar.xz
|
||||||
|
if [[ $? != 0 ]]; then
|
||||||
|
echo 安装包下载失败!按回车键退出
|
||||||
|
read
|
||||||
|
fi
|
||||||
|
chmod 777 -Rv .
|
||||||
|
tar -xvf /tmp/library.tar.xz
|
||||||
|
rm -vf /tmp/library.tar.xz
|
||||||
|
echo 安装完成!按回车键退出
|
||||||
|
read
|
||||||
14
WineLib/remove.sh
Executable file
14
WineLib/remove.sh
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
CURRENT_DIR=$(cd $(dirname $0); pwd)
|
||||||
|
cd $CURRENT_DIR
|
||||||
|
if [[ ! -f $CURRENT_DIR/usr/ ]]; then
|
||||||
|
echo 运行库未安装,按回车键退出
|
||||||
|
read
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
rm -rfv lib
|
||||||
|
rm -rfv lib64
|
||||||
|
rm -rfv usr
|
||||||
|
chmod 777 -Rv .
|
||||||
|
echo 删除完成!按回车键退出
|
||||||
|
read
|
||||||
27
WineLib/run-more.sh
Executable file
27
WineLib/run-more.sh
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
CURRENT_DIR=$1
|
||||||
|
if [[ ! -d "$CURRENT_DIR/usr" ]]; then
|
||||||
|
zenity --info --text=未安装运行库,无法运行 --no-wrap
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
if [[ ! -d "$CURRENT_DIR/usr/lib64" ]]; then
|
||||||
|
bwrap --dev-bind / / \
|
||||||
|
--ro-bind "$CURRENT_DIR/usr/lib" /lib \
|
||||||
|
--ro-bind "$CURRENT_DIR/usr" /usr \
|
||||||
|
--ro-bind /usr/share /usr/share \
|
||||||
|
--ro-bind /usr/bin /usr/bin \
|
||||||
|
--ro-bind /usr/sbin /usr/sbin \
|
||||||
|
-- "$@"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
if [[ ! -f /lib64 ]] && [[ ! -d /lib64 ]] && [[ ! -L /lib64 ]]; then
|
||||||
|
pkexec ln -s /usr/lib64 /lib64
|
||||||
|
fi
|
||||||
|
bwrap --dev-bind / / \
|
||||||
|
--ro-bind "$CURRENT_DIR/usr/lib" /lib \
|
||||||
|
--ro-bind "$CURRENT_DIR/usr/lib64" /lib \
|
||||||
|
--ro-bind "$CURRENT_DIR/usr" /usr \
|
||||||
|
--ro-bind /usr/share /usr/share \
|
||||||
|
--ro-bind /usr/bin /usr/bin \
|
||||||
|
--ro-bind /usr/sbin /usr/sbin \
|
||||||
|
-- "$@"
|
||||||
86
WineLib/run.sh
Executable file
86
WineLib/run.sh
Executable file
@@ -0,0 +1,86 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
CURRENT_DIR=$(cd $(dirname $0); pwd)
|
||||||
|
if [[ ! -d "$CURRENT_DIR/usr" ]]; then
|
||||||
|
zenity --info --text=未安装运行库,无法运行 --no-wrap
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
systemNeedCommand=""
|
||||||
|
for libr in `ls /usr/lib`
|
||||||
|
do
|
||||||
|
if [[ -f /usr/lib/$libr/libc.so.6 ]]; then
|
||||||
|
if [[ ! -f "$CURRENT_DIR/usr/lib/$libr/libc.so.6" ]]; then
|
||||||
|
echo $libr
|
||||||
|
systemNeedCommand="$systemNeedCommand --ro-bind /usr/lib/$libr/ /usr/lib/$libr/ "
|
||||||
|
mkdir -p "$CURRENT_DIR/usr/lib/$libr"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for libr in `ls /usr/lib/ld*.so*`
|
||||||
|
do
|
||||||
|
if [[ -f $libr ]]; then
|
||||||
|
if [[ ! -f "$CURRENT_DIR/$libr" ]]; then
|
||||||
|
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
|
||||||
|
touch "$CURRENT_DIR/$libr"
|
||||||
|
else
|
||||||
|
if [[ ! -s "$CURRENT_DIR/$libr" ]]; then
|
||||||
|
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ -d /usr/lib64 ]] && [[ ! -d "$CURRENT_DIR/usr/lib64" ]]; then
|
||||||
|
mkdir -p "$CURRENT_DIR/usr/lib64"
|
||||||
|
fi
|
||||||
|
if [[ -d /usr/lib64/ ]]; then
|
||||||
|
for libr in `ls /usr/lib64/ld*.so*`
|
||||||
|
do
|
||||||
|
if [[ -f $libr ]]; then
|
||||||
|
if [[ ! -f "$CURRENT_DIR/$libr" ]]; then
|
||||||
|
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
|
||||||
|
touch "$CURRENT_DIR/$libr"
|
||||||
|
else
|
||||||
|
if [[ ! -s "$CURRENT_DIR/$libr" ]]; then
|
||||||
|
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [[ ! -d "$CURRENT_DIR/usr/lib/locale" ]]; then
|
||||||
|
systemNeedCommand="$systemNeedCommand --ro-bind /usr/lib/locale /usr/lib/locale "
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d "$CURRENT_DIR/usr/lib64" ]]; then
|
||||||
|
bwrap --dev-bind / / \
|
||||||
|
--bind "$CURRENT_DIR/usr/lib" /lib \
|
||||||
|
--bind "$CURRENT_DIR/usr" /usr \
|
||||||
|
--ro-bind /usr/share /usr/share \
|
||||||
|
--ro-bind /usr/bin /usr/bin \
|
||||||
|
--ro-bind /usr/sbin /usr/sbin \
|
||||||
|
$systemNeedCommand \
|
||||||
|
-- "$@"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
if [[ ! -f /lib64 ]] && [[ ! -d /lib64 ]] && [[ ! -L /lib64 ]]; then
|
||||||
|
pkexec ln -s /usr/lib64 /lib64
|
||||||
|
fi
|
||||||
|
if [[ -L /lib64 ]] || [[ -d /lib64 ]] || [[ -f /lib64 ]];then
|
||||||
|
bwrap --dev-bind / / \
|
||||||
|
--bind "$CURRENT_DIR/usr/lib" /lib \
|
||||||
|
--bind "$CURRENT_DIR/usr/lib64" /lib \
|
||||||
|
--bind "$CURRENT_DIR/usr" /usr \
|
||||||
|
--ro-bind /usr/share /usr/share \
|
||||||
|
--ro-bind /usr/bin /usr/bin \
|
||||||
|
--ro-bind /usr/sbin /usr/sbin \
|
||||||
|
$systemNeedCommand \
|
||||||
|
-- "$@"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
bwrap --dev-bind / / \
|
||||||
|
--bind "$CURRENT_DIR/usr/lib" /lib \
|
||||||
|
--bind "$CURRENT_DIR/usr" /usr \
|
||||||
|
--ro-bind /usr/share /usr/share \
|
||||||
|
--ro-bind /usr/bin /usr/bin \
|
||||||
|
--ro-bind /usr/sbin /usr/sbin \
|
||||||
|
$systemNeedCommand \
|
||||||
|
-- "$@"
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
if [ $WINE = "" ]; then
|
if [ $WINE = "" ]; then
|
||||||
WINE_CMD="deepin-wine5"
|
WINE_CMD="deepin-wine6-stable"
|
||||||
else
|
else
|
||||||
WINE_CMD=$WINE
|
WINE_CMD=$WINE
|
||||||
fi
|
fi
|
||||||
@@ -55,7 +55,6 @@ clean_common_temp()
|
|||||||
#remove_file "$BottleBase/users/${USER}"
|
#remove_file "$BottleBase/users/${USER}"
|
||||||
purge_dir "$BottleBase/users/Public/Temp"
|
purge_dir "$BottleBase/users/Public/Temp"
|
||||||
remove_file "$BottleBase/../PACKAGE_VERSION"
|
remove_file "$BottleBase/../PACKAGE_VERSION"
|
||||||
remove_file "$BottleBase/../update.policy"
|
|
||||||
purge_dir "$BottleBase/deepin"
|
purge_dir "$BottleBase/deepin"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Package: spark-deepin-wine-runner
|
Package: spark-deepin-wine-runner
|
||||||
Version: 3.2.2
|
Version: 3.3.0
|
||||||
Maintainer: gfdgd xi <3025613752@qq.com>
|
Maintainer: gfdgd xi <3025613752@qq.com>
|
||||||
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
|
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
|
||||||
Architecture: all
|
Architecture: all
|
||||||
@@ -8,26 +8,12 @@ Certainty: possible
|
|||||||
Check: binaries
|
Check: binaries
|
||||||
Type: binary, udeb
|
Type: binary, udeb
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Depends: python3, python3-pil, libc6, python3-pil.imagetk, python3-pyquery, aria2, curl, unrar | unrar-free , unzip, python3-requests, python3-pyqt5, python3-psutil, deepin-terminal | mate-terminal | gnome-terminal | xfce4-terminal, python3-dbus, python3-pip, p7zip-full, sudo, python3-pyperclip
|
Depends: python3, python3-pil, libc6, python3-pil.imagetk, python3-pyquery, aria2, curl, unrar | unrar-free , unzip, python3-requests, python3-pyqt5, python3-psutil, deepin-terminal | mate-terminal | gnome-terminal | xfce4-terminal, python3-dbus, python3-pip, p7zip-full, sudo, python3-pyperclip, bubblewrap, zenity
|
||||||
Recommends: winbind, wimtools, python3-pyqt5.qtwebengine, qemu-user, binfmt-support, qemu-user-static
|
Recommends: winbind, wimtools, python3-pyqt5.qtwebengine, binfmt-support, libc6:i386
|
||||||
Section: utils
|
Section: utils
|
||||||
Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52, spark-deepin-wine-runner
|
Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
|
||||||
Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52, spark-deepin-wine-runner
|
Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
|
||||||
|
Provides: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
|
||||||
Installed-Size: 76512
|
Installed-Size: 76512
|
||||||
Description: gfdgd xi 制作的 wine 运行器
|
Description: Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。
|
||||||
3.2.2 更新内容:
|
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低)。
|
||||||
※1. 修改源地址,脱离 Gitlink;
|
|
||||||
※2. 修复非 X86 架构运行器主页面虚拟机工具禁用的问题。
|
|
||||||
3.2.1 更新内容:
|
|
||||||
※1、Windows 虚拟机安装工具支持非 X86 架构;
|
|
||||||
※2、应用打包器可以与星火应用商店配合构建 arm/all 全架构的 Wine 包;
|
|
||||||
※3、Windows 虚拟机安装工具支持调用 Qemu;
|
|
||||||
※4、新增 Qemu User 运行 Wine 的帮助入口;
|
|
||||||
※5、修复 Windows 虚拟机的自动配置镜像缺少 aria2c.exe 的故障;
|
|
||||||
※6、支持在更新程序版本时自动关闭程序进程;
|
|
||||||
7、运行器和打包器支持调用 spark-wine8;
|
|
||||||
8、修改作者信息;
|
|
||||||
9、新增安装包构建时间;
|
|
||||||
10、优化 Wine 运行器更新策略。
|
|
||||||
更新时间:2023年04月29日
|
|
||||||
作者:gfdgd xi
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
#################################################################################################################
|
#################################################################################################################
|
||||||
# 非强制性的必应组件,所以成功不成功都行
|
# 非强制性的必应组件,所以成功不成功都行
|
||||||
# 程序版本号
|
# 程序版本号
|
||||||
version=3.2.1
|
version=3.3.0
|
||||||
echo 安装组件
|
echo 安装组件
|
||||||
python3 -m pip install --upgrade pynput --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
|
python3 -m pip install --upgrade pynput --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
|
||||||
python3 -m pip install --upgrade xpinyin --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
|
python3 -m pip install --upgrade xpinyin --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ def ReplaceText(string: str, lists: list):
|
|||||||
|
|
||||||
control = '''Package: @@@Package@@@
|
control = '''Package: @@@Package@@@
|
||||||
Version: @@@Version@@@
|
Version: @@@Version@@@
|
||||||
Architecture: i386
|
Architecture: all
|
||||||
Maintainer: @@@Maintainer@@@
|
Maintainer: @@@Maintainer@@@
|
||||||
Depends: @@@Depends@@@
|
Depends: @@@Depends@@@
|
||||||
Section: non-free/otherosfs
|
Section: non-free/otherosfs
|
||||||
@@ -119,7 +119,7 @@ info = f'''{{
|
|||||||
"appid": "@@@Package@@@",
|
"appid": "@@@Package@@@",
|
||||||
"name": "@@@Name@@@",
|
"name": "@@@Name@@@",
|
||||||
"version": "@@@Version@@@",
|
"version": "@@@Version@@@",
|
||||||
"arch": ["i386"],
|
"arch": ["all"],
|
||||||
"permissions": {{
|
"permissions": {{
|
||||||
"autostart": false,
|
"autostart": false,
|
||||||
"notification": false,
|
"notification": false,
|
||||||
@@ -204,7 +204,7 @@ export MIME_TYPE=""
|
|||||||
#####没什么用
|
#####没什么用
|
||||||
export DEB_PACKAGE_NAME="@@@Package@@@"
|
export DEB_PACKAGE_NAME="@@@Package@@@"
|
||||||
####这里写包名才能在启动的时候正确找到files.7z,似乎也和杀残留进程有关
|
####这里写包名才能在启动的时候正确找到files.7z,似乎也和杀残留进程有关
|
||||||
export APPRUN_CMD="deepin-wine6-stable"
|
export APPRUN_CMD="{chooseWine}"
|
||||||
#####wine启动指令,建议
|
#####wine启动指令,建议
|
||||||
EXPORT_ENVS=""
|
EXPORT_ENVS=""
|
||||||
|
|
||||||
@@ -312,9 +312,9 @@ def ReadTxt(path):
|
|||||||
things = file.read()
|
things = file.read()
|
||||||
return things
|
return things
|
||||||
|
|
||||||
def GetEXEVersion(exePath):
|
def GetEXEVersion(exePath, bottlePath=get_home() + "/.wine"):
|
||||||
versionPath = f"/tmp/wine-runner-exe-version-{random.randint(0, 1000)}.txt"
|
versionPath = f"/tmp/wine-runner-exe-version-{random.randint(0, 1000)}.txt"
|
||||||
if os.system(f"deepin-wine6-stable '{programPath}/GetEXEVersion.exe' '{exePath}' '{versionPath}'"):
|
if os.system(f"WINEPREFIX='{bottlePath}' {chooseWine} '{programPath}/GetEXEVersion.exe' '{exePath}' '{versionPath}'"):
|
||||||
return "1.0.0"
|
return "1.0.0"
|
||||||
try:
|
try:
|
||||||
exeVersion = ReadTxt(versionPath).replace("\n", "")
|
exeVersion = ReadTxt(versionPath).replace("\n", "")
|
||||||
@@ -376,9 +376,9 @@ class RunThread(QtCore.QThread):
|
|||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
def GetEXEVersion(self, exePath):
|
def GetEXEVersion(self, exePath, bottlePath=get_home() + "/.wine"):
|
||||||
versionPath = f"/tmp/wine-runner-exe-version-{random.randint(0, 1000)}.txt"
|
versionPath = f"/tmp/wine-runner-exe-version-{random.randint(0, 1000)}.txt"
|
||||||
self.RunCommand(f"deepin-wine6-stable '{programPath}/GetEXEVersion.exe' '{exePath}' '{versionPath}'")
|
self.RunCommand(f"WINEPREFIX='{bottlePath}' {chooseWine} '{programPath}/GetEXEVersion.exe' '{exePath}' '{versionPath}'")
|
||||||
try:
|
try:
|
||||||
exeVersion = ReadTxt(versionPath).replace("\n", "")
|
exeVersion = ReadTxt(versionPath).replace("\n", "")
|
||||||
if exeVersion.replace(" ", "") == "":
|
if exeVersion.replace(" ", "") == "":
|
||||||
@@ -433,7 +433,7 @@ class RunThread(QtCore.QThread):
|
|||||||
self.RunCommand(f"mkdir -pv '{bottlePath}'")
|
self.RunCommand(f"mkdir -pv '{bottlePath}'")
|
||||||
self.RunCommand(f"chmod 777 -Rv '{bottlePath}'")
|
self.RunCommand(f"chmod 777 -Rv '{bottlePath}'")
|
||||||
# 禁止生成 .desktop 文件
|
# 禁止生成 .desktop 文件
|
||||||
self.RunCommand(f"WINEPREFIX='{bottlePath}' deepin-wine6-stable 'reg' 'add' 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v winemenubuilder.exe '/f'")
|
self.RunCommand(f"WINEPREFIX='{bottlePath}' {chooseWine} 'reg' 'add' 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v winemenubuilder.exe '/f'")
|
||||||
# 写入字体
|
# 写入字体
|
||||||
self.RunCommand(f"WINEPREFIX='{bottlePath}' '{programPath}/AutoShell/command/installfont' 1")
|
self.RunCommand(f"WINEPREFIX='{bottlePath}' '{programPath}/AutoShell/command/installfont' 1")
|
||||||
# 安装包
|
# 安装包
|
||||||
@@ -441,7 +441,7 @@ class RunThread(QtCore.QThread):
|
|||||||
global pressCompleteDownload
|
global pressCompleteDownload
|
||||||
pressCompleteDownload = False
|
pressCompleteDownload = False
|
||||||
installCmpleteButton.setEnabled(True)
|
installCmpleteButton.setEnabled(True)
|
||||||
self.RunCommand(f"WINEPREFIX='{bottlePath}' deepin-wine6-stable '{exePath.text()}' &") # 非堵塞线程
|
self.RunCommand(f"WINEPREFIX='{bottlePath}' {chooseWine} '{exePath.text()}' &") # 非堵塞线程
|
||||||
|
|
||||||
# 安装锁,锁解除后才可继续
|
# 安装锁,锁解除后才可继续
|
||||||
while not pressCompleteDownload:
|
while not pressCompleteDownload:
|
||||||
@@ -481,7 +481,7 @@ class RunThread(QtCore.QThread):
|
|||||||
exePathInBottle = rightLnk[1]
|
exePathInBottle = rightLnk[1]
|
||||||
exeName = os.path.splitext(os.path.basename(folderExePath))[0]
|
exeName = os.path.splitext(os.path.basename(folderExePath))[0]
|
||||||
exePathInSystem = rightLnk[1].replace("\\", "/").replace("c:", f"{bottlePath}/drive_c")
|
exePathInSystem = rightLnk[1].replace("\\", "/").replace("c:", f"{bottlePath}/drive_c")
|
||||||
debPackageVersion = self.GetEXEVersion(exePathInSystem)
|
debPackageVersion = self.GetEXEVersion(exePathInSystem, bottlePath)
|
||||||
cpNow = False
|
cpNow = False
|
||||||
for i in iconList:
|
for i in iconList:
|
||||||
path = i[1].replace("wineBottonPath", bottlePath).lower()
|
path = i[1].replace("wineBottonPath", bottlePath).lower()
|
||||||
@@ -497,7 +497,7 @@ class RunThread(QtCore.QThread):
|
|||||||
# 绿色软件
|
# 绿色软件
|
||||||
self.RunCommand(f"mkdir -pv '{bottlePath}'")
|
self.RunCommand(f"mkdir -pv '{bottlePath}'")
|
||||||
self.RunCommand(f"chmod 777 -Rv '{bottlePath}'")
|
self.RunCommand(f"chmod 777 -Rv '{bottlePath}'")
|
||||||
self.RunCommand(f"WINEPREFIX='{bottlePath}' deepin-wine6-stable exit")
|
self.RunCommand(f"WINEPREFIX='{bottlePath}' {chooseWine} exit")
|
||||||
folderExePath = os.path.dirname(exePath.text())
|
folderExePath = os.path.dirname(exePath.text())
|
||||||
exePathInBottle = f"c:/Program Files/{os.path.basename(folderExePath)}/{exeName}"
|
exePathInBottle = f"c:/Program Files/{os.path.basename(folderExePath)}/{exeName}"
|
||||||
exeName = os.path.splitext(os.path.basename(os.path.basename(exePath.text())))[0]
|
exeName = os.path.splitext(os.path.basename(os.path.basename(exePath.text())))[0]
|
||||||
@@ -505,9 +505,9 @@ class RunThread(QtCore.QThread):
|
|||||||
self.RunCommand(f"'{programPath}/wrestool' '{exePath.text()}' -x -t 14 > '{debBuildPath}/{programIconPath}'")
|
self.RunCommand(f"'{programPath}/wrestool' '{exePath.text()}' -x -t 14 > '{debBuildPath}/{programIconPath}'")
|
||||||
# 拷贝文件到容器
|
# 拷贝文件到容器
|
||||||
self.RunCommand(f"cp -rv '{folderExePath}' '{bottlePath}/drive_c/Program Files'")
|
self.RunCommand(f"cp -rv '{folderExePath}' '{bottlePath}/drive_c/Program Files'")
|
||||||
debPackageVersion = self.GetEXEVersion(exePath.text())
|
debPackageVersion = self.GetEXEVersion(exePath.text(), bottlePath)
|
||||||
debDescription = f"{exeName} By Deepin Wine 6 Stable And Build By Wine Runner Easy Packager"
|
debDescription = f"{exeName} By Deepin Wine 6 Stable And Build By Wine Runner Easy Packager"
|
||||||
debDepends = "deepin-wine6-stable, spark-dwine-helper | store.spark-app.spark-dwine-helper, fonts-wqy-microhei, fonts-wqy-zenhei"
|
debDepends = f"{chooseWine}, spark-dwine-helper | store.spark-app.spark-dwine-helper, fonts-wqy-microhei, fonts-wqy-zenhei"
|
||||||
self.RunCommand(f"mkdir -pv '{debBuildPath}/DEBIAN'")
|
self.RunCommand(f"mkdir -pv '{debBuildPath}/DEBIAN'")
|
||||||
self.RunCommand(f"mkdir -pv '{debBuildPath}/opt/apps/{debPackageName}/files'")
|
self.RunCommand(f"mkdir -pv '{debBuildPath}/opt/apps/{debPackageName}/files'")
|
||||||
self.RunCommand(f"mkdir -pv '{debBuildPath}/opt/apps/{debPackageName}/entries/applications'")
|
self.RunCommand(f"mkdir -pv '{debBuildPath}/opt/apps/{debPackageName}/entries/applications'")
|
||||||
@@ -539,7 +539,7 @@ class RunThread(QtCore.QThread):
|
|||||||
["@@@Maintainer@@@", debMaintainer],
|
["@@@Maintainer@@@", debMaintainer],
|
||||||
["@@@Depends@@@", debDepends],
|
["@@@Depends@@@", debDepends],
|
||||||
["@@@Description@@@", debDescription],
|
["@@@Description@@@", debDescription],
|
||||||
["@@@Installed-Size@@@", str(buildProgramSize)],
|
["@@@Installed-Size@@@", str(int(buildProgramSize))],
|
||||||
["@@@Name@@@", exeName],
|
["@@@Name@@@", exeName],
|
||||||
["@@@EXEC_PATH@@@", exePathInBottle],
|
["@@@EXEC_PATH@@@", exePathInBottle],
|
||||||
["@@@Icon@@@", programIconPath]
|
["@@@Icon@@@", programIconPath]
|
||||||
@@ -562,7 +562,7 @@ class RunThread(QtCore.QThread):
|
|||||||
self.RunCommand(f"chmod -Rv 755 '{debBuildPath}/opt/apps/{debPackageName}/entries/applications/'*.desktop")
|
self.RunCommand(f"chmod -Rv 755 '{debBuildPath}/opt/apps/{debPackageName}/entries/applications/'*.desktop")
|
||||||
########### 打包 deb
|
########### 打包 deb
|
||||||
print(debPackageVersion)
|
print(debPackageVersion)
|
||||||
self.RunCommand(f"dpkg -b '{debBuildPath}' '{desktopPath}/{debPackageName}_{debPackageVersion}_i386.deb'")
|
self.RunCommand(f"dpkg-deb -Z xz -b '{debBuildPath}' '{desktopPath}/{debPackageName}_{debPackageVersion}_all.deb'")
|
||||||
self.info.emit("打包完成!")
|
self.info.emit("打包完成!")
|
||||||
self.disbledAll.emit(False)
|
self.disbledAll.emit(False)
|
||||||
########### 移除临时文件
|
########### 移除临时文件
|
||||||
@@ -580,6 +580,8 @@ class RunThread(QtCore.QThread):
|
|||||||
#/home/gfdgd_xi/Downloads/XPcalc.exe
|
#/home/gfdgd_xi/Downloads/XPcalc.exe
|
||||||
def RunBuildThread():
|
def RunBuildThread():
|
||||||
global buildThread
|
global buildThread
|
||||||
|
global chooseWine
|
||||||
|
chooseWine = wineList[wineChooser.currentIndex()]
|
||||||
buildThread = RunThread()
|
buildThread = RunThread()
|
||||||
buildThread.showLogText.connect(ShowText)
|
buildThread.showLogText.connect(ShowText)
|
||||||
buildThread.error.connect(ErrorMessage)
|
buildThread.error.connect(ErrorMessage)
|
||||||
@@ -602,6 +604,7 @@ def BrowserExe():
|
|||||||
if filePath[0] != "" or filePath[0] != None:
|
if filePath[0] != "" or filePath[0] != None:
|
||||||
exePath.setText(filePath[0])
|
exePath.setText(filePath[0])
|
||||||
|
|
||||||
|
chooseWine = ""
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||||
iconPath = "{}/deepin-wine-runner.svg".format(programPath)
|
iconPath = "{}/deepin-wine-runner.svg".format(programPath)
|
||||||
@@ -616,12 +619,31 @@ if __name__ == "__main__":
|
|||||||
widget = QtWidgets.QWidget()
|
widget = QtWidgets.QWidget()
|
||||||
layout = QtWidgets.QGridLayout()
|
layout = QtWidgets.QGridLayout()
|
||||||
exePath = QtWidgets.QLineEdit()
|
exePath = QtWidgets.QLineEdit()
|
||||||
|
wineChooser = QtWidgets.QComboBox()
|
||||||
browserExeButton = QtWidgets.QPushButton("浏览……")
|
browserExeButton = QtWidgets.QPushButton("浏览……")
|
||||||
logText = QtWidgets.QTextBrowser()
|
logText = QtWidgets.QTextBrowser()
|
||||||
logText.setStyleSheet("""
|
logText.setStyleSheet("""
|
||||||
background-color: black;
|
background-color: black;
|
||||||
color: white;
|
color: white;
|
||||||
""")
|
""")
|
||||||
|
wineChooserList = [
|
||||||
|
"使用 Spark Wine8 打包应用",
|
||||||
|
"使用 Spark Wine7 Devel 打包应用",
|
||||||
|
"使用 Deepin Wine6 Stable 打包应用",
|
||||||
|
"使用 Deepin Wine5 Stable 打包应用",
|
||||||
|
"使用 Deepin Wine5 打包应用",
|
||||||
|
"使用 Deepin Wine2 打包应用"
|
||||||
|
]
|
||||||
|
wineChooserIndex = 0
|
||||||
|
wineList = ["spark-wine8", "spark-wine7-devel", "deepin-wine6-stable", "deepin-wine5-stable", "deepin-wine5", "deepin-wine"]
|
||||||
|
for i in range(len(wineList)):
|
||||||
|
if not os.system(f"which '{wineList[i]}'"):
|
||||||
|
wineChooserIndex = i
|
||||||
|
break
|
||||||
|
chooseWine = wineList[wineChooserIndex]
|
||||||
|
wineChooserList[wineChooserIndex] = f"{wineChooserList[wineChooserIndex]}(推荐,如无特殊需求不建议更换)"
|
||||||
|
wineChooser.addItems(wineChooserList)
|
||||||
|
wineChooser.setCurrentIndex(wineChooserIndex)
|
||||||
controlLayout = QtWidgets.QHBoxLayout()
|
controlLayout = QtWidgets.QHBoxLayout()
|
||||||
buildButton = QtWidgets.QPushButton("现在打包……")
|
buildButton = QtWidgets.QPushButton("现在打包……")
|
||||||
installCmpleteButton = QtWidgets.QPushButton("安装程序执行完成")
|
installCmpleteButton = QtWidgets.QPushButton("安装程序执行完成")
|
||||||
@@ -637,8 +659,9 @@ if __name__ == "__main__":
|
|||||||
layout.addWidget(QtWidgets.QLabel("选择 EXE:"), 0, 0)
|
layout.addWidget(QtWidgets.QLabel("选择 EXE:"), 0, 0)
|
||||||
layout.addWidget(exePath, 0, 1)
|
layout.addWidget(exePath, 0, 1)
|
||||||
layout.addWidget(browserExeButton, 0, 2)
|
layout.addWidget(browserExeButton, 0, 2)
|
||||||
layout.addLayout(controlLayout, 1, 1)
|
layout.addWidget(wineChooser, 1, 1)
|
||||||
layout.addWidget(logText, 2, 0, 1, 3)
|
layout.addLayout(controlLayout, 2, 1)
|
||||||
|
layout.addWidget(logText, 3, 0, 1, 3)
|
||||||
widget.setLayout(layout)
|
widget.setLayout(layout)
|
||||||
window.setCentralWidget(widget)
|
window.setCentralWidget(widget)
|
||||||
window.setWindowTitle(f"Wine 运行器 {version}——简易打包器")
|
window.setWindowTitle(f"Wine 运行器 {version}——简易打包器")
|
||||||
|
|||||||
@@ -1575,7 +1575,7 @@ StartupNotify=false
|
|||||||
################
|
################
|
||||||
if not self.build:
|
if not self.build:
|
||||||
self.label.emit("正在构建 deb 包……")
|
self.label.emit("正在构建 deb 包……")
|
||||||
self.run_command("bash -c 'dpkg -b \"{}\" \"{}\"'".format(debPackagePath, e12_text.text()))
|
self.run_command("bash -c 'dpkg-deb -Z xz -b \"{}\" \"{}\"'".format(debPackagePath, e12_text.text()))
|
||||||
################
|
################
|
||||||
# 删除临时文件
|
# 删除临时文件
|
||||||
################
|
################
|
||||||
@@ -2270,7 +2270,7 @@ uploadSparkStore.addAction(uploadSparkStoreProgram)
|
|||||||
uploadSparkStore.addAction(uploadSparkStoreWebsize)
|
uploadSparkStore.addAction(uploadSparkStoreWebsize)
|
||||||
debE.triggered.connect(lambda: ReadDeb(False))
|
debE.triggered.connect(lambda: ReadDeb(False))
|
||||||
debX.triggered.connect(lambda: ReadDeb(True))
|
debX.triggered.connect(lambda: ReadDeb(True))
|
||||||
uploadSparkStoreWebsize.triggered.connect(lambda: webbrowser.open_new_tab("https://upload.deepinos.org"))
|
uploadSparkStoreWebsize.triggered.connect(lambda: webbrowser.open_new_tab("https://upload.deepinos.org.cn"))
|
||||||
uploadSparkStoreProgram.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"/opt/spark-store-submitter/bin/spark-store-submitter '{e12_text.text()}'"]).start())
|
uploadSparkStoreProgram.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"/opt/spark-store-submitter/bin/spark-store-submitter '{e12_text.text()}'"]).start())
|
||||||
getPdfHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://bbs.deepin.org/post/246837"))
|
getPdfHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://bbs.deepin.org/post/246837"))
|
||||||
help.addAction(tip)
|
help.addAction(tip)
|
||||||
|
|||||||
@@ -45,9 +45,6 @@ def OpenGiteeIssues():
|
|||||||
def OpenGithubIssues():
|
def OpenGithubIssues():
|
||||||
webbrowser.open_new_tab("https://github.com/gfdgd-xi/deep-wine-runner/issues")
|
webbrowser.open_new_tab("https://github.com/gfdgd-xi/deep-wine-runner/issues")
|
||||||
|
|
||||||
def OpenGitlinkIssues():
|
|
||||||
webbrowser.open_new_tab("https://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner/issues")
|
|
||||||
|
|
||||||
# 获取用户主目录
|
# 获取用户主目录
|
||||||
def get_home()->"获取用户主目录":
|
def get_home()->"获取用户主目录":
|
||||||
return os.path.expanduser('~')
|
return os.path.expanduser('~')
|
||||||
@@ -75,11 +72,9 @@ updateButton = QtWidgets.QPushButton("提交")
|
|||||||
otherUpload = QtWidgets.QHBoxLayout()
|
otherUpload = QtWidgets.QHBoxLayout()
|
||||||
giteeButton = QtWidgets.QPushButton("Gitee Issues")
|
giteeButton = QtWidgets.QPushButton("Gitee Issues")
|
||||||
githubButton = QtWidgets.QPushButton("Github Issues")
|
githubButton = QtWidgets.QPushButton("Github Issues")
|
||||||
gitlinkButton = QtWidgets.QPushButton("Gitlink Issues")
|
|
||||||
otherUpload.addWidget(QtWidgets.QLabel("如果无法正常反馈,可以用其他方式反馈:"))
|
otherUpload.addWidget(QtWidgets.QLabel("如果无法正常反馈,可以用其他方式反馈:"))
|
||||||
otherUpload.addWidget(giteeButton)
|
otherUpload.addWidget(giteeButton)
|
||||||
otherUpload.addWidget(githubButton)
|
otherUpload.addWidget(githubButton)
|
||||||
otherUpload.addWidget(gitlinkButton)
|
|
||||||
otherUpload.addSpacerItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum))
|
otherUpload.addSpacerItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum))
|
||||||
starMenu.addItems(["5分", "4分", "3分", "2分", "1分"])
|
starMenu.addItems(["5分", "4分", "3分", "2分", "1分"])
|
||||||
widgetLayout.addWidget(QtWidgets.QLabel("你的昵称:"), 0, 0, 1, 1)
|
widgetLayout.addWidget(QtWidgets.QLabel("你的昵称:"), 0, 0, 1, 1)
|
||||||
@@ -94,7 +89,6 @@ widgetLayout.addLayout(otherUpload, 3, 0, 1, 5)
|
|||||||
widgetLayout.addWidget(updateButton, 3, 5, 1, 1)
|
widgetLayout.addWidget(updateButton, 3, 5, 1, 1)
|
||||||
giteeButton.clicked.connect(OpenGiteeIssues)
|
giteeButton.clicked.connect(OpenGiteeIssues)
|
||||||
githubButton.clicked.connect(OpenGithubIssues)
|
githubButton.clicked.connect(OpenGithubIssues)
|
||||||
gitlinkButton.clicked.connect(OpenGitlinkIssues)
|
|
||||||
updateButton.clicked.connect(UpdateButtonClick)
|
updateButton.clicked.connect(UpdateButtonClick)
|
||||||
widget.setLayout(widgetLayout)
|
widget.setLayout(widgetLayout)
|
||||||
window.setCentralWidget(widget)
|
window.setCentralWidget(widget)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"Version": "3.2.2",
|
"Version": "3.3.0",
|
||||||
"Time": "未知",
|
"Time": "未知",
|
||||||
"Thank": [
|
"Thank": [
|
||||||
"感谢 RacoonGX 的付出与贡献",
|
"感谢 RacoonGX 的付出与贡献",
|
||||||
|
|||||||
543
mainwindow.py
543
mainwindow.py
@@ -14,12 +14,12 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
import pyperclip
|
|
||||||
import random
|
import random
|
||||||
import base64
|
import base64
|
||||||
import shutil
|
import shutil
|
||||||
import hashlib
|
import hashlib
|
||||||
import platform
|
import platform
|
||||||
|
import pyperclip
|
||||||
import threading
|
import threading
|
||||||
import traceback
|
import traceback
|
||||||
import webbrowser
|
import webbrowser
|
||||||
@@ -899,6 +899,13 @@ def InstallVB():
|
|||||||
wineBottonPath = e1.currentText()
|
wineBottonPath = e1.currentText()
|
||||||
OpenTerminal(f"'{programPath}/InstallVisualBasicRuntime.py' '{wineBottonPath}' '{wine[o1.currentText()]}' {int(setting['RuntimeCache'])}")
|
OpenTerminal(f"'{programPath}/InstallVisualBasicRuntime.py' '{wineBottonPath}' '{wine[o1.currentText()]}' {int(setting['RuntimeCache'])}")
|
||||||
|
|
||||||
|
def InstallFoxPro():
|
||||||
|
if e1.currentText() == "":
|
||||||
|
wineBottonPath = setting["DefultBotton"]
|
||||||
|
else:
|
||||||
|
wineBottonPath = e1.currentText()
|
||||||
|
OpenTerminal(f"'{programPath}/InstallFoxpro.py' '{wineBottonPath}' '{wine[o1.currentText()]}' {int(setting['RuntimeCache'])}")
|
||||||
|
|
||||||
def InstallVisualStudioCPlusPlus():
|
def InstallVisualStudioCPlusPlus():
|
||||||
if e1.currentText() == "":
|
if e1.currentText() == "":
|
||||||
wineBottonPath = setting["DefultBotton"]
|
wineBottonPath = setting["DefultBotton"]
|
||||||
@@ -1892,6 +1899,13 @@ class ValueCheck():
|
|||||||
def ChangePath():
|
def ChangePath():
|
||||||
e1.setCurrentText(f'{setting["DefultBotton"]}/{os.path.splitext(os.path.basename(e2.currentText()))[0]}')
|
e1.setCurrentText(f'{setting["DefultBotton"]}/{os.path.splitext(os.path.basename(e2.currentText()))[0]}')
|
||||||
|
|
||||||
|
def ConnectRemoteWindowsPC(ip: str):
|
||||||
|
if os.system("which xfreerdp"):
|
||||||
|
if QtWidgets.QMessageBox.question(window, "提示", "未检测到 xfreerdp,是否立即安装?") == QtWidgets.QMessageBox.Yes:
|
||||||
|
OpenTerminal("sudo apt install xfreerdp -y")
|
||||||
|
return
|
||||||
|
os.system(f"xfreerdp '{ip}'")
|
||||||
|
|
||||||
def UploadLog():
|
def UploadLog():
|
||||||
if QtWidgets.QMessageBox.question(window, "提示", "您确定要上传吗?上传内容将不会公开,将用于加强日志分析功能") == QtWidgets.QMessageBox.Yes:
|
if QtWidgets.QMessageBox.question(window, "提示", "您确定要上传吗?上传内容将不会公开,将用于加强日志分析功能") == QtWidgets.QMessageBox.Yes:
|
||||||
text = QtWidgets.QInputDialog.getMultiLineText(window, "输入内容", "输入描述信息")
|
text = QtWidgets.QInputDialog.getMultiLineText(window, "输入内容", "输入描述信息")
|
||||||
@@ -2200,179 +2214,247 @@ programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
|||||||
#############
|
#############
|
||||||
# 检测 Wine
|
# 检测 Wine
|
||||||
#############
|
#############
|
||||||
try:
|
def CheckWine():
|
||||||
wine = {
|
global wine
|
||||||
"基于 UOS box86 的 deepin-wine6-stable": f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 /opt/deepin-wine6-stable/bin/wine ",
|
global untipsWine
|
||||||
"基于 UOS exagear 的 deepin-wine6-stable": f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib /opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine ",
|
global canUseWine
|
||||||
"使用 Flatpak 安装的 Wine": "flatpak run org.winehq.Wine",
|
try:
|
||||||
"deepin-wine6 stable": "deepin-wine6-stable",
|
|
||||||
"deepin-wine5 stable": "deepin-wine5-stable",
|
wine = {
|
||||||
"spark-wine7-devel": "spark-wine7-devel",
|
"基于 UOS box86 的 deepin-wine6-stable": f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 /opt/deepin-wine6-stable/bin/wine ",
|
||||||
"spark-wine8": "spark-wine8",
|
"基于 UOS exagear 的 deepin-wine6-stable": f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib /opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine ",
|
||||||
"deepin-wine": "deepin-wine",
|
"使用 Flatpak 安装的 Wine": "flatpak run org.winehq.Wine",
|
||||||
"deepin-wine5": "deepin-wine5",
|
"deepin-wine6 stable": "deepin-wine6-stable",
|
||||||
"wine": "wine",
|
"deepin-wine5 stable": "deepin-wine5-stable",
|
||||||
"wine64": "wine64",
|
"spark-wine7-devel": "spark-wine7-devel",
|
||||||
"ukylin-wine": "ukylin-wine",
|
"spark-wine8": "spark-wine8",
|
||||||
"mono(这不是 wine,但可以实现初步调用运行 .net 应用)": "mono",
|
"deepin-wine": "deepin-wine",
|
||||||
"基于 linglong 的 deepin-wine6-stable(不推荐)": f"ll-cli run '' --exec '/bin/deepin-wine6-stable'"
|
"deepin-wine5": "deepin-wine5",
|
||||||
}
|
"wine": "wine",
|
||||||
untipsWine = ["使用 Flatpak 安装的 Wine", "基于 exagear 的 deepin-wine6-stable", "基于 UOS box86 的 deepin-wine6-stable", "基于 UOS exagear 的 deepin-wine6-stable", "基于 linglong 的 deepin-wine6-stable(不推荐)"]
|
"wine64": "wine64",
|
||||||
canUseWine = []
|
"ukylin-wine": "ukylin-wine",
|
||||||
if os.path.exists("/opt/deepin-box86/box86") and os.path.exists("/opt/deepin-wine6-stable/bin/wine"):
|
"mono(这不是 wine,但可以实现初步调用运行 .net 应用)": "mono",
|
||||||
canUseWine.append("基于 UOS box86 的 deepin-wine6-stable")
|
"基于 linglong 的 deepin-wine6-stable(不推荐)": f"ll-cli run '' --exec '/bin/deepin-wine6-stable'"
|
||||||
if os.path.exists("/opt/exagear/bin/ubt_x64a64_al") and os.path.exists("/opt/deepin-wine6-stable/bin/wine"):
|
}
|
||||||
canUseWine.append("基于 UOS exagear 的 deepin-wine6-stable")
|
untipsWine = ["使用 Flatpak 安装的 Wine", "基于 exagear 的 deepin-wine6-stable", "基于 UOS box86 的 deepin-wine6-stable", "基于 UOS exagear 的 deepin-wine6-stable", "基于 linglong 的 deepin-wine6-stable(不推荐)"]
|
||||||
if not os.system("which exagear") and os.path.exists("/opt/deepin-wine6-stable/bin/wine"):
|
canUseWine = []
|
||||||
canUseWine.append("基于 exagear 的 deepin-wine6-stable")
|
if os.path.exists("/opt/deepin-box86/box86") and os.path.exists("/opt/deepin-wine6-stable/bin/wine"):
|
||||||
for i in wine.keys():
|
canUseWine.append("基于 UOS box86 的 deepin-wine6-stable")
|
||||||
if not os.system(f"which '{wine[i]}'"):
|
if os.path.exists("/opt/exagear/bin/ubt_x64a64_al") and os.path.exists("/opt/deepin-wine6-stable/bin/wine"):
|
||||||
canUseWine.append(i)
|
canUseWine.append("基于 UOS exagear 的 deepin-wine6-stable")
|
||||||
if not os.system("which flatpak") and os.path.exists("/var/lib/flatpak/app/org.winehq.Wine"):
|
#if not os.system("which exagear") and os.path.exists("/opt/deepin-wine6-stable/bin/wine"):
|
||||||
canUseWine.append("使用 Flatpak 安装的 Wine")
|
#canUseWine.append("基于 exagear 的 deepin-wine6-stable")
|
||||||
|
for i in wine.keys():
|
||||||
|
if not os.system(f"which '{wine[i]}'"):
|
||||||
|
canUseWine.append(i)
|
||||||
|
if not os.system("which flatpak") and os.path.exists("/var/lib/flatpak/app/org.winehq.Wine"):
|
||||||
|
canUseWine.append("使用 Flatpak 安装的 Wine")
|
||||||
|
|
||||||
if os.path.exists("/persistent/linglong/layers/"): # 判断是否使用 linglong
|
if os.path.exists("/persistent/linglong/layers/"): # 判断是否使用 linglong
|
||||||
for i in os.listdir("/persistent/linglong/layers/"):
|
for i in os.listdir("/persistent/linglong/layers/"):
|
||||||
try:
|
|
||||||
dire = os.listdir(f"/persistent/linglong/layers/{i}")[-1]
|
|
||||||
arch = os.listdir(f"/persistent/linglong/layers/{i}/{dire}")[-1]
|
|
||||||
if os.path.exists(f"/persistent/linglong/layers/{i}/{dire}/{arch}/runtime/bin/deepin-wine6-stable"):
|
|
||||||
wine["基于 linglong 的 deepin-wine6-stable(不推荐)"] = f"ll-cli run {i} --exec '/bin/deepin-wine6-stable'"
|
|
||||||
canUseWine.append("基于 linglong 的 deepin-wine6-stable(不推荐)")
|
|
||||||
break
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
# 读取自定义安装的 Wine(需要解包的才能使用)
|
|
||||||
qemuBottleList = []
|
|
||||||
qemuPath = f"{get_home()}/.deepin-wine-runner-ubuntu-images"
|
|
||||||
if not os.system("which qemu-i386-static"):
|
|
||||||
if os.path.exists(qemuPath):
|
|
||||||
for g in os.listdir(qemuPath):
|
|
||||||
archPath = f"{qemuPath}/{g}"
|
|
||||||
arch = g
|
|
||||||
if os.path.isdir(archPath):
|
|
||||||
for d in os.listdir(archPath):
|
|
||||||
bottlePath = f"{archPath}/{d}"
|
|
||||||
if os.path.isdir(bottlePath):
|
|
||||||
qemuBottleList.append([
|
|
||||||
arch,
|
|
||||||
d,
|
|
||||||
bottlePath
|
|
||||||
])
|
|
||||||
shellHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json")).values())
|
|
||||||
findExeHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json")).values())
|
|
||||||
wineBottonHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json")).values())
|
|
||||||
isoPath = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/ISOPath.json")).values())
|
|
||||||
isoPathFound = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/ISOPathFound.json")).values())
|
|
||||||
setting = json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineSetting.json"))
|
|
||||||
change = False
|
|
||||||
if not os.path.exists(get_home() + "/.config/deepin-wine-runner/mono-lock"):
|
|
||||||
os.mknod(f"{get_home()}/.config/deepin-wine-runner/mono-lock")
|
|
||||||
setting["MonoGeckoInstaller"] = False
|
|
||||||
change = True
|
|
||||||
for i in defultProgramList.keys():
|
|
||||||
if not i in setting:
|
|
||||||
change = True
|
|
||||||
setting[i] = defultProgramList[i]
|
|
||||||
if change:
|
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/WineSetting.json", json.dumps(setting))
|
|
||||||
try:
|
|
||||||
# Read /opt Wine
|
|
||||||
for i in os.listdir("/opt"):
|
|
||||||
pass
|
|
||||||
# 不再从列表读取,直接读目录
|
|
||||||
for i in os.listdir(f"{programPath}/wine/"):
|
|
||||||
#for i in json.loads(readtxt(f"{programPath}/wine/winelist.json")):
|
|
||||||
if os.path.exists(f"{programPath}/wine/{i}") and os.path.isdir(f"{programPath}/wine/{i}"):
|
|
||||||
name = ""
|
|
||||||
qemuInstall = False
|
|
||||||
nameValue = [["", ""]]
|
|
||||||
try:
|
try:
|
||||||
if os.path.exists("/opt/deepin-box86/box86"):
|
dire = os.listdir(f"/persistent/linglong/layers/{i}")[-1]
|
||||||
nameValue.append(
|
arch = os.listdir(f"/persistent/linglong/layers/{i}/{dire}")[-1]
|
||||||
[
|
if os.path.exists(f"/persistent/linglong/layers/{i}/{dire}/{arch}/runtime/bin/deepin-wine6-stable"):
|
||||||
"基于 UOS box86 的 ",
|
wine["基于 linglong 的 deepin-wine6-stable(不推荐)"] = f"ll-cli run {i} --exec '/bin/deepin-wine6-stable'"
|
||||||
f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 "
|
canUseWine.append("基于 linglong 的 deepin-wine6-stable(不推荐)")
|
||||||
]
|
break
|
||||||
)
|
|
||||||
if os.system("which box86") == 0:
|
|
||||||
nameValue.append(
|
|
||||||
[
|
|
||||||
"基于 box86 的 ",
|
|
||||||
f"box86 "
|
|
||||||
]
|
|
||||||
)
|
|
||||||
if os.system("which box64") == 0:
|
|
||||||
nameValue.append(
|
|
||||||
[
|
|
||||||
"基于 box64 的 ",
|
|
||||||
f"box64 "
|
|
||||||
]
|
|
||||||
)
|
|
||||||
if os.system("which exagear") == 0:
|
|
||||||
nameValue.append(
|
|
||||||
[
|
|
||||||
"基于 exagear 的 ",
|
|
||||||
f"exagear "
|
|
||||||
]
|
|
||||||
)
|
|
||||||
if os.path.exists("/opt/exagear/bin/ubt_x64a64_al"):
|
|
||||||
nameValue.append(
|
|
||||||
[
|
|
||||||
"基于 UOS exagear 的 ",
|
|
||||||
f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib /opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- "
|
|
||||||
]
|
|
||||||
)
|
|
||||||
for g in qemuBottleList:
|
|
||||||
nameValue.append([
|
|
||||||
f"使用qemu-{g[0]}-static 调用容器{g[1]}运行 ",
|
|
||||||
f"python3 '{programPath}/QemuRun.py' '{g[0]}/{g[1]}' {int(setting['QemuUnMountHome'])} "
|
|
||||||
])
|
|
||||||
except:
|
except:
|
||||||
traceback.print_exc()
|
pass
|
||||||
for k in nameValue:
|
# 读取自定义安装的 Wine(需要解包的才能使用)
|
||||||
print(k)
|
global qemuBottleList
|
||||||
if "qemu" in k[0]:
|
global qemuPath
|
||||||
chrootProgramPath = "/opt/apps/deepin-wine-runner"
|
qemuBottleList = []
|
||||||
else:
|
qemuPath = f"{get_home()}/.deepin-wine-runner-ubuntu-images"
|
||||||
chrootProgramPath = programPath
|
if not os.system("which qemu-i386-static"):
|
||||||
if os.path.exists(f"{programPath}/wine/{i}/bin/wine"):
|
if os.path.exists(qemuPath):
|
||||||
wine[f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine"] = f"{k[1]}{chrootProgramPath}/wine/{i}/bin/wine"
|
for g in os.listdir(qemuPath):
|
||||||
canUseWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine")
|
archPath = f"{qemuPath}/{g}"
|
||||||
untipsWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine")
|
arch = g
|
||||||
if os.path.exists(f"{programPath}/wine/{i}/bin/wine64"):
|
if os.path.isdir(archPath):
|
||||||
wine[f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine64"] = f"{k[1]}{chrootProgramPath}/wine/{i}/bin/wine64"
|
for d in os.listdir(archPath):
|
||||||
canUseWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine64")
|
bottlePath = f"{archPath}/{d}"
|
||||||
untipsWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine64")
|
if os.path.isdir(bottlePath):
|
||||||
if os.path.exists(f"{programPath}/wine/{i}/bin/wine-i386"):
|
qemuBottleList.append([
|
||||||
wine[f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-i386"] = f"{k[1]}{chrootProgramPath}/wine/{i}/bin/wine-i386"
|
arch,
|
||||||
canUseWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-i386")
|
d,
|
||||||
untipsWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-i386")
|
bottlePath
|
||||||
if os.path.exists(f"{programPath}/wine/{i}/bin/wine-aarch64"):
|
])
|
||||||
wine[f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-aarch64"] = f"{k[1]}{chrootProgramPath}/wine/{i}/bin/wine-aarch64"
|
|
||||||
canUseWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-aarch64")
|
global shellHistory
|
||||||
untipsWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-aarch64")
|
global findExeHistory
|
||||||
if os.path.exists(f"{programPath}/wine/{i}/bin/wine-x86_64"):
|
global wineBottonHistory
|
||||||
wine[f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-x86_64"] = f"{k[1]}{chrootProgramPath}/wine/{i}/bin/wine-x86_64"
|
global isoPath
|
||||||
canUseWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-x86_64")
|
global isoPathFound
|
||||||
untipsWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-x86_64")
|
global setting
|
||||||
|
shellHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json")).values())
|
||||||
|
findExeHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json")).values())
|
||||||
|
wineBottonHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json")).values())
|
||||||
|
isoPath = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/ISOPath.json")).values())
|
||||||
|
isoPathFound = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/ISOPathFound.json")).values())
|
||||||
|
setting = json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineSetting.json"))
|
||||||
|
change = False
|
||||||
|
if not os.path.exists(get_home() + "/.config/deepin-wine-runner/mono-lock"):
|
||||||
|
os.mknod(f"{get_home()}/.config/deepin-wine-runner/mono-lock")
|
||||||
|
setting["MonoGeckoInstaller"] = False
|
||||||
|
change = True
|
||||||
|
for i in defultProgramList.keys():
|
||||||
|
if not i in setting:
|
||||||
|
change = True
|
||||||
|
setting[i] = defultProgramList[i]
|
||||||
|
if change:
|
||||||
|
write_txt(get_home() + "/.config/deepin-wine-runner/WineSetting.json", json.dumps(setting))
|
||||||
|
try:
|
||||||
|
# Read /opt Wine
|
||||||
|
for i in os.listdir("/opt"):
|
||||||
|
pass
|
||||||
|
# 不再从列表读取,直接读目录
|
||||||
|
for i in os.listdir(f"{programPath}/wine/"):
|
||||||
|
#for i in json.loads(readtxt(f"{programPath}/wine/winelist.json")):
|
||||||
|
if os.path.exists(f"{programPath}/wine/{i}") and os.path.isdir(f"{programPath}/wine/{i}"):
|
||||||
|
name = ""
|
||||||
|
qemuInstall = False
|
||||||
|
nameValue = [["", ""]]
|
||||||
|
try:
|
||||||
|
if os.path.exists("/opt/deepin-box86/box86"):
|
||||||
|
nameValue.append(
|
||||||
|
[
|
||||||
|
"基于 UOS box86 的 ",
|
||||||
|
f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 "
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if os.system("which box86") == 0:
|
||||||
|
nameValue.append(
|
||||||
|
[
|
||||||
|
"基于 box86 的 ",
|
||||||
|
f"box86 "
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if os.system("which box64") == 0:
|
||||||
|
nameValue.append(
|
||||||
|
[
|
||||||
|
"基于 box64 的 ",
|
||||||
|
f"box64 "
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if os.system("which qemu-i386") == 0 and subprocess.getoutput("arch") != "x86_64" and subprocess.getoutput("arch") != "i386" and subprocess.getoutput("arch") != "i686":
|
||||||
|
nameValue.append(
|
||||||
|
[
|
||||||
|
"基于 qemu-i386 的 ",
|
||||||
|
f"qemu-i386 "
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if os.system("which qemu-x86_64") == 0 and subprocess.getoutput("arch") != "x86_64" and subprocess.getoutput("arch") != "i386" and subprocess.getoutput("arch") != "i686":
|
||||||
|
nameValue.append(
|
||||||
|
[
|
||||||
|
"基于 qemu-x86_64 的 ",
|
||||||
|
f"qemu-x86_64 "
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if os.path.exists("/opt/exagear/bin/ubt_x64a64_al") and os.path.exists(f"{get_home()}/.deepinwine/debian-buster"):
|
||||||
|
nameValue.append(
|
||||||
|
[
|
||||||
|
"基于 UOS exagear 的 ",
|
||||||
|
f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib /opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- "
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if os.system("which exagear") == 0:
|
||||||
|
nameValue.append(
|
||||||
|
[
|
||||||
|
"运行 exagear 容器内的 ",
|
||||||
|
f"exagear -- "
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
if os.path.exists("/opt/exagear/bin/ubt_x64a64_al"):
|
||||||
|
nameValue.append(
|
||||||
|
[
|
||||||
|
"使用 ubt_x64a64_al 运行",
|
||||||
|
"/opt/exagear/bin/ubt_x64a64_al -- "
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
if os.path.exists("/opt/exagear/bin/ubt_x32a64_al"):
|
||||||
|
nameValue.append(
|
||||||
|
[
|
||||||
|
"使用 ubt_x32a64_al 运行",
|
||||||
|
"/opt/exagear/bin/ubt_x32a64_al -- "
|
||||||
|
]
|
||||||
|
)
|
||||||
|
for g in qemuBottleList:
|
||||||
|
nameValue.append([
|
||||||
|
f"使用qemu-{g[0]}-static 调用容器{g[1]}运行 ",
|
||||||
|
f"python3 '{programPath}/QemuRun.py' '{g[0]}/{g[1]}' {int(setting['QemuUnMountHome'])} "
|
||||||
|
])
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
|
for k in nameValue:
|
||||||
|
print(k)
|
||||||
|
if "qemu" in k[0]:
|
||||||
|
chrootProgramPath = "/opt/apps/deepin-wine-runner"
|
||||||
|
else:
|
||||||
|
chrootProgramPath = programPath
|
||||||
|
if os.path.exists(f"{programPath}/wine/{i}/bin/wine"):
|
||||||
|
wine[f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine"] = f"{k[1]}{chrootProgramPath}/wine/{i}/bin/wine"
|
||||||
|
canUseWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine")
|
||||||
|
untipsWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine")
|
||||||
|
if os.path.exists(f"{programPath}/wine/{i}/bin/wine64"):
|
||||||
|
wine[f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine64"] = f"{k[1]}{chrootProgramPath}/wine/{i}/bin/wine64"
|
||||||
|
canUseWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine64")
|
||||||
|
untipsWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine64")
|
||||||
|
if os.path.exists(f"{programPath}/wine/{i}/bin/wine-i386"):
|
||||||
|
wine[f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-i386"] = f"{k[1]}{chrootProgramPath}/wine/{i}/bin/wine-i386"
|
||||||
|
canUseWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-i386")
|
||||||
|
untipsWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-i386")
|
||||||
|
if os.path.exists(f"{programPath}/wine/{i}/bin/wine-aarch64"):
|
||||||
|
wine[f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-aarch64"] = f"{k[1]}{chrootProgramPath}/wine/{i}/bin/wine-aarch64"
|
||||||
|
canUseWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-aarch64")
|
||||||
|
untipsWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-aarch64")
|
||||||
|
if os.path.exists(f"{programPath}/wine/{i}/bin/wine-x86_64"):
|
||||||
|
wine[f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-x86_64"] = f"{k[1]}{chrootProgramPath}/wine/{i}/bin/wine-x86_64"
|
||||||
|
canUseWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-x86_64")
|
||||||
|
untipsWine.append(f"{k[0]}{chrootProgramPath}/wine/{i}/bin/wine-x86_64")
|
||||||
|
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
|
try:
|
||||||
|
for i in os.listdir(f"{get_home()}/.deepinwine/"):
|
||||||
|
if os.path.exists(f"{get_home()}/.deepinwine/{i}/bin/wine"):
|
||||||
|
wine[f"{get_home()}/.deepinwine/{i}/bin/wine"] = f"{get_home()}/.deepinwine/{i}/bin/wine"
|
||||||
|
canUseWine.append(f"{get_home()}/.deepinwine/{i}/bin/wine")
|
||||||
|
if os.path.exists(f"{get_home()}/.deepinwine/{i}/bin/wine64"):
|
||||||
|
wine[f"{get_home()}/.deepinwine/{i}/bin/wine64"] = f"{get_home()}/.deepinwine/{i}/bin/wine64"
|
||||||
|
canUseWine.append(f"{get_home()}/.deepinwine/{i}/bin/wine64")
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
|
try:
|
||||||
|
canUseWineOld = canUseWine[:]
|
||||||
|
for i in canUseWineOld:
|
||||||
|
if os.path.exists(f"{programPath}/WineLib/usr"):
|
||||||
|
wine[f"使用运行器的运行库运行 {i}"] = f"bash '{programPath}/WineLib/run.sh' {wine[i]}"
|
||||||
|
canUseWine.append(f"使用运行器的运行库运行 {i}")
|
||||||
|
untipsWine.append(f"使用运行器的运行库运行 {i}")
|
||||||
|
if os.path.exists("/opt/exagear/images"):
|
||||||
|
for k in os.listdir("/opt/exagear/images"):
|
||||||
|
if not os.path.isdir(f"/opt/exagear/images/{k}"):
|
||||||
|
continue
|
||||||
|
for i in canUseWineOld:
|
||||||
|
wine[f"使用Exagear容器运行库运行 {i}"] = f"bash '{programPath}/WineLib/run-more.sh' '/opt/exagear/images/{k}' {wine[i]}"
|
||||||
|
canUseWine.append(f"使用Exagear容器运行库运行 {i}")
|
||||||
|
untipsWine.append(f"使用Exagear容器运行库运行 {i}")
|
||||||
|
#if os.path.exists(f"{get_home()}/.deepinwine/debian-buster"):
|
||||||
|
#for i in canUseWineOld:
|
||||||
|
#wine[f"使用UOS Exagear容器运行库运行 {i}"] = f"bash '{programPath}/WineLib/run-more.sh' '{get_home()}/.deepinwine/debian-buster' {wine[i]}"
|
||||||
|
#canUseWine.append(f"使用UOS Exagear容器运行库运行 {i}")
|
||||||
|
#untipsWine.append(f"使用UOS Exagear容器运行库运行 {i}")
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
except:
|
except:
|
||||||
pass
|
traceback.print_exc()
|
||||||
try:
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
for i in os.listdir(f"{get_home()}/.deepinwine/"):
|
QtWidgets.QMessageBox.critical(None, "错误", f"无法读取配置,无法继续\n{traceback.format_exc()}")
|
||||||
if os.path.exists(f"{get_home()}/.deepinwine/{i}/bin/wine"):
|
sys.exit(1)
|
||||||
wine[f"{get_home()}/.deepinwine/{i}/bin/wine"] = f"{get_home()}/.deepinwine/{i}/bin/wine"
|
CheckWine()
|
||||||
canUseWine.append(f"{get_home()}/.deepinwine/{i}/bin/wine")
|
|
||||||
if os.path.exists(f"{get_home()}/.deepinwine/{i}/bin/wine64"):
|
|
||||||
wine[f"{get_home()}/.deepinwine/{i}/bin/wine64"] = f"{get_home()}/.deepinwine/{i}/bin/wine64"
|
|
||||||
canUseWine.append(f"{get_home()}/.deepinwine/{i}/bin/wine64")
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
except:
|
|
||||||
traceback.print_exc()
|
|
||||||
app = QtWidgets.QApplication(sys.argv)
|
|
||||||
QtWidgets.QMessageBox.critical(None, "错误", f"无法读取配置,无法继续\n{traceback.format_exc()}")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# transla.transe
|
# transla.transe
|
||||||
|
|
||||||
@@ -2411,13 +2493,24 @@ exe路径\' 参数 \'
|
|||||||
<b>千万不要中断后不删除源的情况下 apt upgrade !!!</b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine(会自动执行恢复操作)即可
|
<b>千万不要中断后不删除源的情况下 apt upgrade !!!</b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine(会自动执行恢复操作)即可
|
||||||
以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示;
|
以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示;
|
||||||
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>''')
|
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>''')
|
||||||
updateThingsString = transla.transe("U", '''※1. 修改源地址(迁出 Gitlink);
|
updateThingsString = transla.transe("U", '''※1、简易打包器支持选择 Wine 版本以及修改打包生成的 deb 包的架构为 all;
|
||||||
※2. 修复非 X86 架构运行器主页面虚拟机工具禁用的问题;
|
※2、修改容器自动配置脚本的 Gitlink 源为 Gitee 源
|
||||||
3、部分组件支持选择最优源。
|
※3、在安装更多 Wine 处安装 Wine 后主窗口 Wine 版本下拉框自动更新
|
||||||
''')
|
※4、设置打包器在 Ubuntu 依旧打包 xz 格式的 deb 包
|
||||||
|
※5、修复 Wine 简易打包器 control 文件 Installed-Size 格式不规范的问题
|
||||||
|
※6、更换 Box86 源并支持安装 Box64(如果为 aarch64 架构)
|
||||||
|
※7、新增 Wine 自建源(支持 Debian10、Deepin20)
|
||||||
|
※8、修改 WineHQ 安装器使其支持选择国内清华大学镜像源或 WineHQ 官方源
|
||||||
|
※9、新增 Visual FoxPro 安装器
|
||||||
|
※10、新增安装局部运行库以解决部分低版本系统运行高版本 Wine 的问题且不与其他运行库和兼容层冲突
|
||||||
|
※11、支持调用原版的 Exagear 以及 Qemu User(i386、x86_64) 运行 Wine
|
||||||
|
12、新增自动构建:https://github.com/gfdgd-xi/deep-wine-runner/actions/workflows/auto-building.yml(只供尝鲜)
|
||||||
|
13、新增 Wine 日构建(在“安装更多 Wine”处可以获取,目前有 i386、amd64、i386+amd64、amd64+wow64 mode、aarch64)
|
||||||
|
14、优化容器清理脚本
|
||||||
|
15、修复部分组件没完全换源的问题,部分组件支持自动换可用源''')
|
||||||
for i in information["Thank"]:
|
for i in information["Thank"]:
|
||||||
thankText += f"{i}\n"
|
thankText += f"{i}\n"
|
||||||
updateTime = "2023年05月10日"
|
updateTime = "2023年07月12日"
|
||||||
aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。</p>
|
aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。</p>
|
||||||
<p>它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作。</p>
|
<p>它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作。</p>
|
||||||
<pre>
|
<pre>
|
||||||
@@ -2623,7 +2716,8 @@ mainLayout.setColumnStretch(1, 1)
|
|||||||
mainLayout.addWidget(returnText, 0, 1, 2, 1)
|
mainLayout.addWidget(returnText, 0, 1, 2, 1)
|
||||||
|
|
||||||
# 版权
|
# 版权
|
||||||
copy = QtWidgets.QLabel(f"""\n程序版本:{version},<b>提示:Wine 无法保证可以运行所有的 Windows 程序,如果想要运行更多 Windows 程序,可以考虑虚拟机和双系统</b><br>
|
copy = QtWidgets.QLabel(f"""程序版本:{version},<b>提示:Wine 无法保证可以运行所有的 Windows 程序,如果想要运行更多 Windows 程序,可以考虑虚拟机和双系统</b><br/>
|
||||||
|
<b>注:部分二进制兼容层会自动注册 binfmt(如原版的 Box86/64、Qemu User Static),则意味着无需在 Wine 版本那里特别指定兼容层,直接指定 Wine 即可</b><br/>
|
||||||
©2020~{time.strftime("%Y")} gfdgd xi""")
|
©2020~{time.strftime("%Y")} gfdgd xi""")
|
||||||
mainLayout.addWidget(copy, 2, 0, 1, 1)
|
mainLayout.addWidget(copy, 2, 0, 1, 1)
|
||||||
|
|
||||||
@@ -2649,10 +2743,13 @@ programmenu = menu.addMenu(transla.transe("U", "程序(&P)"))
|
|||||||
p1 = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "安装 wine(&I)"))
|
p1 = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "安装 wine(&I)"))
|
||||||
installWineOnDeepin23 = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine23P.png"), transla.transe("U", "安装 wine(只限Deepin23 Preview)"))
|
installWineOnDeepin23 = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine23P.png"), transla.transe("U", "安装 wine(只限Deepin23 Preview)"))
|
||||||
installWineOnDeepin23Alpha = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine23A.png"), transla.transe("U", "安装 wine(只限Deepin23 Alpha)"))
|
installWineOnDeepin23Alpha = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine23A.png"), transla.transe("U", "安装 wine(只限Deepin23 Alpha)"))
|
||||||
installWineHQ = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "安装 WineHQ"))
|
installWineHQOrg = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "安装 WineHQ(官方源)"))
|
||||||
|
installWineHQ = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "安装 WineHQ(国内清华大学镜像源)"))
|
||||||
installMoreWine = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/more-wine.png"), transla.transe("U", "安装更多 Wine"))
|
installMoreWine = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/more-wine.png"), transla.transe("U", "安装更多 Wine"))
|
||||||
downloadChrootBottle = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/CHROOT.png"), transla.transe("U", "下载 Chroot 容器"))
|
downloadChrootBottle = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/CHROOT.png"), transla.transe("U", "下载 Chroot 容器"))
|
||||||
installBox86 = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), transla.transe("U", "安装 Box86"))
|
installBox86CN = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), transla.transe("U", "安装 Box86/Box64(国内源)"))
|
||||||
|
installBox86 = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), transla.transe("U", "安装 Box86/Box64(国外 Github 源)"))
|
||||||
|
addWineDebMirrorForDeepin20 = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "添加 Wine 运行器源以安装较新版本的 WineHQ(支持 Deepin20/Debian10)"))
|
||||||
p2 = QtWidgets.QAction(QtGui.QIcon.fromTheme("settings"), transla.transe("U", "设置程序(&S)"))
|
p2 = QtWidgets.QAction(QtGui.QIcon.fromTheme("settings"), transla.transe("U", "设置程序(&S)"))
|
||||||
enabledAll = QtWidgets.QAction(transla.transe("U", "强制启用所有被禁用的组件(不推荐)"))
|
enabledAll = QtWidgets.QAction(transla.transe("U", "强制启用所有被禁用的组件(不推荐)"))
|
||||||
p3 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "清空软件历史记录(&C)"))
|
p3 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "清空软件历史记录(&C)"))
|
||||||
@@ -2663,8 +2760,11 @@ programmenu.addAction(p1)
|
|||||||
programmenu.addAction(installWineOnDeepin23)
|
programmenu.addAction(installWineOnDeepin23)
|
||||||
programmenu.addAction(installWineOnDeepin23Alpha)
|
programmenu.addAction(installWineOnDeepin23Alpha)
|
||||||
programmenu.addAction(installWineHQ)
|
programmenu.addAction(installWineHQ)
|
||||||
|
programmenu.addAction(installWineHQOrg)
|
||||||
|
programmenu.addAction(addWineDebMirrorForDeepin20)
|
||||||
programmenu.addAction(installMoreWine)
|
programmenu.addAction(installMoreWine)
|
||||||
programmenu.addAction(downloadChrootBottle)
|
programmenu.addAction(downloadChrootBottle)
|
||||||
|
programmenu.addAction(installBox86CN)
|
||||||
programmenu.addAction(installBox86)
|
programmenu.addAction(installBox86)
|
||||||
programmenu.addSeparator()
|
programmenu.addSeparator()
|
||||||
programmenu.addAction(p2)
|
programmenu.addAction(p2)
|
||||||
@@ -2679,10 +2779,23 @@ p1.triggered.connect(InstallWine)
|
|||||||
installWineOnDeepin23.triggered.connect(InstallWineOnDeepin23)
|
installWineOnDeepin23.triggered.connect(InstallWineOnDeepin23)
|
||||||
installWineOnDeepin23Alpha.triggered.connect(InstallWineOnDeepin23Alpha)
|
installWineOnDeepin23Alpha.triggered.connect(InstallWineOnDeepin23Alpha)
|
||||||
installWineHQ.triggered.connect(InstallWineHQ)
|
installWineHQ.triggered.connect(InstallWineHQ)
|
||||||
installMoreWine.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/wine/installwine'"]).start())
|
installWineHQOrg.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"{programPath}/InstallNewWineHQOrg.sh"]).start())
|
||||||
|
addWineDebMirrorForDeepin20.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"bash '{programPath}/AddWineDebMirrorForDeepin20.sh'"]).start())
|
||||||
|
def InstallMoreWine():
|
||||||
|
os.system(f"'{programPath}/wine/installwine'")
|
||||||
|
# 更新 Wine 列表
|
||||||
|
CheckWine()
|
||||||
|
o1.clear()
|
||||||
|
if setting["AutoWine"]:
|
||||||
|
o1.addItems(canUseWine)
|
||||||
|
else:
|
||||||
|
o1.addItems(wine.keys())
|
||||||
|
#installMoreWine.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/wine/installwine'"]).start())
|
||||||
|
installMoreWine.triggered.connect(InstallMoreWine)
|
||||||
downloadChrootBottle.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/QemuDownload.py'"]).start())
|
downloadChrootBottle.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/QemuDownload.py'"]).start())
|
||||||
p2.triggered.connect(ProgramSetting.ShowWindow)
|
p2.triggered.connect(ProgramSetting.ShowWindow)
|
||||||
enabledAll.triggered.connect(lambda: DisableButton(False))
|
enabledAll.triggered.connect(lambda: DisableButton(False))
|
||||||
|
installBox86CN.triggered.connect(lambda: OpenTerminal(f"pkexec bash '{programPath}/InstallBox86-cn.sh'"))
|
||||||
installBox86.triggered.connect(lambda: OpenTerminal(f"pkexec bash '{programPath}/InstallBox86.sh'"))
|
installBox86.triggered.connect(lambda: OpenTerminal(f"pkexec bash '{programPath}/InstallBox86.sh'"))
|
||||||
p3.triggered.connect(CleanProgramHistory)
|
p3.triggered.connect(CleanProgramHistory)
|
||||||
cleanCache.triggered.connect(CleanProgramCache)
|
cleanCache.triggered.connect(CleanProgramCache)
|
||||||
@@ -2696,7 +2809,7 @@ w3 = QtWidgets.QAction(QtGui.QIcon.fromTheme("font"), transla.transe("U", "安
|
|||||||
w4 = QtWidgets.QAction(transla.transe("U", "删除选择的 Wine 容器"))
|
w4 = QtWidgets.QAction(transla.transe("U", "删除选择的 Wine 容器"))
|
||||||
cleanBottonUOS = QtWidgets.QAction(transla.transe("U", "清理 Wine 容器(基于 Wine 适配活动脚本)"))
|
cleanBottonUOS = QtWidgets.QAction(transla.transe("U", "清理 Wine 容器(基于 Wine 适配活动脚本)"))
|
||||||
wineKeyboardLnk = QtWidgets.QAction(transla.transe("U", "Wine 快捷键映射"))
|
wineKeyboardLnk = QtWidgets.QAction(transla.transe("U", "Wine 快捷键映射"))
|
||||||
w5 = QtWidgets.QAction(QtGui.QIcon.fromTheme("deb"), transla.transe("U", "打包 wine 应用"))
|
w5 = QtWidgets.QAction(QtGui.QIcon.fromTheme("deb"), transla.transe("U", "打包 wine 应用(专业用户使用)"))
|
||||||
w6 = QtWidgets.QAction(QtGui.QIcon.fromTheme("deb"), transla.transe("U", "使用官方 Wine 适配活动的脚本进行打包"))
|
w6 = QtWidgets.QAction(QtGui.QIcon.fromTheme("deb"), transla.transe("U", "使用官方 Wine 适配活动的脚本进行打包"))
|
||||||
easyPackager = QtWidgets.QAction(QtGui.QIcon.fromTheme("deb"), transla.transe("U", "使用简易打包器进行打包(小白且无特殊需求建议使用这个)"))
|
easyPackager = QtWidgets.QAction(QtGui.QIcon.fromTheme("deb"), transla.transe("U", "使用简易打包器进行打包(小白且无特殊需求建议使用这个)"))
|
||||||
getDllOnInternet = QtWidgets.QAction(QtGui.QIcon.fromTheme("1CD8_rundll32.0"), transla.transe("U", "从互联网获取DLL"))
|
getDllOnInternet = QtWidgets.QAction(QtGui.QIcon.fromTheme("1CD8_rundll32.0"), transla.transe("U", "从互联网获取DLL"))
|
||||||
@@ -2725,6 +2838,7 @@ wineOption.addSeparator()
|
|||||||
wm1 = wineOption.addMenu(transla.transe("U", "在指定 Wine、容器安装组件"))
|
wm1 = wineOption.addMenu(transla.transe("U", "在指定 Wine、容器安装组件"))
|
||||||
wm1_1 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 .net framework"))
|
wm1_1 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 .net framework"))
|
||||||
wm1_2 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 Visual Studio C++"))
|
wm1_2 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 Visual Studio C++"))
|
||||||
|
wm1_8 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 Visual FoxPro"))
|
||||||
wm1_3 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 MSXML"))
|
wm1_3 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 MSXML"))
|
||||||
wm1_4 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 gecko"))
|
wm1_4 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 gecko"))
|
||||||
wm1_5 = QtWidgets.QAction(QtGui.QIcon.fromTheme("mono"), transla.transe("U", "在指定wine、指定容器安装 mono"))
|
wm1_5 = QtWidgets.QAction(QtGui.QIcon.fromTheme("mono"), transla.transe("U", "在指定wine、指定容器安装 mono"))
|
||||||
@@ -2732,6 +2846,7 @@ wm1_7 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安
|
|||||||
wm1_6 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装其它运行库"))
|
wm1_6 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装其它运行库"))
|
||||||
wm1.addAction(wm1_1)
|
wm1.addAction(wm1_1)
|
||||||
wm1.addAction(wm1_2)
|
wm1.addAction(wm1_2)
|
||||||
|
wm1.addAction(wm1_8)
|
||||||
wm1.addAction(wm1_3)
|
wm1.addAction(wm1_3)
|
||||||
wm1.addAction(wm1_4)
|
wm1.addAction(wm1_4)
|
||||||
wm1.addAction(wm1_5)
|
wm1.addAction(wm1_5)
|
||||||
@@ -2839,6 +2954,7 @@ w10.triggered.connect(SetDeepinFileDialogRecovery)
|
|||||||
w11.triggered.connect(lambda: RunWinetricks())
|
w11.triggered.connect(lambda: RunWinetricks())
|
||||||
wm1_1.triggered.connect(lambda: threading.Thread(target=InstallNetFramework).start())
|
wm1_1.triggered.connect(lambda: threading.Thread(target=InstallNetFramework).start())
|
||||||
wm1_2.triggered.connect(lambda: threading.Thread(target=InstallVisualStudioCPlusPlus).start())
|
wm1_2.triggered.connect(lambda: threading.Thread(target=InstallVisualStudioCPlusPlus).start())
|
||||||
|
wm1_8.triggered.connect(lambda: threading.Thread(target=InstallFoxPro).start())
|
||||||
wm1_3.triggered.connect(lambda: threading.Thread(target=InstallMSXML).start())
|
wm1_3.triggered.connect(lambda: threading.Thread(target=InstallMSXML).start())
|
||||||
wm1_4.triggered.connect(lambda: threading.Thread(target=InstallMonoGecko, args=["gecko"]).start())
|
wm1_4.triggered.connect(lambda: threading.Thread(target=InstallMonoGecko, args=["gecko"]).start())
|
||||||
wm1_5.triggered.connect(lambda: threading.Thread(target=InstallMonoGecko, args=["mono"]).start())
|
wm1_5.triggered.connect(lambda: threading.Thread(target=InstallMonoGecko, args=["mono"]).start())
|
||||||
@@ -2935,11 +3051,67 @@ def AddLib(install: QtWidgets.QAction, uninstall, menu, info):
|
|||||||
menu.addAction(install)
|
menu.addAction(install)
|
||||||
menu.addAction(uninstall)
|
menu.addAction(uninstall)
|
||||||
|
|
||||||
|
installLib = menu.addMenu(transla.transe("U", "应用运行库(&R)"))
|
||||||
|
howtouseQemuUser = QtWidgets.QAction(transla.transe("U", "Qemu User 使用教程(配合运行库实现在非 X86 架构运行 X86 Wine)"))
|
||||||
|
howtouseQemuUser.triggered.connect(lambda: webbrowser.open_new_tab("https://www.bilibili.com/read/cv23185651"))
|
||||||
|
runnerlibinfo = QtWidgets.QAction("只在运行器使用的运行库(不与其他运行库以及兼容层冲突)")
|
||||||
|
installRunnerLib = QtWidgets.QAction("安装运行库")
|
||||||
|
statusRunnerLib = QtWidgets.QAction("当前状态:未安装")
|
||||||
|
removeRunnerLib = QtWidgets.QAction("移除运行库")
|
||||||
|
runnerlibinfo.setDisabled(True)
|
||||||
|
statusRunnerLib.setDisabled(True)
|
||||||
|
removeRunnerLib.setDisabled(True)
|
||||||
|
installLib.addAction(howtouseQemuUser)
|
||||||
|
installLib.addSeparator()
|
||||||
|
installLib.addAction(runnerlibinfo)
|
||||||
|
installLib.addAction(statusRunnerLib)
|
||||||
|
installLib.addAction(installRunnerLib)
|
||||||
|
installLib.addAction(removeRunnerLib)
|
||||||
|
diyRunnerLib = installLib.addMenu("定制运行库")
|
||||||
|
diyRunnerLib.setDisabled(True)
|
||||||
|
diyRunnerLibRemoveTips = QtWidgets.QAction("移除库")
|
||||||
|
diyRunnerLibRemoveTips.setDisabled(True)
|
||||||
|
diyRunnerLib.addAction(diyRunnerLibRemoveTips)
|
||||||
|
installRunnerLib.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"bash '{programPath}/WineLib/install.sh'"]).start())
|
||||||
|
removeRunnerLib.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"bash '{programPath}/WineLib/remove.sh'"]).start())
|
||||||
|
if os.path.exists(f"{programPath}/WineLib/usr"):
|
||||||
|
installRunnerLib.setDisabled(True)
|
||||||
|
removeRunnerLib.setEnabled(True)
|
||||||
|
diyRunnerLib.setEnabled(True)
|
||||||
|
statusRunnerLib.setText("当前状态:已安装")
|
||||||
|
libPathList = []
|
||||||
|
mapLink = []
|
||||||
|
def AddRunnerLib(number, name):
|
||||||
|
global diyRunnerLib
|
||||||
|
action = QtWidgets.QAction(f"{name}")
|
||||||
|
mapLink.append(action)
|
||||||
|
action.triggered.connect(lambda: DelRunnerLib(int(str(number))))
|
||||||
|
diyRunnerLib.addAction(action)
|
||||||
|
def DelRunnerLib(number):
|
||||||
|
os.system(f"rm -rf '{libPathList[number]}'")
|
||||||
|
QtWidgets.QMessageBox.information(window, "提示", "删除完成!")
|
||||||
|
mapLink[number].setDisabled(True)
|
||||||
|
for libPath in [f"{programPath}/WineLib/usr/lib", f"{programPath}/WineLib/usr/lib64"]:
|
||||||
|
for i in os.listdir(libPath):
|
||||||
|
if not os.path.isdir(f"{libPath}/{i}"):
|
||||||
|
try:
|
||||||
|
if not os.path.getsize(f"{libPath}/{i}"):
|
||||||
|
continue
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
libPathList.append(f"{libPath}/{i}")
|
||||||
|
AddRunnerLib(len(libPathList) - 1, f"{i}")
|
||||||
|
else:
|
||||||
|
if not os.path.exists(f"{libPath}/{i}/libc.so.6"):
|
||||||
|
continue
|
||||||
|
libPathList.append(f"{libPath}/{i}/")
|
||||||
|
AddRunnerLib(len(libPathList) - 1, f"{i}/")
|
||||||
|
print(libPathList)
|
||||||
if os.path.exists(f"{programPath}/InstallRuntime"):
|
if os.path.exists(f"{programPath}/InstallRuntime"):
|
||||||
installLib = menu.addMenu(transla.transe("U", "应用运行库(&R)"))
|
installLib.addSeparator()
|
||||||
howtouseQemuUser = QtWidgets.QAction(transla.transe("U", "Qemu User 使用教程(配合运行库实现在非 X86 架构运行 X86 Wine)"))
|
systemalllibinfo = QtWidgets.QAction("全局运行库(与其他运行库以及部分兼容层冲突)")
|
||||||
howtouseQemuUser.triggered.connect(lambda: webbrowser.open_new_tab("https://gitee.com/gfdgd-xi/deep-wine-runner/wikis/%E4%BD%BF%E7%94%A8%E5%B8%AE%E5%8A%A9/%E9%9D%9EX86%E6%9E%B6%E6%9E%84PC/%E4%BD%BF%E7%94%A8Qemu%20User%E8%BF%90%E8%A1%8CWine%EF%BC%88%E6%94%AF%E6%8C%81%E5%85%A8%E6%9E%B6%E6%9E%84%EF%BC%89"))
|
systemalllibinfo.setDisabled(True)
|
||||||
installLib.addAction(howtouseQemuUser)
|
installLib.addAction(systemalllibinfo)
|
||||||
installQemuMenu = installLib.addMenu(transla.transe("U", "安装 Qemu User"))
|
installQemuMenu = installLib.addMenu(transla.transe("U", "安装 Qemu User"))
|
||||||
installQemu = QtWidgets.QAction(transla.transe("U", "安装 Qemu User"))
|
installQemu = QtWidgets.QAction(transla.transe("U", "安装 Qemu User"))
|
||||||
removeQemu = QtWidgets.QAction(transla.transe("U", "卸载 Qemu User"))
|
removeQemu = QtWidgets.QAction(transla.transe("U", "卸载 Qemu User"))
|
||||||
@@ -3058,7 +3230,7 @@ else:
|
|||||||
o1.addItems(wine.keys())
|
o1.addItems(wine.keys())
|
||||||
# 禁用被精简掉的控件
|
# 禁用被精简掉的控件
|
||||||
for i in [
|
for i in [
|
||||||
[[p1, installWineOnDeepin23, installWineHQ, installMoreWine], f"{programPath}/InstallWineOnDeepin23.py"],
|
[[p1, installWineOnDeepin23, installWineHQ, installWineHQOrg, installMoreWine], f"{programPath}/InstallWineOnDeepin23.py"],
|
||||||
[[w5], f"{programPath}/deepin-wine-packager.py"],
|
[[w5], f"{programPath}/deepin-wine-packager.py"],
|
||||||
[[w6], f"{programPath}/deepin-wine-packager-with-script.py"],
|
[[w6], f"{programPath}/deepin-wine-packager-with-script.py"],
|
||||||
[[p1, v1], f"{programPath}/RunVM.sh"],
|
[[p1, v1], f"{programPath}/RunVM.sh"],
|
||||||
@@ -3075,6 +3247,7 @@ if subprocess.getoutput("arch").lower() != "x86_64":
|
|||||||
#virtualMachine.setDisabled(True)
|
#virtualMachine.setDisabled(True)
|
||||||
#v1.setDisabled(True)
|
#v1.setDisabled(True)
|
||||||
installWineHQ.setDisabled(True)
|
installWineHQ.setDisabled(True)
|
||||||
|
installWineHQOrg.setDisabled(True)
|
||||||
pass
|
pass
|
||||||
o1.setCurrentText(setting["DefultWine"])
|
o1.setCurrentText(setting["DefultWine"])
|
||||||
e1.setEditText(setting["DefultBotton"])
|
e1.setEditText(setting["DefultBotton"])
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"Version": "3.2.2",
|
"Version": "3.3.0",
|
||||||
"Time": "未知",
|
"Time": "未知",
|
||||||
"Thank": [
|
"Thank": [
|
||||||
"感谢 RacoonGX 的付出与贡献",
|
"感谢 RacoonGX 的付出与贡献",
|
||||||
|
|||||||
@@ -76,6 +76,12 @@ make_icon()
|
|||||||
make_png
|
make_png
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
cp deepin-wine-runner.svg "$tmp"
|
||||||
|
if command -v inkscape > /dev/null 2>&1; then
|
||||||
|
make_svg
|
||||||
|
else
|
||||||
|
make_png
|
||||||
|
fi
|
||||||
echo "wrestool failed"
|
echo "wrestool failed"
|
||||||
fi
|
fi
|
||||||
rm $tmp
|
rm $tmp
|
||||||
|
|||||||
@@ -368,4 +368,4 @@ echo "=====>Creating deb package..."
|
|||||||
mv debian DEBIAN
|
mv debian DEBIAN
|
||||||
dpkg-deb -b ./ ../package_save/uos
|
dpkg-deb -b ./ ../package_save/uos
|
||||||
echo "<=====done."
|
echo "<=====done."
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ class Ui_MainWindow(object):
|
|||||||
_translate = QtCore.QCoreApplication.translate
|
_translate = QtCore.QCoreApplication.translate
|
||||||
self.menu = MainWindow.menuBar()
|
self.menu = MainWindow.menuBar()
|
||||||
self.changeSources = self.menu.addMenu(_translate("MainWindow", "更换源"))
|
self.changeSources = self.menu.addMenu(_translate("MainWindow", "更换源"))
|
||||||
self.gitlinkAction = QtWidgets.QAction(_translate("MainWindow", "Gitlink 源(推荐)"))
|
self.gitlinkAction = QtWidgets.QAction(_translate("MainWindow", "Gitee 源(推荐)"))
|
||||||
self.kgithubAction = QtWidgets.QAction(_translate("MainWindow", "KGithub 源"))
|
self.kgithubAction = QtWidgets.QAction(_translate("MainWindow", "KGithub 源"))
|
||||||
self.ipv6Action = QtWidgets.QAction(_translate("MainWindow", "Github 源1(国内访问不稳定)"))
|
self.ipv6Action = QtWidgets.QAction(_translate("MainWindow", "Github 源1(国内访问不稳定)"))
|
||||||
self.githubAction = QtWidgets.QAction(_translate("MainWindow", "Github 源2(国内访问不稳定)"))
|
self.githubAction = QtWidgets.QAction(_translate("MainWindow", "Github 源2(国内访问不稳定)"))
|
||||||
@@ -177,7 +177,9 @@ def ReadInternetInformation():
|
|||||||
global internetJsonList
|
global internetJsonList
|
||||||
# C++ 版本是用 curl 的,考虑到 Python 用 requests 反而方便,于是不用 curl
|
# C++ 版本是用 curl 的,考虑到 Python 用 requests 反而方便,于是不用 curl
|
||||||
try:
|
try:
|
||||||
internetJsonList = json.loads(requests.get(f"{internetWineSource}/information.json").text)
|
text = requests.get(f"{internetWineSource}/information.json").text
|
||||||
|
print(text)
|
||||||
|
internetJsonList = json.loads(text)
|
||||||
except:
|
except:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
QtWidgets.QMessageBox.critical(window, "错误", "无法连接服务器!")
|
QtWidgets.QMessageBox.critical(window, "错误", "无法连接服务器!")
|
||||||
@@ -360,7 +362,7 @@ if __name__ == "__main__":
|
|||||||
internetWineSourceList = [
|
internetWineSourceList = [
|
||||||
"http://wine.wine-runner.gfdgdxi.top/",
|
"http://wine.wine-runner.gfdgdxi.top/",
|
||||||
"https://kgithub.com/gfdgd-xi/wine-mirrors-websize/raw/master/",
|
"https://kgithub.com/gfdgd-xi/wine-mirrors-websize/raw/master/",
|
||||||
"https://code.gitlink.org.cn/gfdgd_xi/wine-mirrors/raw/branch/master/",
|
"https://gitee.com/gfdgd-xi/wine-mirrors-websize/raw/master/",
|
||||||
"https://github.com/gfdgd-xi/wine-mirrors-websize/raw/master/",
|
"https://github.com/gfdgd-xi/wine-mirrors-websize/raw/master/",
|
||||||
"http://127.0.0.1/wine-mirrors/" # 本地测试源
|
"http://127.0.0.1/wine-mirrors/" # 本地测试源
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
[]
|
[]
|
||||||
|
|||||||
50
wineautobuild-action-7z-aarch64-daily.sh
Normal file
50
wineautobuild-action-7z-aarch64-daily.sh
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
apt update
|
||||||
|
apt install git sudo gpg wget dpkg-dev aria2 -y
|
||||||
|
sudo apt update
|
||||||
|
# 添加源
|
||||||
|
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
echo "deb-src [signed-by=/usr/share/keyrings/winehq-archive.key] https://dl.winehq.org/wine-builds/ubuntu/ focal main" > /etc/apt/sources.list.d/winehq-bionic.list
|
||||||
|
sudo apt update
|
||||||
|
# 编译
|
||||||
|
mkdir /wine
|
||||||
|
cd /wine
|
||||||
|
#sudo apt build-dep wget -y
|
||||||
|
#sudo apt source wget
|
||||||
|
|
||||||
|
#sudo apt source wine
|
||||||
|
sudo apt install fakeroot p7zip-full aptitude lld -y
|
||||||
|
sudo aptitude install flex bison libfreetype6-dev libjpeg-dev libpng-dev libxslt1-dev libxml2-dev libxrender-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev prelink libasound2-dev -y
|
||||||
|
sudo aptitude install flex bison gettext make gcc gcc-mingw-w64 libasound2-dev libasound2-dev libpulse-dev libpulse-dev -y
|
||||||
|
sudo aptitude install libdbus-1-dev libdbus-1-dev libfontconfig1-dev libfontconfig1-dev libfreetype6-dev libfreetype6-dev libgnutls28-dev libgnutls28-dev libpng-dev libpng-dev libtiff-dev libtiff-dev libgl-dev libgl-dev libunwind-dev libunwind-dev libx11-dev libx11-dev libxml2-dev libxml2-dev libxslt1-dev libxslt1-dev libgstreamer1.0-dev -y
|
||||||
|
sudo aptitude install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-base1.0-dev libmpg123-dev libmpg123-dev libosmesa6-dev libosmesa6-dev libudev-dev libudev-dev libvkd3d-dev libvkd3d-dev libvulkan-dev libvulkan-dev libcapi20-dev libcapi20-dev liblcms2-dev liblcms2-dev libcups2-dev libcups2-dev libgphoto2-dev libgphoto2-dev libsane-dev libsane-dev libgsm1-dev libgsm1-dev libkrb5-dev libkrb5-dev libldap2-dev libldap2-dev samba-dev ocl-icd-opencl-dev ocl-icd-opencl-dev libpcap-dev libpcap-dev libusb-1.0-0-dev libusb-1.0-0-dev libv4l-dev libv4l-dev libopenal-dev libopenal-dev libxcomposite-dev libxcomposite-dev libxcursor-dev libxcursor-dev libxi-dev libxi-dev libxrandr-dev libxrandr-dev libxinerama-dev libxinerama-dev -y
|
||||||
|
sudo apt install clang llvm -y
|
||||||
|
sudo apt install "llvm*" -y
|
||||||
|
sudo apt build-dep wine -y
|
||||||
|
# 获取数据
|
||||||
|
url=`cat /wine-url.txt`
|
||||||
|
version=`cat /wine-version.txt`
|
||||||
|
type=`cat /wine-type.txt`
|
||||||
|
cpu=$(cat /proc/cpuinfo | grep processor | wc -l)
|
||||||
|
#aria2c -x 16 -s 16 $url
|
||||||
|
#tar -xvf `basename $url`
|
||||||
|
git clone git://source.winehq.org/git/wine.git
|
||||||
|
echo Wine version `date` > wine/VERSION
|
||||||
|
mv wine wine-$version
|
||||||
|
#cd wine-$version
|
||||||
|
## 编译64位
|
||||||
|
mkdir build64
|
||||||
|
cd build64
|
||||||
|
sudo aptitude install libpcsclite-dev libsdl2-dev samba-dev -y
|
||||||
|
../wine-$version/configure
|
||||||
|
make -j$cpu
|
||||||
|
mkdir ../program
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../program/usr/local/
|
||||||
|
# 打7z包
|
||||||
|
echo Building Time: `date`, source from git://source.winehq.org/git/wine.git > info.txt
|
||||||
|
7z a /wine/wine-daily-ubuntu22.04-aarch64.7z *
|
||||||
|
cd /wine
|
||||||
|
rm -rfv program
|
||||||
|
|
||||||
|
## 移除临时文件(不写了,反正 Github Action 会自动销毁)
|
||||||
46
wineautobuild-action-7z-aarch64.sh
Normal file
46
wineautobuild-action-7z-aarch64.sh
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
apt update
|
||||||
|
apt install sudo gpg wget dpkg-dev aria2 -y
|
||||||
|
sudo apt update
|
||||||
|
# 添加源
|
||||||
|
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
echo "deb-src [signed-by=/usr/share/keyrings/winehq-archive.key] https://dl.winehq.org/wine-builds/ubuntu/ focal main" > /etc/apt/sources.list.d/winehq-bionic.list
|
||||||
|
sudo apt update
|
||||||
|
# 编译
|
||||||
|
mkdir /wine
|
||||||
|
cd /wine
|
||||||
|
#sudo apt build-dep wget -y
|
||||||
|
#sudo apt source wget
|
||||||
|
|
||||||
|
#sudo apt source wine
|
||||||
|
sudo apt install fakeroot p7zip-full aptitude lld -y
|
||||||
|
sudo aptitude install flex bison libfreetype6-dev libjpeg-dev libpng-dev libxslt1-dev libxml2-dev libxrender-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev prelink libasound2-dev -y
|
||||||
|
sudo aptitude install flex bison gettext make gcc gcc-mingw-w64 libasound2-dev libasound2-dev libpulse-dev libpulse-dev -y
|
||||||
|
sudo aptitude install libdbus-1-dev libdbus-1-dev libfontconfig1-dev libfontconfig1-dev libfreetype6-dev libfreetype6-dev libgnutls28-dev libgnutls28-dev libpng-dev libpng-dev libtiff-dev libtiff-dev libgl-dev libgl-dev libunwind-dev libunwind-dev libx11-dev libx11-dev libxml2-dev libxml2-dev libxslt1-dev libxslt1-dev libgstreamer1.0-dev -y
|
||||||
|
sudo aptitude install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-base1.0-dev libmpg123-dev libmpg123-dev libosmesa6-dev libosmesa6-dev libudev-dev libudev-dev libvkd3d-dev libvkd3d-dev libvulkan-dev libvulkan-dev libcapi20-dev libcapi20-dev liblcms2-dev liblcms2-dev libcups2-dev libcups2-dev libgphoto2-dev libgphoto2-dev libsane-dev libsane-dev libgsm1-dev libgsm1-dev libkrb5-dev libkrb5-dev libldap2-dev libldap2-dev samba-dev ocl-icd-opencl-dev ocl-icd-opencl-dev libpcap-dev libpcap-dev libusb-1.0-0-dev libusb-1.0-0-dev libv4l-dev libv4l-dev libopenal-dev libopenal-dev libxcomposite-dev libxcomposite-dev libxcursor-dev libxcursor-dev libxi-dev libxi-dev libxrandr-dev libxrandr-dev libxinerama-dev libxinerama-dev -y
|
||||||
|
sudo apt install clang llvm -y
|
||||||
|
sudo apt install "llvm*" -y
|
||||||
|
sudo apt build-dep wine -y
|
||||||
|
# 获取数据
|
||||||
|
url=`cat /wine-url.txt`
|
||||||
|
version=`cat /wine-version.txt`
|
||||||
|
type=`cat /wine-type.txt`
|
||||||
|
cpu=$(cat /proc/cpuinfo | grep processor | wc -l)
|
||||||
|
aria2c -x 16 -s 16 $url
|
||||||
|
tar -xvf `basename $url`
|
||||||
|
#cd wine-$version
|
||||||
|
## 编译64位
|
||||||
|
mkdir build64
|
||||||
|
cd build64
|
||||||
|
sudo aptitude install libpcsclite-dev libsdl2-dev samba-dev -y
|
||||||
|
../wine-$version/configure
|
||||||
|
make -j$cpu
|
||||||
|
mkdir ../program
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../program/usr/local/
|
||||||
|
# 打7z包
|
||||||
|
7z a /wine/wine-$type-$version-ubuntu22.04-aarch64.7z *
|
||||||
|
cd /wine
|
||||||
|
rm -rfv program
|
||||||
|
|
||||||
|
## 移除临时文件(不写了,反正 Github Action 会自动销毁)
|
||||||
74
wineautobuild-action-7z-daily.sh
Normal file
74
wineautobuild-action-7z-daily.sh
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
dpkg --add-architecture i386
|
||||||
|
apt update
|
||||||
|
apt install sudo git gpg wget dpkg-dev aria2 -y
|
||||||
|
sudo apt update
|
||||||
|
# 添加源
|
||||||
|
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
echo "deb-src [signed-by=/usr/share/keyrings/winehq-archive.key] https://dl.winehq.org/wine-builds/ubuntu/ focal main" > /etc/apt/sources.list.d/winehq-bionic.list
|
||||||
|
sudo apt update
|
||||||
|
# 编译
|
||||||
|
mkdir /wine
|
||||||
|
cd /wine
|
||||||
|
#sudo apt build-dep wget -y
|
||||||
|
#sudo apt source wget
|
||||||
|
sudo apt build-dep wine -y
|
||||||
|
#sudo apt source wine
|
||||||
|
sudo apt install fakeroot p7zip-full -y
|
||||||
|
sudo apt install flex bison gettext make gcc gcc-multilib gcc-mingw-w64 libasound2-dev libasound2-dev:i386 libpulse-dev libpulse-dev:i386 libdbus-1-dev libdbus-1-dev:i386 libfontconfig1-dev libfontconfig1-dev:i386 libfreetype6-dev libfreetype6-dev:i386 libgnutls28-dev libgnutls28-dev:i386 libjpeg62-turbo-dev libjpeg62-turbo-dev:i386 libpng-dev libpng-dev:i386 libtiff-dev libtiff-dev:i386 libgl-dev libgl-dev:i386 libunwind-dev libunwind-dev:i386 libx11-dev libx11-dev:i386 libxml2-dev libxml2-dev:i386 libxslt1-dev libxslt1-dev:i386 libgstreamer1.0-dev libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev libgstreamer-plugins-base1.0-dev:i386 libmpg123-dev libmpg123-dev:i386 libosmesa6-dev libosmesa6-dev:i386 libudev-dev libudev-dev:i386 libvkd3d-dev libvkd3d-dev:i386 libvulkan-dev libvulkan-dev:i386 libcapi20-dev libcapi20-dev:i386 liblcms2-dev liblcms2-dev:i386 libcups2-dev libcups2-dev:i386 libgphoto2-dev libgphoto2-dev:i386 libsane-dev libsane-dev:i386 libgsm1-dev libgsm1-dev:i386 libkrb5-dev libkrb5-dev:i386 libldap2-dev libldap2-dev:i386 samba-dev ocl-icd-opencl-dev ocl-icd-opencl-dev:i386 libpcap-dev libpcap-dev:i386 libusb-1.0-0-dev libusb-1.0-0-dev:i386 libv4l-dev libv4l-dev:i386 libopenal-dev libopenal-dev:i386 libxcomposite-dev libxcomposite-dev:i386 libxcursor-dev libxcursor-dev:i386 libxi-dev libxi-dev:i386 libxrandr-dev libxrandr-dev:i386 libxinerama-dev libxinerama-dev:i386 -y
|
||||||
|
sudo apt install flex:i386 bison:i386 qt4-qmake:i386 libfreetype6-dev:i386 libjpeg-dev:i386 libpng-dev:i386 libxslt1-dev:i386 libxml2-dev:i386 libxrender-dev:i386 libgl1-mesa-dev:i386 libglu1-mesa-dev:i386 freeglut3-dev:i386 prelink:i386 libasound2-dev:i386 g++-multilib gcc-multilib g++-multilib -y
|
||||||
|
# 获取数据
|
||||||
|
url=`cat /wine-url.txt`
|
||||||
|
version=`cat /wine-version.txt`
|
||||||
|
type=`cat /wine-type.txt`
|
||||||
|
cpu=$(cat /proc/cpuinfo | grep processor | wc -l)
|
||||||
|
#aria2c -x 16 -s 16 $url
|
||||||
|
#tar -xvf `basename $url`
|
||||||
|
git clone git://source.winehq.org/git/wine.git
|
||||||
|
echo Wine version `date` > wine/VERSION
|
||||||
|
mv wine wine-$version
|
||||||
|
#cd wine-$version
|
||||||
|
## 编译64位
|
||||||
|
mkdir build64
|
||||||
|
cd build64
|
||||||
|
sudo apt install libpcsclite-dev libsdl2-dev samba-dev -y
|
||||||
|
../wine-$version/configure --enable-win64
|
||||||
|
make -j$cpu
|
||||||
|
mkdir ../program
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../program/usr/local/
|
||||||
|
# 打7z包
|
||||||
|
echo Building Time: `date`, source from git://source.winehq.org/git/wine.git > info.txt
|
||||||
|
7z a /wine/wine-daily-debian10-amd64.7z *
|
||||||
|
cd /wine
|
||||||
|
rm -rfv program
|
||||||
|
## 构建 32 + 64 位(混合)
|
||||||
|
mkdir build32
|
||||||
|
cd build32
|
||||||
|
sudo apt install libpcsclite-dev:i386 libsdl2-dev:i386 samba-dev:i386 -y
|
||||||
|
PKG_CONFIG_PATH=/usr/lib32 ../wine-$version/configure --with-wine64=../build64
|
||||||
|
make -j$cpu
|
||||||
|
mkdir ../program
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../build64
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../program/usr/local/
|
||||||
|
# 打7z包
|
||||||
|
echo Building Time: `date`, source from git://source.winehq.org/git/wine.git > info.txt
|
||||||
|
7z a /wine/wine-daily-debian10-x86_64.7z *
|
||||||
|
cd /wine
|
||||||
|
rm -rfv program
|
||||||
|
## 构建纯 32 位
|
||||||
|
mkdir build32-only
|
||||||
|
cd build32-only
|
||||||
|
../wine-$version/configure
|
||||||
|
make -j$cpu
|
||||||
|
mkdir ../program
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../program/usr/local/
|
||||||
|
# 打7z包
|
||||||
|
echo Building Time: `date`, source from git://source.winehq.org/git/wine.git > info.txt
|
||||||
|
7z a /wine/wine-daily-debian10-i386.7z *
|
||||||
|
cd /wine
|
||||||
|
rm -rfv program
|
||||||
|
## 移除临时文件(不写了,反正 Github Action 会自动销毁)
|
||||||
40
wineautobuild-action-7z-wow64-daily.sh
Normal file
40
wineautobuild-action-7z-wow64-daily.sh
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
dpkg --add-architecture i386
|
||||||
|
apt update
|
||||||
|
apt install git sudo gpg wget dpkg-dev aria2 -y
|
||||||
|
sudo apt update
|
||||||
|
# 添加源
|
||||||
|
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
echo "deb-src [signed-by=/usr/share/keyrings/winehq-archive.key] https://dl.winehq.org/wine-builds/ubuntu/ focal main" > /etc/apt/sources.list.d/winehq-bionic.list
|
||||||
|
sudo apt update
|
||||||
|
# 编译
|
||||||
|
mkdir /wine
|
||||||
|
cd /wine
|
||||||
|
#sudo apt build-dep wget -y
|
||||||
|
#sudo apt source wget
|
||||||
|
sudo apt build-dep wine -y
|
||||||
|
#sudo apt source wine
|
||||||
|
sudo apt install fakeroot p7zip-full -y
|
||||||
|
sudo apt install flex bison gettext make gcc gcc-multilib gcc-mingw-w64 libasound2-dev libasound2-dev:i386 libpulse-dev libpulse-dev:i386 libdbus-1-dev libdbus-1-dev:i386 libfontconfig1-dev libfontconfig1-dev:i386 libfreetype6-dev libfreetype6-dev:i386 libgnutls28-dev libgnutls28-dev:i386 libjpeg62-turbo-dev libjpeg62-turbo-dev:i386 libpng-dev libpng-dev:i386 libtiff-dev libtiff-dev:i386 libgl-dev libgl-dev:i386 libunwind-dev libunwind-dev:i386 libx11-dev libx11-dev:i386 libxml2-dev libxml2-dev:i386 libxslt1-dev libxslt1-dev:i386 libgstreamer1.0-dev libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev libgstreamer-plugins-base1.0-dev:i386 libmpg123-dev libmpg123-dev:i386 libosmesa6-dev libosmesa6-dev:i386 libudev-dev libudev-dev:i386 libvkd3d-dev libvkd3d-dev:i386 libvulkan-dev libvulkan-dev:i386 libcapi20-dev libcapi20-dev:i386 liblcms2-dev liblcms2-dev:i386 libcups2-dev libcups2-dev:i386 libgphoto2-dev libgphoto2-dev:i386 libsane-dev libsane-dev:i386 libgsm1-dev libgsm1-dev:i386 libkrb5-dev libkrb5-dev:i386 libldap2-dev libldap2-dev:i386 samba-dev ocl-icd-opencl-dev ocl-icd-opencl-dev:i386 libpcap-dev libpcap-dev:i386 libusb-1.0-0-dev libusb-1.0-0-dev:i386 libv4l-dev libv4l-dev:i386 libopenal-dev libopenal-dev:i386 libxcomposite-dev libxcomposite-dev:i386 libxcursor-dev libxcursor-dev:i386 libxi-dev libxi-dev:i386 libxrandr-dev libxrandr-dev:i386 libxinerama-dev libxinerama-dev:i386 -y
|
||||||
|
sudo apt install flex:i386 bison:i386 qt4-qmake:i386 libfreetype6-dev:i386 libjpeg-dev:i386 libpng-dev:i386 libxslt1-dev:i386 libxml2-dev:i386 libxrender-dev:i386 libgl1-mesa-dev:i386 libglu1-mesa-dev:i386 freeglut3-dev:i386 prelink:i386 libasound2-dev:i386 g++-multilib gcc-multilib g++-multilib -y
|
||||||
|
# 获取数据
|
||||||
|
url=`cat /wine-url.txt`
|
||||||
|
version=`cat /wine-version.txt`
|
||||||
|
type=`cat /wine-type.txt`
|
||||||
|
cpu=$(cat /proc/cpuinfo | grep processor | wc -l)
|
||||||
|
#aria2c -x 16 -s 16 $url
|
||||||
|
#tar -xvf `basename $url`
|
||||||
|
git clone git://source.winehq.org/git/wine.git
|
||||||
|
echo Wine version `date` > wine/VERSION
|
||||||
|
mv wine wine-$version
|
||||||
|
# 使用 wow64 support
|
||||||
|
sudo apt install libpcsclite-dev libsdl2-dev samba-dev -y
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
../wine-$version/configure --enable-archs=i386,x86_64
|
||||||
|
make -j$cpu
|
||||||
|
mkdir ../program
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../program/usr/local/
|
||||||
|
echo Building Time: `date`, source from git://source.winehq.org/git/wine.git > info.txt
|
||||||
|
7z a /wine/wine-wow64-daily-debian10-amd64.7z *
|
||||||
36
wineautobuild-action-7z-wow64.sh
Normal file
36
wineautobuild-action-7z-wow64.sh
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
dpkg --add-architecture i386
|
||||||
|
apt update
|
||||||
|
apt install sudo gpg wget dpkg-dev aria2 -y
|
||||||
|
sudo apt update
|
||||||
|
# 添加源
|
||||||
|
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
echo "deb-src [signed-by=/usr/share/keyrings/winehq-archive.key] https://dl.winehq.org/wine-builds/ubuntu/ focal main" > /etc/apt/sources.list.d/winehq-bionic.list
|
||||||
|
sudo apt update
|
||||||
|
# 编译
|
||||||
|
mkdir /wine
|
||||||
|
cd /wine
|
||||||
|
#sudo apt build-dep wget -y
|
||||||
|
#sudo apt source wget
|
||||||
|
sudo apt build-dep wine -y
|
||||||
|
#sudo apt source wine
|
||||||
|
sudo apt install fakeroot p7zip-full -y
|
||||||
|
sudo apt install flex bison gettext make gcc gcc-multilib gcc-mingw-w64 libasound2-dev libasound2-dev:i386 libpulse-dev libpulse-dev:i386 libdbus-1-dev libdbus-1-dev:i386 libfontconfig1-dev libfontconfig1-dev:i386 libfreetype6-dev libfreetype6-dev:i386 libgnutls28-dev libgnutls28-dev:i386 libjpeg62-turbo-dev libjpeg62-turbo-dev:i386 libpng-dev libpng-dev:i386 libtiff-dev libtiff-dev:i386 libgl-dev libgl-dev:i386 libunwind-dev libunwind-dev:i386 libx11-dev libx11-dev:i386 libxml2-dev libxml2-dev:i386 libxslt1-dev libxslt1-dev:i386 libgstreamer1.0-dev libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev libgstreamer-plugins-base1.0-dev:i386 libmpg123-dev libmpg123-dev:i386 libosmesa6-dev libosmesa6-dev:i386 libudev-dev libudev-dev:i386 libvkd3d-dev libvkd3d-dev:i386 libvulkan-dev libvulkan-dev:i386 libcapi20-dev libcapi20-dev:i386 liblcms2-dev liblcms2-dev:i386 libcups2-dev libcups2-dev:i386 libgphoto2-dev libgphoto2-dev:i386 libsane-dev libsane-dev:i386 libgsm1-dev libgsm1-dev:i386 libkrb5-dev libkrb5-dev:i386 libldap2-dev libldap2-dev:i386 samba-dev ocl-icd-opencl-dev ocl-icd-opencl-dev:i386 libpcap-dev libpcap-dev:i386 libusb-1.0-0-dev libusb-1.0-0-dev:i386 libv4l-dev libv4l-dev:i386 libopenal-dev libopenal-dev:i386 libxcomposite-dev libxcomposite-dev:i386 libxcursor-dev libxcursor-dev:i386 libxi-dev libxi-dev:i386 libxrandr-dev libxrandr-dev:i386 libxinerama-dev libxinerama-dev:i386 -y
|
||||||
|
sudo apt install flex:i386 bison:i386 qt4-qmake:i386 libfreetype6-dev:i386 libjpeg-dev:i386 libpng-dev:i386 libxslt1-dev:i386 libxml2-dev:i386 libxrender-dev:i386 libgl1-mesa-dev:i386 libglu1-mesa-dev:i386 freeglut3-dev:i386 prelink:i386 libasound2-dev:i386 g++-multilib gcc-multilib g++-multilib -y
|
||||||
|
# 获取数据
|
||||||
|
url=`cat /wine-url.txt`
|
||||||
|
version=`cat /wine-version.txt`
|
||||||
|
type=`cat /wine-type.txt`
|
||||||
|
cpu=$(cat /proc/cpuinfo | grep processor | wc -l)
|
||||||
|
aria2c -x 16 -s 16 $url
|
||||||
|
tar -xvf `basename $url`
|
||||||
|
# 使用 wow64 support
|
||||||
|
sudo apt install libpcsclite-dev libsdl2-dev samba-dev -y
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
../wine-$version/configure --enable-archs=i386,x86_64
|
||||||
|
make -j$cpu
|
||||||
|
mkdir ../program
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../program/usr/local/
|
||||||
|
7z a /wine/wine-$type-wow64-$version-debian10-amd64.7z *
|
||||||
68
wineautobuild-action-7z.sh
Normal file
68
wineautobuild-action-7z.sh
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
dpkg --add-architecture i386
|
||||||
|
apt update
|
||||||
|
apt install sudo gpg wget dpkg-dev aria2 -y
|
||||||
|
sudo apt update
|
||||||
|
# 添加源
|
||||||
|
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
echo "deb-src [signed-by=/usr/share/keyrings/winehq-archive.key] https://dl.winehq.org/wine-builds/ubuntu/ focal main" > /etc/apt/sources.list.d/winehq-bionic.list
|
||||||
|
sudo apt update
|
||||||
|
# 编译
|
||||||
|
mkdir /wine
|
||||||
|
cd /wine
|
||||||
|
#sudo apt build-dep wget -y
|
||||||
|
#sudo apt source wget
|
||||||
|
sudo apt build-dep wine -y
|
||||||
|
#sudo apt source wine
|
||||||
|
sudo apt install fakeroot p7zip-full -y
|
||||||
|
sudo apt install flex bison gettext make gcc gcc-multilib gcc-mingw-w64 libasound2-dev libasound2-dev:i386 libpulse-dev libpulse-dev:i386 libdbus-1-dev libdbus-1-dev:i386 libfontconfig1-dev libfontconfig1-dev:i386 libfreetype6-dev libfreetype6-dev:i386 libgnutls28-dev libgnutls28-dev:i386 libjpeg62-turbo-dev libjpeg62-turbo-dev:i386 libpng-dev libpng-dev:i386 libtiff-dev libtiff-dev:i386 libgl-dev libgl-dev:i386 libunwind-dev libunwind-dev:i386 libx11-dev libx11-dev:i386 libxml2-dev libxml2-dev:i386 libxslt1-dev libxslt1-dev:i386 libgstreamer1.0-dev libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev libgstreamer-plugins-base1.0-dev:i386 libmpg123-dev libmpg123-dev:i386 libosmesa6-dev libosmesa6-dev:i386 libudev-dev libudev-dev:i386 libvkd3d-dev libvkd3d-dev:i386 libvulkan-dev libvulkan-dev:i386 libcapi20-dev libcapi20-dev:i386 liblcms2-dev liblcms2-dev:i386 libcups2-dev libcups2-dev:i386 libgphoto2-dev libgphoto2-dev:i386 libsane-dev libsane-dev:i386 libgsm1-dev libgsm1-dev:i386 libkrb5-dev libkrb5-dev:i386 libldap2-dev libldap2-dev:i386 samba-dev ocl-icd-opencl-dev ocl-icd-opencl-dev:i386 libpcap-dev libpcap-dev:i386 libusb-1.0-0-dev libusb-1.0-0-dev:i386 libv4l-dev libv4l-dev:i386 libopenal-dev libopenal-dev:i386 libxcomposite-dev libxcomposite-dev:i386 libxcursor-dev libxcursor-dev:i386 libxi-dev libxi-dev:i386 libxrandr-dev libxrandr-dev:i386 libxinerama-dev libxinerama-dev:i386 -y
|
||||||
|
sudo apt install flex:i386 bison:i386 qt4-qmake:i386 libfreetype6-dev:i386 libjpeg-dev:i386 libpng-dev:i386 libxslt1-dev:i386 libxml2-dev:i386 libxrender-dev:i386 libgl1-mesa-dev:i386 libglu1-mesa-dev:i386 freeglut3-dev:i386 prelink:i386 libasound2-dev:i386 g++-multilib gcc-multilib g++-multilib -y
|
||||||
|
# 获取数据
|
||||||
|
url=`cat /wine-url.txt`
|
||||||
|
version=`cat /wine-version.txt`
|
||||||
|
type=`cat /wine-type.txt`
|
||||||
|
cpu=$(cat /proc/cpuinfo | grep processor | wc -l)
|
||||||
|
aria2c -x 16 -s 16 $url
|
||||||
|
tar -xvf `basename $url`
|
||||||
|
#cd wine-$version
|
||||||
|
## 编译64位
|
||||||
|
mkdir build64
|
||||||
|
cd build64
|
||||||
|
sudo apt install libpcsclite-dev libsdl2-dev samba-dev -y
|
||||||
|
../wine-$version/configure --enable-win64
|
||||||
|
make -j$cpu
|
||||||
|
mkdir ../program
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../program/usr/local/
|
||||||
|
# 打7z包
|
||||||
|
7z a /wine/wine-$type-$version-debian10-amd64.7z *
|
||||||
|
cd /wine
|
||||||
|
rm -rfv program
|
||||||
|
## 构建 32 + 64 位(混合)
|
||||||
|
mkdir build32
|
||||||
|
cd build32
|
||||||
|
sudo apt install libpcsclite-dev:i386 libsdl2-dev:i386 samba-dev:i386 -y
|
||||||
|
PKG_CONFIG_PATH=/usr/lib32 ../wine-$version/configure --with-wine64=../build64
|
||||||
|
make -j$cpu
|
||||||
|
mkdir ../program
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../build64
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../program/usr/local/
|
||||||
|
# 打7z包
|
||||||
|
7z a /wine/wine-$type-$version-debian10-x86_64.7z *
|
||||||
|
cd /wine
|
||||||
|
rm -rfv program
|
||||||
|
## 构建纯 32 位
|
||||||
|
mkdir build32-only
|
||||||
|
cd build32-only
|
||||||
|
../wine-$version/configure
|
||||||
|
make -j$cpu
|
||||||
|
mkdir ../program
|
||||||
|
make install -j$cpu DESTDIR=../program
|
||||||
|
cd ../program/usr/local/
|
||||||
|
# 打7z包
|
||||||
|
7z a /wine/wine-$type-$version-debian10-i386.7z *
|
||||||
|
cd /wine
|
||||||
|
rm -rfv program
|
||||||
|
## 移除临时文件(不写了,反正 Github Action 会自动销毁)
|
||||||
25
wineautobuild-action-debian9.sh
Normal file
25
wineautobuild-action-debian9.sh
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
dpkg --add-architecture i386
|
||||||
|
apt update
|
||||||
|
apt install sudo gpg wget dpkg-dev -y
|
||||||
|
sudo apt update
|
||||||
|
# 添加源
|
||||||
|
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
echo "deb-src [signed-by=/usr/share/keyrings/winehq-archive.key] http://dl.winehq.org/wine-builds/ubuntu/ bionic main" > /etc/apt/sources.list.d/winehq-bionic.list
|
||||||
|
echo nameserver 8.8.8.8 > /etc/resolv.conf
|
||||||
|
sudo apt update
|
||||||
|
# 编译
|
||||||
|
mkdir /wine
|
||||||
|
cd /wine
|
||||||
|
#sudo apt build-dep wget -y
|
||||||
|
#sudo apt source wget
|
||||||
|
sudo apt build-dep wine -y
|
||||||
|
sudo apt source wine
|
||||||
|
sudo apt install fakeroot -y
|
||||||
|
sudo apt install flex bison gettext make gcc gcc-multilib gcc-mingw-w64 libasound2-dev libasound2-dev:i386 libpulse-dev libpulse-dev:i386 libdbus-1-dev libdbus-1-dev:i386 libfontconfig1-dev libfontconfig1-dev:i386 libfreetype6-dev libfreetype6-dev:i386 libgnutls28-dev libgnutls28-dev:i386 libjpeg62-turbo-dev libjpeg62-turbo-dev:i386 libpng-dev libpng-dev:i386 libtiff-dev libtiff-dev:i386 libgl-dev libgl-dev:i386 libunwind-dev libunwind-dev:i386 libx11-dev libx11-dev:i386 libxml2-dev libxml2-dev:i386 libxslt1-dev libxslt1-dev:i386 libgstreamer1.0-dev libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev libgstreamer-plugins-base1.0-dev:i386 libmpg123-dev libmpg123-dev:i386 libosmesa6-dev libosmesa6-dev:i386 libudev-dev libudev-dev:i386 libvkd3d-dev libvkd3d-dev:i386 libvulkan-dev libvulkan-dev:i386 libcapi20-dev libcapi20-dev:i386 liblcms2-dev liblcms2-dev:i386 libcups2-dev libcups2-dev:i386 libgphoto2-dev libgphoto2-dev:i386 libsane-dev libsane-dev:i386 libgsm1-dev libgsm1-dev:i386 libkrb5-dev libkrb5-dev:i386 libldap2-dev libldap2-dev:i386 samba-dev ocl-icd-opencl-dev ocl-icd-opencl-dev:i386 libpcap-dev libpcap-dev:i386 libusb-1.0-0-dev libusb-1.0-0-dev:i386 libv4l-dev libv4l-dev:i386 libopenal-dev libopenal-dev:i386 libxcomposite-dev libxcomposite-dev:i386 libxcursor-dev libxcursor-dev:i386 libxi-dev libxi-dev:i386 libxrandr-dev libxrandr-dev:i386 libxinerama-dev libxinerama-dev:i386 -y
|
||||||
|
sudo apt install flex:i386 bison:i386 qt4-qmake:i386 libfreetype6-dev:i386 libjpeg-dev:i386 libpng-dev:i386 libxslt1-dev:i386 libxml2-dev:i386 libxrender-dev:i386 libgl1-mesa-dev:i386 libglu1-mesa-dev:i386 freeglut3-dev:i386 prelink:i386 libasound2-dev:i386 g++-multilib gcc-multilib g++-multilib -y
|
||||||
|
cd */
|
||||||
|
dpkg-buildpackage -b -nc
|
||||||
|
# 移除无用包
|
||||||
|
rm ../*dbg*.deb -vrf
|
||||||
|
rm ../*dbgsym*.deb -vrf
|
||||||
24
wineautobuild-action.sh
Normal file
24
wineautobuild-action.sh
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
dpkg --add-architecture i386
|
||||||
|
apt update
|
||||||
|
apt install sudo gpg wget dpkg-dev -y
|
||||||
|
sudo apt update
|
||||||
|
# 添加源
|
||||||
|
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
echo "deb-src [signed-by=/usr/share/keyrings/winehq-archive.key] https://dl.winehq.org/wine-builds/ubuntu/ focal main" > /etc/apt/sources.list.d/winehq-bionic.list
|
||||||
|
sudo apt update
|
||||||
|
# 编译
|
||||||
|
mkdir /wine
|
||||||
|
cd /wine
|
||||||
|
#sudo apt build-dep wget -y
|
||||||
|
#sudo apt source wget
|
||||||
|
sudo apt build-dep wine -y
|
||||||
|
sudo apt source wine
|
||||||
|
sudo apt install fakeroot -y
|
||||||
|
sudo apt install flex bison gettext make gcc gcc-multilib gcc-mingw-w64 libasound2-dev libasound2-dev:i386 libpulse-dev libpulse-dev:i386 libdbus-1-dev libdbus-1-dev:i386 libfontconfig1-dev libfontconfig1-dev:i386 libfreetype6-dev libfreetype6-dev:i386 libgnutls28-dev libgnutls28-dev:i386 libjpeg62-turbo-dev libjpeg62-turbo-dev:i386 libpng-dev libpng-dev:i386 libtiff-dev libtiff-dev:i386 libgl-dev libgl-dev:i386 libunwind-dev libunwind-dev:i386 libx11-dev libx11-dev:i386 libxml2-dev libxml2-dev:i386 libxslt1-dev libxslt1-dev:i386 libgstreamer1.0-dev libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev libgstreamer-plugins-base1.0-dev:i386 libmpg123-dev libmpg123-dev:i386 libosmesa6-dev libosmesa6-dev:i386 libudev-dev libudev-dev:i386 libvkd3d-dev libvkd3d-dev:i386 libvulkan-dev libvulkan-dev:i386 libcapi20-dev libcapi20-dev:i386 liblcms2-dev liblcms2-dev:i386 libcups2-dev libcups2-dev:i386 libgphoto2-dev libgphoto2-dev:i386 libsane-dev libsane-dev:i386 libgsm1-dev libgsm1-dev:i386 libkrb5-dev libkrb5-dev:i386 libldap2-dev libldap2-dev:i386 samba-dev ocl-icd-opencl-dev ocl-icd-opencl-dev:i386 libpcap-dev libpcap-dev:i386 libusb-1.0-0-dev libusb-1.0-0-dev:i386 libv4l-dev libv4l-dev:i386 libopenal-dev libopenal-dev:i386 libxcomposite-dev libxcomposite-dev:i386 libxcursor-dev libxcursor-dev:i386 libxi-dev libxi-dev:i386 libxrandr-dev libxrandr-dev:i386 libxinerama-dev libxinerama-dev:i386 -y
|
||||||
|
sudo apt install flex:i386 bison:i386 qt4-qmake:i386 libfreetype6-dev:i386 libjpeg-dev:i386 libpng-dev:i386 libxslt1-dev:i386 libxml2-dev:i386 libxrender-dev:i386 libgl1-mesa-dev:i386 libglu1-mesa-dev:i386 freeglut3-dev:i386 prelink:i386 libasound2-dev:i386 g++-multilib gcc-multilib g++-multilib -y
|
||||||
|
cd */
|
||||||
|
dpkg-buildpackage -b -nc
|
||||||
|
# 移除无用包
|
||||||
|
rm ../*dbg*.deb -vrf
|
||||||
|
rm ../*dbgsym*.deb -vrf
|
||||||
Reference in New Issue
Block a user