Compare commits

...

128 Commits

Author SHA1 Message Date
fbfd5bbe7b 更新 README 2022-10-02 22:17:00 +08:00
0bdf0d2e2f 完成了 2022-10-02 22:08:12 +08:00
f8678cea12 更新自动配置脚本命令 2022-10-02 21:59:53 +08:00
0e6883d927 删除: spark-deepin-wine-runner.deb 2022-10-02 14:59:30 +08:00
f9f8180c60 ?
修改:     deb/DEBIAN/control
	修改:     deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py
	修改:     deb/opt/apps/deepin-wine-runner/deepin-wine-runner
	修改:     deb/opt/apps/deepin-wine-runner/information.json
	修改:     deb/opt/apps/deepin-wine-runner/package-script.zip
	修改:     deb/opt/apps/deepin-wine-runner/wine/installwine
	修改:     information.json
	修改:     mainwindow.py
	修改:     package-script.zip
	修改:     package-script/information.json
	修改:     wine/installwine
2022-10-02 14:54:23 +08:00
5edb8188b9 优化内容 2022-10-01 20:53:50 +08:00
2b3374e30b 更新更新内容 2022-09-29 22:13:22 +08:00
3ffe532779 修复7z解压问题 2022-09-29 22:08:06 +08:00
ed638a2002 Merge branch 'Alpha' into main 2022-09-29 21:48:46 +08:00
fc32d40fe8 测试完成 2022-09-29 21:48:03 +08:00
0c8db7a718 完成 2022-09-29 21:42:18 +08:00
2bd02b94c5 初步环境实现 2022-09-29 21:18:15 +08:00
3215713f2d 初步实现模板 2022-09-29 20:08:37 +08:00
0c2242b1f0 支持禁用/启用 wine 容器是否生成快捷方式的功能 2022-09-28 21:55:54 +08:00
6276dfb0f9 测试完成 2022-09-28 21:00:53 +08:00
f6a4389c26 开始优化 Wine 容器路径 2022-09-28 20:41:06 +08:00
3601d69fef 修复完成 2022-09-28 20:38:23 +08:00
0fbbda6ecb 修复完成,开始测试 2022-09-28 20:36:04 +08:00
9bca2ac943 开始修复依赖 wimtools 转非强制依赖的问题 2022-09-28 20:29:02 +08:00
091950c5ed 解决关于基于生态适配脚本的问题 2022-09-28 20:26:25 +08:00
0c6fce93b3 打包测试 2022-09-28 20:19:05 +08:00
b1deb06b49 基于生态适配脚本支持指定容器1 2022-09-27 21:34:13 +08:00
f200bd3362 修复Makefile问题 2022-09-27 21:13:05 +08:00
06d9d48cb7 修复基于生态适配脚本的打包1弹出β多个弹窗的问题 2022-09-27 21:09:30 +08:00
0997767548 更新README 2022-09-25 13:01:06 +08:00
e120db0bee 忘了 2022-09-25 12:30:28 +08:00
375cb1147f WineHQ安装器更换国内源 2022-09-25 10:17:36 +08:00
ed195d644e desktop标准完善 2022-09-24 22:02:39 +08:00
bd46971f5c README 2022-09-24 21:27:05 +08:00
665220af83 结束了 2022-09-24 21:22:29 +08:00
1ebca9d008 2.2.0 2022-09-24 21:03:20 +08:00
8a5efb6908 2.2.0 2022-09-24 21:02:50 +08:00
b6e0e203f8 初步实现对吾爱专版的实现 2022-09-24 19:54:08 +08:00
932ff67008 修复在arm安装运行库无法正常调用wine的问题 2022-09-22 21:24:02 +08:00
2454f926d0 更新分类讨论 2022-09-21 20:54:04 +08:00
de6be5d611 评分数据预测+各种小东西 2022-09-20 21:54:58 +08:00
d498b03a4f 评分数据预测+各种小东西 2022-09-20 21:53:37 +08:00
2db446a845 更新dll包+版本号识别 2022-09-19 21:30:36 +08:00
b5dda7fc67 打包器deb内容读取完成 2022-09-16 21:52:59 +08:00
c443796f85 读取depends和recommends 2022-09-14 22:02:54 +08:00
b1fb27ad9b 完成对deb包的control文件解读 2022-09-14 21:57:06 +08:00
5e1279d80b 图标++ 2022-09-13 21:59:20 +08:00
8fd0cd28c8 图标 2022-09-13 21:27:17 +08:00
a8749b8f7c Alpha2 2022-09-12 19:17:52 +08:00
b45b88902c 新增图标 2022-09-11 22:26:40 +08:00
c638648252 生态活动脚本更换helper和添加postrm 2022-09-11 20:44:16 +08:00
d489f6f00d ??? 2022-09-11 19:18:54 +08:00
4334c424ac 该睡觉了 2022-09-10 22:36:50 +08:00
49c37d8a9f 支持显示文件1 2022-09-10 22:29:09 +08:00
1e78584493 修复 QQ、TIM 安装后无法正常生成快捷方式的问题 2022-09-10 22:07:58 +08:00
00e0fe5046 添加新图标 2022-09-10 21:08:09 +08:00
c55f2f78aa 修改更新内容 2022-09-10 13:11:06 +08:00
e410c8663b 修改提示文本 2022-09-10 13:04:44 +08:00
d585e0feb3 ISO 提取 dll 工具支持 wim 安装方式的 ISO 镜像 2022-09-10 11:55:55 +08:00
0e53c2cd9c 更新VC和NET离线列表 2022-09-10 07:53:06 +08:00
5453c085c9 优化DEBUG输出信息过少的问题 2022-09-10 07:27:10 +08:00
ec55faf75a MSI文件安装功能实现 2022-09-09 22:23:11 +08:00
ee692c8962 修改postrm 2022-09-09 22:12:27 +08:00
d28d21557c 2.1.0-2 2022-09-05 13:33:53 +08:00
63b136519d !4 【轻量级 PR】:update Model/__init__.py.
Merge pull request !4 from shenmo/N/A
2022-09-05 05:17:25 +00:00
289f97238d update Model/__init__.py.
Signed-off-by: shenmo <jifengshenmo@outlook.com>
2022-09-05 03:06:30 +00:00
7c4c64bc42 README 2022-09-03 22:24:08 +08:00
9b7a24ff38 新增Python判断 2022-09-03 19:21:00 +08:00
020e1d27db 修复bug 2022-09-03 09:31:40 +08:00
e0085096ea 初步Windows支持 2022-08-27 10:53:21 +08:00
0b27c043ea dxvk目录移除 2022-08-27 02:01:05 +08:00
e18b963dbb 初步多终端实现 2022-08-27 02:00:41 +08:00
8149ea0e8d 2.1.0完成 2022-08-26 14:41:08 +08:00
1a453c6778 基本完成 2022-08-26 14:00:05 +08:00
5c2cd380ea 解释器完成 2022-08-26 12:11:34 +08:00
3f38af72d9 解释器大体完成 2022-08-25 21:47:42 +08:00
8afe569b19 初步完成的脚本解析器 2022-08-24 17:41:30 +08:00
51d471f649 初步云DLL下载完成 2022-08-24 16:13:47 +08:00
cf17caf572 Merge branch 'main' of https://gitee.com/gfdgd-xi/deep-wine-runner 2022-08-22 17:32:02 +08:00
daa04ec6fd 新增程序翻译 2022-08-22 17:30:42 +08:00
fcf3f74701 !3 错别字
Merge pull request !3 from shenmo/N/A
2022-08-21 14:32:34 +00:00
9254aa0cdf 将C++版的Wine安装器改Python(技术问题) 2022-08-21 22:31:19 +08:00
a62a937700 修复未发布版本打包器和wine下载工具的异线程修改UI的问题 2022-08-21 12:53:04 +08:00
aac498bf7d 2.0.1新建文件夹 2022-08-20 13:35:31 +08:00
931195a93a 错别字
https://bbs.deepin.org/post/241856?postId=1367622

Signed-off-by: shenmo <jifengshenmo@outlook.com>
2022-08-19 11:39:58 +00:00
fa87419c71 2.0.0-2 2022-08-16 09:06:10 +08:00
0b79246991 修复依赖缺失问题 2022-08-15 13:51:36 +08:00
d2cc2e231e 改版本号为2.0.0+改README 2022-08-13 18:15:58 +08:00
dd05dc9b74 1.9.0完成 2022-08-13 17:50:21 +08:00
d8f482533c 1.9.0大体完成 2022-08-11 21:54:20 +08:00
df344a398c 1.9.0Alpha3 2022-08-09 13:34:44 +08:00
70195a794a 1.9.0基础 2022-08-08 15:49:59 +08:00
19cd835b00 1.9.0初步 2022-08-05 17:46:41 +08:00
f832e032de 添加deepin23截图 2022-08-03 17:35:42 +08:00
82b5ba9888 再改README 2022-08-03 17:19:56 +08:00
fb4a4a3b79 稍改README 2022-08-03 17:17:37 +08:00
affabe4da7 1.8.0 2022-08-03 14:06:05 +08:00
8e9f71c870 1.8.0基本完成 2022-08-02 16:02:35 +08:00
28a6ec20b9 1.8.0基本完成 2022-08-02 16:01:50 +08:00
303161d10e 1.8.0初步 2022-08-02 08:49:42 +08:00
24916bf63b 1.8.0初步 2022-08-01 16:11:46 +08:00
7a4086732f 1.7.1基本完成 2022-07-29 15:35:07 +08:00
af7028b7d3 初步完成geek uninstaller卸载程序的更新功能 2022-07-27 22:54:40 +08:00
28257e2af1 1.7.1内容初步完成 2022-07-27 22:40:05 +08:00
adcd46997b 完成 2022-07-19 08:55:48 +08:00
48f2c4cdf3 改一下README 2022-07-19 08:25:14 +08:00
ea92334e2b 1.7.0完成 2022-07-19 08:23:31 +08:00
3c25c54aca deb包构建完成,即将测试 2022-07-18 22:50:39 +08:00
e9f24c2cc0 基本完成! 2022-07-18 22:20:19 +08:00
99d1255d93 冲刺最后一个打包器界面 2022-07-18 20:32:01 +08:00
590701a873 主窗口QT改造完成! 2022-07-18 15:22:00 +08:00
ec2d488a9d 主界面QT改造大部分完成 2022-07-18 11:21:22 +08:00
5bd64c9e64 1.7.0的初步功能实现 2022-07-15 23:33:24 +08:00
66784bae62 开始外观修改 2022-07-15 11:05:58 +08:00
349d296bdf 初步完成打包器2 2022-07-14 22:30:15 +08:00
a01287dd6f 初步添加统信的wine打包脚本 2022-07-14 14:31:36 +08:00
2eb05c9b7c 小改 2022-07-12 20:37:59 +08:00
d477bee819 优化 deb 包 2022-07-11 00:57:03 +08:00
2bfb4314ae 1.6.0完成 2022-07-10 09:41:19 +08:00
6702a51693 基本完成1.6.0 2022-07-10 07:54:09 +08:00
3aa23d1635 初步1.6.0格局形成 2022-07-10 07:50:49 +08:00
51a5f20832 修复 wine install 安装星火应用商店源不会获取签名的问题 2022-07-08 23:27:47 +08:00
485ac326bd 1.5.3 2022-07-07 14:09:30 +08:00
2c033861fa 1.5.3初步 2022-07-07 18:41:20 +08:00
3e9e9673ba 修改README 2022-07-06 10:22:14 +08:00
8b2c3a1905 1.5.2 2022-07-06 10:07:09 +08:00
b87cca719e 优化deepin-terminal在其它发行版的显示 2022-07-05 20:58:46 +08:00
e2385b3511 初步完成打包器的翻新工作 2022-07-05 18:48:37 +08:00
302db1b690 1.5.1 2022-07-04 22:44:04 +08:00
d4f5053c78 打包+改deb 2022-07-03 19:03:41 +08:00
55ebd2b623 1.5.0初稿 2022-07-03 18:38:02 +08:00
c60252ac68 微改,1.4.1准备 2022-07-01 15:16:00 +08:00
f003a29e48 1.4.0 2021-07-27 15:05:19 +08:00
410 changed files with 260788 additions and 616 deletions

0
.idea/.gitignore generated vendored Normal file → Executable file
View File

2
.idea/deepin-wine-run.iml generated Normal file → Executable file
View File

@@ -2,7 +2,7 @@
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Python 3.10" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

0
.idea/inspectionProfiles/profiles_settings.xml generated Normal file → Executable file
View File

2
.idea/misc.xml generated Normal file → Executable file
View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
</project>

0
.idea/modules.xml generated Normal file → Executable file
View File

0
.idea/vcs.xml generated Normal file → Executable file
View File

86
AllInstall.py Executable file
View File

@@ -0,0 +1,86 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
def AddSparkStoreSource():
# Download and install key
os.system("mkdir -p /tmp/spark-store-install")
os.system("wget -O /tmp/spark-store-install/spark-store.asc https://d.store.deepinos.org.cn/dcs-repo.gpg-key.asc")
os.system("sudo gpg --dearmor /tmp/spark-store-install/spark-store.asc")
os.system("cp -f /tmp/spark-store-install/spark-store.asc.gpg /etc/apt/trusted.gpg.d/spark-store.gpg")
# Run apt update to avoid users being fucked up by the non-exist dependency problem
os.system("sudo apt update -o Dir::Etc::sourcelist=\"sources.list.d/sparkstore.list\" -o Dir::Etc::sourceparts=\"-\" -o APT::Get::List-Cleanup=\"0\"")
def InstallSparkWine(wine):
#if os.path.exists("/usr/local/bin/ss-apt-fast"):
#os.system("sudo apt install apt-fast -y")
#os.system(f"sudo ss-apt-fast install \"{wine}\" -y")
#return
#os.system("sudo ss-apt-fast update")
if not os.system("which aptss"):
os.system(f"sudo aptss install \"{wine}\" -y")
elif not os.system("which ss-apt-fast"):
os.system("sudo ss-apt-fast update")
os.system(f"sudo ss-apt-fast install \"{wine}\" -y")
elif not os.system("which apt-fast"):
os.system(f"sudo apt-fast install \"{wine}\" -y")
else:
os.system(f"sudo apt install \"{wine}\" -y")
###################
# 程序功能
###################
print('''
m m "
# # # mmm m mm mmm
" #"# # # #" # #" #
## ##" # # # #""""
# # mm#mm # # "#mm"
''')
print("请保证你能有 root 权限以便安装")
print("如果有请按回车,否则按 [Ctrl+C] 退出", end=' ')
input()
os.system("sudo apt update")
print("请问是否要更新操作系统?[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt upgrade -y")
print("请问是否要安装原版 winewine64[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install wine -y")
print("请问是否要安装 deepin-wine[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install deepin-wine -y")
print("请问是否要安装 deepin-wine5需要安装最新版星火应用商店[Y/N]", end=' ')
choose = input().upper()
print("请问是否要安装 deepin-wine5-stable[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install deepin-wine5-stable -y")
print("请问是否要安装 deepin-wine6-stable[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install deepin-wine6-stable -y")
print("请问是否要安装 spark-wine7-devel需要安装最新版星火应用商店[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
InstallSparkWine("spark-wine7-devel")
print("请问是否要安装 ukylin-wine需要添加 ukylin 源,但因为可能会导致系统问题,将不会自动添加)?[Y/N]", end=" ")
choose = input().upper()
if not choose == "N":
os.system("sudo apt install ukylin-wine -y")
print("全部完成!")

111
AppStore.py Executable file
View File

@@ -0,0 +1,111 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本1.8.0
# 更新时间2022年08月01日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
import sys
import json
import pyquery
import req as requests
import urllib.parse as parse
def CleanTerminal():
os.system("clear")
print('''
mm mmmm m
## mmmm mmmm #" " mm#mm mmm m mm mmm
# # #" "# #" "# "#mmm # #" "# #" " #" #
#mm# # # # # "# # # # # #""""
# # ##m#" ##m#" "mmm#" "mm "#m#" # "#mm"
# #
" "
''')
print("本软件源来自腾讯软件管家,只会下载文件后缀为“.exe”的文件")
print("请输入要搜索的内容如果要结束请输入“exit”或点击右上角“×”关闭")
print("无法保证从这里下载的安装包能正常安装/运行")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装指定应用")
sys.exit()
if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
print("您未指定需要安装的容器和使用的 wine无法继续")
print("参数:")
print("XXX 参数一 参数二")
print("参数一为需要安装的容器参数二为需要使用的wine两个参数位置不能颠倒")
sys.exit()
CleanTerminal()
while True:
search = input(">")
if search.replace(" ", "").replace("\n", "") == "":
continue
if search.lower() == "exit": # 输入“exit”
break # 结束程序
# 获取初步 API
try:
apiReturn = json.loads(requests.get(f"https://s.pcmgr.qq.com/tapi/web/searchcgi.php?type=search&callback=searchCallback&keyword={parse.quote(search)}&page=1&pernum=30").text[:-2][15:])
except:
#traceback.print_exc()
input("无法连接服务器,按回车键继续")
CleanTerminal()
continue
option = 0
downloadUrl = []
if not "list" in apiReturn:
print("没有搜到结果,尝试换一个关键词试试")
input("按回车键继续")
CleanTerminal()
continue
for i in apiReturn["list"]: # 遍历选项
htmlShow = i["xmlInfo"]
url = pyquery.PyQuery(htmlShow)("url").text()
if url[-3:] != "exe": # 格式非 exe忽略
continue
print(option, i["SoftName"], url)
downloadUrl.append(url)
option += 1
if option == 0:
print("没有搜到结果,尝试换一个关键词试试")
input("按回车键继续")
CleanTerminal()
continue
while True:
try:
choose = input("请输入选项编号输入“exit”取消 >")
if choose.lower() == "exit":
choose = choose.lower()
break
choose = int(choose)
except:
print("输入有误,请正确输入编号")
continue
if not 0 <= choose or not choose < len(downloadUrl):
print("输入的值超出范围,请正确输入编号")
continue
break
if choose == "exit":
CleanTerminal()
continue
print("开始下载……")
os.system("rm -rf /tmp/wineappstore")
os.system("mkdir -p /tmp/wineappstore")
os.system(f"aria2c -x 16 -s 16 -d /tmp/wineappstore -o install.exe \"{downloadUrl[choose]}\"")
print("开始安装……")
print(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} /tmp/wineappstore/install.exe")
os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} /tmp/wineappstore/install.exe")
print("安装结束……")
input("按回车键继续……")
CleanTerminal()

140
AutoConfig.py Executable file
View File

@@ -0,0 +1,140 @@
#!/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 traceback
import req as requests
import PyQt5.QtWidgets as QtWidgets
from UI.AutoConfig import *
from Model import *
urlSources = "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/auto"
lists = []
class Connect:
def SearchBotton_Clicked():
nmodel = QtGui.QStandardItemModel(window)
if ui.searchThings.text() == "":
# 显示全部内容
for i in lists:
nmodel.appendRow(QtGui.QStandardItem(i[0]))
ui.searchList.setModel(nmodel)
return
for i in lists:
# 显示筛选的内容
if ui.searchThings.text() in i[0]:
nmodel.appendRow(QtGui.QStandardItem(i[0]))
ui.searchList.setModel(nmodel)
def RunBotton_Clicked():
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
fileName = ""
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
# 下载脚本
things = ""
try:
print(f"{urlSources}/{fileName}")
file = open("/tmp/wine-runner-auto-config.wsh", "w")
things = requests.get(f"{urlSources}/{fileName}").text
file.write(things)
file.close()
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "错误", "无法获取配置文件")
return
# 判断版本以启动对应的解释器
# 做到新旧兼容
if "($" in things:
print("a")
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/ConfigLanguareRunner.py' '/tmp/wine-runner-auto-config.wsh' --system")
# 执行脚本
print(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '/tmp/wine-runner-auto-config.wsh'")
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '/tmp/wine-runner-auto-config.wsh'")
#process = QtCore.QProcess()
#process.start(f"{programPath}/launch.sh", ["deepin-terminal", "-e", "env", f"WINE={wine}", f"WINEPREFIX={wineprefix}", f"{programPath}/ConfigLanguareRunner.py", "/tmp/wine-runner-auto-config.wsh", "--system"])
#process.waitForFinished()
def OpenFile_Triggered():
path = QtWidgets.QFileDialog.getOpenFileName(window, "提示", homePath, "配置文件(*.sh *.wsh);;全部文件(*.*)")
if path[0] == "":
return
try:
things = ""
with open(path) as file:
things = file.read()
except:
traceback.print_exc()
# 判断版本以启动对应的解释器
# 做到新旧兼容
if "($" in things:
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/ConfigLanguareRunner.py' '{path[0]}' --system")
# 执行脚本
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '{path[0]}'")
#process = QtCore.QProcess()
#process.start(f"{programPath}/launch.sh", ["deepin-terminal", "-e", "env", f"WINE={wine}", f"WINEPREFIX={wineprefix}", f"{programPath}/ConfigLanguareRunner.py", path[0], "--system"])
#process.waitForFinished()
# 读取文本文档
def readtxt(path):
f = open(path, "r") # 设置文件对象
str = f.read() # 获取内容
f.close() # 关闭文本对象
return str # 返回结果
if __name__ == "__main__":
homePath = os.path.expanduser('~')
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"]
wine = "deepin-wine6-stable"
wineprefix = f"{homePath}/.wine"
try:
wine = sys.argv[1]
wineprefix = sys.argv[2]
except:
pass
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(window)
window.setWindowTitle(f"Wine 运行器 {version}——容器自动配置部署脚本")
window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg"))
window.show()
# 连接信号和槽
ui.saerchBotton.clicked.connect(Connect.SearchBotton_Clicked)
ui.runBotton.clicked.connect(Connect.RunBotton_Clicked)
ui.openFile.triggered.connect(Connect.OpenFile_Triggered)
ui.exitProgram.triggered.connect(window.close)
# 解析云列表
try:
# 获取列表
lists = json.loads(requests.get(f"{urlSources}/list.json").text)
# 解释列表并显示在 GUI 上
nmodel = QtGui.QStandardItemModel(window)
for i in lists:
nmodel.appendRow(QtGui.QStandardItem(i[0]))
ui.searchList.setModel(nmodel)
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "提示", "无法连接服务器")
app.exec_()

13
AutoShell/command/bat Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/changeversion Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/createbotton Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/disbledopengl Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/download Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/enabledopengl Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/error Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/info Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/installdll Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/installdxvk Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/installfont Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/installgecko Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/installmono Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/installmsxml Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/installnet Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/installvcpp Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/pause Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/reg Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/stopdll Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/taskmgr Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/thank Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/version Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/warning Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/winecfg Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

13
AutoShell/command/winver Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))

75
AutoShell/main.py Executable file
View File

@@ -0,0 +1,75 @@
#!/usr/bin/env python3
import os
import sys
import time
import json
import platform
# 读取文本文档
def readtxt(path):
f = open(path, "r") # 设置文件对象
str = f.read() # 获取内容
f.close() # 关闭文本对象
return str # 返回结果
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(f"{programPath}/../information.json"))
version = information["Version"]
thankText = ""
for i in information["Thank"]:
thankText += f"{i}\n"
programEnv = [
["WINEPREFIX", f"{os.path.expanduser('~')}/.wine"],
["WINE", "deepin-wine6-stable"],
["DANGER", "0"],
["PROGRAMPATH", programPath],
["VERSION", version],
["THANK", thankText.replace("\n", "\\n")],
["MAKER", "gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["COPYRIGHT", f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["PLATFORM", platform.system()],
["DEBUG", str(int("--debug" in sys.argv))]
]
'''programEnv = [
["($WINEPREFIX)", f"{os.path.expanduser('~')}/.wine"],
["($WINE)", "deepin-wine6-stable"],
["($DANGER)", "0"],
["($HOME)", os.path.expanduser('~')],
["($PROGRAMPATH)", programPath],
["($VERSION)", version],
["($THANK)", thankText],
["($MAKER)", "gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["?", "0"],
["PLATFORM)", platform.system()],
["DEBUG)", str(int("--debug" in sys.argv))]
]'''
optionAll = 0
if "--debug" in sys.argv:
optionAll += 1
if "--system" in sys.argv:
programEnv.append(["DANGER", "1"])
optionAll += 1
if os.getenv("WINE") != None:
programEnv.append(["WINE", os.getenv("WINE")])
if os.getenv("WINEPREFIX") != None:
programEnv.append(["WINEPREFIX", os.getenv("WINEPREFIX")])
# 生成可以使用的参数
commandEnv = ""
for i in programEnv:
commandEnv += f"{i[0]}=\"{i[1]}\" "
commandEnv += f"PATH=\"{programPath}/command:$PATH\" "
if len(sys.argv) - optionAll < 2:
print("Wine 运行器自动配置文件解析器交互环境(基于 Bash")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("--------------------------------------------------------------")
os.system(f"{commandEnv} bash ")
exit()
command = ""
for i in sys.argv[1:]:
command += f"\"{i}\" "
print("Wine 运行器自动配置文件解析器(基于 Bash")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("--------------------------------------------------------------")
os.system(f"{commandEnv} bash {command}")

BIN
BeCyIconGrabber.exe Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,41 @@
{
"installdll": "安装指定 dll 在指定容器\n参数数量1\n参数介绍dll名称或在从互联网获取DLL工具的编号如 7012 xolehlp.dll 平台2003 架构64 的 7012",
"stopdll": "不允许指定 dll/exe 运行\n参数数量1\n参数介绍dll/exe 名称,如 example.exe",
"installfont": "安装指定字体到指定容器\n参数数量1\n在字体商店的编号如 5 msyhbd.ttc 的 5",
"installsparkcorefont": "安装星火应用商店的“微软核心字体”\n参数数量0\n参数介绍无",
"installmono": "安装最新版本的 mono 到指定容器\n参数数量0\n参数介绍无",
"installgecko": "安装最新版本的 gecko 到指定容器\n参数数量0\n参数介绍无",
"installvcpp": "安装指定的 VCPP 运行库到指定容器\n参数数量1\n参数介绍在安装 Visual Studio C++ 工具的编号,如 10 Visual Studio C++ 2015、2017、2019 和 2022 X64 的 10",
"installnet": "安装指定的 .net framework 运行库到指定容器\n参数数量1\n参数介绍在安装 .net framework 工具的编号,如 3 .net framework 4.5.1 Offline Installer 的 3",
"installmsxml": "安装指定的 MSXML 运行库到指定容器\n参数数量1\n参数介绍在安装 MSXML 工具的编号,如 1、MSXML 4.0 SP3 的 1",
"echo": "显示内容\n参数数量≥1\n参数介绍接要显示的内容",
"info": "显示提示对话框\n参数数量2\n参数介绍标题+显示内容",
"error": "显示错误对话框\n参数数量2\n参数介绍标题+显示内容",
"warning": "显示警告对话框\n参数数量2\n参数介绍标题+显示内容",
"exit": "退出程序\n参数数量0\n参数介绍无",
"bat": "执行 cmd 命令在 Wine 容器内(在 Windows 将在系统执行命令)\n参数数量≥1\n参数介绍接要执行的命令",
"bash": "执行 bash 命令(在 Windows 系统将执行 cmd 命令)\n参数数量≥1\n参数介绍接要执行的命令",
"version": "显示解释器版本Wine 运行器版本)\n参数数量0\n参数介绍无",
"thank": "显示谢明列表\n参数数量0\n参数介绍无",
"pause": "按回车键后继续\n参数数量0\n参数介绍无",
"download": "使用 aria2 下载文件\n参数数量≥1 && ≤3\n参数介绍下载URL+保存在的文件夹+保存的文件名",
"installdxvk": "安装 dxvk 到指定容器\n参数数量0\n参数介绍无",
"createbotton": "在指定目录创建容器\n参数数量0\n参数介绍无",
"reg": "导入 .reg 文件\n参数数量0\n参数介绍reg 文件路径",
"enabledopengl": "开启 OpenGL\n参数数量0\n参数介绍无",
"disbledopengl": "关闭 OpenGL\n参数数量0\n参数介绍无",
"winecfg": "显示“Wine 设置”\n参数数量0\n参数介绍无",
"winver": "显示“关于 Wine”\n参数数量0\n参数介绍无",
"changeversion": "更改 Wine 容器系统版本(未实现)\n参数数量无\n参数介绍无",
"cat": "显示指定文件只支持显示编码为UTF-8的文件\n参数数量1\n参数介绍无",
"enabledhttpproxy": "设置指定容器代理\n参数数量2\n参数介绍代理服务器地址+端口",
"disbledhttpproxy": "禁用指定容器代理\n参数数量0\n参数介绍无",
"enabledwinecrashdialog": "启用 Wine 容器程序崩溃提示窗口\n参数数量0\n参数介绍无",
"disbledwinecrashdialog": "启用 Wine 容器程序崩溃提示窗口\n参数数量0\n参数介绍无",
"disbledWinebottlecreatelink": "禁止 Wine 容器生成快捷方式\n参数数量0\n参数介绍无",
"enabledWinebottlecreatelink": "允许 Wine 容器生成快捷方式\n参数数量0\n参数介绍无",
"killall": "杀死指定进程\n参数数量1\n参数介绍进程名",
"control": "打开控制面板\n参数数量0\n参数介绍无",
"taskmgr": "打开任务管理器\n参数数量0\n参数介绍无",
"killallwineserver": "杀死所有 Wine 程序\n参数数量0\n参数介绍无"
}

584
ConfigLanguareRunner.py Executable file
View File

@@ -0,0 +1,584 @@
#!/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 time
import json
import platform
import traceback
import subprocess
import PyQt5.QtWidgets as QtWidgets
# 读取文本文档
def readtxt(path):
f = open(path, "r") # 设置文件对象
str = f.read() # 获取内容
f.close() # 关闭文本对象
return str # 返回结果
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"]
thankText = ""
helpList = json.loads(readtxt(f"{programPath}/ConfigLanguareRunner-help.json"))
for i in information["Thank"]:
thankText += f"{i}\n"
programEnv = [
["($WINEPREFIX)", f"{os.path.expanduser('~')}/.wine"],
["($WINE)", "deepin-wine6-stable"],
#["($DANGER)", "0"],
["($DANGER)", "1"],
["($HOME)", os.path.expanduser('~')],
["($PROGRAMPATH)", programPath],
["($VERSION)", version],
["($THANK)", thankText],
["($MAKER)", "gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["($?)", "0"],
["($PLATFORM)", platform.system()],
["($DEBUG)", "1"]
#["($DEBUG)", str(int("--debug" in sys.argv))]
]
readOnlyEnv = [
"($DANGER)",
"($HOME)",
"($PROGRAMPATH)",
"($VERSION)",
"($THANK)",
"($MAKER)",
"($COPYRIGHT)",
"($?)",
"($SYSTEM)",
"($DEBUG)"
]
def Debug():
if "--debug" in sys.argv:
traceback.print_exc()
class Command():
# 有风险的命令
dangerCommand = [
"bash",
"bat",
"download",
"reg"
]
# 可以被使用的命令
commandList = [
"installdll",
"installfont",
"installsparkcorefont",
"installmono",
"installgecko",
"installvcpp",
"installnet",
"installmsxml",
"echo",
"info",
"error",
"warning",
"exit",
"bash",
"bat",
"version",
"thank",
"pause",
"download",
"installdxvk",
"createbotton",
"reg",
"enabledopengl",
"disbledopengl",
"winecfg",
"winver",
"changeversion",
"stopdll",
"cat",
"taskmgr",
"control",
"killall",
"killallwineserver",
"enabledhttpproxy",
"disbledhttpproxy",
"enabledwinecrashdialog",
"disbledwinecrashdialog",
"disbledWinebottlecreatelink",
"enabledWinebottlecreatelink"
]
def __init__(self, commandString: str) -> None:
self.commandString = commandString
# 解析器
# 命令字符串转可供解析的列表
def GetCommandList(self) -> list:
shellList = []
shellFirstShell = self.commandString.split("\n")
# 转换成可以执行的数组
for l in range(0, len(shellFirstShell)):
i = shellFirstShell[l]
# 判断有没有注释
if "#" in i:
# 忽略注释
i = i[:i.index("#")]
# 删除前后空格
i = i.strip()
# 如果是空行
if i == "":
# 忽略此行,此行不做处理
continue
# 空格转义
i = i.replace("\\ ", "@Space@")
# 解析
i = i.split()
# 判断是否为合法的参数,否则提示并忽略
if not i[0] in self.commandList and i[0][0] != "(":
print(f"{l + 1}命令{i[0]}不存在,忽略")
programEnv[9][1] = "-2"
continue
if programEnv[2][1] == "0" and i[0] in self.dangerCommand:
print(f"{l + 1}命令{i[0]}目前解析器不允许运行,忽略")
print("如果需要运行可以在配置面板开启“允许修改系统”选项针对GUI用户")
print("或添加参数 --system终端调用运行用户")
programEnv[9][1] = "-1"
continue
rightList = []
for k in i:
# 处理符号转义
rightList.append(k.replace("@Space@", " ").replace("\\n", "\n").replace("\\r", "\r"))
shellList.append(rightList)
return shellList
# 运行器
class Run():
close = False
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
def Exit(self):
self.close = True
return 0
def InstallDll(self) -> int:
import InstallDll
# 如果是数字
number = False
try:
int(self.command[1])
number = True
except:
pass
if number:
return InstallDll.Download(self.wineBottonPath, InstallDll.GetNameByNumber(int(self.command[1])), InstallDll.GetUrlByNumber(int(self.command[1])), self.wine)
return InstallDll.Download(self.wineBottonPath, self.command[1], InstallDll.GetUrlByName(self.command[1]), self.wine)
def InstallDxvk(self):
if not os.path.exists(f"{programPath}/dxvk"):
if os.system(f"7z x \"{programPath}/dxvk.7z\" -o\"{programPath}\""):
print("错误:无法解压资源")
return 1
os.remove(f"{programPath}/dxvk.7z")
return os.system(f"env 'WINE={self.wine}' 'WINE64={self.wine}' 'WINEPREFIX={self.wineBottonPath}' bash '{programPath}/dxvk/auto.sh' install")
def Thank(self) -> int:
for i in information["Thank"]:
print(i)
return 0
def InstallFont(self) -> int:
import InstallFont
return InstallFont.Download(self.wineBottonPath, int(self.command[1]))
def InstallMono(self) -> int:
return os.system(f"ENTERNOTSHOW=0 '{self.programPath}/InstallMono.py' '{self.wineBottonPath}' '{self.wine}' mono")
def InstallGecko(self) -> int:
return os.system(f"ENTERNOTSHOW=0 '{self.programPath}/InstallMono.py' '{self.wineBottonPath}' '{self.wine}' gecko")
def InstallVCPP(self) -> int:
import InstallVisualCPlusPlus
return InstallVisualCPlusPlus.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def InstallNet(self) -> int:
import InstallNetFramework
return InstallNetFramework.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def InstallMsxml(self) -> int:
import InstallMsxml
return InstallMsxml.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def Info(self) -> int:
QtWidgets.QMessageBox.information(None, self.command[1], self.command[2])
return 0
def StopDll(self) -> int:
os.system(f"WINEPREFIX='{self.wineBottonPath}' '{self.wine}' reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(self.command[1])[0]} /f")
def CreateBotton(self):
self.command = ["bat", "exit"]
self.Bat()
return 0
def InstallSparkCoreFont(self):
if not os.system("which aptss"):
# 最新版本星火应用商店处理
os.system("pkexec bash aptss ssupdate")
return os.system("pkexec bash aptss install ms-core-fonts")
if not os.system("which ss-apt-fast"):
# 稍久的版本
os.system("pkexec ss-apt-fast update")
return os.system("pkexec bash ss-apt-fast install ms-core-fonts")
# 不知道什么版本的处理方法
if not os.system("which apt-fast"):
# 稍久的版本
os.system("pkexec apt-fast update")
return os.system("pkexec apt-fast install ms-core-fonts")
os.system("pkexec apt update")
return os.system("pkexec apt install ms-core-fonts")
def Echo(self) -> int:
del self.command[0]
print(" ".join(self.command))
return 0
def Warning(self):
QtWidgets.QMessageBox.warning(None, self.command[1], self.command[2])
return 0
def Error(self):
QtWidgets.QMessageBox.critical(None, self.command[1], self.command[2])
return 0
def Bash(self):
command = ""
for i in self.command[1:]:
command += f"'{i}' "
return os.system(command)
def Bat(self) -> int:
# Windows 直接转换为以 cmd 运行
if platform.system() == "Windows":
# 直接调用 Bash 函数
return self.Bash()
command = ["WINEPREFIX='($WINEPREFIX)'", "($WINE)"]
for i in programEnv:
for k in range(len(command)):
command[k] = command[k].replace(i[0], i[1])
for i in self.command[1:]:
command.append(i)
commandStr = command[0] + " "
for i in command[1:]:
commandStr += f"'{i}' "
return os.system(commandStr)
def Version(self):
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
return 0
def Pause(self) -> int:
input("按回车键继续……")
return 0
def Download(self) -> int:
command = f"aria2c -x 16 -s 16 -c '{self.command[1]}' "
try:
command += f"-d '{self.command[2]}' "
command += f"-o '{self.command[3]}' "
except:
pass
return os.system(command)
def Reg(self) -> int:
self.command = ["bat", "regedit", "/s", self.command[1]]
return self.Bat()
def EnabledOpenGl(self) -> int:
self.command = ["reg", f"z:{programPath}/EnabledOpengl.reg"]
return self.Reg()
def DisbledOpenGl(self) -> int:
self.command = ["reg", f"z:{programPath}/DisabledOpengl.reg"]
return self.Reg()
def Winver(self):
self.command = ["bat", "winver"]
return self.Bat()
def Winecfg(self):
self.command = ["bat", "winecfg"]
return self.Bat()
def ChangeVersion(self):
# 判断是否为正确的版本
if not os.path.exists(f"{programPath}/ChangeWineBottonVersion/{self.command[1]}.reg"):
print("错误:您选择的版本错误,目前只支持以下版本")
for i in os.listdir(f"{programPath}/ChangeWineBottonVersion"):
print(i.replace(".reg", ""), end=" ")
print()
return 1
self.command = ["reg", f"z:/{programPath}/ChangeWineBottonVersion/{self.command[1]}.reg"]
return self.Reg()
def Cat(self):
try:
file = open(self.command[1], "r")
print(file.read())
file.close()
except:
print("文件读取错误")
Debug()
def Taskmgr(self):
self.command = ["bat", "taskmgr"]
return self.Bat()
def Control(self):
self.command = ["bat", "control"]
return self.Bat()
def Killall(self):
os.system(f"killall -9 {self.command[1]}")
def KillallWineServer(self):
command = ["WINEPREFIX='($WINEPREFIX)'", "($WINE)", "-k"]
for i in programEnv:
for k in range(len(command)):
command[k] = command[k].replace(i[0], i[1])
if "box86" in command[1] or "exagear" in command[1] or "box64" in command[1]:
print("不支持此 Wine")
return 1
if os.path.exists(command[1]):
# 文件存在
command[1] = f"{os.path.dirname(command[1])}/wineserver"
else:
# 读 which
command[1] = f"{os.path.dirname(subprocess.getoutput(f'which {command[1]}').strip())}/wineserver"
commandStr = command[0] + " "
for i in command[1:]:
commandStr += f"'{i}' "
return os.system(commandStr)
def EnabledWineBottleCreateLink(self):
self.command = ["bat", "reg", "delete", "HKEY_CURRENT_USER\Software\Wine\DllOverrides", "/v", "winemenubuilder.exe", "/f"]
self.Bat()
def DisbledWineBottleCreateLink(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\DllOverrides", "/v", "winemenubuilder.exe", "/f"]
self.Bat()
def DisbledWineCrashDialog(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\WineDbg", "/v", "ShowCrashDialog", "/t", "REG_DWORD", "/d", "00000000", "/f"]
self.Bat()
def EnabledWineCrashDialog(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\WineDbg", "/v", "ShowCrashDialog", "/t", "REG_DWORD", "/d", "00000001", "/f"]
self.Bat()
def EnabledHttpProxy(self):
proxyServerAddress = self.command[1]
port = self.command[2]
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "00000001", "/f"]
self.Bat()
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyServer", "/d", f"{proxyServerAddress}:{port}", "/f"]
self.Bat()
def DisbledHttpProxy(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "00000000", "/f"]
self.Bat()
# 可以运行的命令的映射关系
# 可以被使用的命令的映射
commandList = {
"installdll": InstallDll,
"installfont": InstallFont,
"installsparkcorefont": InstallSparkCoreFont,
"installmono": InstallMono,
"installgecko": InstallGecko,
"installvcpp": InstallVCPP,
"installnet": InstallNet,
"installmsxml": InstallMsxml,
"echo": Echo,
"info": Info,
"warning": Warning,
"error": Error,
"exit": Exit,
"bash": Bash,
"bat": Bat,
"version": Version,
"thank": Thank,
"pause": Pause,
"download": Download,
"installdxvk": InstallDxvk,
"createbotton": CreateBotton,
"reg": Reg,
"enabledopengl": EnabledOpenGl,
"disbledopengl": DisbledOpenGl,
"winecfg": Winecfg,
"winver": Winver,
"changeversion": ChangeVersion,
"stopdll": StopDll,
"cat": Cat,
"taskmgr": Taskmgr,
"control": Control,
"killallwineserver": KillallWineServer,
"enabledhttpproxy": EnabledHttpProxy,
"disbledhttpproxy": DisbledHttpProxy,
"enabledwinecrashdialog": EnabledWineCrashDialog,
"disbledwinecrashdialog": DisbledWineCrashDialog,
"disbledWinebottlecreatelink": DisbledWineBottleCreateLink,
"enabledWinebottlecreatelink": EnabledWineBottleCreateLink
}
# 参数数列表
commandInfo = {
"killall": [1],
"installdll": [1],
"installfont": [1],
"installsparkcorefont": [0],
"installmono": [0],
"installgecko": [0],
"installvcpp": [1],
"installnet": [1],
"installmsxml": [1],
"echo": [1],
"info": [2],
"warning": [2],
"error": [2],
"exit": [0],
"bash": [1],
"bat": [1],
"version": [0],
"thank": [0],
"pause": [0],
"download": [1],
"installdxvk": [0],
"createbotton": [0],
"reg": [1],
"enabledopengl": [0],
"disbledopengl": [0],
"winecfg": [0],
"winver": [0],
"changeversion": [1],
"stopdll": [1],
"cat": [1],
"taskmgr": [0],
"control": [0],
"killallwineserver": [0],
"enabledhttpproxy": [2],
"disbledhttpproxy": [0],
"enabledwinecrashdialog": [0],
"disbledwinecrashdialog": [0],
"disbledWinebottlecreatelink": [0],
"enabledWinebottlecreatelink": [0]
}
windowsUnrun = [
"createbotton",
"installdll",
"installmono",
"installgecko",
"winecfg",
"stopdll",
"changeversion",
"enabledopengl",
"disbledopengl",
"installdxvk",
"installfont",
"installsparkcorefont"
]
# 解析
def __init__(self, command: list, wineBottonPath: str, wine: str) -> int:
self.wineBottonPath = wineBottonPath
self.wine = wine
for i in command:
self.command = i
# 变量解析
if self.command[0][0] == "(" and "=" in self.command[0]:
env = i[0][: i[0].index("=")]
value = i[0][i[0].index("=") + 1:]
# 判断是不是只读变量
if env in readOnlyEnv:
print(f"运行命令{' '.join(self.command)}出现错误")
print(f"变量 {env} 只读,无法修改,忽略")
continue
change = False
for k in range(len(programEnv)):
# 修改变量
if env == programEnv[k][0]:
programEnv[k][1] = value
change = True
break
if not change:
# 添加变量
programEnv.append([f"{env}", value])
continue
# 解析命令是否可以在 Windows 使用(只限在 Windows 系统时)
if platform.system() == "Windows" and i[0] in self.windowsUnrun:
print("此命令不支持在 Windows 上运行")
programEnv[9][1] = "-5"
continue
# 获取程序帮助信息
try:
if i[1] == "--help":
print(helpList[i[0]].replace("\\n", "\n"))
continue
except:
pass
# 正常命令解析
if len(i) -1 < self.commandInfo[i[0]][0]:
print("参数不足")
programEnv[9][1] = "-3"
continue
# 替换环境变量
for a in range(1, len(i)):
for b in programEnv:
if b[0] in i[a]:
i[a] = i[a].replace(b[0], b[1])
commandReturn = self.commandList[i[0]](self)
if commandReturn:
print(f"运行命令{' '.join(self.command)}出现错误")
programEnv[9][1] = str(commandReturn)
if self.close:
break
app = QtWidgets.QApplication(sys.argv)
if __name__ == "__main__":
optionAll = 0
if "--debug" in sys.argv:
optionAll += 1
if "--system" in sys.argv:
programEnv[2][1] = "1"
optionAll += 1
if os.getenv("WINE") != None:
programEnv[1][1] = os.getenv("WINE")
if os.getenv("WINEPREFIX") != None:
programEnv[0][1] = os.getenv("WINEPREFIX")
if len(sys.argv) - optionAll < 2:
print("Wine 运行器自动配置文件解析器交互环境")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("--------------------------------------------------------------")
while True:
commandLine = input(">")
if commandLine == "exit":
break
com = Command(commandLine)
com.Run(com.GetCommandList(), programEnv[0][1], programEnv[1][1])
exit()
# 读取文件
try:
file = open(sys.argv[1], "r")
com = Command(file.read())
file.close()
except:
print("错误:无法读取该文件,无法继续")
sys.exit(1)
print("Wine 运行器自动配置文件解析器")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("--------------------------------------------------------------")
com.Run(com.GetCommandList(), programEnv[0][1], programEnv[1][1])

BIN
DisabledOpengl.reg Executable file

Binary file not shown.

BIN
EnabledOpengl.reg Executable file

Binary file not shown.

329
Icon/360.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

81
Icon/BadStar.svg Normal file
View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="256"
height="256"
viewBox="0 0 67.733331 67.733331"
version="1.1"
id="svg3719"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="BadStar.svg">
<defs
id="defs3713" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="2.1794989"
inkscape:cy="208.04937"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1600"
inkscape:window-height="836"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata3716">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-229.26667)">
<path
sodipodi:type="star"
id="path3737"
sodipodi:sides="5"
sodipodi:cx="151.91904"
sodipodi:cy="166.98949"
sodipodi:r1="158.97482"
sodipodi:r2="79.487411"
sodipodi:arg1="-0.32926921"
sodipodi:arg2="0.29904932"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 302.35356,115.58473 -74.475,74.82269 19.41613,103.76885 L 153.12004,246.46782 60.429914,297 76.701777,192.69187 -6.9307488e-6,120.15362 104.23121,103.39609 149.51703,8.0328112 197.6636,101.98423 Z"
inkscape:transform-center-x="0.16628225"
inkscape:transform-center-y="-3.3924633"
style="fill:none;stroke-width:11.54627375;stroke:#000000;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.22402028,0,0,0.234398,-5.3781204e-6,227.3838)" />
<path
style="fill:none;stroke:#db0000;stroke-width:4.17411947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 4.6835638,237.71432 60.365607,288.71648"
id="path4588"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

342
Icon/QQ.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 28 KiB

76
Icon/Star.svg Normal file
View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="256"
height="256"
viewBox="0 0 67.733331 67.733331"
version="1.1"
id="svg3719"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="Star.svg">
<defs
id="defs3713" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="2.1794989"
inkscape:cy="208.04937"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1600"
inkscape:window-height="836"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata3716">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-229.26667)">
<path
sodipodi:type="star"
id="path3737"
sodipodi:sides="5"
sodipodi:cx="151.91904"
sodipodi:cy="166.98949"
sodipodi:r1="158.97482"
sodipodi:r2="79.487411"
sodipodi:arg1="-0.32926921"
sodipodi:arg2="0.29904932"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 302.35356,115.58473 -74.475,74.82269 19.41613,103.76885 L 153.12004,246.46782 60.429914,297 76.701777,192.69187 -6.9307488e-6,120.15362 104.23121,103.39609 149.51703,8.0328112 197.6636,101.98423 Z"
inkscape:transform-center-x="0.15367302"
inkscape:transform-center-y="-3.1244574"
style="fill:#ffff00;stroke:#000000;stroke-width:11.54627419;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(0.20703169,0,0,0.21588,2.5808914,230.58088)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

289
Icon/TIM.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

1275
Icon/UltraISO.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 91 KiB

76
Icon/UnStar.svg Normal file
View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="256"
height="256"
viewBox="0 0 67.733331 67.733331"
version="1.1"
id="svg3719"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="UnStar.svg">
<defs
id="defs3713" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="-87.142857"
inkscape:cy="560"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1600"
inkscape:window-height="836"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata3716">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-229.26667)">
<path
sodipodi:type="star"
id="path3737"
sodipodi:sides="5"
sodipodi:cx="151.91904"
sodipodi:cy="166.98949"
sodipodi:r1="158.97482"
sodipodi:r2="79.487411"
sodipodi:arg1="-0.32926921"
sodipodi:arg2="0.29904932"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 302.35356,115.58473 -74.475,74.82269 19.41613,103.76885 L 153.12004,246.46782 60.429914,297 76.701777,192.69187 -6.9307488e-6,120.15362 104.23121,103.39609 149.51703,8.0328112 197.6636,101.98423 Z"
inkscape:transform-center-x="0.16628225"
inkscape:transform-center-y="-3.3924633"
style="fill:none;stroke-width:11.54627375;stroke:#000000;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.22402028,0,0,0.234398,-5.3781204e-6,227.3838)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

328
Icon/Unknown.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

340
Icon/cmd.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

1012
Icon/compressor.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 37 KiB

326
Icon/internet explorer.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

723
Icon/wine.svg Normal file
View File

@@ -0,0 +1,723 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="266.66666"
height="417.33334"
viewBox="0 0 266.66666 417.33334"
sodipodi:docname="wine.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="860"
id="namedview4"
showgrid="false"
inkscape:zoom="0.56549519"
inkscape:cx="133.33333"
inkscape:cy="208.66667"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<image
width="266.66666"
height="417.33334"
preserveAspectRatio="none"
style="image-rendering:optimizeQuality"
xlink:href="data:image/png;base64,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
R7+HQhhyUwAAAABJRU5ErkJggg==
"
id="image10"
x="0"
y="0" />
<g
id="g730">
<path
style="fill:#d0d2ce;stroke-width:1.33333337"
d="m 92.666664,412.49675 c -22.954171,-3.58098 -30.778596,-14.60612 -19.048086,-26.84 4.967275,-5.18042 20.856717,-13.64206 31.618922,-16.8381 9.63398,-2.86098 12.87667,-5.17523 16.09741,-11.4884 C 127.0793,346.07031 126.09469,328.40417 118.36258,304 110.95405,280.6171 107.70677,276.39176 85.800497,261.63046 65.373321,247.86583 54.481644,233.94008 39.304342,202.18196 29.536814,181.74366 21.172665,158.19984 12.591519,126.98943 0.84914549,84.281329 0,79.540524 0,56.690593 V 36.02591 L 6.3333332,31.316358 C 22.14421,19.559175 46.031918,11.006282 73.513517,7.2627761 108.43885,2.505295 124.04993,2.5327026 133.40021,7.367916 c 4.39563,2.2730676 4.37557,2.2159326 13.79431,39.298751 17.07752,67.236453 21.34336,92.791603 21.36661,128.000003 0.0212,32.08644 -1.07559,37.03639 -14.46977,65.30535 -12.64748,26.693 -13.29463,28.86165 -12.33315,41.32976 1.84231,23.89062 9.33001,47.67791 18.1812,57.75884 9.46173,10.77632 9.75123,10.86308 38.72725,11.60605 24.36036,0.62463 26.42043,0.87688 32.66667,4 4.64306,2.32154 6.79736,4.25434 7.09721,6.36754 0.69527,4.89973 -3.79017,14.71264 -8.69261,19.01704 -13.38014,11.74792 -50.36891,24.30446 -88.17432,29.93248 -14.4709,2.15425 -42.095956,3.57402 -48.896946,2.51302 z M 136,374.72287 c 0,-2.32628 -11.7493,-8.26065 -15.47632,-7.81682 -5.10745,0.60822 -7.3272,4.65348 -3.93551,7.17205 C 119.51453,376.25114 136,376.79871 136,374.72287 Z M 51.679691,116.22618 c 1.31558,-0.83517 1.08943,-2.78171 -1.043252,-8.97958 -3.418626,-9.935012 -11.969773,-44.441492 -11.969773,-48.301678 0,-4.109388 -5.652855,-7.58132 -9.22818,-5.667864 -4.083669,2.185514 -4.533761,6.383486 -2.167481,20.215887 1.820376,10.641247 8.179527,37.158905 9.099825,37.946265 0.162709,0.13921 2.395836,1.52009 4.962502,3.06863 4.966883,2.99666 7.634769,3.43974 10.346359,1.71834 z m 30.034051,-6.33491 c 3.403829,-1.1598 8.575868,-4.42532 11.493418,-7.2567 5.628616,-5.46239 17.4595,-24.462697 17.4595,-28.039821 0,-1.170221 -1.41437,-6.282767 -3.14304,-11.361212 C 101.6695,46.035487 91.67234,29.134354 84.620635,24.513898 80.320951,21.696636 73.833983,21.800283 70.58772,24.738111 60.725792,33.663034 60.860693,71.194632 70.871416,103.66667 72.284401,108.25 73.909487,112 74.482719,112 c 0.573234,0 3.827194,-0.94893 7.231023,-2.10873 z"
id="path738"
inkscape:connector-curvature="0" />
<path
style="fill:#b2a3a3;stroke-width:1.33333337"
d="m 88.751799,406.58487 c -7.617476,-1.27485 -13.234381,-4.94736 -13.844536,-9.05197 -0.521841,-3.51051 -0.100306,-3.52907 6.275638,-0.27631 16.170021,8.24934 59.648479,6.0778 102.817099,-5.13518 8.43333,-2.19055 16.83333,-4.36606 18.66666,-4.83444 8.37208,-2.13895 -1.67196,2.3749 -14.66666,6.59129 -33.52208,10.87688 -76.95517,16.43756 -99.248201,12.70661 z M 227.44393,362.84562 c -0.57436,-0.92933 -0.68422,-2.04977 -0.24412,-2.48988 1.19329,-1.19328 2.49436,0.56173 1.84985,2.49527 -0.45163,1.35489 -0.76569,1.35384 -1.60573,-0.005 z m -99.06232,-7.19571 c 3.87166,-10.32902 2.09665,-30.72794 -4.55052,-52.29576 C 116.29709,278.90887 112.23243,273.6048 88.454803,257.1909 67.923297,243.01782 55.322716,226.39615 41.561698,195.33334 29.283254,167.61714 22.38137,145.71014 8.7259167,91.110524 0.34505092,57.600688 -1.018888,49.539947 0.86233554,44.637557 2.2307998,41.071397 4.7174999,48.334351 12.047914,77.307504 c 3.621596,14.314207 6.938303,27.283846 7.370459,28.821426 0.562345,2.00078 1.609649,2.63928 3.683682,2.24579 1.809496,-0.3433 5.972018,1.43921 11.082532,4.74586 7.271452,4.70483 8.446899,6.0906 10.535731,12.42087 4.483581,13.58765 15.098471,34.29834 15.237277,29.72943 0.02332,-0.76768 -2.357119,-8.53816 -5.28987,-17.26772 -3.603481,-10.72606 -4.893993,-16.31022 -3.980445,-17.22377 0.743504,-0.74351 6.05498,-1.75601 11.803278,-2.25 19.053813,-1.63743 28.851909,-8.53477 44.315922,-31.196055 11.60161,-17.001231 11.59935,-16.998534 17.73468,-21.162082 4.00052,-2.714829 6.78859,-3.504585 12.37217,-3.504585 10.9872,0 12.15413,1.776149 18.83408,28.666667 7.65581,30.818885 10.90553,54.101265 10.91311,78.186045 0.009,30.90418 -5.86434,54.13413 -18.59328,73.53018 -6.5956,10.0502 -18.59179,22.28378 -21.85138,22.28378 -1.0441,0 -6.01981,-1.5403 -11.05712,-3.42287 L 106,258.4876 l 6.85795,7.08954 c 7.83141,8.09585 9.42074,10.96145 14.28502,25.7562 5.07668,15.44074 8.79499,33.45173 8.82817,42.76248 0.0317,8.91217 -2.96843,19.4328 -6.31798,22.15492 -1.85149,1.50468 -2.02928,1.42067 -1.27155,-0.60083 z"
id="path736"
inkscape:connector-curvature="0" />
<path
style="fill:#9b1426;stroke-width:1.33333337"
d="M 113.08101,258.1579 C 97.91614,251.53683 90.951246,247.10835 81.533661,238.09918 61.040348,218.4946 43.052986,181.51824 28.722614,129.53628 c -2.698457,-9.78838 -4.593223,-18.11011 -4.210591,-18.49275 0.985491,-0.98549 8.984212,3.89018 10.318669,6.28981 0.611722,1.1 3.283159,8 5.936528,15.33333 9.692557,26.78812 31.088074,65.49743 40.135469,72.61411 4.899785,3.85417 7.810281,3.0265 7.586061,-2.15728 -0.09785,-2.2623 -4.466007,-13.49614 -9.707008,-24.9641 -11.297212,-24.7197 -22.991449,-54.07473 -22.110033,-55.50089 0.34451,-0.55743 4.084311,-1.42856 8.310669,-1.93584 17.087851,-2.05102 28.38197,-10.47289 42.605302,-31.770191 14.71566,-22.034469 21.57421,-26.896571 33.43538,-23.702691 5.55786,1.496573 5.60016,1.555742 8.90946,12.460297 7.82894,25.797325 13.52126,56.611385 14.86965,80.493385 1.51624,26.85516 -3.34305,55.05813 -12.66973,73.53417 -7.33574,14.532 -21.70942,30.96222 -27.04348,30.91275 -0.9656,-0.009 -6.36917,-2.03057 -12.00795,-4.49249 z"
id="path734"
inkscape:connector-curvature="0" />
<path
style="fill:#7a071a;stroke-width:1.33333337"
d="M 114.66666,256.932 C 98.161967,249.82235 93.686663,246.99467 83.252455,237.08319 67.880629,222.48146 56.883067,204.1257 44.439663,172.30172 38.120814,156.14127 26.303457,116.32766 27.145933,114.03776 c 0.576986,-1.56829 0.97237,-0.67005 9.667239,21.96224 12.726929,33.12754 32.614284,68.15434 48.732922,85.83134 6.601568,7.23982 7.657218,7.88096 13.97599,8.4881 5.917146,0.56856 7.247636,0.2331 9.907356,-2.498 1.68977,-1.73513 6.67124,-4.65477 11.06993,-6.4881 6.60079,-2.75115 8.61864,-4.39286 11.55327,-9.39962 6.72084,-11.46641 8.59316,-19.28594 8.60402,-35.93372 0.012,-18.71774 -1.03176,-24.47392 -5.64641,-31.13286 -10.10683,-14.58417 -25.83019,-22.78883 -37.669524,-19.65648 -8.154314,2.1574 -15.275519,7.07391 -19.506525,13.4674 C 75.897155,141.60512 73.799577,144 73.172912,144 c -1.158986,0 -10.506247,-17.61128 -10.506247,-19.79494 0,-0.65716 2.895971,-1.57901 6.435492,-2.04854 8.591852,-1.13975 18.450909,-6.22209 24.930943,-12.85188 2.915127,-2.9825 10.10023,-12.426382 15.9669,-20.986408 5.86666,-8.560025 12.70539,-16.933456 15.19717,-18.607623 5.32142,-3.575328 16.11668,-4.20628 19.20073,-1.122228 2.36203,2.362031 9.584,28.059555 13.72058,48.821179 11.77353,59.09167 3.72384,107.28883 -22.57906,135.19114 -4.52764,4.80296 -8.82622,8.71156 -9.55241,8.6858 -0.72619,-0.0258 -5.82035,-1.9853 -11.32035,-4.3545 z"
id="path732"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 57 KiB

338
Icon/微信.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

267
Icon/迅雷.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

133
InstallDll.py Executable file
View File

@@ -0,0 +1,133 @@
#!/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 traceback
import req as requests
def exit():
if __name__ == "__main__":
input("按回车键退出")
sys.exit()
sys.exit()
# 获取云列表
url = "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/dlls"
print("获取列表中……", end="")
try:
lists = json.loads(requests.get(f"{url}/list.json").text)
except:
print("\r列表获取失败!")
exit()
print("\r列表获取成功!")
def GetUrlByNumber(dllID: int) -> str:
dllName = lists[dllID][0]
return f"{url}/{lists[int(dllID)][1]}/{lists[int(dllID)][2]}/{lists[int(dllID)][0]}"
def GetNameByNumber(dllID: int) -> str:
return lists[dllID][0]
def GetUrlByName(dllName: str):
for i in range(0, len(lists)):
if dllName == lists[i][0]:
return f"{url}/{lists[i][1]}/{lists[i][2]}/{lists[i][0]}"
def Download(wineBotton, dllName, urlPart, wine: str) -> bool:
try:
os.remove(f"{wineBotton}/drive_c/windows/system32/{dllName}")
except:
pass
os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/system32' -o '{dllName}' '{urlPart}'")
#print(f"WINEPREFIX='{wineBotton}' {wine} reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(dllName)[0]} /d native /f")
os.system(f"WINEPREFIX='{wineBotton}' {wine} reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(dllName)[0]} /d native /f")
return 0
def exit():
input("按回车键退出")
sys.exit()
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装指定应用")
sys.exit()
if len(sys.argv) <= 1 or sys.argv[1] == "":
print("您未指定需要安装的容器,无法继续")
print("参数:")
print("XXX 参数一")
print("参数一为需要安装的容器")
sys.exit()
print('''
mmmm ""# ""#
# "m # #
# # # #
# # # #
#mmm" "mm "mm
''')
wineBotton = sys.argv[1]
wine = sys.argv[2]
if not os.path.exists(f"{wineBotton}/drive_c/windows/Fonts"):
input("您选择的不是 Wine 容器")
exit()
# 判断是不是 wine 容器
if not os.path.exists(f"{wineBotton}/drive_c/windows/system32"):
print("这不是 Wine 容器")
exit()
# 获取用户希望安装的DLL
while True:
print()
print("您可以输入DLL名称进行搜索输入前面编号或DLL全称即可安装(推荐是编号,可以选系统版本)")
print("输入exit即可退出")
urlPart = ""
while True:
dllName = input(">")
if dllName.lower() == "exit":
exit()
if dllName in lists:
url = dllName
break
try:
dllName = lists[int(dllName)][0]
urlPart = GetUrlByNumber(int(dllName))
f"{url}/{lists[int(dllName)][1]}/{lists[int(dllName)][2]}/{lists[int(dllName)][0]}"
break
except:
pass
right = False
for i in range(0, len(lists)):
if dllName == lists[i][0]:
right = True
urlPart = f"{url}/{lists[i][1]}/{lists[i][2]}/{lists[i][0]}"
break
if dllName in lists[i][0]:
print(i, lists[i][0], f"平台:{lists[i][1]}", f"架构:{lists[i][2]}")
if right:
break
if os.path.exists(f"{wineBotton}/drive_c/windows/system32/{dllName}"):
if input(f"{dllName} 已存在,是否覆盖?(一般不推荐)[Y/N]").upper() == "N":
continue
try:
os.remove(f"{wineBotton}/drive_c/windows/system32/{dllName}")
except:
print("文件移除失败!")
traceback.print_exc()
continue
# 下载 DLL
print(f"正在下载{dllName},请稍后")
print(f"下载链接:{urlPart}")
if Download(wineBotton, dllName, urlPart, wine):
print("下载失败!请重试")

93
InstallFont.py Executable file
View File

@@ -0,0 +1,93 @@
#!/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 shutil
import req as requests
homePath = os.path.expanduser('~')
try:
fontList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/fonts/list.json").text)
except:
fontList = [
["fake_simsun.ttc", "https://gitlink.org.cn/api/attachments/392168", "simsun.ttc", "fake_simsun.ttc会替换容器内的宋体且与 deepin 有问题)"],
["simsun.ttc", "https://gitlink.org.cn/api/attachments/392181", "simsun.ttc", "simsun.ttc"],
["simsunb.ttf", "https://gitlink.org.cn/api/attachments/392180", "simsunb.ttf", "simsunb.ttf"],
["msyh.ttc", "https://gitlink.org.cn/api/attachments/392182", "msyh.ttc", "msyh.ttc"],
["msyhl.ttc", "https://gitlink.org.cn/api/attachments/392184", "msyhl.ttc", "msyhl.ttc"],
["msyhbd.ttc", "https://gitlink.org.cn/api/attachments/392183", "msyhbd.ttc", "msyhbd.ttc"]
]
def Download(wineBotton: str, id: int) -> int:
return os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/Fonts/{fontList[id][2]}' -o '{fontList[id][0]}' \"{fontList[id][1]}\"")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装指定应用")
sys.exit()
if len(sys.argv) <= 1 or sys.argv[1] == "":
print("您未指定需要安装的容器,无法继续")
print("参数:")
print("XXX 参数一")
print("参数一为需要安装的容器")
sys.exit()
while True:
os.system("clear")
print('''
mmmmmm m
# mmm m mm mm#mm mmm
#mmmmm #" "# #" # # # "
# # # # # # """m
# "#m#" # # "mm "mmm"
''')
if not os.path.exists(f"{sys.argv[1]}/drive_c/windows/Fonts"):
input("您选择的不是 Wine 容器,无法继续,按回车键退出")
exit()
for i in range(0, len(fontList)):
print(f"{i} {fontList[i][3]}")
while True:
try:
choose = input("请输入要选择的 字体输入“exit”退出").lower()
if choose == "exit":
break
choose = int(choose)
except:
print("输入错误,请重新输入")
continue
if 0 <= choose and choose < len(fontList):
break
if choose == "exit":
exit()
print(f"您选择了字体 {fontList[choose][0]}")
if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/font/{fontList[choose][0]}"):
print("已经缓存,使用本地版本")
if os.path.exists(f"{sys.argv[1]}/drive_c/windows/Fonts/{fontList[choose][2]}"):
print("字体已存在,覆盖")
shutil.copy(f"{homePath}/.cache/deepin-wine-runner/font/{fontList[choose][0]}", f"{sys.argv[1]}/drive_c/windows/Fonts/{fontList[choose][2]}")
input("安装结束,按回车键继续")
continue
print("开始下载")
os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/font/{fontList[choose][0]}'")
os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/font'")
os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/font' -o '{fontList[choose][0]}' \"{fontList[choose][1]}\"")
if os.path.exists(f"{sys.argv[1]}/drive_c/windows/Fonts/{fontList[choose][2]}"):
print("字体已存在,覆盖")
try:
shutil.copy(f"{homePath}/.cache/deepin-wine-runner/font/{fontList[choose][0]}", f"{sys.argv[1]}/drive_c/windows/Fonts/{fontList[choose][2]}")
except:
print("拷贝失败!")
input("安装结束,按回车键继续")

126
InstallMono.py Executable file
View File

@@ -0,0 +1,126 @@
#!/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 traceback
import pyquery
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装 mono、gecko")
sys.exit()
if len(sys.argv) <= 3 or sys.argv[1] == "" or sys.argv[2] == "" or sys.argv[3] == "":
print("您未指定需要安装 gecko 或者 mono 的容器和使用的 wine无法继续")
print("参数:")
print("XXX 参数一 参数二 参数三 参数四(可略)")
print("参数一为需要安装的容器参数二为需要使用的wine参数三为安装gecko或monogecko/mono参数四为是否缓存可略四个参数位置不能颠倒")
sys.exit()
if sys.argv[3] == "mono":
print('''
m m
## ## mmm m mm mmm
# ## # #" "# #" # #" "#
# "" # # # # # # #
# # "#m#" # # "#m#"
''')
else:
print('''
mmm #
m" " mmm mmm # m mmm
# mm #" # #" " # m" #" "#
# # #"""" # #"# # #
"mmm" "#mm" "#mm" # "m "#m#"
''')
homePath = os.path.expanduser('~')
try:
exitInputShow = int(os.getenv("ENTERNOTSHOW"))
except:
exitInputShow = True
try:
# 获取最新版本的版本号
programVersionList = pyquery.PyQuery(url=f"http://mirrors.ustc.edu.cn/wine/wine/wine-{sys.argv[3]}/")
except:
print("无法连接下载服务器,将使用本地缓存")
if not os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi") or not os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt"):
print("无本地缓存数据,无法进行、结束")
if exitInputShow:
input("按回车键退出")
exit()
file = open(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt", "r")
version = file.read().replace("\n", "")
print("安装版本:", version)
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"")
if exitInputShow:
input("安装结束,按回车键退出")
exit()
programVersion = programVersionList("a:last-child").attr.href
# 获取最新版本安装包的URL
programUrl = pyquery.PyQuery(url=f"http://mirrors.ustc.edu.cn/wine/wine/wine-{sys.argv[3]}/{programVersion}")
programDownloadUrl = ""
programFileName = ""
for i in programUrl("a").items():
if i.attr.href[-4:] == ".msi":
programDownloadUrl = f"http://mirrors.ustc.edu.cn/wine/wine/wine-{sys.argv[3]}/{programVersion}{i.attr.href}"
programFileName = i.attr.href
break
if programDownloadUrl == "":
print("无法获取链接,无法继续")
sys.exit()
print(f"当前选择的程序获取路径:{programDownloadUrl}")
if not os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}"):
os.makedirs(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}")
if len(sys.argv) <= 4:
choice = True
else:
choice = (sys.argv[3] == "1")
if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi") and os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt") and choice:
print("版本号校验")
file = open(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt", "r")
version = file.read().replace("\n", "")
if version == programVersion.replace("\n", ""):
print("缓存版本:", version.replace("/", ""))
print("已经缓存,使用本地版本")
file.close()
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"")
if exitInputShow:
input("安装结束,按回车键退出")
exit()
file = open(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt", "w+")
print("开始下载")
os.system(f"rm -rf \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"")
os.system("mkdir -p /tmp/winegeckomonoinstall")
os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}\" -o install.msi \"{programDownloadUrl}\"")
print("开始安装")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"")
try:
if sys.argv[4] == "1":
print("写入缓存")
file.write(programVersion)
file.close()
else:
print("删除临时文件")
os.system(f"rm -rf \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}\"")
except:
print("写入缓存")
file.write(programVersion)
file.close()
if exitInputShow:
input("安装结束,按回车键退出")

89
InstallMsxml.py Executable file
View File

@@ -0,0 +1,89 @@
#!/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 req as requests
try:
msxmlList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/msxml/list.json").text)
except:
msxmlList = [
["MSXML 4.0 SP2", "https://www.gitlink.org.cn/api/attachments/390679?gfdgd_xi", "msxml6.0.msi"],
["MSXML 4.0 SP3", "https://www.gitlink.org.cn/api/attachments/390678?gfdgd_xi", "msxml4.0SP3.msi"],
["MSXML 6.0", "https://www.gitlink.org.cn/api/attachments/390681?gfdgd_xi", "msxml6_x64.msi"]
]
def Download(wineBotton: str, id: int, wine: str):
os.system(f"aria2c -x 16 -s 16 -d \"/tmp/deepin-wine-runner-msxml/\" -o \"{msxmlList[id][2]}\" \"{msxmlList[id][1]}\"")
os.system(f"WINEPREFIX='{wineBotton}' {wine} msiexec /i \"/tmp/deepin-wine-runner-msxml/{msxmlList[id][2]}\"")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装 MSXML")
sys.exit()
if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
print("您未指定需要安装 MSXML 的容器和使用的 wine无法继续")
print("参数:")
print("XXX 参数一 参数二 参数三(可略)")
print("参数一为需要安装的容器参数二为需要使用的wine参数三为是否缓存可略三个参数位置不能颠倒")
sys.exit()
homePath = os.path.expanduser('~')
print('''
m m mmmm m m m m m
## ## #" " # # ## ## #
# ## # "#mmm ## # ## # #
# "" # "# m""m # "" # #
# # "mmm#" m" "m # # #mmmmm
''')
print("请选择以下的 MSXML 进行安装(不保证能正常安装运行)")
for i in range(0, len(msxmlList)):
print(f"{i}{msxmlList[i][0]}")
while True:
try:
choose = input("请输入要选择要安装的 MSXML输入“exit”退出")
if choose.lower() == "exit":
break
choose = int(choose)
except:
print("输入错误,请重新输入")
continue
if 0 <= choose and choose < len(msxmlList):
break
try:
if choose.lower() == "exit":
exit()
except:
pass
print(f"您选择了 {msxmlList[choose][0]}")
if len(sys.argv) <= 3:
choice = True
else:
choice = (sys.argv[3] == "1")
if os.path.exists(f"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}") and choice:
print("已经缓存,使用本地版本")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
input("安装结束,按回车键退出")
exit()
print("开始下载")
os.system(f"rm -rfv \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
os.system(f"mkdir -p \"{homePath}/.config/deepin-wine-runner/MSXML/\"")
os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.config/deepin-wine-runner/MSXML\" -o \"{msxmlList[choose][2]}\" \"{msxmlList[choose][1]}\"")
print("开始安装")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
input("安装结束,按回车键退出")

112
InstallNetFramework.py Executable file
View File

@@ -0,0 +1,112 @@
#!/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 req as requests
try:
netList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/net/list.json").text)
except:
netList = [
["Microsoft® .NET Framework 1.1 版可转散发套件", "https://download.microsoft.com/download/8/2/7/827bb1ef-f5e1-4464-9788-40ef682930fd/dotnetfx.exe"],
["Microsoft .NET Framework 2.0 Service Pack 1 (x86)", "https://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exe"],
["3.5 SP1 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/b635098a-2d1d-4142-bef6-d237545123cb/2651b87007440a15209cac29634a4e45/dotnetfx35.exe"],
["4.0 Offline Installer", "https://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe"],
["4.5 Web Installer", "https://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe"],
["4.5.1 Offline Installer", "https://download.microsoft.com/download/1/6/7/167F0D79-9317-48AE-AEDB-17120579F8E2/NDP451-KB2858728-x86-x64-AllOS-ENU.exe"],
["4.5.2 Offline Installer", "https://download.microsoft.com/download/E/2/1/E21644B5-2DF2-47C2-91BD-63C560427900/NDP452-KB2901907-x86-x64-AllOS-ENU.exe"],
["4.6 Offline Installer", "https://download.microsoft.com/download/6/F/9/6F9673B1-87D1-46C4-BF04-95F24C3EB9DA/enu_netfx/NDP46-KB3045557-x86-x64-AllOS-ENU_exe/NDP46-KB3045557-x86-x64-AllOS-ENU.exe"],
["4.6.1 Offline Installer", "https://download.microsoft.com/download/E/4/1/E4173890-A24A-4936-9FC9-AF930FE3FA40/NDP461-KB3102436-x86-x64-AllOS-ENU.exe"],
["4.6.2 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/8e396c75-4d0d-41d3-aea8-848babc2736a/80b431456d8866ebe053eb8b81a168b3/ndp462-kb3151800-x86-x64-allos-enu.exe"],
["4.7 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/2dfcc711-bb60-421a-a17b-76c63f8d1907/e5c0231bd5d51fffe65f8ed7516de46a/ndp47-kb3186497-x86-x64-allos-enu.exe"],
["4.7.1 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/4312fa21-59b0-4451-9482-a1376f7f3ba4/9947fce13c11105b48cba170494e787f/ndp471-kb4033342-x86-x64-allos-enu.exe"],
["4.7.2 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/1f5af042-d0e4-4002-9c59-9ba66bcf15f6/089f837de42708daacaae7c04b7494db/ndp472-kb4054530-x86-x64-allos-enu.exe"],
["4.8 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/2d6bb6b2-226a-4baa-bdec-798822606ff1/8494001c276a4b96804cde7829c04d7f/ndp48-x86-x64-allos-enu.exe"],
["4.8.1 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/6f083c7e-bd40-44d4-9e3f-ffba71ec8b09/3951fd5af6098f2c7e8ff5c331a0679c/ndp481-x86-x64-allos-enu.exe"],
[".NET 5.0 Desktop Runtime (v5.0.17) - Windows x86 Installer", "https://download.visualstudio.microsoft.com/download/pr/b6fe5f2a-95f4-46f1-9824-f5994f10bc69/db5ec9b47ec877b5276f83a185fdb6a0/windowsdesktop-runtime-5.0.17-win-x86.exe"],
[".NET 5.0 Desktop Runtime (v5.0.17) - Windows x64 Installer", "https://download.visualstudio.microsoft.com/download/pr/3aa4e942-42cd-4bf5-afe7-fc23bd9c69c5/64da54c8864e473c19a7d3de15790418/windowsdesktop-runtime-5.0.17-win-x64.exe"],
[".NET 5.0 Desktop Runtime (v5.0.17) - Windows Arm64 Installer", "https://download.visualstudio.microsoft.com/download/pr/be25784a-4231-4c53-ba6e-869166ef523f/9602c6c0d358d31dc710fd0573fc39e0/windowsdesktop-runtime-5.0.17-win-arm64.exe"],
[".NET Core 3.0 Desktop Runtime (v3.0.3) - Windows x86 Installer", "https://download.visualstudio.microsoft.com/download/pr/e312618d-85c4-4cad-b660-569b5522eca9/e951e76ebe011b5d3ea1289ef68e8281/windowsdesktop-runtime-3.0.3-win-x86.exe"],
[".NET Core 3.0 Desktop Runtime (v3.0.3) - Windows x64 Installer", "https://download.visualstudio.microsoft.com/download/pr/c525a2bb-6e98-4e6e-849e-45241d0db71c/d21612f02b9cae52fa50eb54de905986/windowsdesktop-runtime-3.0.3-win-x64.exe"],
[".NET Core 3.1 Desktop Runtime (v3.1.28) - Windows x86 Installer", "https://download.visualstudio.microsoft.com/download/pr/d2ec7ca2-017d-4d06-a6da-3707daa3c3b1/1f2e108653e3d8316e1657105ef24b93/windowsdesktop-runtime-3.1.28-win-x86.exe"],
[".NET Core 3.1 Desktop Runtime (v3.1.28) - Windows x64 Installer", "https://download.visualstudio.microsoft.com/download/pr/5c74593e-f156-44c8-9957-f11996de72bc/d3e0e26c64a5a2d860c5c0deca975d78/windowsdesktop-runtime-3.1.28-win-x64.exe"],
[".NET 6.0 Desktop Runtime (v6.0.8) - Windows x86 Installer", "https://download.visualstudio.microsoft.com/download/pr/61747fc6-7236-4d5e-85e5-a5df5f480f3a/02203594bf1331f0875aa6491419ffa1/windowsdesktop-runtime-6.0.8-win-x86.exe"],
[".NET 6.0 Desktop Runtime (v6.0.8) - Windows x64 Installer", "https://download.visualstudio.microsoft.com/download/pr/b4a17a47-2fe8-498d-b817-30ad2e23f413/00020402af25ba40990c6cc3db5cb270/windowsdesktop-runtime-6.0.8-win-x64.exe"],
[".NET 6.0 Desktop Runtime (v6.0.8) - Windows Arm64 Installer", "https://download.visualstudio.microsoft.com/download/pr/17737b16-dbb0-45f8-9684-16cce46f0835/14475e8380422840249513d58c70d8da/windowsdesktop-runtime-6.0.8-win-arm64.exe"]
]
def Download(wineBotton: str, id: int, wine: str):
programName = os.path.split(netList[id][1])[1]
os.system(f"aria2c -x 16 -s 16 -d \"/tmp/deepin-wine-runner-net\" -o \"{programName}\" \"{netList[id][1]}\"")
os.system(f"WINEPREFIX='{wineBotton}' {wine} '/tmp/deepin-wine-runner-net/{programName}'")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装 .net framework")
sys.exit()
if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
print("您未指定需要安装 .net framework 的容器和使用的 wine无法继续")
print("参数:")
print("XXX 参数一 参数二 参数三(可略)")
print("参数一为需要安装的容器参数二为需要使用的wine参数三为是否缓存可略三个参数位置不能颠倒")
sys.exit()
homePath = os.path.expanduser('~')
print('''
mm m mmmmmmmmmmmmm
#"m # # #
# #m # #mmmmm #
# # # # #
# # ## #mmmmm #
''')
print("请选择以下的 .net framework 进行安装(不保证能正常安装运行)")
for i in range(0, len(netList)):
print(f"{i} .net framework {netList[i][0]}")
while True:
try:
choose = input("请输入要选择的 .net framework 版本输入“exit”退出").lower()
if choose == "exit":
break
choose = int(choose)
except:
print("输入错误,请重新输入")
continue
if 0 <= choose and choose < len(netList):
break
if choose == "exit":
exit()
if len(sys.argv) <= 3:
choice = True
else:
choice = (sys.argv[3] == "1")
print(f"您选择了 .net framework {netList[choose][0]}")
print(f"如果是 Offline Installer 版本,提示需要连接互联网,其实是不需要的,断网也可以安装")
print(f"如果 Offline Installer 版本连接网络时安装失败,提示无法连接服务器或连接超时,可以尝试下载完安装包加载过程中断网以便断网安装")
print(f"一般建议 Offline Installer 版本在下载完 exe 安装程序后在加载过程中断网以便提高安装速度")
programName = os.path.split(netList[choose][1])[1]
if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/.netframework/{programName}") and choice:
print("已经缓存,使用本地版本")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'")
input("安装结束,按回车键退出")
exit()
print("开始下载")
os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'")
os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/.netframework'")
os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.cache/deepin-wine-runner/.netframework\" -o \"{programName}\" \"{netList[choose][1]}\"")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'")
input("安装结束,按回车键退出")

91
InstallNewWineHQ.sh Executable file
View File

@@ -0,0 +1,91 @@
#!/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 ' # '
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"
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/impish/winehq-impish.sources"
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ focal 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/ bionic main | sudo tee /etc/apt/sources.list.d/winehq.list"
)
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/ 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 "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 Testing (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
# 检测 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

90
InstallOther.py Executable file
View File

@@ -0,0 +1,90 @@
#!/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 req as requests
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装运行库")
sys.exit()
if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
print("您未指定需要安装的容器和使用的 wine无法继续")
print("参数:")
print("XXX 参数一 参数二 参数三(可略)")
print("参数一为需要安装的容器参数二为需要使用的wine参数三为是否缓存可略三个参数位置不能颠倒")
sys.exit()
homePath = os.path.expanduser('~')
print('''
mmmm m #
m" "m mm#mm # mm mmm m mm
# # # #" # #" # #" "
# # # # # #"""" #
#mm# "mm # # "#mm" #
''')
try:
msxmlList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/other/list.json").text)
except:
msxmlList = [
["Windows Script 5.7 for Windows XP", "https://download.microsoft.com/download/f/f/e/ffea3abf-b55f-4924-b5a5-bde0805ad67c/scripten.exe", "exe", "scripten.exe"],
["Windows Management Instrumentation 1.50.1131", "https://www.gitlink.org.cn/api/attachments/390680", "exe", "WMITools.exe"]
]
print("请选择以下的应用进行安装(不保证能正常安装运行)")
for i in range(0, len(msxmlList)):
print(f"{i}{msxmlList[i][0]}")
while True:
try:
choose = input("请输入要选择要安装的应用输入“exit”退出").lower()
choose = int(choose)
except:
print("输入错误,请重新输入")
continue
if 0 <= choose and choose < len(msxmlList):
break
if choose == "exit":
exit()
if len(sys.argv) <= 3:
choice = True
else:
choice = (sys.argv[3] == "1")
print(f"您选择了{msxmlList[choose][0]}")
if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}") and choice:
print("已经缓存,使用本地版本")
if msxmlList[choose][2] == "msi":
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
input("安装结束,按回车键退出")
sys.exit()
if msxmlList[choose][2] == "exe":
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
input("安装结束,按回车键退出")
sys.exit()
print("开始下载")
os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/other'")
if msxmlList[choose][2] == "msi":
os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/other' -o '{msxmlList[choose][3]}' \"{msxmlList[choose][1]}\"")
print("开始安装")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
print("安装结束")
sys.exit()
if msxmlList[choose][2] == "exe":
os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/other' -o '{msxmlList[choose][3]}' \"{msxmlList[choose][1]}\"")
print("开始安装")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
input("安装结束,按回车键退出")
sys.exit()

94
InstallVisualCPlusPlus.py Executable file
View File

@@ -0,0 +1,94 @@
#!/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 req as requests
try:
netList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/list.json").text)
except:
netList = [
["VC6 运行库", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/VC6RedistSetup_deu.exe"],
["2005 Service Pack 1 Redistributable Package MFC 安全更新", "https://download.microsoft.com/download/4/A/2/4A22001F-FA3B-4C13-BF4E-42EC249D51C4/vcredist_x86.EXE", "vcredist05_x86.exe"],
["2008 (VC++ 9.0) SP1 (不再支持) X86", "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe", "vcredist08_x86.exe"],
["2008 (VC++ 9.0) SP1 (不再支持) X64", "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe", "vcredist08_x86.exe"],
["2010 (VC++ 10.0) SP1 (不再支持) X86", "https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe", "vcredist10_x86.exe"],
["2010 (VC++ 10.0) SP1 (不再支持) X64", "https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe", "vcredist10_x64.exe"],
["2012 (VC++ 11.0) Update 4 X86", "https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe", "vcredist12_x86.exe"],
["2012 (VC++ 11.0) Update 4 X64", "https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe", "vcredist12_x64.exe"],
["2013 (VC++ 12.0) X86", "https://aka.ms/highdpimfc2013x86enu", "vcredist13_x86.exe"],
["2013 (VC++ 12.0) X64", "https://aka.ms/highdpimfc2013x64enu", "vcredist13_x64.exe"],
["2015、2017、2019 和 2022 X86", "https://aka.ms/vs/17/release/vc_redist.x86.exe", "vc_redist15.x86.exe"],
["2015、2017、2019 和 2022 X64", "https://aka.ms/vs/17/release/vc_redist.x64.exe", "vc_redist15.x64.exe"],
["2015、2017、2019 和 2022 ARM64", "https://aka.ms/vs/17/release/vc_redist.arm64.exe", "vc_redist15.arm64.exe"]
]
def Download(wineBotton: str, id: int, wine: str) -> int:
try:
os.remove(f"/tmp/deepin-wine-runner-vcpp/{netList[id][2]}")
except:
pass
os.system(f"aria2c -x 16 -s 16 -d '/tmp/deepin-wine-runner-vcpp' -o '{netList[id][2]}' \"{netList[id][1]}\"")
os.system(f"WINEPREFIX='{wineBotton}' {wine} '/tmp/deepin-wine-runner-vcpp/{netList[id][2]}'")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装 Visual Studio C++")
sys.exit()
if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
print("您未指定需要安装 Visual Studio C++ 的容器和使用的 wine无法继续")
print("参数:")
print("XXX 参数一 参数二 参数三(可略)")
print("参数一为需要安装的容器参数二为需要使用的wine参数三为是否缓存可略三个参数位置不能颠倒")
sys.exit()
homePath = os.path.expanduser('~')
print('''
m m mmm
"m m" m" " m m
# # # # #
"mm" # """#""""""#"""
## "mmm" # #
''')
print("请选择以下的 Visual Studio C++ 进行安装(不保证能正常安装运行)")
for i in range(0, len(netList)):
print(f"{i} Visual Studio C++ {netList[i][0]}")
while True:
try:
choose = input("请输入要选择的 Visual Studio C++ 版本输入“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 Studio C++ {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("安装结束,按回车键退出")

85
InstallWineOnDeepin23.py Executable file
View File

@@ -0,0 +1,85 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
def InstallWithDeepinSource(program):
os.system(f"sudo cp '{programPath}/deepin.list' /etc/apt/sources.list.d/deepin20-withwinerunner.list")
os.system(f"sudo dpkg --add-architecture i386")
os.system(f"sudo apt update")
os.system(f"sudo apt install {program}")
os.system(f"sudo rm /etc/apt/sources.list.d/deepin20-withwinerunner.list")
os.system(f"sudo apt update")
os.system(f"sudo dpkg --remove-architecture i386")
os.system(f"sudo apt update")
def InstallWithSparkStoreSource(program):
os.system(f"sudo cp '{programPath}/sparkstore.list' /etc/apt/sources.list.d/sparkstore-withwinerunner.list")
os.system(f"sudo cp '{programPath}/deepin.list' /etc/apt/sources.list.d/deepin20-withwinerunner.list")
os.system(f"sudo dpkg --add-architecture i386")
os.system(f"sudo mkdir /tmp/spark-store-install")
os.system(f"sudo rm -rf /tmp/spark-store-install/spark-store.asc")
os.system(f"sudo wget -O /tmp/spark-store-install/spark-store.asc https://d.store.deepinos.org.cn/dcs-repo.gpg-key.asc")
os.system(f"sudo gpg --dearmor /tmp/spark-store-install/spark-store.asc")
os.system(f"sudo apt update")
os.system(f"sudo apt install {program}")
os.system(f"sudo rm /etc/apt/sources.list.d/sparkstore-withwinerunner.list")
os.system(f"sudo rm /etc/apt/sources.list.d/deepin20-withwinerunner.list")
os.system(f"sudo apt update")
os.system(f"sudo dpkg --remove-architecture i386")
os.system(f"sudo apt update")
def Repair():
print("修复中……")
os.system(f"rm -f /etc/apt/sources.list.d/sparkstore-withwinerunner.list")
os.system(f"rm -f /etc/apt/sources.list.d/deepin20-withwinerunner.list")
print("修复完成!")
if __name__ == "__main__":
print('''
m m "
# # # mmm m mm mmm
" #"# # # #" # #" #
## ##" # # # #""""
# # mm#mm # # "#mm"
''')
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
print("能不用这个就不用这个!!!真心建议!!!\n")
print("下面的安装过程皆需要换源等操作,安装过程千万不要中断,以及千万不要 apt upgrade感谢\n")
print("如果真一不小心中断了可以在下面输入“repair”进行修复")
print("所有操作均需要 Root 权限,请知悉\n")
print("千万不要中断且 apt upgrade、千万不要中断且 apt upgrade、千万不要中断且 apt upgrade重要的事情说三遍")
print("以及无法保证安装的 Wine 能使用、无法保证安装的 Wine 能使用、无法保证安装的 Wine 能使用,重要的事情说三遍")
repair = input("按回车后继续")
if repair.lower() == "repair":
Repair()
exit()
for i in [
["原版 WineWine64", "wine"],
["deepin-wine5-stable", "deepin-wine5-stable"],
["deepin-wine6-stable", "deepin-wine6-stable"]
]:
choose = input(f"安装{i[0]}?(添加深度源)[Y/N]").upper()
if choose == "Y":
print("安装中……")
InstallWithDeepinSource(i[1])
print("安装完成!")
#exit()
for i in [
["deepin-wine", "deepin-wine"],
["spark-wine7-devel", "spark-wine7-devel"]
]:
choose = input(f"安装{i[0]}?(添加深度、星火源)[Y/N]").upper()
if choose == "Y":
InstallWithSparkStoreSource(i[1])

Binary file not shown.

View File

@@ -0,0 +1,200 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>U</name>
<message>
<location filename="../deepin-wine-packager.py" line="30"/>
<source> wine </source>
<translation type="unfinished">Choose Wine Botton</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="35"/>
<source></source>
<translation type="unfinished">Choose Icon Files</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="40"/>
<source> deb </source>
<translation type="unfinished">Save Deb</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="103"/>
<source></source>
<translation type="unfinished">Tips</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="103"/>
<source></source>
<translation type="unfinished">Build deb package will change choose botton, are you continuing?</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1162"/>
<source></source>
<translation type="unfinished">Browser...</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1164"/>
<source></source>
<translation type="unfinished">Build...</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1165"/>
<source> deb</source>
<translation type="unfinished">Install Build Deb...</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1166"/>
<source></source>
<translation type="unfinished">Build Deb Formwork</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1169"/>
<source> deb </source>
<translation type="unfinished">When remove this deb, it will remove botton auto</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1170"/>
<source>使 Wine </source>
<translation type="unfinished">Clean Wine Botton (By UOS Wine Activity Shell)</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1177"/>
<source>使wine helper
deepin-wine-helper</source>
<translation type="unfinished">Use Spark Wine Helper(If you don&apos;t checked, will use deepin-wine-helper)</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1187"/>
<source> deb </source>
<translation type="unfinished">Build Deb Package Name(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1188"/>
<source> deb </source>
<translation type="unfinished">Build Deb Package Version(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1189"/>
<source> deb </source>
<translation type="unfinished">Build Deb Package Description(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1190"/>
<source> deb </source>
<translation type="unfinished">Build Deb Package Maintainer(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1191"/>
<source> wine </source>
<translation type="unfinished">Deb Use Wine Botton Unzip Name(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1192"/>
<source> wine </source>
<translation type="unfinished">Deb Use Wine Botton Path(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1193"/>
<source>wine </source>
<translation type="unfinished">Deb Use Wine Botton Program Path(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1194"/>
<source> .desktop </source>
<translation type="unfinished">Program Link Type(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1195"/>
<source>wine </source>
<translation type="unfinished">Deb Use Wine Botton Program Option:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1196"/>
<source> .desktop </source>
<translation type="unfinished">Program Link Name(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1197"/>
<source> .desktop </source>
<translation type="unfinished">Program Link Icon Path:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1198"/>
<source> wine </source>
<translation type="unfinished">Build Deb Using Wine Version(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1199"/>
<source> deb </source>
<translation type="unfinished">Build Deb Save Path(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1220"/>
<source></source>
<translation type="unfinished">More Setting</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1223"/>
<source>deb ()</source>
<translation type="unfinished">Deb Depends</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1225"/>
<source>deb ()</source>
<translation type="unfinished">Deb Recommends</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1230"/>
<source>Wine (Wine)
32Wine不能使用64位容器</source>
<translation type="unfinished">Deb Use Wine Architecture :
Tips: X86 Wine is unable to use x86 botton</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1233"/>
<source>deb </source>
<translation type="unfinished">Deb Option:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1237"/>
<source>deb ()</source>
<translation type="unfinished">Deb Depends:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1239"/>
<source>deb ()</source>
<translation type="unfinished">Deb Recommends:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1241"/>
<source> .desktop MimeType</source>
<translation type="unfinished">Program Link MimeType(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1243"/>
<source> deb </source>
<translation type="unfinished">Build Deb Architecture:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1253"/>
<source></source>
<translation type="unfinished">Program</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1254"/>
<source></source>
<translation type="unfinished">Help</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1255"/>
<source>退</source>
<translation type="unfinished">Exit Program</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1256"/>
<source></source>
<translation type="unfinished">Tips</translation>
</message>
</context>
</TS>

Binary file not shown.

View File

@@ -0,0 +1,664 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN" sourcelanguage="zh_CN">
<context>
<name>U</name>
<message>
<location filename="mainwindow.py" line="1419"/>
<source>????</source>
<translation type="obsolete">Fast Run</translation>
</message>
<message>
<location filename="mainwindow.py" line="201"/>
<source></source>
<translation>OK</translation>
</message>
<message>
<location filename="mainwindow.py" line="383"/>
<source>
OK</source>
<translation>If you want to install Font, you only copy font files to this directory
Check &quot;OK &quot; to open fonts directory</translation>
</message>
<message>
<location filename="mainwindow.py" line="713"/>
<source>Python应用</source>
<translation>Update (it will kill all python program when you&apos;re installing)</translation>
</message>
<message>
<location filename="mainwindow.py" line="721"/>
<source></source>
<translation>It&apos;s newest program now, you don&apos;t need to update program</translation>
</message>
<message>
<location filename="mainwindow.py" line="1088"/>
<source></source>
<translation>Error</translation>
</message>
<message>
<location filename="mainwindow.py" line="727"/>
<source></source>
<translation>Can&apos;t connect the Program Server!</translation>
</message>
<message>
<location filename="mainwindow.py" line="734"/>
<source></source>
<translation>Check Update</translation>
</message>
<message>
<location filename="mainwindow.py" line="790"/>
<source>ISO镜像</source>
<translation>ISO Image FIle:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1438"/>
<source></source>
<translation>Browser</translation>
</message>
<message>
<location filename="mainwindow.py" line="799"/>
<source>/ISO镜像</source>
<translation>Read/Mount ISO Image File</translation>
</message>
<message>
<location filename="mainwindow.py" line="800"/>
<source>/ISO镜像</source>
<translation>Close/Unmount ISO Image File</translation>
</message>
<message>
<location filename="mainwindow.py" line="802"/>
<source></source>
<translation>Find</translation>
</message>
<message>
<location filename="mainwindow.py" line="804"/>
<source> wine </source>
<translation>Save DLL for wine botton</translation>
</message>
<message>
<location filename="mainwindow.py" line="805"/>
<source> wine </source>
<translation>Setting Wine Botton</translation>
</message>
<message>
<location filename="mainwindow.py" line="827"/>
<source>DLL
</source>
<translation>Find DLL
(Nothing means don&apos;t find,will show all dlls):</translation>
</message>
<message>
<location filename="mainwindow.py" line="1081"/>
<source></source>
<translation>Tips</translation>
</message>
<message>
<location filename="mainwindow.py" line="940"/>
<source>/</source>
<translation>Close/Remove Success!</translation>
</message>
<message>
<location filename="mainwindow.py" line="967"/>
<source>
</source>
<translation>No body update this program running status now
Do you want to update first?</translation>
</message>
<message>
<location filename="mainwindow.py" line="987"/>
<source></source>
<translation>Click here to update</translation>
</message>
<message>
<location filename="mainwindow.py" line="989"/>
<source></source>
<translation>User Thinking:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1038"/>
<source></source>
<translation>Update</translation>
</message>
<message>
<location filename="mainwindow.py" line="1048"/>
<source>NULL</source>
<translation>You can try press &quot;NULL&quot; if you can&apos;t to update because program name</translation>
</message>
<message>
<location filename="mainwindow.py" line="1059"/>
<source></source>
<translation>Program Name:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1067"/>
<source></source>
<translation>Fast Run</translation>
</message>
<message>
<location filename="mainwindow.py" line="1088"/>
<source></source>
<translation>Update Error!</translation>
</message>
<message>
<location filename="mainwindow.py" line="1119"/>
<source> Wine </source>
<translation>Choose Wine Version:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1120"/>
<source>wine DEBUG </source>
<translation>Show Wine Debug Information:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1121"/>
<source> Wine</source>
<translation>Default Wine Version:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1122"/>
<source> Wine </source>
<translation>Defualt Wine Botton:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1123"/>
<source>使</source>
<translation>Use Terminal To Open Program:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1124"/>
<source> wine </source>
<translation>More Wine Command Option:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1125"/>
<source></source>
<translation>Program Theme:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1126"/>
<source>Wine Mono Gecko </source>
<translation>Using Wine Defult Mono And Gecko Installer:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1127"/>
<source> Wine</source>
<translation>Unsee Not Install Wine Version:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1128"/>
<source></source>
<translation>Download Cache:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1130"/>
<source> DEBUG </source>
<translation>Show Wine Debug Info</translation>
</message>
<message>
<location filename="mainwindow.py" line="1136"/>
<source></source>
<translation>Save</translation>
</message>
<message>
<location filename="mainwindow.py" line="1140"/>
<source>()</source>
<translation>Test(Restarting will show setting themes)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1142"/>
<source>使deepin </source>
<translation>Use Terminal To Open(Deepin Terminal)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1144"/>
<source> Wine Mono Gecko </source>
<translation>Don&apos;t Use Wine Default Mono And Gecko Installer</translation>
</message>
<message>
<location filename="mainwindow.py" line="1145"/>
<source> Wine</source>
<translation>Don&apos;t Show Unknown Wine Version</translation>
</message>
<message>
<location filename="mainwindow.py" line="1146"/>
<source></source>
<translation>Start Download Cache</translation>
</message>
<message>
<location filename="mainwindow.py" line="1178"/>
<source> Wine </source>
<translation>Choose Wine Botton</translation>
</message>
<message>
<location filename="mainwindow.py" line="1423"/>
<source></source>
<translation>Fast Run</translation>
</message>
<message>
<location filename="mainwindow.py" line="1427"/>
<source></source>
<translation>Choose Wine Botton Path:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1434"/>
<source></source>
<translation>Choose EXE Files:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1441"/>
<source>WINE版本</source>
<translation>Choose Wine Version:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1453"/>
<source></source>
<translation>More Function</translation>
</message>
<message>
<location filename="mainwindow.py" line="1457"/>
<source>Desktop文件</source>
<translation>Create Program Link(.desktop file):</translation>
</message>
<message>
<location filename="mainwindow.py" line="1464"/>
<source></source>
<translation>Create To Desktop</translation>
</message>
<message>
<location filename="mainwindow.py" line="1467"/>
<source></source>
<translation>Create To Launcher</translation>
</message>
<message>
<location filename="mainwindow.py" line="1473"/>
<source></source>
<translation>Program Manager:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1474"/>
<source></source>
<translation>Get Program Icon</translation>
</message>
<message>
<location filename="mainwindow.py" line="1478"/>
<source></source>
<translation>Window Transparent Tools</translation>
</message>
<message>
<location filename="mainwindow.py" line="1481"/>
<source></source>
<translation>Remove Program</translation>
</message>
<message>
<location filename="mainwindow.py" line="1485"/>
<source></source>
<translation>Mini App Store</translation>
</message>
<message>
<location filename="mainwindow.py" line="1490"/>
<source></source>
<translation>Get Choosed Program Running Status</translation>
</message>
<message>
<location filename="mainwindow.py" line="1494"/>
<source>WINE配置</source>
<translation>Wine Config:</translation>
</message>
<message>
<location filename="mainwindow.py" line="1495"/>
<source></source>
<translation>Config Wine</translation>
</message>
<message>
<location filename="mainwindow.py" line="1498"/>
<source></source>
<translation>Fonts Store</translation>
</message>
<message>
<location filename="mainwindow.py" line="1583"/>
<source></source>
<translation>Install More Fonts</translation>
</message>
<message>
<location filename="mainwindow.py" line="1504"/>
<source>wine配置</source>
<translation>Spark Wine Config</translation>
</message>
<message>
<location filename="mainwindow.py" line="1521"/>
<source>wine安装应用时的终端输出内容</source>
<translation>You can see wine running return things here</translation>
</message>
<message>
<location filename="mainwindow.py" line="1538"/>
<source></source>
<translation>Run Program</translation>
</message>
<message>
<location filename="mainwindow.py" line="1541"/>
<source></source>
<translation>Stop Program</translation>
</message>
<message>
<location filename="mainwindow.py" line="1548"/>
<source>(&amp;P)</source>
<translation>Program(&amp;P)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1549"/>
<source> wine(&amp;I)</source>
<translation>Install Wine(&amp;I)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1550"/>
<source> wine(Deepin23)</source>
<translation>Install Wine(Only For Deepin 23)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1551"/>
<source> WineHQ</source>
<translation>Install WineHQ</translation>
</message>
<message>
<location filename="mainwindow.py" line="1552"/>
<source> Wine</source>
<translation>Install More Wine</translation>
</message>
<message>
<location filename="mainwindow.py" line="1553"/>
<source>(&amp;S)</source>
<translation>Setting Program(&amp;S)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1554"/>
<source>(&amp;C)</source>
<translation>Clean Program History Data(&amp;C)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1555"/>
<source></source>
<translation>Clean Program Cache</translation>
</message>
<message>
<location filename="mainwindow.py" line="1556"/>
<source></source>
<translation>Remove Program Function</translation>
</message>
<message>
<location filename="mainwindow.py" line="1557"/>
<source>退(&amp;E)</source>
<translation>Exit Program(&amp;E)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1580"/>
<source>Wine(&amp;W)</source>
<translation>Wine(&amp;W)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1581"/>
<source> Wine </source>
<translation>Open Wine Botton Directory</translation>
</message>
<message>
<location filename="mainwindow.py" line="1582"/>
<source></source>
<translation>Install Fonts</translation>
</message>
<message>
<location filename="mainwindow.py" line="1584"/>
<source> Wine </source>
<translation>Delete Choose Wine Botton</translation>
</message>
<message>
<location filename="mainwindow.py" line="1585"/>
<source> Wine Wine </source>
<translation>Clean Wine Botton(By UOS Wine Activity Shell)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1586"/>
<source> wine </source>
<translation>Build Windows Program Installer For Linux By Wine</translation>
</message>
<message>
<location filename="mainwindow.py" line="1587"/>
<source>使 Wine </source>
<translation>Build Windows Program Installer For Linux By Wine(By UOS Wine Activity Shell)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1588"/>
<source>DLLWindows XPWindows Server 2003</source>
<translation>Get Dll For ISO Images(Only Support Windows XP And Windows Server 2003 Microsoft Installer)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1589"/>
<source> Geek Uninstaller </source>
<translation>Update Geek Uninstaller From Geek Websize</translation>
</message>
<message>
<location filename="mainwindow.py" line="1590"/>
<source> Wine </source>
<translation>Delete All Wine Program Links On Launcher</translation>
</message>
<message>
<location filename="mainwindow.py" line="1604"/>
<source> Wine</source>
<translation>Install Runtime With Choose Wine Botton And Version</translation>
</message>
<message>
<location filename="mainwindow.py" line="1605"/>
<source>wine .net framework</source>
<translation>Install .Net Framework</translation>
</message>
<message>
<location filename="mainwindow.py" line="1606"/>
<source>wine Visual Studio C++</source>
<translation>Install Visual Studio C++ Runtime</translation>
</message>
<message>
<location filename="mainwindow.py" line="1607"/>
<source>wine MSXML</source>
<translation>Install MSXML</translation>
</message>
<message>
<location filename="mainwindow.py" line="1608"/>
<source>wine gecko</source>
<translation>Install Gecko</translation>
</message>
<message>
<location filename="mainwindow.py" line="1609"/>
<source>wine mono</source>
<translation>Install Mono</translation>
</message>
<message>
<location filename="mainwindow.py" line="1610"/>
<source>wine</source>
<translation>Install Other Runtime</translation>
</message>
<message>
<location filename="mainwindow.py" line="1617"/>
<source> Wine</source>
<translation>Run Basic Program</translation>
</message>
<message>
<location filename="mainwindow.py" line="1618"/>
<source>wine</source>
<translation>Run Control</translation>
</message>
<message>
<location filename="mainwindow.py" line="1619"/>
<source>wine</source>
<translation>Run Web Browser</translation>
</message>
<message>
<location filename="mainwindow.py" line="1620"/>
<source>wine</source>
<translation>Run Regedit</translation>
</message>
<message>
<location filename="mainwindow.py" line="1621"/>
<source>wine</source>
<translation>Run Taskmgr</translation>
</message>
<message>
<location filename="mainwindow.py" line="1622"/>
<source>wine</source>
<translation>Run File Explorer</translation>
</message>
<message>
<location filename="mainwindow.py" line="1623"/>
<source>wine wine</source>
<translation>Run About Wine</translation>
</message>
<message>
<location filename="mainwindow.py" line="1631"/>
<source> run_v3.sh Deepin </source>
<translation>Set Deepin File Dialog Defult On run_v3.sh</translation>
</message>
<message>
<location filename="mainwindow.py" line="1632"/>
<source> run_v3.sh Wine </source>
<translation>Set Wine File Dialog Defult On run_v3.sh</translation>
</message>
<message>
<location filename="mainwindow.py" line="1633"/>
<source> deepin-wine-helper</source>
<translation>Reinstall deepin-wine-helper</translation>
</message>
<message>
<location filename="mainwindow.py" line="1634"/>
<source>使winetricks打开指定容器</source>
<translation>Using Winetricks</translation>
</message>
<message>
<location filename="mainwindow.py" line="1641"/>
<source>/ opengl</source>
<translation>Enabled/Disbled OpenGL</translation>
</message>
<message>
<location filename="mainwindow.py" line="1642"/>
<source> opengl</source>
<translation>Enabled OpenGL</translation>
</message>
<message>
<location filename="mainwindow.py" line="1643"/>
<source> opengl</source>
<translation>Disbled OpenGL</translation>
</message>
<message>
<location filename="mainwindow.py" line="1646"/>
<source>/ winbind</source>
<translation>Install/Uninstall Winbind</translation>
</message>
<message>
<location filename="mainwindow.py" line="1647"/>
<source> winbind</source>
<translation>Install Winbind</translation>
</message>
<message>
<location filename="mainwindow.py" line="1648"/>
<source> winbind</source>
<translation>Uninstall Winbind</translation>
</message>
<message>
<location filename="mainwindow.py" line="1651"/>
<source>/ DXVK</source>
<translation>Install/Uninstall DXVK</translation>
</message>
<message>
<location filename="mainwindow.py" line="1652"/>
<source> DXVK</source>
<translation>Install DXVK</translation>
</message>
<message>
<location filename="mainwindow.py" line="1653"/>
<source> DXVK</source>
<translation>Uninstall DXVK</translation>
</message>
<message>
<location filename="mainwindow.py" line="1691"/>
<source>(&amp;V)</source>
<translation>Virtual Machine(&amp;V)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1692"/>
<source>使 Virtualbox Windows </source>
<translation>Run Windows Program By VirtualBox</translation>
</message>
<message>
<location filename="mainwindow.py" line="1696"/>
<source>(&amp;C)</source>
<translation>Cloud Sandbox(&amp;C)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1697"/>
<source>360 </source>
<translation>360 Cloud Sandbox</translation>
</message>
<message>
<location filename="mainwindow.py" line="1698"/>
<source></source>
<translation>ThreatBook Cloud Sandbox</translation>
</message>
<message>
<location filename="mainwindow.py" line="1699"/>
<source>VIRUSTOTAL</source>
<translation>VIRUSTOTAL</translation>
</message>
<message>
<location filename="mainwindow.py" line="1707"/>
<source>(&amp;H)</source>
<translation>Help(&amp;H)</translation>
</message>
<message>
<location filename="mainwindow.py" line="1708"/>
<source></source>
<translation>Program Websize</translation>
</message>
<message>
<location filename="mainwindow.py" line="1709"/>
<source></source>
<translation>Program Tips</translation>
</message>
<message>
<location filename="mainwindow.py" line="1710"/>
<source></source>
<translation>Program New Things</translation>
</message>
<message>
<location filename="mainwindow.py" line="1711"/>
<source></source>
<translation>Thank List</translation>
</message>
<message>
<location filename="mainwindow.py" line="1712"/>
<source></source>
<translation>UPdate This Program</translation>
</message>
<message>
<location filename="mainwindow.py" line="1713"/>
<source></source>
<translation>Update Advices And Problem</translation>
</message>
<message>
<location filename="mainwindow.py" line="1714"/>
<source></source>
<translation>About This Program</translation>
</message>
<message>
<location filename="mainwindow.py" line="1715"/>
<source> Qt</source>
<translation>About Qt</translation>
</message>
<message>
<location filename="mainwindow.py" line="1727"/>
<source></source>
<translation>More Deepin/UOS Program</translation>
</message>
<message>
<location filename="mainwindow.py" line="1728"/>
<source> Android UEngine </source>
<translation>Run Android Program: UEngine Runner</translation>
</message>
</context>
</TS>

BIN
LANG/installwine-en_US.qm Normal file

Binary file not shown.

32
LANG/installwine-en_US.ts Normal file
View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>MainWindow</name>
<message>
<location filename="../wine-source/mainwindow.ui" line="14"/>
<source> Wine</source>
<translation type="unfinished">Download Wine</translation>
</message>
<message>
<location filename="../wine-source/mainwindow.ui" line="41"/>
<source>&lt;&lt;</source>
<translation type="unfinished">&lt;&lt;</translation>
</message>
<message>
<location filename="../wine-source/mainwindow.ui" line="48"/>
<source>&gt;&gt;</source>
<translation type="unfinished">&gt;&gt;</translation>
</message>
<message>
<location filename="../wine-source/mainwindow.ui" line="77"/>
<source>Wine资源文件</source>
<translation type="unfinished">Don&apos;t Unzip Wine File</translation>
</message>
<message>
<location filename="../wine-source/mainwindow.ui" line="84"/>
<source></source>
<translation type="unfinished">Delete Download Zip File And Only Unzip</translation>
</message>
</context>
</TS>

Binary file not shown.

View File

@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" sourcelanguage="zh">
<context>
<name>MainWindow</name>
<message>
<location filename="mainwindow.ui" line="14"/>
<source>Windows </source>
<translation type="unfinished">Windows System Installer By VirtualBox</translation>
</message>
<message>
<location filename="mainwindow.ui" line="32"/>
<location filename="mainwindow.ui" line="35"/>
<source></source>
<translation type="unfinished">Setting</translation>
</message>
<message>
<location filename="mainwindow.ui" line="43"/>
<source></source>
<translation type="unfinished">ISO Image Path:</translation>
</message>
<message>
<location filename="mainwindow.ui" line="50"/>
<source></source>
<translation type="unfinished">Input System ISO Image</translation>
</message>
<message>
<location filename="mainwindow.ui" line="57"/>
<source></source>
<translation type="unfinished">Browser......</translation>
</message>
<message>
<location filename="mainwindow.ui" line="68"/>
<source></source>
<translation type="unfinished">System Version:</translation>
</message>
<message>
<location filename="mainwindow.ui" line="78"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="82"/>
<source>Windows 7 32 </source>
<translation type="unfinished">Windows 7 X86(Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="87"/>
<source>Windows 7 64 </source>
<translation type="unfinished">Windows 7 X64(Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="92"/>
<source> Windows </source>
<translation type="unfinished">Other Windows(Don&apos;t Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="117"/>
<source></source>
<translation type="unfinished">Install</translation>
</message>
<message>
<location filename="mainwindow.ui" line="126"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;使&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="141"/>
<source>/使</source>
<translation type="unfinished">Install/Using Help</translation>
</message>
<message>
<location filename="mainwindow.ui" line="150"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Ctrl&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712191756.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;使&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712192850.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712193527.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Windows 7 Windows 7 Windows XPWindows 10DeepinUbuntu &lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;1 Oracle VM VirtualBox &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;2Windows&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Manager_20220712223602.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;3&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox_20220712223705.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//__20220712224639.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1=&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/_VirtualBox Machine_20220712142929.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2VirtualBox Guest AdditionsVBoxWindowsAdditions&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143006.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143018.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4Next&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143029.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143037.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;5Install&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143044.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;6Reboot nowFinishReboot nowFinish&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143103.png&quot; /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="224"/>
<location filename="mainwindow.ui" line="313"/>
<source></source>
<translation type="unfinished">About</translation>
</message>
<message>
<location filename="mainwindow.ui" line="281"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; wine Wine Is Not An Emulator&amp;lt;Wine &amp;gt; Windows &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; C++ QtPython Virtualbox Windows Linux Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; GPL V3 &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitee&lt;a href=&quot;https://gitee.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitee.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Github&lt;a href=&quot;https://github.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://github.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitlink&lt;a href=&quot;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Wine Wine Windows Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;gfdgd xi&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Droid Sans Mono&apos;,&apos;monospace&apos;,&apos;monospace&apos;; font-size:11pt; color:#6a9955;&quot;&gt;https://juejin.cn/post/7080484519328874510&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="308"/>
<source>退</source>
<translation type="unfinished">Exit</translation>
</message>
</context>
</TS>

675
LICENSE Normal file → Executable file
View File

@@ -1 +1,674 @@
允许使用程序里任意内容
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

84
Makefile Executable file
View File

@@ -0,0 +1,84 @@
build:
#cd VM-source && qmake
#cd VM-source && make
#cd wine && make
cp -rv VM-source/VirtualMachine VM
cp -rv VM-source/deepin-wine-runner.svg VM
cp -rv VM-source/api VM
cp -rv VM-source/Windows7X64Auto.iso VM
cp -rv VM-source/Windows7X86Auto.iso VM
cp -rv VM-source/run.py VM
cp -rv wine/ deb/opt/apps/deepin-wine-runner/
zip -v -q -r package-script.zip package-script
cp -rv VM deb/opt/apps/deepin-wine-runner
cp -rv AllInstall.py deb/opt/apps/deepin-wine-runner
cp -rv req deb/opt/apps/deepin-wine-runner
cp -rv RegShot deb/opt/apps/deepin-wine-runner
cp -rv BeCyIconGrabber.exe deb/opt/apps/deepin-wine-runner
cp -rv AutoShell deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-packager-with-script.py deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-packager.py deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-runner-update-bug deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-runner.svg deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-venturi-setter.py deb/opt/apps/deepin-wine-runner
cp -rv DisabledOpengl.reg deb/opt/apps/deepin-wine-runner
cp -rv EnabledOpengl.reg deb/opt/apps/deepin-wine-runner
cp -rv geek.exe deb/opt/apps/deepin-wine-runner
cp -rv information.json deb/opt/apps/deepin-wine-runner
cp -rv InstallMono.py deb/opt/apps/deepin-wine-runner
cp -rv InstallMsxml.py deb/opt/apps/deepin-wine-runner
cp -rv InstallNetFramework.py deb/opt/apps/deepin-wine-runner
cp -rv InstallOther.py deb/opt/apps/deepin-wine-runner
cp -rv InstallVisualCPlusPlus.py deb/opt/apps/deepin-wine-runner
cp -rv launch.sh deb/opt/apps/deepin-wine-runner
cp -rv LICENSE deb/opt/apps/deepin-wine-runner
cp -rv mainwindow.py deb/opt/apps/deepin-wine-runner/deepin-wine-runner
cp -rv package-script.zip deb/opt/apps/deepin-wine-runner
cp -rv Run.bat deb/opt/apps/deepin-wine-runner
cp -rv RunVM.sh deb/opt/apps/deepin-wine-runner
cp -rv "wine install" deb/opt/apps/deepin-wine-runner
cp -rv 窗体透明度设置工具.exe deb/opt/apps/deepin-wine-runner
cp -rv UpdateGeek.sh deb/opt/apps/deepin-wine-runner
cp -rv AppStore.py deb/opt/apps/deepin-wine-runner
cp -rv InstallWineOnDeepin23.py deb/opt/apps/deepin-wine-runner
cp -rv dxvk.7z deb/opt/apps/deepin-wine-runner
cp -rv InstallFont.py deb/opt/apps/deepin-wine-runner
#cp -rv exagear.7z deb/opt/apps/deepin-wine-runner
cp -rv dlls-arm.7z deb/opt/apps/deepin-wine-runner
cp -rv deepin.list deb/opt/apps/deepin-wine-runner
cp -rv sparkstore.list deb/opt/apps/deepin-wine-runner
cp -rv wined3d.dll.so.7z deb/opt/apps/deepin-wine-runner
cp -rv clean-unuse-program.py deb/opt/apps/deepin-wine-runner
cp -rv InstallNewWineHQ.sh deb/opt/apps/deepin-wine-runner
cp -rv cleanbottle.sh deb/opt/apps/deepin-wine-runner
cp -rv StartVM.sh deb/opt/apps/deepin-wine-runner
#cp -rv deepin-wine-runner-create-botton.py deb/opt/apps/deepin-wine-runner
cp -rv Icon deb/opt/apps/deepin-wine-runner
cp -rv gtkGetFileNameDlg deb/opt/apps/deepin-wine-runner
cp -rv LANG/*.qm deb/opt/apps/deepin-wine-runner/LANG
cp -rv InstallDll.py deb/opt/apps/deepin-wine-runner/LANG
cp -rv ConfigLanguareRunner.py deb/opt/apps/deepin-wine-runner
cp -rv AutoConfig.py deb/opt/apps/deepin-wine-runner
cp -rv UI/*.py deb/opt/apps/deepin-wine-runner/UI
cp -rv InstallDll.py deb/opt/apps/deepin-wine-runner
cp -rv Model deb/opt/apps/deepin-wine-runner
dpkg -b deb spark-deepin-wine-runner.deb
install:
make build
sudo apt update
#sudo dpkg -i spark-deepin-wine-runner.deb
sudo apt reinstall ./spark-deepin-wine-runner.deb -y --allow-downgrades
remove:
sudo apt purge spark-deepin-wine-runner
depend:
sudo apt update
sudo apt install python3 python3-pil python3-pil.imagetk\
python3-pyquery deepin-terminal aria2 curl unrar unzip\
python3-requests fakeroot bash python3-pyqt5
run:
python3 mainwindow.py

37
Model/__init__.py Normal file
View File

@@ -0,0 +1,37 @@
import os
import sys
import PyQt5.QtWidgets as QtWidgets
def OpenTerminal(command):
if terminalEnd[terminal][1]:
os.system(f"\"{terminal}\" \"{terminalEnd[terminal][0]}\" \"{command}\"")
return
os.system(f"\"{terminal}\" \"{terminalEnd[terminal][0]}\" {command}")
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
# 对终端的获取
# 为什么 openkylin 只有 mate-terminal
# 优先为深度终端
terminal = ""
terminalList = [
"deepin-terminal",
"mate-terminal",
"gnome-terminal",
"xfce4-terminal"
]
terminalEnd = {
f"{programPath}/../launch.sh\" \"deepin-terminal": ["-e", 0],
"mate-terminal": ["-e", 1],
"gnome-terminal": ["--", 0],
"xfce4-terminal": ["-e", 1]
}
for i in terminalList:
if not os.system(f"which {i}"):
if i == "deepin-terminal":
i = f"{programPath}/../launch.sh\" \"deepin-terminal"
terminal = i
break
if terminal == "":
print("无法识别到以下的任意一个终端")
print(" ".join(terminalList))
app = QtWidgets.QApplication(sys.argv)
QtWidgets.QMessageBox.critical(None, "错误", "无法识别到以下的任意一个终端\n" + " ".join(terminalList))
exit()

Binary file not shown.

Binary file not shown.

435
README.md Normal file → Executable file
View File

@@ -1,81 +1,404 @@
# wine 运行器
#### 介绍
一个图形化了以下命令的程序
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
<h1 align="center">Wine 运行器 2.3.0</h1>
<hr>
## 介绍
一个图形化了以下命令的程序
```bash
env WINEPREFIX=容器路径 winewine的路径 可执行文件路径
```
WINEPREFIX=容器路径 winewine的路径 可执行文件路径
```
让你的 deepin-wine 打包轻松一点
让你可以简易方便的使用 wine
是使用 Python3 的 PyQt5 构建的
(自己美术功底太差,图标只能在网络上找了)
测试平台deepin 20.7UOS 家庭版 21.3.1Ubuntu 22.04Ubuntu 20.04UOS 专业版 1050
![截图_选择区域_20221002221112.png](https://storage.deepin.org/thread/202210022215217037_截图_选择区域_20221002221112.png)
而打包器可以方便的把您的 wine 容器打包成 deb 包供他人使用,程序创建的 deb 构建临时文件夹目录树如下:
```bash
/XXX
├── DEBIAN
│ └── control
│ └── postrm可选
└── opt
└── apps
└── XXX
├── entries
│ ├── applications
│ │ └── XXX.desktop
│ └── icons
│ └── hicolor
│ └── scalable
│ └── apps
│ └── XXX.pngXXX.svg
├── files
│ ├── files.7z
│ └── run.sh
└── info
是使用 Python3 的 tkinter 构建的
(自己美术功底太差,图标只能在网络上找了)
测试平台deepin 20.1 1030UOS 家庭版 21
#### 软件架构
i386 和 amd64deepin-wine、deepin-wine5、wine、wine64、deepin-wine5-stable、deepin-wine6-stable 运行在哪就运行在哪
#### 安装教程
1. 安装所需依赖
```
sudo apt install python3 python3-tk git
# 可选
# sudo apt install deepin-wine deepin-wine5 wine wine64
11 directories, 6 files
```
2. 下载本程序
## 软件架构
i386、amd64 和 arm64deepin-wine、deepin-wine5、wine、wine64、deepin-wine5-stable、deepin-wine6-stable、spark-wine7-devel、ukylin-wine 运行在哪就运行在哪
理论上支持全架构,如果 Python 能运行的话
非 X86 架构会利用到 `box86``exagear`等技术
## 分支介绍
### main 分支
主分支,稳定分支
### Alpha 分支
开发版分支,一般不稳定,有许多 bug
## 版本区分
### 无特殊标识
普通版本(一般来自 Gitee、Github、Gitlink 等渠道)
### 版本号带`-spark`
星火应用商店版本
### 版本号带`-uos`
深度应用商店版本,一般带免开开发者模式签名
### 包名带`-52`
吾爱论坛专版只在吾爱论坛发布功能会阉割如更新、评分、bug反馈功能等等一般建议使用上面的三个版本
![image.png](https://storage.deepin.org/thread/202209251259142818_image.png)
(没人喜欢看到这个无法连接服务器吧)
## 使用说明
### 均在软件的“小提示”里有说明
### 运行器
1、使用终端运行该程序可以看到 wine 以及程序本身的提示和报错;
2、wine 32 位和 64 位的容器互不兼容;
3、所有的 wine 和 winetricks 均需要自行安装(可以从 菜单栏=>程序 里面进行安装)
4、本程序支持带参数运行 wine 程序(之前版本也可以),只需要按以下格式即可:
```bash
exe路径\' 参数 \'
```
即可(单引号需要输入)
5、wine 容器如果没有指定,则会默认为 ~/.wine
6、如果可执行文件比较大的话会出现点击“获取该程序运行情况”出现假死的情况因为正在后台读取 SHA1只需要等一下即可读取速度依照您电脑处理速度、读写速度、可执行文件大小等有关
7、对于非 X86 的用户来说,请不要使用本程序自带的 Wine 安装程序和 Windows 虚拟机安装功能(检测到为非 X86 架构会自动禁用)
8、如果非 X86 的用户的 UOS 专业版用户想要使用的话,只需要在应用商店安装一个 Wine 版本微信即可在本程序选择正确的 Wine 运行程序
9、在使用 linglong 包的 Wine 应用时,必须安装至少一个 linglong 的使用 Wine 软件包才会出现该选项,而程序识别到的 Wine 是按 linglong 的使用 Wine 软件包名的字母排序第一个的 Wine且生成的容器不在用户目录下而是在容器的用户目录下用户目录/.deepinwine、/tmp、桌面、下载、文档等被映射的目录除外同理需要运行的 EXE 也必须在被映射的目录内
10、如果是使用 Deepin 23 的 Wine 安装脚本,请切记——安装过程会临时添加 Deepin 20 的 apt 源,不要中断安装以及千万不要中断后不删除源的情况下 apt upgrade !!!中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine会自动执行恢复操作即可。以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示
```bash
N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。
```
![image.png](https://storage.deepin.org/thread/202208131811324016_image.png)
### 打包器
1、deb 打包软件包名要求:
软件包名只能含有小写字母(a-z)、数字(0-9)、加号(+)和减号(-)、以及点号(.),软件包名最短长度两个字符;它必须以字母开头
2、如果要填写路径有“浏览……”按钮的是要填本计算机对应文件的路径否则就是填写安装到其他计算机使用的路径
3、输入 wine 的容器路径时最后面请不要输入“/”
4、输入可执行文件的运行路径时是以“C:/XXX/XXX.exe”的格式进行输入默认是以 C 为开头,不用“\”做命令的分隔,而是用“/”
5、.desktop 的图标只支持 PNG 格式和 SVG 格式,其他格式无法显示图标
![image.png](https://storage.deepin.org/thread/202207190820337719_image.png)
### 基于统信 Wine 生态适配脚本的打包器
第一个文本框是应用程序中文名
第二个文本框是应用程序英文名
第三个文本框是最终生成的包的描述
第四个选择框是desktop文件中的分类
第五个输入框是程序在 Wine 容器的位置,以 c:\\XXX 的形式,盘符必须小写,用反斜杠,如果路径带用户名的话会自动替换为$USER
而 StartupWMClass 字段将会由程序自动生成,作用如下:
desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与desktop文件相对应。这个值为实际运行的主程序EXE的文件名wine/crossover在程序运行后会将文件名设置为窗口类名
第六个输入框是最终生成的包的包名,包名的命名规则以deepin开头加官网域名需要前后对调位置如还不能区分再加上应用名
最后一个是最终生成的包的版本号,版本号命名规则:应用版本号+deepin+数字
![image.png](https://storage.deepin.org/thread/202207190822204627_image.png)
## 更新日志
### 2.3.02022年10月02日
**※1、自动配置解释器支持 bash 语法(新版底层调用 bash旧版任然使用旧版解析引擎**
**※2、修复缺失 wimtools 依赖导致无法正常安装的问题**
**※3、修复基于生态适配活动脚本打包器对话框过多影响使用的问题并支持指定不同的包名和容器名**
**※4、7z 文件解压不会自动替换文件然后卡死以及因此导致程序闪退的问题**
**※5、修复安装更多 Wine 终端调用问题和图标问题**
**※6、支持 openkylin**
7、支持通过 exe 路径自动生成 Wine 容器路径
8、支持禁用/启用 wine 容器是否生成快捷方式的功能以及启用/禁用程序崩溃提示对话框
9、支持设置 wine 容器代理
10、自动配置脚本支持使用 `--help` 参数查看帮助
![截图_选择区域_20221002221112.png](https://storage.deepin.org/thread/202210022215217037_截图_选择区域_20221002221112.png)
### 2.2.02022年09月24日
**※1、Dll 提取工具支持 NT 6.X 及以上版本的 Dll 提取并优化了提示文本**
**※2、支持卸载后自动删除缓存/配置文件(删除配置文件只限 purge 参数删除)**
**※3、DEBUG 模式输出更多信息以方便调试(原本只输出 pid、Err**
**※4、支持安装 msi 文件**
**※5、修复无法正常评分的问题**
**※6、修复 QQ、TIM 安装后无法正常生成快捷方式的问题**
**※7、基于生态适配活动的打包器更换为 spark-wine-helper 以及添加自动删除残留脚本**
**※8、打包器支持从 deb 文件读取信息**
**※9、修复在 UOS 专业版(鲲鹏)无法正常运行的问题以及组件安装功能无法正常执行安装命令的问题**
**※10、修复出现星火应用商店和官方应用商店反复提示更新死循环的问题**
**※11、新增评分分数预测功能不准**
**※12、更换程序接口**
13、更新组件安装的离线列表
14、不再强制依赖深度终端只做推荐安装
15、基于生态活动适配脚本的打包器在打包完成后会弹出对话框提示打包完成
16、优化打包器的 spark wine helper 依赖设置方式
17、新增 RegShot注册表比对工具
18、添加 Wine 运行器评分数据的搜索功能
![image.png](https://storage.deepin.org/thread/202209242126366137_image.png)
### 2.1.0-22022年09月05日
**※1、修复终端调用问题**
### 2.1.0-12022年09月03日
**※1、删除多余图标**
**※2、修复将打包文件生成目录设置为 / 等重要目录导致删库的问题**
3、修复了打包器浏览按钮闪退、生成的 postrm 有误的问题
4、支持在输入信息时自动生成 deb 保存路径
### 2.1.02022年08月26日
**※1、新增新的 Wine 安装器,并支持将安装的 Wine 打包到 Wine 程序 deb 包中**
**※2、Wine 打包器打包 Windows 应用支持将 Wine 打包入 deb 内,可以不依赖 Wine一般不推荐把 Wine 打包入内,推荐用依赖的形式),并支持设置自定义依赖和生成模板**
**※3、开始初步多语言支持**
**※4、修复了在没有安装任何 Wine 的情况下使用高级功能导致程序闪退的问题**
**※5、支持云端自动获取数据配置 Wine 容器**
**※6、支持手动导入配置文件自动配置 Wine 容器**
**※7、新增从云端下载 Dll 的功能**
**※8、修复了 Dll 提取工具不会在 winecfg 中添加原装的问题**
9、修改错别字图形话=>图形化)
10、修复评分功能名称为空也可以上传评分的问题
11、去除 toilet 依赖,使在 Deepin 23 Preview 上运行更佳
12、支持删除所有由 Wine 创建的启动器快捷方式
![截图_选择区域_20220826143213.png](https://storage.deepin.org/thread/202208261437088825_截图_选择区域_20220826143213.png)
### 2.0.0-22022年08月16日
修复了在 deepin 23 安装缺少`toilet`依赖导致无法安装的问题,更多更新内容请见 2.0.0
### 2.0.0-12022年08月15日
修复了缺失`python3-psutil`依赖的问题,更多更新内容请见 2.0.0
### 2.0.02022年08月13日
**※1、修复了重复路径一直自动重复增加的问题**
**※2、修复了两个打包器打包错误的问题非基于生态活动脚本的为 wine 导入错误,基于生态活动脚本的为架构有误导致打包出的 deb 无法打包)**
**※3、适配了部分非 i386、amd64 架构计算机的 UOS 系统使用的 wine 并支持打包非 i386、amd64 架构计算机的 UOS 系统使用的 wine 程序 deb 包**
**※4、支持安装 dxvk遵守 Zlib 开源协议)**
**※5、运行器、打包器包括非基于生态适配活动脚本制作的支持使用 Wine 生态适配活动的容器清理脚本**
**※6、支持更加简易的安装最新版的 WineHQ**
**※7、增加字体商店**
**※8、新增查看可执行文件运行情况的功能**
9、支持不显示没有安装的 Wine方便用户识别
10、修改了 Wine 的顺序使其更加合理
11、支持删除安装 exe 后在启动器的快捷方式
12、优化了 Wine 打包器(非基于生态活动脚本)对容器的处理
13、修复了 Wine 打包器(非基于生态活动脚本)打包出的 deb 安装时显示为解压缩后会消耗 0 B 的额外空间以及 postrm 的一些问题
14、支持删除无需使用的程序组件
15、支持组件/运行库下载后缓存方便下次使用(可以清理)
16、点击获取图标按钮后会自动读取 exe 框的程序图标(不支持相对路径和包内路径,只支持绝对路径)
![image.png](https://storage.deepin.org/thread/202208131811324016_image.png)
### 1.8.02022年08月03日
**※1、修复了打包器非基于活动脚本 control、postrm 写入文件颠倒的问题**
**※2、内置一个微型的 Windows 应用商店(应用来源:腾讯软件管家)**
**※3、初步支持 deepin 23添加基于 linglong Wine 的运行方式,需要安装一个 linglong 包的 使用 Wine 应用;添加从 Deepin 20 源获取 Wine 的安装方式)**
4、更新了打包器非基于活动脚本调用星火 spark-wine-helper 的 run.sh 脚本格式
5、修复了打包器基于活动脚本在 dde-top-panel 和 dde-globalmenu-service 下无法打开帮助提示的问题
6、支持屏蔽 Wine 默认的 Mono、Gecko 安装器(屏蔽方法来自星火应用商店审核组和提供的新 run.sh 标准)
![image.png](https://storage.deepin.org/thread/202208031351466402_image.png)
![image.png](https://storage.deepin.org/thread/2022080317313975_image.png)
### 1.7.12022年07月29日
**※1、更换为 @PossibleVing 提供的程序图标**
**※2、修改了统信 Wine 生态适配活动的脚本,支持在非 UOS 系统打包**
**※3、修复了打包器在打包应用未指定图标的情况下显示对话框后强制退出的问题**
4、修改 .net framework 3.5 的安装包,从在线版改为本地版
5、支持设置主题
6、添加 Geek Uninstaller 手动升级脚本
![image.png](https://storage.deepin.org/thread/202207291533597182_image.png)
### 1.7.02022年07月19日
<b>※1、界面大改造从使用 Tkinter 改为 Qt参考了 @134******28 和 @sgb76 提供的设计方案和代码</b>
**※2、添加了基于 UOS 生态适配活动打包脚本的打包器,以及基于 Virtualbox 的简易 Windows 镜像安装工具**
**※3、将 pip 由阿里源改为华为源,提升下载安装速度,并删除使用 pip 下载库的功能(已不需要,废弃)**
4、添加 @delsin 和 @神末shenmo 建议的 postrm 脚本
5、优化多屏窗口居中问题
6、修复 1.6.0 程序无法保存设置的问题
7、修复 1.6.0 的更新程序无法正常更新的问题
8、升级 Geek Uninstaller 版本
![image.png](https://storage.deepin.org/thread/202207190819153104_image.png)
### 1.6.02022年07月10日
**※1、新增程序感谢、谢明以及程序的建议和问题反馈和内置更新程序**
**※2、支持 winetricks 指定 Wine 打开**
**※3、新增窗口透明工具感谢@a2035274 和 @虚幻的早晨 在论坛的讨论**
**※4、支持在指定容器、Wine 安装 MSXML**
**※5、支持启用/关闭 opengl感谢@zhangs 在论坛发帖)以及支持安装/卸载 winbind**
**※6、添加云沙箱的网站链接快捷方式**
**※7、支持从星火应用商店源安装 Windows 常见字体**
8、优化窗口布局以及默认显示位置
9、支持打开指定容器、Wine 的资源管理器
![image.png](https://storage.deepin.org/thread/202207101734379289_image.png)
### 1.5.32022年07月07日
**※1、新增专门的程序设置支持设置 Wine 容器架构、DEBUG 信息是否输出、默认的 Wine、默认容器路径、是否使用终端打开和 Wine 参数**
**※2、修复了 wine 打包器的控件禁用不全和打包的 deb 用户残留的问题**
**※3、新增暗黑主题**
4、合并了 deepin wine 文管设置器
![Screenshot_20220707_215916.png](https://storage.deepin.org/thread/202207072207209350_Screenshot_20220707_215916.png)
### 1.5.22022年07月06日
**※1、添加并翻新了 deepin-wine5 打包器,改为 wine 打包器,支持常见 wine 的打包**
**※2、新增 Visual Studio C++ 的安装程序**
**※3、新增从系统安装镜像提取 DLL 到 wine 容器的功能(当前只支持 Windows XP 和 Windows Server 2003 的官方安装镜像)**
4、修复了安装星火应用商店的 wine 运行器右键打开方式没有 wine 运行器选项的问题
5、新增脚本优化 deepin terminal 调用本程序脚本显示不佳的问题
![image.png](https://storage.deepin.org/thread/202207061004446872_image.png)
![image.png](https://storage.deepin.org/thread/202207061005149959_image.png)
![image.png](https://storage.deepin.org/thread/202207061005251446_image.png)
### 1.5.12022年07月04日
**※1、支持打开 spark-wine7-devel 的专门缩放设置(如未安装则此按钮禁用)**
**※2、支持提取选择的 exe 文件的图标**
**※3、支持向指定的 wine 容器安装 mono、gecko、.net framework此功能在菜单栏“Wine”中卸载只需要使用程序的卸载按钮打开 Geek Uninstaller 即可)**
**※4、支持指定特定的 wine 容器调用 winetricks**
**※5、在没有指定 wine 容器的情况下,将自动设置为 ~/.wine**
6、新增 ukylin-wine
7、将默认选择的 wine 改为 deepin-wine6 stable
8、支持打开指定容器的 winecfg、winver、regedit、taskmgr
9、双击使用 wine 运行器打开 exe不知道能不能生效
![image.png](https://storage.deepin.org/thread/202207042234078682_image.png)
### 1.5.02022年07月03日
**※1、支持显示 wine 程序运行时的返回内容**
**※2、优化打包方式减少从 pip 安装的库,并将 pip 源设为阿里源提升下载速度**
**※3、新增 spark-wine7-devel**
**※4、支持从程序启动用于安装 wine 的程序(在菜单栏的“程序”)**
5、优化 wine 安装脚本,在安装星火应用商店的 wine 时支持检测是否有 ss-apt-fast如果有就调用替代 apt 提升安装速度
6、支持关闭指定 wine 的进程,以及访问对应 wine 容器的目录和字体目录
7、从生成shell脚本改为升级到desktop文件
![image.png](https://storage.deepin.org/thread/202207031902414162_image.png)
### 1.4.02021年07月27日
**※1、修改了 wine 选项的说明和 wine 的启动方式;**
**※2、设置了窗口主题;**
**※3、修改了打包以及 .desktop 文件**
4、删除了以前的残略调试代码;
5、优化了 wine 列表的显示流程;
6、更新了“关于”窗口
7、更新了提示内容
8、在 gitee/github 仓库上添加了 wine 安装脚本
![](https://images.gitee.com/uploads/images/2021/0727/151226_750579c2_7896131.png)
### 1.3.12021年05月23日
1、添加了历史记录使用更加方便
2、增加“更新内容”项
3、支持浏览窗口的默认路径为上次访问的路径
4、支持清空历史记录
5、代码结构优化
6、修改了控件大小
![run](https://images.gitee.com/uploads/images/2021/0523/155621_95e6fea5_7896131.png "截图录屏_选择区域_20210523153529.png")
![run](https://images.gitee.com/uploads/images/2021/0523/155633_b7ab458a_7896131.png "截图录屏_选择区域_20210523153548.png")
![run](https://images.gitee.com/uploads/images/2021/0523/155643_fc933b76_7896131.png "截图录屏_选择区域_20210523153929.png")
![run](https://images.gitee.com/uploads/images/2021/0523/155654_90ceb8ce_7896131.png "截图录屏_选择区域_20210523153947.png")
![run](https://images.gitee.com/uploads/images/2021/0523/155702_66841e22_7896131.png "截图录屏_选择区域_20210523154007.png")
### 1.3.02021年05月22日
1. 修改了窗口显示控件的库(从 tkinter 到 tkinter.ttk
2. 添加了更多 wine 可以选择deepin-wine、deepin-wine5、wine、wine64、deepin-wine5-stable、deepin-wine6-stable
3. 修改了程序的提示信息
![输入图片说明](https://images.gitee.com/uploads/images/2021/0522/175640_a592db4d_7896131.png "截图录屏_tk_20210522170529.png")
### 1.2.02021年03月14日
1. 修改布局方式
2. 轻度梳理代码布局
![输入图片说明](https://images.gitee.com/uploads/images/2021/0314/181320_cb4cbf72_7896131.png "屏幕截图.png")
### 1.1.2 (未发布发行版)
1. 进行了细节优化
### 1.1.12021年01月31日
1. 使用多线程,防止界面假死
2. 添加软件图标
![](https://images.gitee.com/uploads/images/2021/0131/143557_40911a67_7896131.png)
### 1.1.02021年01月29日
1. 修改了代码的部分内容,使其支持容器路径可带空格无需“\”转义,以及支持手动保存运行脚本到桌面
### 1.0.02021年01月29日
1. 实现内容
## 源码安装教程
1. 安装需要的依赖
```bash
sudo apt install git make
```
2. 下载仓库
```bash
git clone https://gitee.com/gfdgd-xi/deep-wine-runner.git
```
3. 运行本程序
```
cd deep-wine-runner
chmod 777 main.py
./main.py
```
3. 从源码运行程序(如果是从源码安装请跳过这一步)
```bash
make depend
make run
```
4. 从源码安装程序
```bash
make install
```
## 对于 Deepin/UOSAMD64 平台)小白如何使用该程序?
下面是送给小白的 wine 运行器简单使用方法先声明wine 并***不能完美的运行所有 exe 文件***,利用此 wine 运行器简易安装可执行文件的方法如下:
#### 使用说明
1. 安装本程序
2. 在应用商店里随便安装一个 QQ 或者微信等基于 deepin-wine6-stable 打包的应用
![image.png](https://storage.deepin.org/thread/202207061542433333_image.png)
3. 找到需要安装的 exe双击或者右键=》打开方式=》wine 运行器打开
![image.png](https://storage.deepin.org/thread/202207061543443740_image.png)
4. 点击“运行程序”即可
![image.png](https://storage.deepin.org/thread/202207191920282406_image.png)
(均在软件的“小提示”里有说明)
1、使用终端运行该程序可以看到 wine 以及程序本身的提示和报错
2、wine 32 位和 64 位的容器互不兼容
#### 更新日志
## 稍微讲一下目前 deepin 23 Preview 运行自定义 exe 的方法Wine 运行器均已支持)
1.3.0 更新内容:
1、修改了窗口显示控件的库从 tkinter 到 tkinter.ttk
### 方法一
2、添加了更多 wine 可以选择deepin-wine、deepin-wine5、wine、wine64、deepin-wine5-stable、deepin-wine6-stable
随便安装一个 linglong 格式包的 wine 程序(要记住包名),然后在终端输入
3、修改了程序的提示信息
```bash
ll-cli run 包名 --exec '/bin/deepin-wine6-stable'
```
1.2.0 更新内容:
1、修改布局方式
即可,缺陷可看运行器上方小提示第 6 点
2、轻度梳理代码布局
### 方法二(容易翻车)
1.1.2 更新内容(未发布发行版):
1、进行了细节优化
添加 Deepin 20 的**官方源和商店源**,然后输入如下的命令:**切记不能sudo apt upgrade**,会出现的问题可以看运行器的小提示第 7 点,以及无法保证所有 Wine 均可运行
1.1.1 更新内容:
1、使用多线程防止界面假死
2、添加软件图标
```bash
sudo dpkg --add-architecture i386
sudo apt update
# 安装普通的 Wine
sudo apt install wine
# 安装 deepin-wine5-stable本机测试 X64 的 Wine 跑不了)
sudo apt install deepin-wine5-stable
# 安装 deepin-wine6-stable
sudo apt install deepin-wine6-stable
```
**使用完后最好删除掉 Deepin 20 的官方源和商店源,防止出问题**
可以看 [@ThinkYoung](user/18570) 写的 https://bbs.deepin.org/post/241148可以参考借鉴
1.1 更新内容:
1、修改了代码的部分内容使其支持容器路径可带空格无需“\”转义,以及支持手动保存运行脚本到桌面
### 方法三
我不知道了,希望能有大佬提供更好的解决方案
1.0 更新内容:
1、实现内容
## 下载链接
Giteehttps://gitee.com/gfdgd-xi/deep-wine-runner
Githubhttps://github.com/gfdgd-xi/deep-wine-runner
Gitlinkhttps://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner
蓝奏云https://gfdgdxi.lanzouj.com/b01nz7y3e密码:7oii
星火应用商店spk://store/tools/spark-deepin-wine-runner
#### 特技
## 更多
+ https://gitee.com/gfdgd-xi/deep-wine-runner
+ https://github.com/gfdgd-xi/deep-wine-runner
+ https://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner
难道是使用 tkinter 进行构建吗?所以没有咯
## Star 一下吧
开发不易,原创艰难,给一个 Star 吧,你的 Star 是我继续开发的动力
[![star](https://gitee.com/gfdgd-xi/deep-wine-runner/badge/star.svg?theme=dark)](https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers)
# ©2020-Now

BIN
RegShot/182to183.exe Normal file

Binary file not shown.

339
RegShot/gpl.txt Normal file
View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

1424
RegShot/language.ini Normal file

File diff suppressed because it is too large Load Diff

BIN
RegShot/regshot.exe Normal file

Binary file not shown.

15
RegShot/regshot.ini Normal file
View File

@@ -0,0 +1,15 @@
[Setup]
Flag=1
ExtDir=
OutDir=
UseLongRegHead=0
[SkipRegKey]
0=
1=
2=
[SkipDir]
0=
1=
2=

Some files were not shown because too many files have changed in this diff Show More