mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-01-13 01:58:27 +08:00
105 lines
3.8 KiB
Python
105 lines
3.8 KiB
Python
|
#!/usr/bin/env python3
|
|||
|
# 使用系统默认的 python3 运行
|
|||
|
###########################################################################################
|
|||
|
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
|
|||
|
# 版本:1.8.0
|
|||
|
# 更新时间:2022年08月24日
|
|||
|
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
|
|||
|
# 基于 Python3 构建
|
|||
|
###########################################################################################
|
|||
|
#################
|
|||
|
# 引入所需的库
|
|||
|
#################
|
|||
|
import os
|
|||
|
import sys
|
|||
|
import json
|
|||
|
import traceback
|
|||
|
import requests
|
|||
|
|
|||
|
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]
|
|||
|
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()
|
|||
|
# 获取云列表
|
|||
|
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列表获取成功!")
|
|||
|
# 获取用户希望安装的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 = 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 os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/system32' -o '{dllName}' '{urlPart}'"):
|
|||
|
print("下载失败!请重试")
|