Compare commits

...

83 Commits
3.2.2 ... 3.3.0

Author SHA1 Message Date
6d4dc4d7d9 修改README 2023-07-12 12:21:56 +08:00
995aad5273 优化exagear调用 2023-07-12 12:11:38 +08:00
851bf9fcc6 修改版本号 2023-07-12 12:06:53 +08:00
00da7fc010 修改星火应用商店投稿链接 2023-07-12 08:00:47 +08:00
9fd8f5144f 修复小问题 2023-07-11 22:32:28 +08:00
b31c4bf134 支持自定义移除组件 2023-07-11 22:05:06 +08:00
66ace92775 测试 2023-07-11 21:51:01 +08:00
74e82aca00 修改位置 2023-07-11 21:07:59 +08:00
e175a80e57 优化lib挂载方式 2023-07-11 20:58:17 +08:00
27cd65a48f 就备份下 2023-07-11 19:34:41 +08:00
a5cb1f81f8 新增qemu识别 2023-07-11 18:52:18 +08:00
2fb32f84d7 忽略调用UOS Exagear容器 2023-07-11 18:44:27 +08:00
6c6b5ff67e 缩进错误 2023-07-11 18:16:12 +08:00
d3790780dd 支持使用Exagear的容器 2023-07-11 18:10:51 +08:00
00245232bf 优化lib64识别 2023-07-11 17:19:39 +08:00
5cb05e9956 修复在安装exagear的情况下无法正常显示使用运行器带的运行库运行程序的问题 2023-07-11 15:25:29 +08:00
72208fd378 一个遗漏的地方 2023-07-11 15:13:29 +08:00
f63cdff0aa 优化运行库显示方式 2023-07-11 15:08:28 +08:00
6c43ce51b4 修复部分小问题 2023-07-11 10:51:37 +08:00
a85a7aeb0c 新增foxpro安装器 2023-07-11 10:44:35 +08:00
70014b29ef 修复运行库安装闪退问题 2023-07-11 10:23:56 +08:00
808471c330 缺失.start() 2023-07-11 10:08:14 +08:00
cf0be8a2f1 忘记添加事件 2023-07-11 10:01:55 +08:00
fffb56c098 修改依赖 2023-07-11 09:57:16 +08:00
2dab9ef7ce Wine运行库 2023-07-10 22:35:54 +08:00
adf35abfc7 设置安装glibc6:armhf 2023-07-07 15:41:46 +08:00
6ef513d6f5 修改url 2023-07-07 14:51:39 +08:00
550827f97c 添加缺失文件 2023-07-07 13:39:02 +08:00
29f42c95b4 新增exagear识别 2023-07-07 12:31:43 +08:00
ee68f6e26a 更换国内源 2023-07-07 10:59:18 +08:00
aff9996515 Box86/64国内源 2023-07-07 10:33:23 +08:00
075478029d 新增box86安装添加binfmt-support支持 2023-07-06 22:40:18 +08:00
f766e8577c 新增提示 2023-07-06 22:33:40 +08:00
08191c17ed 修改box86/64安装器、新增Wine自建源添加工具、WineHQ添加工具支持选择国内清华大学镜像源/官方源 2023-07-06 22:20:33 +08:00
7665dbe6d9 添加Wine源添加工具(支持Deepin20) 2023-07-06 21:53:13 +08:00
7711c186fd 自动构建 2023-07-06 21:33:19 +08:00
93d41ac3e2 小改README 2023-07-06 21:32:04 +08:00
59ec3d5822 简易打包器支持选择wine版本 2023-07-06 18:44:04 +08:00
a5d1a04573 修改依赖 2023-07-06 15:33:15 +08:00
e434aa9116 优化 2023-07-06 15:31:48 +08:00
dc789132d3 action 2023-07-06 15:30:03 +08:00
9b5beadbcc remove 2023-07-02 18:37:10 +08:00
635171998d 9 2023-07-02 18:19:39 +08:00
b757d09901 debian9 2023-07-02 17:42:40 +08:00
84f0eefc27 将gitlink源改为gitee源 2023-06-29 17:03:46 +08:00
f9cac7619c 修改容器清理脚本 2023-06-29 12:09:23 +08:00
8ae5efe50c arm-daily 2023-06-27 14:31:26 +08:00
58798dd0c6 少了git 2023-06-27 09:06:23 +08:00
fdced1f2c3 添加脚本 2023-06-27 08:15:08 +08:00
aaa5b724e4 优化脚本 2023-06-24 08:45:20 +08:00
bbff9aa85f 新增脚本 2023-06-24 08:39:49 +08:00
4a469f2a82 尝试修复无图标问题 2023-06-23 14:30:41 +08:00
58400ed5ff 完成“安装其他wine版本后 运行器主界面选择wine版本下拉框没有刷新 还要重启一下wine运行器程序,这导致我上面选择的wine容器路径又被重置 重新选择 From Jokul”,https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I7E8Q4 2023-06-22 13:19:55 +08:00
2de9de6633 change? 2023-06-22 12:55:59 +08:00
eba3d9f728 初步? 2023-06-22 12:23:11 +08:00
d8dce3b62c control文件 2023-06-22 12:03:57 +08:00
81f49ae83c 修改为打包xz格式的deb包 2023-06-18 11:18:11 +08:00
160d2ecf9d 优化 2023-06-06 20:37:13 +08:00
d31be64151 修改环境配置包 2023-06-05 20:56:57 +08:00
77ec7ff2bf 修复 2023-06-05 20:34:12 +08:00
6201ec2ed6 修复一些问题 2023-06-05 20:02:01 +08:00
ed344e7a6c aarch64-build 2023-06-05 19:39:15 +08:00
ed61089844 修改以前没改全的东东 2023-06-04 16:40:53 +08:00
e3435ad29a 修复脚本问题 2023-06-04 14:38:20 +08:00
0e705a955a 修复一些错误 2023-06-04 14:31:26 +08:00
77d91f31b2 修复一些问题 2023-06-04 14:29:40 +08:00
c0b7c99c43 7zBuilder 2023-06-04 14:07:06 +08:00
cfbffc1a68 完成 2023-06-04 13:19:25 +08:00
490b6ce28d 修改 2023-06-04 12:10:25 +08:00
75ae205cbf d 2023-06-04 12:05:53 +08:00
ee49a4aec1 修改测试包 2023-06-04 12:00:46 +08:00
364983ac5b aria2 2023-06-04 11:50:02 +08:00
ef375f32b9 修复脚本问题 2023-06-04 11:46:44 +08:00
4ff2d0815d 自动编译脚本? 2023-06-04 11:04:50 +08:00
8df919cadb 更新README 2023-06-03 20:19:40 +08:00
89b812e6a6 更换为xfreerdp 2023-05-28 21:01:35 +08:00
803eb09b5a 初步远程桌面功能? 2023-05-28 20:37:13 +08:00
6397130bb2 修改DLL获取工具的地址 2023-05-28 07:23:18 +08:00
8a4a5f4ee3 修改运行库URL 2023-05-27 22:45:29 +08:00
3529dc1503 修改control 2023-05-27 16:11:26 +08:00
09eb12d750 修复简易打包器Installed-Size格式不规范的问题 2023-05-18 22:33:43 +08:00
bf95889b93 修复control文件以解决冲突的问题 2023-05-17 21:37:37 +08:00
76d3fd556e 更新 2023-05-13 13:15:31 +08:00
40 changed files with 1457 additions and 269 deletions

30
.github/workflows/auto-building.yml vendored Normal file
View 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
View 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

View File

@@ -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
View 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-armbox64 要在 aarch64 系统才可安装)的 Box86/Box64 包(适用于通用 ARM 系统)
echo 其他特殊版本及其包名可见如下链接(如适用于 rk3399 的版本):
echo " - Box64https://github.com/ryanfortner/box64-debs/"
echo " - Box86https://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

View File

@@ -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-armbox64 要在 aarch64 系统才可安装)的 Box86/Box64 包(适用于通用 ARM 系统)
echo 其他特殊版本及其包名可见如下链接(如适用于 rk3399 的版本):
echo " - Box64https://github.com/ryanfortner/box64-debs/"
echo " - Box86https://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

View File

@@ -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
View 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("安装结束,按回车键退出")

View File

@@ -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
View 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.04Linux Mint 20.x"
echo "3. Ubuntu 18.04Linux 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

View File

@@ -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

View 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@@

View File

@@ -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

View 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
View File

@@ -0,0 +1,13 @@
[
"@@PACKAGE@@",
"@@VERSION@@",
"@@ARCH@@",
"@@MAKER@@",
"@@DEPENDS@@",
"@@SIZE@@",
"@@DESCRIPTION@@"
"@@ICONLIST@@",
"@@NAME@@",
"@@MIMETYPE@@",
"@@CATEGORIES@@"
]

View File

@@ -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=容器路径 winewine的路径 可执行文件路径 env WINEPREFIX=容器路径 winewine的路径 可执行文件路径
@@ -44,6 +44,9 @@ env WINEPREFIX=容器路径 winewine的路径 可执行文件路径
理论上支持全架构,如果 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=容器路径 winewine的路径 可执行文件路径
![图片.png](https://storage.deepin.org/thread/202304192212308212_图片.png) ![图片.png](https://storage.deepin.org/thread/202304192212308212_图片.png)
### 龙芯应用合作社 ### 龙芯应用合作社
(找时间再补图)
![图片.png](https://storage.deepin.org/thread/20230603201852396_图片.png)
## 分支介绍 ## 分支介绍
### main 分支 ### main 分支
@@ -130,6 +136,24 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
![image.png](https://storage.deepin.org/thread/202207190822204627_image.png) ![image.png](https://storage.deepin.org/thread/202207190822204627_image.png)
## 更新日志 ## 更新日志
### 3.3.02023年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 Useri386、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、修复部分组件没完全换源的问题部分组件支持自动换可用源
![图片.png](https://storage.deepin.org/thread/202307121216143835_图片.png)
![图片.png](https://storage.deepin.org/thread/202307121221299140_图片.png)
### 3.2.22023年05月12日 ### 3.2.22023年05月12日
**※1. 修改源地址(迁出 Gitlink** **※1. 修改源地址(迁出 Gitlink**
**※2. 修复非 X86 架构运行器主页面虚拟机工具禁用的问题;** **※2. 修复非 X86 架构运行器主页面虚拟机工具禁用的问题;**
@@ -588,14 +612,14 @@ Gitlinkhttps://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
View 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
View 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
View 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
View 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 \
-- "$@"

View File

@@ -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"
} }

View File

@@ -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

View File

@@ -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

View File

@@ -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}——简易打包器")

View File

@@ -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)

View File

@@ -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)

View File

@@ -1,5 +1,5 @@
{ {
"Version": "3.2.2", "Version": "3.3.0",
"Time": "未知", "Time": "未知",
"Thank": [ "Thank": [
"感谢 RacoonGX 的付出与贡献", "感谢 RacoonGX 的付出与贡献",

View File

@@ -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 Useri386、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"])

View File

@@ -1,5 +1,5 @@
{ {
"Version": "3.2.2", "Version": "3.3.0",
"Time": "未知", "Time": "未知",
"Thank": [ "Thank": [
"感谢 RacoonGX 的付出与贡献", "感谢 RacoonGX 的付出与贡献",

View File

@@ -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

View File

@@ -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

View File

@@ -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/" # 本地测试源
] ]

View File

@@ -1 +1 @@
[] []

View 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 会自动销毁)

View 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 会自动销毁)

View 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 会自动销毁)

View 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 *

View 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 *

View 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 会自动销毁)

View 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
View 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