mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-05-21 07:29:52 +08:00
1.9.0大体完成
This commit is contained in:
parent
df344a398c
commit
d8f482533c
AllInstall.pyInstallNewWineHQ.shMakefileclean-unuse-program.pycleanbottle.shdeepin-wine-packager.pydeepin-wine-runner-create-botton.pydlls-arm.7zdlls.7z
deb
DEBIAN
opt/apps/deepin-wine-runner
AllInstall.pyInstallNewWineHQ.shStartVM.sh
VM
clean-unuse-program.pydeepin-wine-packager.pydeepin-wine-runnerdeepin.listdlls-arm.7zdlls.7zdlls
gdi32.dll.sogdi32.sokernel32.dll.sokernelbase.dll.sosechost.dll.soshell32.dll.souser32.dll.souser32.sowinebrowser.exe.sowinex11.drv.sows2_32.dll.so
dxvk.7zdxvk
information.jsonpackage-script.zipsparkstore.listwined3d.dll.so.7zusr/bin
dlls
gdi32.dll.sogdi32.sokernel32.dll.sokernelbase.dll.sosechost.dll.soshell32.dll.souser32.dll.souser32.sowinebrowser.exe.sowinex11.drv.sows2_32.dll.so
dxvk.7zdxvk
information.jsonmainwindow.pypackage-script.zippackage-script
system.reguser.reguserdef.regwined3d.dll.so.7z@ -22,11 +22,12 @@ def AddSparkStoreSource():
|
||||
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(f"sudo apt install \"{wine}\" -y")
|
||||
#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")
|
||||
os.system(f"sudo ss-apt-fast install \"{wine}\" -y")
|
||||
|
||||
###################
|
||||
# 程序功能
|
||||
@ -47,12 +48,8 @@ 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=' ')
|
||||
print("请问是否要安装 deepin-wine5(需要安装最新版星火应用商店)?[Y/N]", end=' ')
|
||||
choose = input().upper()
|
||||
if not choose == "N":
|
||||
if not os.path.exists("/etc/apt/sources.list.d/sparkstore.list"):
|
||||
AddSparkStoreSource()
|
||||
InstallSparkWine("deepin-wine5")
|
||||
print("请问是否要安装 deepin-wine5-stable?[Y/N]", end=' ')
|
||||
choose = input().upper()
|
||||
if not choose == "N":
|
||||
@ -61,11 +58,9 @@ 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=' ')
|
||||
print("请问是否要安装 spark-wine7-devel(需要安装最新版星火应用商店)?[Y/N]", end=' ')
|
||||
choose = input().upper()
|
||||
if not choose == "N":
|
||||
if not os.path.exists("/etc/apt/sources.list.d/sparkstore.list"):
|
||||
AddSparkStoreSource()
|
||||
InstallSparkWine("spark-wine7-devel")
|
||||
print("请问是否要安装 ukylin-wine(需要添加 ukylin 源,但因为可能会导致系统问题,将不会自动添加)?[Y/N]", end=" ")
|
||||
choose = input().upper()
|
||||
|
67
InstallNewWineHQ.sh
Executable file
67
InstallNewWineHQ.sh
Executable file
@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
ubuntuSource=(
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources"
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/impish/winehq-impish.sources"
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/focal/winehq-focal.sources"
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/bionic/winehq-bionic.sources"
|
||||
)
|
||||
debianSource=(
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/buster/winehq-buster.sources"
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bullseye/winehq-bullseye.sources"
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources"
|
||||
)
|
||||
# 选择发行版
|
||||
toilet WineHQ
|
||||
echo "WineHQ 官网:https://wiki.winehq.org/"
|
||||
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.04,Linux Mint 20.x"
|
||||
echo "3. Ubuntu 18.04,Linux Mint 19.x"
|
||||
fi
|
||||
read systemVersion
|
||||
# 选择 Wine
|
||||
echo "选择 Wine:"
|
||||
echo "0. 稳定分支"
|
||||
echo "1. 开发分支"
|
||||
echo "2. Staging 分支"
|
||||
read programVersion
|
||||
# 初步配置
|
||||
sudo apt-key del "D43F 6401 4536 9C51 D786 DDEA 76F1 A20F F987 672F"
|
||||
sudo dpkg --add-architecture i386
|
||||
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||
# 检测 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
|
||||
# 添加源
|
||||
if [ $system = "0" ]; then
|
||||
${debianSource[$systemVersion]}
|
||||
fi
|
||||
if [ $system = "1" ]; then
|
||||
${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
|
22
Makefile
22
Makefile
@ -8,6 +8,16 @@ build:
|
||||
cp -rv VM-source/Windows7X86Auto.iso VM
|
||||
cp -rv VM-source/run.py VM
|
||||
zip -v -q -r package-script.zip package-script
|
||||
#rm -rfv dlls.7z
|
||||
#rm -rfv dlls-arm.7z
|
||||
#rm -rfv dxvk.7z
|
||||
#rm -rfv exagear.7z
|
||||
#rm -rfv wined3d.dll.so.7z
|
||||
#7z a dlls.7z dlls
|
||||
#7z a dlls-arm.7z dlls-arm
|
||||
#7z a dxvk.7z dxvk
|
||||
#7z a exagear.7z exagear
|
||||
#7z a wined3d.dll.so.7z wined3d.dll.so
|
||||
cp -rv VM deb/opt/apps/deepin-wine-runner
|
||||
cp -rv AllInstall.py deb/opt/apps/deepin-wine-runner
|
||||
cp -rv BeCyIconGrabber.exe deb/opt/apps/deepin-wine-runner
|
||||
@ -33,12 +43,18 @@ build:
|
||||
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 dlls deb/opt/apps/deepin-wine-runner
|
||||
cp -rv dlls.7z 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 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 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
|
||||
dpkg -b deb spark-deepin-wine-runner.deb
|
||||
|
||||
|
||||
@ -46,7 +62,7 @@ install:
|
||||
make build
|
||||
sudo apt update
|
||||
#sudo dpkg -i spark-deepin-wine-runner.deb
|
||||
sudo apt install ./spark-deepin-wine-runner.deb -y --allow-downgrades
|
||||
sudo apt reinstall ./spark-deepin-wine-runner.deb -y --allow-downgrades
|
||||
|
||||
remove:
|
||||
sudo apt purge spark-deepin-wine-runner
|
||||
|
85
clean-unuse-program.py
Executable file
85
clean-unuse-program.py
Executable file
@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
|
||||
if __name__ == "__main__":
|
||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||
print("此程序可以帮助您删除程序无需的组件以节约空间")
|
||||
print("如果删除后想要恢复这样组件需要重新安装该软件包")
|
||||
delProgramList = []
|
||||
delProramCommand = "#!/bin/bash\n"
|
||||
for i in [
|
||||
[
|
||||
"Wine 打包器(不基于生态打包脚本)",
|
||||
[
|
||||
f"{programPath}/dlls.7z",
|
||||
f"{programPath}/dlls",
|
||||
f"{programPath}/exagear",
|
||||
f"{programPath}/exagear.7z",
|
||||
f"{programPath}/exagear",
|
||||
f"{programPath}/wined3d.dll.so.7z",
|
||||
f"{programPath}/wined3d.dll.so",
|
||||
f"{programPath}/deepin-wine-packager.py",
|
||||
"/usr/bin/deepin-wine-package-builder",
|
||||
"/usr/share/applications/spark-deepin-wine-package-builder.desktop"
|
||||
]
|
||||
],
|
||||
[
|
||||
"Wine 打包器(基于生态打包脚本)",
|
||||
[
|
||||
f"{programPath}/deepin-wine-packager-with-script.py",
|
||||
f"{programPath}/package-script.zip",
|
||||
f"{programPath}/package-script",
|
||||
"/usr/bin/deepin-wine-packager-with-script",
|
||||
"/usr/share/applications/spark-deepin-wine-packager-with-script.desktop"
|
||||
]
|
||||
],
|
||||
[
|
||||
"Arm 64 box86 wine 运行 DLL",
|
||||
[
|
||||
f"{programPath}/dlls-arm.7z",
|
||||
f"{programPath}/dlls-arm"
|
||||
]
|
||||
],
|
||||
[
|
||||
"Windows 虚拟机简易安装组件",
|
||||
[
|
||||
f"{programPath}/StartVM.sh",
|
||||
f"{programPath}/RunVM.sh",
|
||||
f"{programPath}/VM",
|
||||
"/usr/share/applications/spark-deepin-wine-runner-control-vm.desktop",
|
||||
"/usr/share/applications/spark-deepin-wine-runner-start-vm.desktop"
|
||||
]
|
||||
],
|
||||
[
|
||||
"Wine 安装组件",
|
||||
[
|
||||
f"{programPath}/AllInstall.py",
|
||||
f"{programPath}/wine install",
|
||||
f"{programPath}/InstallWineOnDeepin23.py",
|
||||
f"{programPath}/sparkstore.list",
|
||||
f"{programPath}/InstallNewWineHQ.sh",
|
||||
"/usr/bin/deepin-wine-runner-wine-installer",
|
||||
"/usr/bin/deepin-wine-runner-wine-install-deepin23",
|
||||
"/usr/bin/deepin-wine-runner-wine-install",
|
||||
"/usr/bin/deepin-wine-runner-winehq-install"
|
||||
]
|
||||
]
|
||||
]:
|
||||
if not os.path.exists(i[1][0]):
|
||||
continue
|
||||
if input(f"是否删除组件“{i[0]}”?[Y/n]").upper() == "Y":
|
||||
delProgramList.append(i)
|
||||
for x in i[1]:
|
||||
if x == "/*" or x == "/": # 为了防止个人疏忽,出现危险命令,所以如果有最危险的 /* 会直接跳过该命令的写入
|
||||
continue
|
||||
delProramCommand += f"rm -rfv \"{x}\"\n"
|
||||
if len(delProgramList) == 0:
|
||||
print("您已经删除了所有可删除的组件,如果需要使用被删除的组件,请重新安装该软件安装包")
|
||||
input("按回车退出")
|
||||
exit()
|
||||
print("开始删除")
|
||||
file = open("/tmp/deepin-wine-clean.sh", "w")
|
||||
file.write(delProramCommand)
|
||||
file.close()
|
||||
os.system("pkexec bash /tmp/deepin-wine-clean.sh")
|
||||
input("按回车键退出程序")
|
393
cleanbottle.sh
Executable file
393
cleanbottle.sh
Executable file
@ -0,0 +1,393 @@
|
||||
#!/bin/sh
|
||||
if [ $WINE = "" ]; then
|
||||
WINE_CMD="deepin-wine5"
|
||||
else
|
||||
WINE_CMD=$WINE
|
||||
fi
|
||||
userdir=$USER
|
||||
|
||||
remove_file()
|
||||
{
|
||||
echo "============remove [$1]"
|
||||
rm -rfv "$1"
|
||||
}
|
||||
|
||||
purge_dir()
|
||||
{
|
||||
echo "=============clean [$1]"
|
||||
if [ -e "$1" ]; then
|
||||
find "$1" -mindepth 1 -ignore_readdir_race -exec rm -rfv {} \;
|
||||
else
|
||||
mkdir -p "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
clean_gecko()
|
||||
{
|
||||
geckoid=$($WINE_CMD $BottleBase/windows/system32/uninstaller.exe --list | grep Gecko | cut -d"|" -f1)
|
||||
echo " gecko GUID: ${geckoid}"
|
||||
if [ -n "${geckoid}" ]; then
|
||||
echo "uninstall gecko..."
|
||||
$WINE_CMD $BottleBase/windows/system32/uninstaller.exe --remove ${geckoid}
|
||||
fi
|
||||
if [ -e "$BottleBase/windows/system32/gecko" ]; then
|
||||
for i in $(ls "$BottleBase/windows/system32/gecko/" | grep -v plugin); do
|
||||
echo "=============remove gecko dir [$i]"
|
||||
rm -rfv "$BottleBase/windows/system32/gecko/$i"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
clean_common_temp()
|
||||
{
|
||||
remove_file "$BottleBase/../winetricks.log"
|
||||
purge_dir "$BottleBase/windows/ControlPanelDB"
|
||||
remove_file "$BottleBase/windows/control-panel.db"
|
||||
purge_dir "$BottleBase/windows/temp"
|
||||
purge_dir "$BottleBase/windows/Installer"
|
||||
purge_dir "$BottleBase/users/$userdir/Temp"
|
||||
purge_dir "$BottleBase/users/$userdir/Cookies"
|
||||
purge_dir "$BottleBase/users/$userdir/Recent"
|
||||
remove_file "$BottleBase/users/$userdir/Application Data/pcmaster"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/wine_gecko"
|
||||
purge_dir "$BottleBase/users/$userdir/Local Settings/History"
|
||||
purge_dir "$BottleBase/users/$userdir/Local Settings/Temporary Internet Files"
|
||||
#remove_file "$BottleBase/users/${USER}"
|
||||
purge_dir "$BottleBase/users/Public/Temp"
|
||||
remove_file "$BottleBase/../PACKAGE_VERSION"
|
||||
remove_file "$BottleBase/../update.policy"
|
||||
purge_dir "$BottleBase/deepin"
|
||||
}
|
||||
|
||||
cleanup_aliwangwang()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/AliWangWang/AliIM.exe" ]; then return; fi
|
||||
|
||||
echo "++++AliWangWang detected. cleaning..."
|
||||
purge_dir "$BottleBase/Program Files/AliWangWang/profiles"
|
||||
purge_dir "$BottleBase/Program Files/AliWangWang/new"
|
||||
purge_dir "$BottleBase/users/$userdir/Local Settings/Application Data/aef"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/AliWangWang"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/TaobaoProtect"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/wwbizsrv"
|
||||
}
|
||||
|
||||
cleanup_aliworkbench()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/AliWorkbench/AliWorkbench.exe" ]; then return; fi
|
||||
|
||||
echo "++++AliWorkbench detected. cleaning..."
|
||||
purge_dir "$BottleBase/users/Public/Documents/AliWorkbench"
|
||||
purge_dir "$BottleBase/users/$userdir/Local Settings/Application Data/aef/"
|
||||
purge_dir "$BottleBase/users/$userdir/Local Settings/Application Data/AliWorkbench/"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/AliWorkbench/"
|
||||
}
|
||||
|
||||
cleanup_flash()
|
||||
{
|
||||
if [ ! -e "$BottleBase/windows/system32/Macromed/Flash/" ]; then return; fi
|
||||
|
||||
echo "++++flash detected. cleaning..."
|
||||
remove_file "$BottleBase/users/$userdir/Application Data/Adobe"
|
||||
remove_file "$BottleBase/users/$userdir/Application Data/Macromedia"
|
||||
remove_file "$BottleBase/windows/system32/FlashPlayerApp.exe"
|
||||
remove_file "$BottleBase/windows/ControlPanelDB/FlashPlayerCPLApp.ico"
|
||||
remove_file "$BottleBase/windows/system32/FlashPlayerCPLApp.cpl"
|
||||
remove_file "$BottleBase/windows/system32/Macromed/Flash/FlashInstall.log"
|
||||
#remove_file "$BottleBase/windows/system32/Macromed/Flash/Flash*.dll"
|
||||
#remove_file "$BottleBase/windows/system32/Macromed/Flash/Flash*.exe"
|
||||
}
|
||||
|
||||
cleanup_foobar2000()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/foobar2000/foobar2000.exe" ]; then return; fi
|
||||
|
||||
echo "++++foobar2000 detected. cleaning..."
|
||||
purge_dir "$BottleBase/Program Files/foobar2000/configuration"
|
||||
purge_dir "$BottleBase/Program Files/foobar2000/library"
|
||||
purge_dir "$BottleBase/Program Files/foobar2000/playlists-v1.3"
|
||||
remove_file "$BottleBase/Program Files/foobar2000/theme.fth"
|
||||
}
|
||||
|
||||
cleanup_mailmaster()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Netease/MailMaster/MailMaster.exe" ]; then return; fi
|
||||
|
||||
echo "++++MailMaster detected. cleaning..."
|
||||
remove_file "$BottleBase/Program Files/Netease/MailMaster/account"
|
||||
remove_file "$BottleBase/Program Files/Netease/MailMaster/address"
|
||||
remove_file "$BottleBase/Program Files/Netease/MailMaster/tmp"
|
||||
remove_file "$BottleBase/Program Files/Netease/MailMaster/UpdateTemp"
|
||||
remove_file "$BottleBase/Program Files/Netease/MailMaster/applog.txt"
|
||||
remove_file "$BottleBase/Program Files/Netease/MailMaster/netlog.txt"
|
||||
remove_file "$BottleBase/Program Files/Netease/MailMaster/global.cfg"
|
||||
remove_file "$BottleBase/Program Files/Netease/MailMaster/schd.sdb"
|
||||
}
|
||||
|
||||
cleanup_nativeie()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Internet Explorer/iexplore.exe.mui" ]; then return; fi
|
||||
|
||||
echo "++++native IE detected. cleaning..."
|
||||
purge_dir "$BottleBase/users/$userdir/Local Settings/Application Data/Microsoft/"
|
||||
|
||||
remove_file "$BottleBase/windows/ie8"
|
||||
remove_file "$BottleBase/windows/%DownloadedProgramFiles%"
|
||||
|
||||
#remove all useless gecko files
|
||||
remove_file "$BottleBase/windows/system32/gecko"
|
||||
}
|
||||
|
||||
cleanup_qq_before()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Tencent/QQ/Bin/QQ.exe" ]; then return; fi
|
||||
|
||||
echo "++++QQ detected. cleaning..."
|
||||
if [ -f "$BottleBase/Program Files/Tencent/Qzone/QQPhotoDrawUpdateSvr.exe" ]; then
|
||||
remove_file "$BottleBase/Program Files/Tencent/Qzone"
|
||||
fi
|
||||
if [ -f "$BottleBase/Program Files/Tencent/QQGameMicro/QQGameMicro.exe" ]; then
|
||||
remove_file "$BottleBase/Program Files/Tencent/QQGameMicro"
|
||||
fi
|
||||
}
|
||||
|
||||
cleanup_qq()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Tencent/QQ/Bin/QQ.exe" ]; then return; fi
|
||||
|
||||
echo "++++cleaning QQ remains..."
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent"
|
||||
purge_dir "$BottleBase/users/$userdir/Local Settings/Application Data/Tencent"
|
||||
purge_dir "$BottleBase/users/Public/Application Data/Tencent/QQPCMgr"
|
||||
purge_dir "$BottleBase/users/Public/Application Data/Tencent/QQProtect"
|
||||
purge_dir "$BottleBase/users/Public/Application Data/Tencent/QQDownload"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/Npchrome"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/QQDownload"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/QQMiniDL"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/TXFTN"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/TXPTOP"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/TXSSO"
|
||||
purge_dir "$BottleBase/Program Files/Tencent/QQGameMicro"
|
||||
purge_dir "$BottleBase/Program Files/Tencent/QQMusic"
|
||||
remove_file "$BottleBase/Program Files/Tencent/QQ/Plugin/Com.Tencent.QQPet/bin/QQPet"
|
||||
remove_file "$BottleBase/Program Files/Tencent/QQ/Users"
|
||||
}
|
||||
|
||||
cleanup_tim()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Tencent/TIM/Bin/TIM.exe" ]; then return; fi
|
||||
|
||||
echo "++++cleaning TIM remains..."
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent"
|
||||
purge_dir "$BottleBase/users/$userdir/Local Settings/Application Data/Tencent"
|
||||
purge_dir "$BottleBase/users/Public/Application Data/Tencent/QQPCMgr"
|
||||
purge_dir "$BottleBase/users/Public/Application Data/Tencent/QQProtect"
|
||||
purge_dir "$BottleBase/users/Public/Application Data/Tencent/QQDownload"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/Npchrome"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/QQDownload"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/QQMiniDL"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/TXFTN"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/TXPTOP"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/TXSSO"
|
||||
purge_dir "$BottleBase/Program Files/Tencent/QQGameMicro"
|
||||
purge_dir "$BottleBase/Program Files/Tencent/QQMusic"
|
||||
purge_dir "$BottleBase/Program Files/Tencent/SSPlus"
|
||||
remove_file "$BottleBase/Program Files/Tencent/TIM/Users"
|
||||
}
|
||||
|
||||
cleanup_wxwork()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/WXWork/WXWork.exe" ]; then return; fi
|
||||
|
||||
echo "++++cleaning WXWork remains..."
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent"
|
||||
}
|
||||
|
||||
cleanup_wechat()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Tencent/WeChat/WeChat.exe" ]; then return; fi
|
||||
|
||||
echo "++++cleaning WeChat remains..."
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent"
|
||||
}
|
||||
|
||||
cleanup_baidupan()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/baidu/BaiduNetdisk/baidunetdisk.exe" ]; then return; fi
|
||||
|
||||
echo "++++cleaning baidu net disk remains..."
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/BaiduYunGuanjia"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/BaiduYunKernel"
|
||||
purge_dir "$BottleBase/BaiduNetdiskDownload"
|
||||
purge_dir "$BottleBase/Program Files/baidu/Download"
|
||||
remove_file "$BottleBase/Program Files/baidu/BaiduNetdisk/users"
|
||||
}
|
||||
|
||||
cleanup_foxmail()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Foxmail 7.2/Foxmail.exe" ]; then return; fi
|
||||
|
||||
echo "++++cleaning Foxmail remains..."
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/HBuilder"
|
||||
remove_file "$BottleBase/Program Files/Foxmail 7.2/Storage"
|
||||
remove_file "$BottleBase/Program Files/Foxmail 7.2/FMStorage.list"
|
||||
}
|
||||
|
||||
cleanup_hbuilder()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/HBuilder/HBuilder.exe" ]; then return; fi
|
||||
|
||||
echo "++++cleaning HBuilder remains..."
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/HBuilder"
|
||||
purge_dir "$BottleBase/users/$userdir/HBuilder"
|
||||
purge_dir "$BottleBase/users/$userdir/HBuilder settings"
|
||||
$WINE_CMD reg DELETE "HKCU\\Software\\HBuilder" /f
|
||||
}
|
||||
|
||||
cleanup_thunderspeed()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Thunder Network/Thunder/Program/Thunder.exe" ]; then return; fi
|
||||
|
||||
echo "++++cleaning ThunderSpeed remains..."
|
||||
purge_dir "$BottleBase/users/$userdir/AppData/LocalLow/Thunder Network"
|
||||
purge_dir "$BottleBase/users/Public/Application Data/Thunder Network"
|
||||
purge_dir "$BottleBase/users/Public/Thunder Network"
|
||||
purge_dir "$BottleBase/Program Files/Thunder Network/Thunder/Data/ThunderPush"
|
||||
purge_dir "$BottleBase/Program Files/Thunder Network/Thunder/Data/SmallHornCtrlCenter"
|
||||
purge_dir "$BottleBase/Program Files/Thunder Network/Thunder/XLApp"
|
||||
}
|
||||
|
||||
cleanup_qqdownload()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Tencent/QQDownload/QQDownload.exe" ]; then return; fi
|
||||
|
||||
echo "++++QQDownload detected. cleaning..."
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent/TXSSO/SetupLogs"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent/Logs"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent/QQDownload"
|
||||
#mkdir -p "$BottleBase/users/$userdir/Application Data/Tencent/QQDownload/115248456/Setting"
|
||||
}
|
||||
|
||||
cleanup_qqcrm()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Tencent/BizQQ/Bin/QQCRM.exe" ]; then return; fi
|
||||
|
||||
echo "++++QQCRM detected. cleaning..."
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent/Logs"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent/QQCRM/STemp"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent/TXSSO"
|
||||
}
|
||||
|
||||
cleanup_qqeim()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Tencent/QQEIM/Bin/QQEIM.exe" ]; then return; fi
|
||||
|
||||
echo "++++QQEIM detected. cleaning..."
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent/Logs"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent/QQEIM/STemp"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent/TXSSO"
|
||||
}
|
||||
|
||||
cleanup_richez()
|
||||
{
|
||||
if [ ! -e "$BottleBase/GTJA/RichEZ/TdxW.exe" ]; then return; fi
|
||||
|
||||
echo "++++Richez detected. cleaning..."
|
||||
remove_file "$BottleBase/GTJA/RichEZ/JBPlugins/pyerr"
|
||||
remove_file "$BottleBase/GTJA/RichEZ/RichET/bin/flyingfish.log"
|
||||
purge_dir "$BottleBase/GTJA/RichEZ/RichET/fflog"
|
||||
purge_dir "$BottleBase/GTJA/RichEZ/RichET/tmp"
|
||||
remove_file "$BottleBase/GTJA/RichEZ/T0002/customcfg_gtjazd.zip"
|
||||
remove_file "$BottleBase/GTJA/RichEZ/T0002/hq_cache"
|
||||
purge_dir "$BottleBase/GTJA/RichEZ/T0002/tmp"
|
||||
remove_file "$BottleBase/GTJA/RichEZ/T0002/xml_cache"
|
||||
remove_file "$BottleBase/GTJA/RichEZ/webs/web_cache"
|
||||
}
|
||||
|
||||
software_cleaner_before()
|
||||
{
|
||||
cleanup_qq_before
|
||||
}
|
||||
|
||||
cleanup_qqlite()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/Tencent/QQLite/Bin/QQ.exe" ]; then return; fi
|
||||
|
||||
echo "++++cleaning QQ Lite remains..."
|
||||
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/Tencent"
|
||||
purge_dir "$BottleBase/users/$userdir/Local Settings/Application Data/Tencent"
|
||||
purge_dir "$BottleBase/users/Public/Application Data/Tencent"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/Npchrome"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/QQDownload"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/QQMiniDL"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/TXFTN"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/TXPTOP"
|
||||
remove_file "$BottleBase/Program Files/Common Files/Tencent/TXSSO"
|
||||
remove_file "$BottleBase/Program Files/Tencent/QQLite/Users"
|
||||
}
|
||||
|
||||
cleanup_youku()
|
||||
{
|
||||
if [ ! -e "$BottleBase/Program Files/YouKu/YoukuClient/YoukuDesktop.exe" ]; then return; fi
|
||||
|
||||
echo "++++cleaning YouKu remains..."
|
||||
purge_dir "$BottleBase/Program Files/YouKu/YoukuClient/repaire"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/youku"
|
||||
purge_dir "$BottleBase/users/$userdir/Application Data/ytmediacenter"
|
||||
}
|
||||
|
||||
software_cleaner()
|
||||
{
|
||||
cleanup_aliwangwang
|
||||
cleanup_aliworkbench
|
||||
#cleanup_flash
|
||||
cleanup_foobar2000
|
||||
cleanup_mailmaster
|
||||
cleanup_nativeie
|
||||
cleanup_qq
|
||||
cleanup_tim
|
||||
cleanup_qqdownload
|
||||
cleanup_qqeim
|
||||
cleanup_qqcrm
|
||||
cleanup_richez
|
||||
cleanup_qqlite
|
||||
cleanup_youku
|
||||
cleanup_foxmail
|
||||
cleanup_thunderspeed
|
||||
cleanup_wechat
|
||||
cleanup_wxwork
|
||||
cleanup_baidupan
|
||||
cleanup_hbuilder
|
||||
}
|
||||
|
||||
#=============================================
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "prefix should be given"
|
||||
exit 1
|
||||
fi
|
||||
WINEPREFIX=$1
|
||||
BottlePath=$1
|
||||
BottleBase=${BottlePath}/drive_c
|
||||
|
||||
if [ ! -d "${BottlePath}" ]; then
|
||||
echo "prefix do not exists"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
#if [ ! -e "${BottlePath}/.update-timestamp" ]; then
|
||||
# echo "invalid prefix"
|
||||
# exit 3
|
||||
#fi
|
||||
|
||||
echo "clean $BottlePath"
|
||||
export WINEPREFIX=${BottlePath}
|
||||
/usr/lib/i386-linux-gnu/deepin-wine5/wineserver -k
|
||||
|
||||
software_cleaner_before
|
||||
clean_gecko
|
||||
software_cleaner
|
||||
clean_common_temp
|
||||
|
||||
exit 0
|
@ -1,5 +1,5 @@
|
||||
Package: spark-deepin-wine-runner
|
||||
Version: 1.9.0Alpha2
|
||||
Version: 1.9.0
|
||||
Maintainer: gfdgd xi <3025613752@qq.com>, 为什么您不喜欢熊出没和阿布呢
|
||||
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
|
||||
Architecture: all
|
||||
|
@ -1,3 +1,25 @@
|
||||
# !/bin/sh
|
||||
#!/bin/sh
|
||||
# 如果为非 X86 PC,可以删除掉一些无用组件(主要是用不了)
|
||||
if [ `arch` != "x86_64" ]; then
|
||||
echo 非X86架构,删除对非X86架构无用的组件
|
||||
# 删除虚拟机功能
|
||||
rm -rf /opt/apps/deepin-wine-runner/StartVM.sh
|
||||
rm -rf /opt/apps/deepin-wine-runner/RunVM.sh
|
||||
rm -rf /opt/apps/deepin-wine-runner/VM
|
||||
rm -rf /usr/share/applications/spark-deepin-wine-runner-control-vm.desktop
|
||||
rm -rf /usr/share/applications/spark-deepin-wine-runner-start-vm.desktop
|
||||
# 删除安装 wine 功能
|
||||
rm -rf "/opt/apps/deepin-wine-runner/wine install"
|
||||
rm -rf /usr/bin/deepin-wine-runner-wine-installer
|
||||
rm -rf /usr/bin/deepin-wine-runner-wine-install-deepin23
|
||||
rm -rf /usr/bin/deepin-wine-runner-wine-install
|
||||
rm -rf /usr/bin/deepin-wine-runner-winehq-install
|
||||
rm -rf /opt/apps/deepin-wine-runner/InstallWineOnDeepin23.py
|
||||
rm -rf /opt/apps/deepin-wine-runner/sparkstore.list
|
||||
rm -rf /opt/apps/deepin-wine-runner/AllInstall.py
|
||||
rm -rf /opt/apps/deepin-wine-runner/InstallNewWineHQ.sh
|
||||
fi
|
||||
# 设置目录权限,让用户可读可写,方便后续删除组件
|
||||
chmod 777 -R /opt/apps/deepin-wine-runner
|
||||
# 向服务器返回安装数加1(不显示内容且忽略错误)
|
||||
curl http://120.25.153.144/spark-deepin-wine-runner/Install.php?Version=1.9.0 -s > /dev/null | true
|
||||
curl http://120.25.153.144/spark-deepin-wine-runner/Install.php?Version=1.9.0 -s > /dev/null | true
|
3
deb/DEBIAN/postrm
Executable file
3
deb/DEBIAN/postrm
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
# 删除软件残留
|
||||
rm -rfv /opt/apps/spark-deepin-wine-runner/*
|
@ -22,11 +22,12 @@ def AddSparkStoreSource():
|
||||
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(f"sudo apt install \"{wine}\" -y")
|
||||
#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")
|
||||
os.system(f"sudo ss-apt-fast install \"{wine}\" -y")
|
||||
|
||||
###################
|
||||
# 程序功能
|
||||
@ -47,12 +48,8 @@ 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=' ')
|
||||
print("请问是否要安装 deepin-wine5(需要安装最新版星火应用商店)?[Y/N]", end=' ')
|
||||
choose = input().upper()
|
||||
if not choose == "N":
|
||||
if not os.path.exists("/etc/apt/sources.list.d/sparkstore.list"):
|
||||
AddSparkStoreSource()
|
||||
InstallSparkWine("deepin-wine5")
|
||||
print("请问是否要安装 deepin-wine5-stable?[Y/N]", end=' ')
|
||||
choose = input().upper()
|
||||
if not choose == "N":
|
||||
@ -61,11 +58,9 @@ 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=' ')
|
||||
print("请问是否要安装 spark-wine7-devel(需要安装最新版星火应用商店)?[Y/N]", end=' ')
|
||||
choose = input().upper()
|
||||
if not choose == "N":
|
||||
if not os.path.exists("/etc/apt/sources.list.d/sparkstore.list"):
|
||||
AddSparkStoreSource()
|
||||
InstallSparkWine("spark-wine7-devel")
|
||||
print("请问是否要安装 ukylin-wine(需要添加 ukylin 源,但因为可能会导致系统问题,将不会自动添加)?[Y/N]", end=" ")
|
||||
choose = input().upper()
|
||||
|
67
deb/opt/apps/deepin-wine-runner/InstallNewWineHQ.sh
Executable file
67
deb/opt/apps/deepin-wine-runner/InstallNewWineHQ.sh
Executable file
@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
ubuntuSource=(
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources"
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/impish/winehq-impish.sources"
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/focal/winehq-focal.sources"
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/bionic/winehq-bionic.sources"
|
||||
)
|
||||
debianSource=(
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/buster/winehq-buster.sources"
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bullseye/winehq-bullseye.sources"
|
||||
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources"
|
||||
)
|
||||
# 选择发行版
|
||||
toilet WineHQ
|
||||
echo "WineHQ 官网:https://wiki.winehq.org/"
|
||||
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.04,Linux Mint 20.x"
|
||||
echo "3. Ubuntu 18.04,Linux Mint 19.x"
|
||||
fi
|
||||
read systemVersion
|
||||
# 选择 Wine
|
||||
echo "选择 Wine:"
|
||||
echo "0. 稳定分支"
|
||||
echo "1. 开发分支"
|
||||
echo "2. Staging 分支"
|
||||
read programVersion
|
||||
# 初步配置
|
||||
sudo apt-key del "D43F 6401 4536 9C51 D786 DDEA 76F1 A20F F987 672F"
|
||||
sudo dpkg --add-architecture i386
|
||||
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
|
||||
# 检测 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
|
||||
# 添加源
|
||||
if [ $system = "0" ]; then
|
||||
${debianSource[$systemVersion]}
|
||||
fi
|
||||
if [ $system = "1" ]; then
|
||||
${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
|
@ -1,22 +0,0 @@
|
||||
#!/bin/bash
|
||||
# 使用系统默认的 bash 运行
|
||||
###########################################################################################
|
||||
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
|
||||
# 版本:1.7.0
|
||||
# 更新时间:2022年07月15日
|
||||
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
|
||||
# 基于 Python3 的 tkinter 构建
|
||||
###########################################################################################
|
||||
VBoxManage showvminfo Windows
|
||||
if test 0 == $?; then
|
||||
# 检测到虚拟机存在,启动虚拟机
|
||||
VBoxManage startvm Windows
|
||||
exit
|
||||
fi
|
||||
zenity --question --no-wrap --text="检查到您未创建所指定的虚拟机,是否创建虚拟机并继续?\n如果不创建将无法使用"
|
||||
if test 1 == $?; then
|
||||
# 用户不想创建虚拟机,结束
|
||||
exit
|
||||
fi
|
||||
cd `dirname $0`
|
||||
./VM/VirtualMachine
|
Binary file not shown.
Before ![]() (image error) Size: 35 KiB |
85
deb/opt/apps/deepin-wine-runner/clean-unuse-program.py
Executable file
85
deb/opt/apps/deepin-wine-runner/clean-unuse-program.py
Executable file
@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
|
||||
if __name__ == "__main__":
|
||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||
print("此程序可以帮助您删除程序无需的组件以节约空间")
|
||||
print("如果删除后想要恢复这样组件需要重新安装该软件包")
|
||||
delProgramList = []
|
||||
delProramCommand = "#!/bin/bash\n"
|
||||
for i in [
|
||||
[
|
||||
"Wine 打包器(不基于生态打包脚本)",
|
||||
[
|
||||
f"{programPath}/dlls.7z",
|
||||
f"{programPath}/dlls",
|
||||
f"{programPath}/exagear",
|
||||
f"{programPath}/exagear.7z",
|
||||
f"{programPath}/exagear",
|
||||
f"{programPath}/wined3d.dll.so.7z",
|
||||
f"{programPath}/wined3d.dll.so",
|
||||
f"{programPath}/deepin-wine-packager.py",
|
||||
"/usr/bin/deepin-wine-package-builder",
|
||||
"/usr/share/applications/spark-deepin-wine-package-builder.desktop"
|
||||
]
|
||||
],
|
||||
[
|
||||
"Wine 打包器(基于生态打包脚本)",
|
||||
[
|
||||
f"{programPath}/deepin-wine-packager-with-script.py",
|
||||
f"{programPath}/package-script.zip",
|
||||
f"{programPath}/package-script",
|
||||
"/usr/bin/deepin-wine-packager-with-script",
|
||||
"/usr/share/applications/spark-deepin-wine-packager-with-script.desktop"
|
||||
]
|
||||
],
|
||||
[
|
||||
"Arm 64 box86 wine 运行 DLL",
|
||||
[
|
||||
f"{programPath}/dlls-arm.7z",
|
||||
f"{programPath}/dlls-arm"
|
||||
]
|
||||
],
|
||||
[
|
||||
"Windows 虚拟机简易安装组件",
|
||||
[
|
||||
f"{programPath}/StartVM.sh",
|
||||
f"{programPath}/RunVM.sh",
|
||||
f"{programPath}/VM",
|
||||
"/usr/share/applications/spark-deepin-wine-runner-control-vm.desktop",
|
||||
"/usr/share/applications/spark-deepin-wine-runner-start-vm.desktop"
|
||||
]
|
||||
],
|
||||
[
|
||||
"Wine 安装组件",
|
||||
[
|
||||
f"{programPath}/AllInstall.py",
|
||||
f"{programPath}/wine install",
|
||||
f"{programPath}/InstallWineOnDeepin23.py",
|
||||
f"{programPath}/sparkstore.list",
|
||||
f"{programPath}/InstallNewWineHQ.sh",
|
||||
"/usr/bin/deepin-wine-runner-wine-installer",
|
||||
"/usr/bin/deepin-wine-runner-wine-install-deepin23",
|
||||
"/usr/bin/deepin-wine-runner-wine-install",
|
||||
"/usr/bin/deepin-wine-runner-winehq-install"
|
||||
]
|
||||
]
|
||||
]:
|
||||
if not os.path.exists(i[1][0]):
|
||||
continue
|
||||
if input(f"是否删除组件“{i[0]}”?[Y/n]").upper() == "Y":
|
||||
delProgramList.append(i)
|
||||
for x in i[1]:
|
||||
if x == "/*" or x == "/": # 为了防止个人疏忽,出现危险命令,所以如果有最危险的 /* 会直接跳过该命令的写入
|
||||
continue
|
||||
delProramCommand += f"rm -rfv \"{x}\"\n"
|
||||
if len(delProgramList) == 0:
|
||||
print("您已经删除了所有可删除的组件,如果需要使用被删除的组件,请重新安装该软件安装包")
|
||||
input("按回车退出")
|
||||
exit()
|
||||
print("开始删除")
|
||||
file = open("/tmp/deepin-wine-clean.sh", "w")
|
||||
file.write(delProramCommand)
|
||||
file.close()
|
||||
os.system("pkexec bash /tmp/deepin-wine-clean.sh")
|
||||
input("按回车键退出程序")
|
@ -61,6 +61,9 @@ def disabled_or_NORMAL_all(choose):
|
||||
option1_text.setDisabled(choose)
|
||||
chooseWineHelperValue.setDisabled(choose)
|
||||
wineVersion.setDisabled(choose)
|
||||
debArch.setDisabled(choose)
|
||||
if not choose:
|
||||
ChangeArchCombobox()
|
||||
|
||||
class QT:
|
||||
thread = None
|
||||
@ -157,82 +160,17 @@ class make_deb_threading(QtCore.QThread):
|
||||
disabled_or_NORMAL_all(True)
|
||||
self.label.emit("容器路径填写错误,无法进行构建 deb 包")
|
||||
return
|
||||
#############
|
||||
# 删除文件
|
||||
#############
|
||||
self.label.emit("正在删除对构建 deb 包有影响的文件……")
|
||||
debPackagePath = f"/tmp/{random.randint(0, 9999)}"
|
||||
self.run_command(f"rm -rfv /tmp/{debPackagePath}")
|
||||
###############
|
||||
# 创建目录
|
||||
###############
|
||||
self.label.emit("正在创建目录……")
|
||||
os.makedirs("{}/DEBIAN".format(debPackagePath))
|
||||
os.makedirs("{}/opt/apps/{}/entries/applications".format(debPackagePath, e1_text.text()))
|
||||
os.makedirs("{}/opt/apps/{}/entries/icons/hicolor/scalable/apps".format(debPackagePath, e1_text.text()))
|
||||
os.makedirs("{}/opt/apps/{}/files".format(debPackagePath, e1_text.text()))
|
||||
###############
|
||||
# 创建文件
|
||||
###############
|
||||
self.label.emit("正在创建文件……")
|
||||
os.mknod("{}/DEBIAN/control".format(debPackagePath))
|
||||
os.mknod("{}/opt/apps/{}/entries/applications/{}.desktop".format(debPackagePath, e1_text.text(), e1_text.text()))
|
||||
os.mknod("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()))
|
||||
os.mknod("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()))
|
||||
###############
|
||||
# 设置容器
|
||||
###############
|
||||
self.label.emit("正在设置 wine 容器")
|
||||
os.chdir(b)
|
||||
self.run_command("sed -i \"s#$USER#@current_user@#\" ./*.reg")
|
||||
os.chdir(f"{b}/drive_c/users")
|
||||
self.run_command(f"mv -v '{os.getlogin()}' @current_user@")
|
||||
os.chdir(programPath)
|
||||
###############
|
||||
# 压缩容器
|
||||
###############
|
||||
self.label.emit("正在打包 wine 容器")
|
||||
self.run_command("7z a {}/opt/apps/{}/files/files.7z {}/*".format(debPackagePath, e1_text.text(), b))
|
||||
###############
|
||||
# 复制图片
|
||||
###############
|
||||
self.label.emit("正在复制文件……")
|
||||
self.run_command(f"cp -rv '{programPath}/dlls' {debPackagePath}/opt/apps/{e1_text.text()}/files/")
|
||||
if e9_text.text() != "":
|
||||
shutil.copy(e9_text.text(), "{}/opt/apps/{}/entries/icons/hicolor/scalable/apps/{}.{}".format(debPackagePath, e1_text.text(), e1_text.text(), imms))
|
||||
################
|
||||
# 获取文件大小
|
||||
################
|
||||
self.label.emit("正在计算文件大小……")
|
||||
size = getFileFolderSize(debPackagePath) / 1024
|
||||
################
|
||||
# 写入文本文档
|
||||
################
|
||||
self.label.emit("正在写入文件……")
|
||||
if not chooseWineHelperValue.isChecked():
|
||||
write_txt("{}/DEBIAN/control".format(debPackagePath), '''Package: {}
|
||||
Version: {}
|
||||
Architecture: i386
|
||||
Maintainer: {}
|
||||
Depends: {}, deepin-wine-helper (>= 5.1.30-1), fonts-wqy-microhei, fonts-wqy-zenhei
|
||||
Section: non-free/otherosfs
|
||||
Priority: optional
|
||||
Multi-Arch: foreign
|
||||
Description: {}
|
||||
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wine[wineVersion.currentText()], e3_text.text()))
|
||||
else:
|
||||
write_txt("{}/DEBIAN/control".format(debPackagePath), '''Package: {}
|
||||
Version: {}
|
||||
Architecture: i386
|
||||
Maintainer: {}
|
||||
Depends: {}, spark-dwine-helper (>= 1.6.2), fonts-wqy-microhei, fonts-wqy-zenhei
|
||||
Section: non-free/otherosfs
|
||||
Priority: optional
|
||||
Multi-Arch: foreign
|
||||
Description: {}
|
||||
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wine[wineVersion.currentText()], e3_text.text()))
|
||||
if rmBash.isChecked():
|
||||
write_txt("{}/DEBIAN/postrm".format(debPackagePath, e1_text.text()), f'''#!/bin/bash
|
||||
debInformation = [
|
||||
{
|
||||
# I386 wine 打包配置文件
|
||||
"Wine": wine[wineVersion.currentText()],
|
||||
"Architecture": "i386",
|
||||
"Depends": [
|
||||
f"{wine[wineVersion.currentText()]}, deepin-wine-helper (>= 5.1.30-1), fonts-wqy-microhei, fonts-wqy-zenhei",
|
||||
f"{wine[wineVersion.currentText()]}, spark-dwine-helper (>= 1.6.2), fonts-wqy-microhei, fonts-wqy-zenhei"
|
||||
][int(chooseWineHelperValue.isChecked())],
|
||||
"postinst": "",
|
||||
"postrm": ["", f"""#!/bin/bash
|
||||
|
||||
if [ "$1" = "remove" ] || [ "$1" = "purge" ];then
|
||||
|
||||
@ -247,11 +185,9 @@ fi
|
||||
done
|
||||
else
|
||||
echo"非卸载,跳过清理"
|
||||
fi
|
||||
''')
|
||||
write_txt("{}/opt/apps/{}/entries/applications/{}.desktop".format(debPackagePath, e1_text.text(), e1_text.text()), '#!/usr/bin/env xdg-open\n[Desktop Entry]\nEncoding=UTF-8\nType=Application\nX-Created-By={}\nCategories={};\nIcon={}\nExec="/opt/apps/{}/files/run.sh" {}\nName={}\nComment={}\nMimeType={}\nGenericName={}\nTerminal=false\nStartupNotify=false\n'.format(e4_text.text(), option1_text.currentText(), a, e1_text.text(), e15_text.text(), e8_text.text(), e3_text.text(), e10_text.text(), e1_text.text()))
|
||||
if not bool(chooseWineHelperValue.text()):
|
||||
write_txt("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()), '''#!/bin/sh
|
||||
fi"""][int()],
|
||||
"run.sh": [
|
||||
f"""#!/bin/sh
|
||||
|
||||
# Copyright (C) 2016 Deepin, Inc.
|
||||
#
|
||||
@ -260,13 +196,13 @@ fi
|
||||
|
||||
version_gt() {{ test "$(echo "$@" | tr " " "\\n" | sort -V | head -n 1)" != "$1"; }}
|
||||
|
||||
BOTTLENAME="{}"
|
||||
APPVER="{}"
|
||||
EXEC_PATH="{}"
|
||||
BOTTLENAME="{e5_text.text()}"
|
||||
APPVER="{e2_text.text()}"
|
||||
EXEC_PATH="{e7_text.text()}"
|
||||
START_SHELL_PATH="/opt/deepinwine/tools/run_v4.sh"
|
||||
export MIME_TYPE=""
|
||||
export DEB_PACKAGE_NAME="{}"
|
||||
export APPRUN_CMD="{}"
|
||||
export DEB_PACKAGE_NAME="{e1_text.text()}"
|
||||
export APPRUN_CMD="{wine[wineVersion.currentText()]}"
|
||||
DISABLE_ATTACH_FILE_DIALOG=""
|
||||
EXPORT_ENVS=""
|
||||
|
||||
@ -294,10 +230,8 @@ if [ -n "$EXEC_PATH" ];then
|
||||
fi
|
||||
else
|
||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||
fi
|
||||
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wine[wineVersion.currentText()]))
|
||||
else:
|
||||
write_txt("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()), '''#!/bin/sh
|
||||
fi""",
|
||||
f"""#!/bin/sh
|
||||
|
||||
# Copyright (C) 2016 Deepin, Inc.
|
||||
#
|
||||
@ -333,16 +267,16 @@ Get_Dist_Name()
|
||||
|
||||
version_gt() {{ test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"; }}
|
||||
####用于比较版本?未实装
|
||||
BOTTLENAME="{}"
|
||||
APPVER="{}"
|
||||
EXEC_PATH="{}"
|
||||
BOTTLENAME="{e5_text.text()}"
|
||||
APPVER="{e2_text.text()}"
|
||||
EXEC_PATH="{e7_text.text()}"
|
||||
##### 软件在wine中的启动路径
|
||||
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
||||
export MIME_TYPE=""
|
||||
#####没什么用
|
||||
export DEB_PACKAGE_NAME="{}"
|
||||
export DEB_PACKAGE_NAME="{e1_text.text()}"
|
||||
####这里写包名才能在启动的时候正确找到files.7z,似乎也和杀残留进程有关
|
||||
export APPRUN_CMD="{}"
|
||||
export APPRUN_CMD="{wine[wineVersion.currentText()]}"
|
||||
#####wine启动指令,建议
|
||||
EXPORT_ENVS=""
|
||||
|
||||
@ -403,15 +337,412 @@ if [ -n "$EXEC_PATH" ];then
|
||||
fi
|
||||
else
|
||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||
fi"""
|
||||
][chooseWineHelperValue.isChecked()],
|
||||
"info": f'''{{
|
||||
"appid": "{e1_text.text()}",
|
||||
"name": "{e8_text.text()}",
|
||||
"version": "{e2_text.text()}",
|
||||
"arch": ["i386"],
|
||||
"permissions": {{
|
||||
"autostart": false,
|
||||
"notification": false,
|
||||
"trayicon": true,
|
||||
"clipboard": true,
|
||||
"account": false,
|
||||
"bluetooth": false,
|
||||
"camera": true,
|
||||
"audio_record": true,
|
||||
"installed_apps": false
|
||||
}}
|
||||
}}'''
|
||||
},
|
||||
{
|
||||
# ARM64 BOX86 wine 打包配置文件
|
||||
"Wine": f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 /opt/deepin-wine6-stable/bin/wine ",
|
||||
"Architecture": "arm64",
|
||||
"Depends": "deepin-elf-verify (>= 0.0.16.7-1), com.deepin-wine6-stable.deepin(>=6.0deepin14), com.deepin-box86.deepin(>=0.2.3deepin8), p7zip-full, fonts-wqy-microhei, fonts-noto-cjk",
|
||||
"postinst": f"""#!/bin/sh
|
||||
DEB_PATH=/opt/apps/{e1_text.text()}
|
||||
NVIDIA_DISP_CARD=`lspci | grep VGA | grep NVIDIA`
|
||||
if [ -f $DEB_PATH/files/wined3d.dll.so ] && [ ! -z "$NVIDIA_DISP_CARD" ];then
|
||||
mv $DEB_PATH/files/wined3d.dll.so $DEB_PATH/files/dlls
|
||||
fi
|
||||
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wine[wineVersion.currentText()]))
|
||||
write_txt("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()), '{\n "appid": "' + e1_text.text() + '",\n "name": "' + e8_text.text() + '",\n "version": "' + e2_text.text() + '",\n "arch": ["i386"],\n "permissions": {\n "autostart": false,\n "notification": false,\n "trayicon": true,\n "clipboard": true,\n "account": false,\n "bluetooth": false,\n "camera": false,\n "audio_record": false,\n "installed_apps": false\n }\n}')
|
||||
true
|
||||
""",
|
||||
"postrm": f"""#!/bin/sh
|
||||
|
||||
BOTTLE="$HOME/.deepinwine/{e5_text.text()}"
|
||||
WINESERVER=/opt/deepin-wine6-stable/bin/wineserver
|
||||
|
||||
if [ -d "$BOTTLE" ];then
|
||||
WINEPREFIX=$BOTTLE $WINESERVER -k
|
||||
rm $BOTTLE -rf
|
||||
fi
|
||||
|
||||
true""",
|
||||
"run.sh": f"""#!/bin/bash
|
||||
DEB_PATH="/opt/apps/{e1_text.text()}"
|
||||
WINE="/opt/deepin-wine6-stable/bin/wine"
|
||||
WINESERVER="/opt/deepin-wine6-stable/bin/wineserver"
|
||||
BOX86="/opt/deepin-box86/box86"
|
||||
EXE="{e7_text.text()}"
|
||||
NEW_VERSION="{e2_text.text()}"
|
||||
BOTTLE="$HOME/.deepinwine/{e5_text.text()}"
|
||||
|
||||
reconstruct_bottle_symlink() {{
|
||||
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Desktop ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Desktop
|
||||
ln -s $HOME/Desktop $BOTTLE/drive_c/users/$USER/Desktop
|
||||
fi
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Documents ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Documents
|
||||
ln -s $HOME/Documents $BOTTLE/drive_c/users/$USER/Documents
|
||||
fi
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Downloads ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Downloads
|
||||
ln -s $HOME/Downloads $BOTTLE/drive_c/users/$USER/Downloads
|
||||
fi
|
||||
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Documents" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Documents"
|
||||
ln -s $HOME/Documents "$BOTTLE/drive_c/users/$USER/My Documents"
|
||||
fi
|
||||
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Music" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Music"
|
||||
ln -s $HOME/Music "$BOTTLE/drive_c/users/$USER/My Music"
|
||||
fi
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Videos" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Videos"
|
||||
ln -s $HOME/Videos "$BOTTLE/drive_c/users/$USER/My Videos"
|
||||
fi
|
||||
}}
|
||||
|
||||
if [ ! -d "$HOME/.deepinwine" ];then
|
||||
mkdir -p "$HOME/.deepinwine"
|
||||
fi
|
||||
|
||||
if [ -f $BOTTLE/VERSION ];then
|
||||
old_version=""
|
||||
while read line; do
|
||||
old_version=$line
|
||||
done < $BOTTLE/VERSION
|
||||
if [ "$old_version" != "$NEW_VERSION" ];then
|
||||
WINEPREFIX=$BOTTLE $BOX86 $WINESERVER -k
|
||||
rm -rf $BOTTLE
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -d $BOTTLE ] && [ ! -f $BOTTLE/VERSION ];then
|
||||
WINEPREFIX=$BOTTLE $BOX86 $WINESERVER -k
|
||||
rm -rf $BOTTLE
|
||||
fi
|
||||
|
||||
if [ ! -d $BOTTLE ];then
|
||||
7z x "$DEB_PATH/files/files.7z" -o"$BOTTLE" -aoa
|
||||
mv "$BOTTLE/drive_c/users/@current_user@" "$BOTTLE/drive_c/users/$USER"
|
||||
sed -i "s#@current_user@#$USER#" $BOTTLE/*.reg
|
||||
reconstruct_bottle_symlink
|
||||
echo $NEW_VERSION > $BOTTLE/VERSION
|
||||
fi
|
||||
|
||||
export WINEPREDLL=$DEB_PATH/files/dlls
|
||||
export ATTACH_FILE_DIALOG=1
|
||||
export WINEDLLPATH=/opt/deepin-wine6-stable/lib
|
||||
WINEPREFIX=$BOTTLE $BOX86 $WINE "$EXE" &""",
|
||||
"info": f'''{{
|
||||
"appid": "{e1_text.text()}",
|
||||
"name": "{e8_text.text()}",
|
||||
"version": "{e2_text.text()}",
|
||||
"arch": ["arm64"],
|
||||
"permissions": {{
|
||||
"autostart": false,
|
||||
"notification": false,
|
||||
"trayicon": true,
|
||||
"clipboard": true,
|
||||
"account": false,
|
||||
"bluetooth": false,
|
||||
"camera": true,
|
||||
"audio_record": true,
|
||||
"installed_apps": false
|
||||
}}
|
||||
}}'''
|
||||
},
|
||||
{
|
||||
# ARM64 exagear wine 打包配置文件
|
||||
"Wine": f"/opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine ",
|
||||
"Architecture": "arm64",
|
||||
"Depends": "zenity, com.deepin-wine6-stable.deepin(>=6.0deepin14), deepin-wine-exagear-images(>=10deepin4), com.deepin-box86.deepin(>=0.2.3deepin9), p7zip-full, fonts-wqy-microhei, fonts-noto-cjk",
|
||||
"postinst": "",
|
||||
"postrm": "",
|
||||
"run.sh": f"""#!/bin/bash
|
||||
DEB_PATH="/opt/apps/{e1_text.text()}"
|
||||
WINE="/opt/deepin-wine6-stable/bin/wine"
|
||||
WINESERVER="/opt/deepin-wine6-stable/bin/wineserver"
|
||||
EMU="/opt/exagear/bin/ubt_x64a64_al"
|
||||
IMAGE_PATH=$HOME/.deepinwine/debian-buster
|
||||
EMU_ARGS="--path-prefix $IMAGE_PATH --utmp-paths-list $IMAGE_PATH/.exagear/utmp-list --vpaths-list $IMAGE_PATH/.exagear/vpaths-list --opaths-list $IMAGE_PATH/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- "
|
||||
EXE="{e7_text.text()}"
|
||||
NEW_VERSION="6.4.1deepin1"
|
||||
BOTTLE="$HOME/.deepinwine/{e5_text.text()}"
|
||||
KUNPENG=`lscpu | grep 'Model name' | grep Kunpeng`
|
||||
IMG_ARCHIVE_DIR=/opt/deepin-wine-exagear-images/debian-buster
|
||||
IMAGE_VER="{e2_text.text()}"
|
||||
LOCALTIME=`readlink -f /etc/localtime`
|
||||
|
||||
export LC_ALL=$LANG
|
||||
export XMODIFIERS=$XMODIFIERS
|
||||
export DESKTOP_SESSION=deepin
|
||||
|
||||
if command -v zenity >/dev/null 2>&1; then
|
||||
progressbar()
|
||||
{{
|
||||
WINDOWID="" zenity --progress --title="$1" --text="$2" --pulsate --width=400 --auto-close --no-cancel ||
|
||||
WINDOWID="" zenity --progress --title="$1" --text="$2" --pulsate --width=400 --auto-close
|
||||
}}
|
||||
|
||||
else
|
||||
progressbar()
|
||||
{{
|
||||
cat -
|
||||
}}
|
||||
fi
|
||||
|
||||
reconstruct_bottle_symlink() {{
|
||||
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Desktop ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Desktop
|
||||
ln -s $HOME/Desktop $BOTTLE/drive_c/users/$USER/Desktop
|
||||
fi
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Documents ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Documents
|
||||
ln -s $HOME/Documents $BOTTLE/drive_c/users/$USER/Documents
|
||||
fi
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Downloads ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Downloads
|
||||
ln -s $HOME/Downloads $BOTTLE/drive_c/users/$USER/Downloads
|
||||
fi
|
||||
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Documents" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Documents"
|
||||
ln -s $HOME/Documents "$BOTTLE/drive_c/users/$USER/My Documents"
|
||||
fi
|
||||
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Music" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Music"
|
||||
ln -s $HOME/Music "$BOTTLE/drive_c/users/$USER/My Music"
|
||||
fi
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Videos" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Videos"
|
||||
ln -s $HOME/Videos "$BOTTLE/drive_c/users/$USER/My Videos"
|
||||
fi
|
||||
}}
|
||||
|
||||
extract_image() {{
|
||||
|
||||
progpid=$(ps -ef | grep "zenity --progress --title=${{BOTTLE}}" | grep -v grep)
|
||||
if [ -n "$progpid" ];then
|
||||
echo "one $BOTTLE app is extracting runtime images too."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
7z x "$IMG_ARCHIVE_DIR/files.7z" -o"$IMAGE_PATH" -aoa | progressbar "$BOTTLE" "正在释放环境..."
|
||||
cp /usr/bin/dde-file-manager $IMAGE_PATH/usr/bin/dde-file-manager
|
||||
rm $IMAGE_PATH/etc/localtime
|
||||
ln -s $LOCALTIME $IMAGE_PATH/etc/localtime
|
||||
if [ -d $IMAGE_PATH/etc/resolvconf ];then
|
||||
rm $IMAGE_PATH/etc/resolvconf
|
||||
fi
|
||||
if [ -d /etc/resolvconf ];then
|
||||
cp /etc/resolvconf $IMAGE_PATH/etc/ -rf
|
||||
fi
|
||||
cp /etc/resolv.conf $IMAGE_PATH/etc/
|
||||
cp /etc/hosts $IMAGE_PATH/etc/
|
||||
echo $IMAGE_VER > $IMAGE_PATH/VERSION
|
||||
}}
|
||||
|
||||
get_link_err_nums() {{
|
||||
|
||||
find $IMAGE_PATH -type l ! -exec test -e {{}} \; -print | wc -l
|
||||
}}
|
||||
|
||||
if [ ! -d "$HOME/.deepinwine" ];then
|
||||
mkdir -p "$HOME/.deepinwine"
|
||||
fi
|
||||
|
||||
if [ -f $BOTTLE/VERSION ];then
|
||||
old_version=`cat $BOTTLE/VERSION`
|
||||
if [ "$old_version" != "$NEW_VERSION" ];then
|
||||
WINEPREFIX=$BOTTLE $EMU $EMU_ARGS $WINESERVER -k
|
||||
rm -rf $BOTTLE
|
||||
fi
|
||||
fi
|
||||
Update_D() {{
|
||||
if [ -L "$BOTTLE/dosdevices/d:" ]; then
|
||||
rm -f "$BOTTLE/dosdevices/d:"
|
||||
ln -s $Downloads "$BOTTLE/dosdevices/d:"
|
||||
fi
|
||||
if [ -L "$BOTTLE/dosdevices/d:" ]; then
|
||||
rm -f "$BOTTLE/dosdevices/d:"
|
||||
ln -s $Downloads "$BOTTLE/dosdevices/d:"
|
||||
fi
|
||||
}}
|
||||
if [ ! -d $BOTTLE ];then
|
||||
|
||||
7z x "$DEB_PATH/files/files.7z" -o"$BOTTLE" -aoa
|
||||
mv "$BOTTLE/drive_c/users/@current_user@" "$BOTTLE/drive_c/users/$USER"
|
||||
sed -i "s#@current_user@#$USER#" $BOTTLE/*.reg
|
||||
reconstruct_bottle_symlink
|
||||
echo $NEW_VERSION > $BOTTLE/VERSION
|
||||
fi
|
||||
|
||||
if [ ! -z "$KUNPENG" ];then
|
||||
if [ ! -e $IMAGE_PATH/VERSION ];then
|
||||
extract_image
|
||||
fi
|
||||
|
||||
OLD_IMAGE_VER=`cat $IMAGE_PATH/VERSION`
|
||||
if [ "$OLD_IMAGE_VER" != "$IMAGE_VER" ];then
|
||||
extract_image
|
||||
fi
|
||||
|
||||
echo "======$(get_link_err_nums)===="
|
||||
if [ "$(get_link_err_nums)" -gt "120" ];then
|
||||
extract_image
|
||||
fi
|
||||
fi
|
||||
|
||||
## mount /data/ dir to geust
|
||||
if [ -d $IMAGE_PATH ] && [ ! -d $IMAGE_PATH/data ];then
|
||||
mkdir $IMAGE_PATH/data
|
||||
cp $DEB_PATH/files/exa/vpaths-list $IMAGE_PATH/.exagear
|
||||
fi
|
||||
|
||||
export WINEPREDLL=$DEB_PATH/files/dlls
|
||||
export ATTACH_FILE_DIALOG=1
|
||||
export WINEDLLPATH=/opt/deepin-wine6-stable/lib
|
||||
WINEPREFIX=$BOTTLE $EMU $EMU_ARGS $WINE $WINE wineboot --init
|
||||
Update_D
|
||||
WINEPREFIX=$BOTTLE $EMU $EMU_ARGS $WINE "$EXE" --disable-gpu &""",
|
||||
"info": f'''{{
|
||||
"appid": "{e1_text.text()}",
|
||||
"name": "{e8_text.text()}",
|
||||
"version": "{e2_text.text()}",
|
||||
"arch": ["arm64"],
|
||||
"permissions": {{
|
||||
"autostart": false,
|
||||
"notification": false,
|
||||
"trayicon": true,
|
||||
"clipboard": true,
|
||||
"account": false,
|
||||
"bluetooth": false,
|
||||
"camera": true,
|
||||
"audio_record": true,
|
||||
"installed_apps": false
|
||||
}}
|
||||
}}'''}
|
||||
]
|
||||
#############
|
||||
# 删除文件
|
||||
#############
|
||||
self.label.emit("正在删除对构建 deb 包有影响的文件……")
|
||||
debPackagePath = f"/tmp/{random.randint(0, 9999)}"
|
||||
self.run_command(f"rm -rfv /tmp/{debPackagePath}")
|
||||
###############
|
||||
# 创建目录
|
||||
###############
|
||||
self.label.emit("正在创建目录……")
|
||||
os.makedirs("{}/DEBIAN".format(debPackagePath))
|
||||
os.makedirs("{}/opt/apps/{}/entries/applications".format(debPackagePath, e1_text.text()))
|
||||
os.makedirs("{}/opt/apps/{}/entries/icons/hicolor/scalable/apps".format(debPackagePath, e1_text.text()))
|
||||
os.makedirs("{}/opt/apps/{}/files".format(debPackagePath, e1_text.text()))
|
||||
###############
|
||||
# 创建文件
|
||||
###############
|
||||
self.label.emit("正在创建文件……")
|
||||
os.mknod("{}/DEBIAN/control".format(debPackagePath))
|
||||
os.mknod("{}/opt/apps/{}/entries/applications/{}.desktop".format(debPackagePath, e1_text.text(), e1_text.text()))
|
||||
os.mknod("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()))
|
||||
os.mknod("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()))
|
||||
###############
|
||||
# 设置容器
|
||||
###############
|
||||
self.label.emit("正在设置 wine 容器")
|
||||
os.chdir(b)
|
||||
self.run_command("sed -i \"s#$USER#@current_user@#\" ./*.reg")
|
||||
os.chdir(f"{b}/drive_c/users")
|
||||
self.run_command(f"mv -v '{os.getlogin()}' @current_user@")
|
||||
os.chdir(programPath)
|
||||
if cleanBottonByUOS.isChecked():
|
||||
self.run_command(f"WINE='{debInformation[debArch.currentIndex()]['Wine']}' '{programPath}/cleanbottle.sh' '{b}'")
|
||||
###############
|
||||
# 压缩容器
|
||||
###############
|
||||
self.label.emit("正在打包 wine 容器")
|
||||
self.run_command("7z a {}/opt/apps/{}/files/files.7z {}/*".format(debPackagePath, e1_text.text(), b))
|
||||
###############
|
||||
# 复制图片
|
||||
###############
|
||||
self.label.emit("正在复制文件……")
|
||||
# arm64 box86 需要复制 dlls-arm 目录
|
||||
if debArch.currentIndex() == 0:
|
||||
if not os.path.exists(f"{programPath}/dlls"):
|
||||
self.run_command(f"7z x \"{programPath}/dlls.7z\" -o\"{programPath}\"")
|
||||
os.remove(f"{programPath}/dlls.7z")
|
||||
self.run_command(f"cp -rv '{programPath}/dlls' {debPackagePath}/opt/apps/{e1_text.text()}/files/")
|
||||
elif debArch.currentIndex() == 1:
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
self.run_command(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\"")
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if not os.path.exists(f"{programPath}/wined3d.dll.so"):
|
||||
self.run_command(f"7z x \"{programPath}/wined3d.dll.so.7z\" -o\"{programPath}\"")
|
||||
os.remove(f"{programPath}/wined3d.dll.so.7z")
|
||||
self.run_command(f"cp -rv '{programPath}/dlls-arm' {debPackagePath}/opt/apps/{e1_text.text()}/files/dlls")
|
||||
self.run_command(f"cp -rv '{programPath}/wined3d.dll.so' {debPackagePath}/opt/apps/{e1_text.text()}/files/")
|
||||
elif debArch.currentIndex() == 2:
|
||||
if not os.path.exists(f"{programPath}/exagear"):
|
||||
self.run_command(f"aria2c -x 16 -s 16 -d \"{programPath}\" -o \"exagear.7z\" https://gitlink.org.cn/api/attachments/392441")
|
||||
self.run_command(f"7z x \"{programPath}/exagear.7z\" -o\"{programPath}\"")
|
||||
os.remove(f"{programPath}/exagear.7z")
|
||||
self.run_command(f"cp -rv '{programPath}/exagear/*' {debPackagePath}/opt/apps/{e1_text.text()}/files/")
|
||||
if e9_text.text() != "":
|
||||
shutil.copy(e9_text.text(), "{}/opt/apps/{}/entries/icons/hicolor/scalable/apps/{}.{}".format(debPackagePath, e1_text.text(), e1_text.text(), imms))
|
||||
################
|
||||
# 获取文件大小
|
||||
################
|
||||
self.label.emit("正在计算文件大小……")
|
||||
size = getFileFolderSize(debPackagePath) / 1024
|
||||
################
|
||||
# 写入文本文档
|
||||
################
|
||||
self.label.emit("正在写入文件……")
|
||||
|
||||
write_txt(f"{debPackagePath}/DEBIAN/control", f'''Package: {e1_text.text()}
|
||||
Version: {e2_text.text()}
|
||||
Architecture: {debInformation[debArch.currentIndex()]["Architecture"]}
|
||||
Maintainer: {e4_text.text()}
|
||||
Depends: {debInformation[debArch.currentIndex()]["Depends"]}
|
||||
Section: non-free/otherosfs
|
||||
Priority: optional
|
||||
Multi-Arch: foreign
|
||||
Description: {e3_text.text()}
|
||||
''')
|
||||
if debInformation[debArch.currentIndex()]["postinst"] != "":
|
||||
write_txt(f"{debPackagePath}/DEBIAN/postinst", debInformation[debArch.currentIndex()]["postinst"])
|
||||
if debInformation[debArch.currentIndex()]["postrm"] != "":
|
||||
write_txt(f"{debPackagePath}/DEBIAN/postrm", debInformation[debArch.currentIndex()]["postrm"])
|
||||
write_txt("{}/opt/apps/{}/entries/applications/{}.desktop".format(debPackagePath, e1_text.text(), e1_text.text()), '#!/usr/bin/env xdg-open\n[Desktop Entry]\nEncoding=UTF-8\nType=Application\nX-Created-By={}\nCategories={};\nIcon={}\nExec="/opt/apps/{}/files/run.sh" {}\nName={}\nComment={}\nMimeType={}\nGenericName={}\nTerminal=false\nStartupNotify=false\n'.format(e4_text.text(), option1_text.currentText(), a, e1_text.text(), e15_text.text(), e8_text.text(), e3_text.text(), e10_text.text(), e1_text.text()))
|
||||
write_txt(f"{debPackagePath}/opt/apps/{e1_text.text()}/files/run.sh", debInformation[debArch.currentIndex()]["run.sh"])
|
||||
write_txt("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()), debInformation[debArch.currentIndex()]["info"])
|
||||
################
|
||||
# 修改文件权限
|
||||
################
|
||||
self.label.emit("正在修改文件权限……")
|
||||
self.run_command("chmod -Rv 644 {}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()))
|
||||
self.run_command("chmod -Rv 644 {}/opt/apps/{}/info".format(debPackagePath, e1_text.text()))
|
||||
self.run_command("chmod -Rv 0755 {}/DEBIAN".format(debPackagePath))
|
||||
self.run_command("chmod -Rv 755 {}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()))
|
||||
self.run_command("chmod -Rv 755 {}/opt/apps/{}/entries/applications/{}.desktop".format(debPackagePath, e1_text.text(), e1_text.text()))
|
||||
################
|
||||
@ -482,6 +813,18 @@ def readtxt(path):
|
||||
def get_home():
|
||||
return os.path.expanduser('~')
|
||||
|
||||
def ChangeArchCombobox():
|
||||
global chooseWineHelperValue
|
||||
option = True
|
||||
if debArch.currentIndex() != 0:
|
||||
option = False
|
||||
chooseWineHelperValue.setEnabled(option)
|
||||
wineVersion.setEnabled(option)
|
||||
|
||||
#chooseWineHelperValue.setEnabled(option)
|
||||
rmBash.setEnabled(option)
|
||||
|
||||
|
||||
###############
|
||||
# 程序信息
|
||||
###############
|
||||
@ -530,7 +873,13 @@ button1 = QtWidgets.QPushButton("浏览……")
|
||||
button2 = QtWidgets.QPushButton("浏览……")
|
||||
button4 = QtWidgets.QPushButton("浏览……")
|
||||
button5 = QtWidgets.QPushButton("打包……")
|
||||
debOption = QtWidgets.QHBoxLayout()
|
||||
rmBash = QtWidgets.QCheckBox("设置卸载该 deb 后自动删除该容器")
|
||||
cleanBottonByUOS = QtWidgets.QCheckBox("使用统信 Wine 生态适配活动容器清理脚本")
|
||||
debOption.addWidget(rmBash)
|
||||
debOption.addWidget(cleanBottonByUOS)
|
||||
debArch = QtWidgets.QComboBox()
|
||||
debArch.addItems(["i386", "arm64(box86)", "arm64(exagear)"])
|
||||
textbox1 = QtWidgets.QTextBrowser()
|
||||
option1_text.addItems(["Network", "Chat", "Audio", "Video", "Graphics", "Office", "Translation", "Development", "Utility"])
|
||||
option1_text.setCurrentText("Network")
|
||||
@ -541,6 +890,7 @@ button2.clicked.connect(button2_cl)
|
||||
button4.clicked.connect(button4_cl)
|
||||
button5.clicked.connect(make_deb)
|
||||
wineFrame.addWidget(wineVersion)
|
||||
debArch.currentIndexChanged.connect(ChangeArchCombobox)
|
||||
wineFrame.addWidget(chooseWineHelperValue)
|
||||
# 创建控件
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("要打包的 deb 包的包名(※必填):"), 0, 0, 1, 1)
|
||||
@ -557,7 +907,8 @@ widgetLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的图标
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的 MimeType 内容(选填):"), 11, 0, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("选择打包的 wine 版本(※必选):"), 12, 0, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("打包 deb 的保存路径(※必填):"), 13, 0, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("自动删除选项(选填):"), 14, 0, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("deb 包选项(选填):"), 14, 0, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("打包 deb 架构(※必选):"), 15, 0, 1, 1)
|
||||
widgetLayout.addWidget(e1_text, 0, 1, 1, 1)
|
||||
widgetLayout.addWidget(e2_text, 1, 1, 1, 1)
|
||||
widgetLayout.addWidget(e3_text, 2, 1, 1, 1)
|
||||
@ -575,10 +926,11 @@ widgetLayout.addWidget(e10_text, 11, 1, 1, 1)
|
||||
widgetLayout.addLayout(wineFrame, 12, 1, 1, 1)
|
||||
widgetLayout.addWidget(e12_text, 13, 1, 1, 1)
|
||||
widgetLayout.addWidget(button4, 13, 2, 1, 1)
|
||||
widgetLayout.addWidget(rmBash, 14, 1, 1, 1)
|
||||
widgetLayout.addWidget(button5, 15, 1, 1, 1)
|
||||
widgetLayout.addWidget(label13_text, 16, 0, 1, 3)
|
||||
widgetLayout.addWidget(textbox1, 17, 0, 1, 3)
|
||||
widgetLayout.addLayout(debOption, 14, 1, 1, 1)
|
||||
widgetLayout.addWidget(debArch, 15, 1, 1, 1)
|
||||
widgetLayout.addWidget(button5, 16, 1, 1, 1)
|
||||
widgetLayout.addWidget(label13_text, 17, 0, 1, 3)
|
||||
widgetLayout.addWidget(textbox1, 18, 0, 1, 3)
|
||||
menu = window.menuBar()
|
||||
programmenu = menu.addMenu("程序")
|
||||
help = menu.addMenu("帮助")
|
||||
|
@ -85,7 +85,7 @@ run = None
|
||||
def runexebutton(self):
|
||||
global run
|
||||
DisableButton(True)
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)" and o1.currentText() != "基于 exagear 的 deepin-wine6-stable" and o1.currentText() != "基于 box86 的 deepin-wine6-stable":
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine:
|
||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
||||
DisableButton(False)
|
||||
return
|
||||
@ -148,6 +148,14 @@ class Runexebutton_threading(QtCore.QThread):
|
||||
wineUsingOption = ""
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
wineUsingOption = "--disable-gpu"
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable":
|
||||
os.system(f"'{programPath}/deepin-wine-runner-create-botton.py' '{wineBottonPath}'")
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if setting["TerminalOpen"]:
|
||||
res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='" + wineBottonPath + "' " + option + wine[o1.currentText()] + " '" + e2.currentText() + "' " + setting["WineOption"] + "\" --keep-open" + wineUsingOption], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
else:
|
||||
@ -160,7 +168,7 @@ class Runexebutton_threading(QtCore.QThread):
|
||||
except:
|
||||
text = ""
|
||||
self.signal.emit(text)
|
||||
print(text)
|
||||
print(text, end="")
|
||||
if len(findExeHistory) == 0 or findExeHistory[-1] != wineBottonPath:
|
||||
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
||||
write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入
|
||||
@ -208,7 +216,7 @@ def make_desktop_on_launcher():
|
||||
if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容
|
||||
QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名")
|
||||
return
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]):
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine:
|
||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
|
||||
DisableButton(False)
|
||||
return
|
||||
@ -229,6 +237,12 @@ def make_desktop_on_launcher():
|
||||
if not setting["Debug"]:
|
||||
option += "WINEDEBUG=-all "
|
||||
wineUsingOption = ""
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
wineUsingOption = "--disable-gpu"
|
||||
write_txt(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop", f'''[Desktop Entry]
|
||||
@ -254,7 +268,7 @@ def make_desktop_on_desktop():
|
||||
if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容
|
||||
QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名")
|
||||
return
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]):
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine:
|
||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
|
||||
DisableButton(False)
|
||||
return
|
||||
@ -272,6 +286,12 @@ def make_desktop_on_desktop():
|
||||
wineUsingOption = ""
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
wineUsingOption = "--disable-gpu"
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if not os.path.exists(get_desktop_path()):
|
||||
os.makedirs(get_home())
|
||||
os.mknod(get_desktop_path() + "/" + combobox1.currentText() + ".desktop")
|
||||
@ -336,6 +356,9 @@ def InstallWine():
|
||||
def InstallWineOnDeepin23():
|
||||
threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -e \"{programPath}/InstallWineOnDeepin23.py\""]).start()
|
||||
|
||||
def InstallWineHQ():
|
||||
threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -e \"{programPath}/InstallNewWineHQ.sh\""]).start()
|
||||
|
||||
def OpenWineBotton():
|
||||
if e1.currentText() == "":
|
||||
wineBottonPath = setting["DefultBotton"]
|
||||
@ -373,10 +396,18 @@ class RunWineProgramThread(QtCore.QThread):
|
||||
if not setting["Debug"]:
|
||||
option += "WINEDEBUG=-all "
|
||||
wineUsingOption = ""
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable":
|
||||
os.system(f"'{programPath}/deepin-wine-runner-create-botton.py' '{wineBottonPath}'")
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
wineUsingOption = "--disable-gpu"
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if setting["TerminalOpen"]:
|
||||
res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='" + wineBottonPath + "' " + option + wine[o1.currentText()] + " '" + self.wineProgram + "' " + setting["WineOption"] + "\" --keep-open"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='" + wineBottonPath + "' " + option + wine[o1.currentText()] + " '" + self.wineProgram + "' " + setting["WineOption"] + " " + wineUsingOption + "\" --keep-open"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
else:
|
||||
res = subprocess.Popen(["WINEPREFIX='" + wineBottonPath + "' " + option + wine[o1.currentText()] + " '" + self.wineProgram + "' " + setting["WineOption"]], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
# 实时读取程序返回
|
||||
@ -386,7 +417,7 @@ class RunWineProgramThread(QtCore.QThread):
|
||||
except:
|
||||
text = ""
|
||||
self.signal.emit(text)
|
||||
print(text)
|
||||
print(text, end="")
|
||||
if self.history:
|
||||
if len(findExeHistory) == 0 or findExeHistory[-1] != wineBottonPath:
|
||||
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
||||
@ -404,7 +435,7 @@ def RunWineProgram(wineProgram, history = False, Disbled = True):
|
||||
global runProgram
|
||||
DisableButton(True)
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)" and o1.currentText() != "基于 exagear 的 deepin-wine6-stable" and o1.currentText() != "基于 box86 的 deepin-wine6-stable":
|
||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine:
|
||||
DisableButton(False)
|
||||
return
|
||||
returnText.setText("")
|
||||
@ -427,8 +458,17 @@ class RunWinetricksThread(QtCore.QThread):
|
||||
option += f"WINEARCH={setting['Architecture']} "
|
||||
if not setting["Debug"]:
|
||||
option += "WINEDEBUG=-all "
|
||||
wineUsingOption = ""
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
wineUsingOption = "--disable-gpu"
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if setting["TerminalOpen"]:
|
||||
res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='{wineBottonPath}' {option} WINE=" + subprocess.getoutput(f"which {wine[o1.currentText()]}").replace(" ", "").replace("\n", "") + " winetricks --gui\" --keep-open"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='{wineBottonPath}' {option} WINE=" + subprocess.getoutput(f"which {wine[o1.currentText()]}").replace(" ", "").replace("\n", "") + f" winetricks --gui {wineUsingOption}\" --keep-open"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
else:
|
||||
res = subprocess.Popen([f"WINEPREFIX='{wineBottonPath}' {option} WINE='" + subprocess.getoutput(f"which {wine[o1.currentText()]}").replace(" ", "").replace("\n", "") + "' winetricks --gui"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
# 实时读取程序返回
|
||||
@ -445,21 +485,34 @@ runWinetricks = None
|
||||
def RunWinetricks():
|
||||
global runWinetricks
|
||||
DisableButton(True)
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]):
|
||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)" and o1.currentText() != "基于 exagear 的 deepin-wine6-stable" and o1.currentText() != "基于 box86 的 deepin-wine6-stable":
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine:
|
||||
DisableButton(False)
|
||||
return
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
returnText.setText("")
|
||||
runWinetricks = RunWinetricksThread()
|
||||
runWinetricks.signal.connect(QT.ShowWineReturn)
|
||||
runWinetricks.start()
|
||||
|
||||
|
||||
def CleanWineBottonByUOS():
|
||||
if e1.currentText() == "":
|
||||
wineBottonPath = setting["DefultBotton"]
|
||||
else:
|
||||
wineBottonPath = e1.currentText()
|
||||
os.system(f"'{programPath}/launch.sh' deepin-terminal -C \"WINE='{wine[o1.currentText()]}' '{programPath}/cleanbottle.sh' '{wineBottonPath}'; echo 按回车退出; read; read; exit;\"")
|
||||
|
||||
def FontAppStore():
|
||||
if e1.currentText() == "":
|
||||
wineBottonPath = setting["DefultBotton"]
|
||||
else:
|
||||
wineBottonPath = e1.currentText()
|
||||
os.system(f"'{programPath}/launch.sh' deepin-terminal -e '{programPath}/InstallFont.py' '{wineBottonPath}' {int(setting['RuntimeCache'])}")
|
||||
os.system(f"WINE='{programPath}/launch.sh' deepin-terminal -e '{programPath}/InstallFont.py' '{wineBottonPath}' {int(setting['RuntimeCache'])}")
|
||||
|
||||
def InstallMonoGecko(program):
|
||||
if e1.currentText() == "":
|
||||
@ -490,6 +543,11 @@ def InstallMSXML():
|
||||
os.system(f"'{programPath}/launch.sh' deepin-terminal -e '{programPath}/InstallMsxml.py' '{wineBottonPath}' '{wine[o1.currentText()]}' {int(setting['RuntimeCache'])}")
|
||||
|
||||
def InstallDXVK():
|
||||
if not os.path.exists(f"{programPath}/dxvk"):
|
||||
if os.system(f"7z x \"{programPath}/dxvk.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dxvk.7z")
|
||||
if e1.currentText() == "":
|
||||
wineBottonPath = setting["DefultBotton"]
|
||||
else:
|
||||
@ -500,6 +558,11 @@ def InstallDXVK():
|
||||
f"{programPath}/dxvk/setup_dxvk.sh", "install"])
|
||||
|
||||
def UninstallDXVK():
|
||||
if not os.path.exists(f"{programPath}/dxvk"):
|
||||
if os.system(f"7z x \"{programPath}/dxvk.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dxvk.7z")
|
||||
if e1.currentText() == "":
|
||||
wineBottonPath = setting["DefultBotton"]
|
||||
else:
|
||||
@ -610,6 +673,9 @@ def UOSPackageScript():
|
||||
def RunVM():
|
||||
threading.Thread(target=os.system, args=[f"bash '{programPath}/RunVM.sh'"]).start()
|
||||
|
||||
def CleanProgram():
|
||||
os.system(f"'{programPath}/launch.sh' deepin-terminal -e \"{programPath}/clean-unuse-program.py\"")
|
||||
|
||||
class UpdateWindow():
|
||||
data = {}
|
||||
update = None
|
||||
@ -1004,10 +1070,28 @@ if not os.path.exists(get_home() + "/.config/deepin-wine-runner/WineSetting.json
|
||||
###########################
|
||||
# 设置变量
|
||||
###########################
|
||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||
# 如果要添加其他 wine,请在字典添加其名称和执行路径
|
||||
try:
|
||||
wine = {"deepin-wine": "deepin-wine", "deepin-wine5": "deepin-wine5", "wine": "wine", "wine64": "wine64", "deepin-wine5 stable": "deepin-wine5-stable", "deepin-wine6 stable": "deepin-wine6-stable", "spark-wine7-devel": "spark-wine7-devel", "ukylin-wine": "ukylin-wine"}
|
||||
wine = {
|
||||
"基于 box86 的 deepin-wine6-stable": f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 /opt/deepin-wine6-stable/bin/wine ",
|
||||
"基于 exagear 的 deepin-wine6-stable": f"/opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine ",
|
||||
"deepin-wine6 stable": "deepin-wine6-stable",
|
||||
"deepin-wine5 stable": "deepin-wine5-stable",
|
||||
"spark-wine7-devel": "spark-wine7-devel",
|
||||
"deepin-wine": "deepin-wine",
|
||||
"deepin-wine5": "deepin-wine5",
|
||||
"wine": "wine",
|
||||
"wine64": "wine64",
|
||||
"ukylin-wine": "ukylin-wine",
|
||||
"基于 linglong 的 deepin-wine6-stable(不推荐)": f"ll-cli run '' --exec '/bin/deepin-wine6-stable'"
|
||||
}
|
||||
untipsWine = ["基于 box86 的 deepin-wine6-stable", "基于 exagear 的 deepin-wine6-stable", "基于 linglong 的 deepin-wine6-stable(不推荐)"]
|
||||
canUseWine = []
|
||||
if os.path.exists("/opt/deepin-box86/box86"):
|
||||
canUseWine.append("基于 box86 的 deepin-wine6-stable")
|
||||
if os.path.exists("/opt/exagear/bin/ubt_x64a64_al"):
|
||||
canUseWine.append("基于 exagear 的 deepin-wine6-stable")
|
||||
for i in wine.keys():
|
||||
if not os.system(f"which '{wine[i]}'"):
|
||||
canUseWine.append(i)
|
||||
@ -1022,12 +1106,6 @@ try:
|
||||
break
|
||||
except:
|
||||
pass
|
||||
if os.path.exists("/opt/deepin-box86/box86"):
|
||||
wine["基于 box86 的 deepin-wine6-stable"] = f"BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 /opt/deepin-wine6-stable/bin/wine "
|
||||
canUseWine.append("基于 box86 的 deepin-wine6-stable")
|
||||
if os.path.exists("/opt/exagear/bin/ubt_x64a64_al"):
|
||||
wine["基于 exagear 的 deepin-wine6-stable"] = f"/opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine "
|
||||
canUseWine.append("基于 exagear 的 deepin-wine6-stable")
|
||||
shellHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json")).values())
|
||||
findExeHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json")).values())
|
||||
wineBottonHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json")).values())
|
||||
@ -1050,7 +1128,6 @@ except:
|
||||
###########################
|
||||
# 程序信息
|
||||
###########################
|
||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||
iconPath = "{}/deepin-wine-runner.svg".format(programPath)
|
||||
programUrl = "https://gitee.com/gfdgd-xi/deep-wine-runner\nhttps://github.com/gfdgd-xi/deep-wine-runner\nhttps://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner"
|
||||
information = json.loads(readtxt(f"{programPath}/information.json"))
|
||||
@ -1065,26 +1142,30 @@ tips = '''<h4>提示:</h4>
|
||||
exe路径\' 参数 \'
|
||||
即可(单引号需要输入)
|
||||
5、wine 容器如果没有指定,则会默认为 ~/.wine
|
||||
6、在使用 linglong 包的 Wine 应用时,必须安装至少一个 linglong 的使用 Wine 软件包才会出现该选项,
|
||||
6、对于非 X86 的用户来说,请不要使用本程序自带的 Wine 安装程序和 Windows 虚拟机安装功能(检测到为非 X86 架构会自动禁用)
|
||||
7、在使用 linglong 包的 Wine 应用时,必须安装至少一个 linglong 的使用 Wine 软件包才会出现该选项,
|
||||
而程序识别到的 Wine 是按 linglong 的使用 Wine 软件包名的字母排序第一个的 Wine,且生成的容器不在用户目录下,而是在容器的用户目录下(~/.deepinwine、/tmp、桌面、下载、文档等被映射的目录除外),
|
||||
同理需要运行的 EXE 也必须在被映射的目录内
|
||||
7、如果是使用 Deepin 23 的 Wine 安装脚本,请切记——安装过程会临时添加 Deepin 20 的 apt 源,不要中断安装以及
|
||||
8、如果是使用 Deepin 23 的 Wine 安装脚本,请切记——安装过程会临时添加 Deepin 20 的 apt 源,不要中断安装以及
|
||||
<b>千万不要中断后不删除源的情况下 apt upgrade !!!</b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine(会自动执行恢复操作)即可
|
||||
以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示
|
||||
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>'''
|
||||
updateThingsString = '''※1、修复了重复路径一直自动重复增加的问题
|
||||
updateThingsString = '''<b>※1、修复了重复路径一直自动重复增加的问题
|
||||
※2、修复了两个打包器打包错误的问题(非基于生态活动脚本的为 wine 导入错误,基于生态活动脚本的为架构有误导致打包出的 deb 无法打包)
|
||||
※3、适配了部分非 i386、amd64 架构计算机的 UOS 系统使用的 wine
|
||||
※3、适配了部分非 i386、amd64 架构计算机的 UOS 系统使用的 wine 并支持打包非 i386、amd64 架构计算机的 UOS 系统使用的 wine 程序 deb 包
|
||||
※4、支持安装 dxvk(遵守 Zlib 开源协议)
|
||||
5、支持不显示没有安装的 Wine,方便用户识别
|
||||
6、增加字体商店
|
||||
※5、运行器、打包器(包括非基于生态适配活动脚本制作的)支持使用 Wine 生态适配活动的容器清理脚本</b>
|
||||
6、支持不显示没有安装的 Wine,方便用户识别
|
||||
7、增加字体商店
|
||||
8、修改了 Wine 的顺序使其更加合理
|
||||
'''
|
||||
for i in information["Thank"]:
|
||||
thankText += f"{i}\n"
|
||||
updateTime = "2022年08月05日"
|
||||
updateTime = "2022年08月11日"
|
||||
about = f'''<h1>关于</h1>
|
||||
<p>一个能让Linux用户更加方便运行Windows应用的程序,内置了对wine图形话的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等</p>
|
||||
<p>同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具,可以做到只需要用户下载系统镜像并点击安装即可,无需顾及虚拟机安装、创建、虚拟机的分区等等</p>
|
||||
<p>本程序依照 GPLV3 协议开源</p>
|
||||
<pre>
|
||||
|
||||
一个图形化了如下命令的程序(最简单格式)
|
||||
@ -1261,24 +1342,30 @@ menu = window.menuBar()
|
||||
programmenu = menu.addMenu("程序(&P)")
|
||||
p1 = QtWidgets.QAction("安装 wine(&I)")
|
||||
installWineOnDeepin23 = QtWidgets.QAction("安装 wine(只限Deepin23)")
|
||||
installWineHQ = QtWidgets.QAction("安装 WineHQ")
|
||||
p2 = QtWidgets.QAction("设置程序(&S)")
|
||||
p3 = QtWidgets.QAction("清空软件历史记录(&C)")
|
||||
cleanCache = QtWidgets.QAction("清空软件缓存")
|
||||
cleanProgramUnuse = QtWidgets.QAction("删除程序组件")
|
||||
p4 = QtWidgets.QAction("退出程序(&E)")
|
||||
programmenu.addAction(p1)
|
||||
programmenu.addAction(installWineOnDeepin23)
|
||||
programmenu.addAction(installWineHQ)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(p2)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(p3)
|
||||
programmenu.addAction(cleanCache)
|
||||
programmenu.addAction(cleanProgramUnuse)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(p4)
|
||||
p1.triggered.connect(InstallWine)
|
||||
installWineOnDeepin23.triggered.connect(InstallWineOnDeepin23)
|
||||
installWineHQ.triggered.connect(InstallWineHQ)
|
||||
p2.triggered.connect(ProgramSetting.ShowWindow)
|
||||
p3.triggered.connect(CleanProgramHistory)
|
||||
cleanCache.triggered.connect(CleanProgramCache)
|
||||
cleanProgramUnuse.triggered.connect(CleanProgram)
|
||||
p4.triggered.connect(window.close)
|
||||
|
||||
wineOption = menu.addMenu("Wine(&W)")
|
||||
@ -1286,6 +1373,7 @@ w1 = QtWidgets.QAction("打开 Wine 容器目录")
|
||||
w2 = QtWidgets.QAction("安装常见字体")
|
||||
w3 = QtWidgets.QAction("安装自定义字体")
|
||||
w4 = QtWidgets.QAction("删除选择的 Wine 容器")
|
||||
cleanBottonUOS = QtWidgets.QAction("清理 Wine 容器(基于 Wine 适配活动脚本)")
|
||||
w5 = QtWidgets.QAction("打包 wine 应用")
|
||||
w6 = QtWidgets.QAction("使用官方 Wine 适配活动的脚本进行打包")
|
||||
w7 = QtWidgets.QAction("从镜像获取DLL(只支持Windows XP、Windows Server 2003官方安装镜像)")
|
||||
@ -1294,6 +1382,7 @@ wineOption.addAction(w1)
|
||||
wineOption.addAction(w2)
|
||||
wineOption.addAction(w3)
|
||||
wineOption.addAction(w4)
|
||||
wineOption.addAction(cleanBottonUOS)
|
||||
wineOption.addSeparator()
|
||||
wineOption.addAction(w5)
|
||||
wineOption.addAction(w6)
|
||||
@ -1358,6 +1447,7 @@ w1.triggered.connect(OpenWineBotton)
|
||||
w2.triggered.connect(InstallWineFont)
|
||||
w3.triggered.connect(OpenWineFontPath)
|
||||
w4.triggered.connect(DeleteWineBotton)
|
||||
cleanBottonUOS.triggered.connect(CleanWineBottonByUOS)
|
||||
w5.triggered.connect(BuildExeDeb)
|
||||
w6.triggered.connect(UOSPackageScript)
|
||||
w7.triggered.connect(GetDllFromWindowsISO.ShowWindow)
|
||||
@ -1451,6 +1541,24 @@ if setting["AutoWine"]:
|
||||
o1.addItems(canUseWine)
|
||||
else:
|
||||
o1.addItems(wine.keys())
|
||||
# 禁用被精简掉的控件
|
||||
for i in [
|
||||
[[p1, installWineOnDeepin23, installWineHQ], f"{programPath}/InstallWineOnDeepin23.py"],
|
||||
[[w5], f"{programPath}/deepin-wine-packager.py"],
|
||||
[[w6], f"{programPath}/deepin-wine-packager-with-script.py"],
|
||||
[[p1, v1], f"{programPath}/RunVM.sh"]
|
||||
]:
|
||||
if not os.path.exists(i[1]):
|
||||
for x in i[0]:
|
||||
x.setDisabled(True)
|
||||
# 有些功能是非 X86 不适用的,需要屏蔽
|
||||
if subprocess.getoutput("arch").lower() != "x86_64":
|
||||
p1.setDisabled(True)
|
||||
installWineOnDeepin23.setDisabled(True)
|
||||
virtualMachine.setDisabled(True)
|
||||
v1.setDisabled(True)
|
||||
installWineHQ.setDisabled(True)
|
||||
pass
|
||||
o1.setCurrentText(setting["DefultWine"])
|
||||
e1.setEditText(setting["DefultBotton"])
|
||||
e2.setEditText("")
|
||||
|
4
deb/opt/apps/deepin-wine-runner/deepin.list
Normal file
4
deb/opt/apps/deepin-wine-runner/deepin.list
Normal file
@ -0,0 +1,4 @@
|
||||
## Generated by deepin-installer
|
||||
deb https://community-packages.deepin.com/deepin/ apricot main contrib non-free
|
||||
# Written by deepin-home-appstore-client
|
||||
deb https://com-store-packages.uniontech.com/appstore deepin appstore
|
BIN
deb/opt/apps/deepin-wine-runner/dlls-arm.7z
Normal file
BIN
deb/opt/apps/deepin-wine-runner/dlls-arm.7z
Normal file
Binary file not shown.
BIN
deb/opt/apps/deepin-wine-runner/dlls.7z
Normal file
BIN
deb/opt/apps/deepin-wine-runner/dlls.7z
Normal 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.
Binary file not shown.
Binary file not shown.
BIN
deb/opt/apps/deepin-wine-runner/dxvk.7z
Normal file
BIN
deb/opt/apps/deepin-wine-runner/dxvk.7z
Normal file
Binary file not shown.
@ -1,232 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
function wait(){
|
||||
echo Press Enter To Exit
|
||||
read
|
||||
}
|
||||
# default directories
|
||||
dxvk_lib32=${dxvk_lib32:-"x32"}
|
||||
dxvk_lib64=${dxvk_lib64:-"x64"}
|
||||
|
||||
# figure out where we are
|
||||
basedir=$(dirname "$(readlink -f $0)")
|
||||
|
||||
# figure out which action to perform
|
||||
action="$1"
|
||||
|
||||
case "$action" in
|
||||
install)
|
||||
;;
|
||||
uninstall)
|
||||
;;
|
||||
*)
|
||||
echo "Unrecognized action: $action"
|
||||
echo "Usage: $0 [install|uninstall] [--without-dxgi] [--with-d3d10] [--symlink]"
|
||||
wait
|
||||
exit 1
|
||||
esac
|
||||
|
||||
# process arguments
|
||||
shift
|
||||
|
||||
with_dxgi=true
|
||||
with_d3d10=false
|
||||
file_cmd="cp -v"
|
||||
|
||||
while (($# > 0)); do
|
||||
case "$1" in
|
||||
"--without-dxgi")
|
||||
with_dxgi=false
|
||||
;;
|
||||
"--with-d3d10")
|
||||
with_d3d10=true
|
||||
;;
|
||||
"--symlink")
|
||||
file_cmd="ln -s -v"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# check wine prefix before invoking wine, so that we
|
||||
# don't accidentally create one if the user screws up
|
||||
if [ -n "$WINEPREFIX" ] && ! [ -f "$WINEPREFIX/system.reg" ]; then
|
||||
echo "$WINEPREFIX:"' Not a valid wine prefix.' >&2
|
||||
wait
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# find wine executable
|
||||
export WINEDEBUG=-all
|
||||
# disable mscoree and mshtml to avoid downloading
|
||||
# wine gecko and mono
|
||||
export WINEDLLOVERRIDES="mscoree,mshtml="
|
||||
# 专门添加,为了可以使用自定义的 wine
|
||||
wine=$WINE
|
||||
wine64=$WINE64
|
||||
wineboot="$WINE wineboot"
|
||||
if [[ $WINE == "" ]];then
|
||||
wine="wine"
|
||||
fi
|
||||
if [[ $WINE64 == "" ]];then
|
||||
wine64="wine64"
|
||||
fi
|
||||
|
||||
# $PATH is the way for user to control where wine is located (including custom Wine versions).
|
||||
# Pure 64-bit Wine (non Wow64) requries skipping 32-bit steps.
|
||||
# In such case, wine64 and winebooot will be present, but wine binary will be missing,
|
||||
# however it can be present in other PATHs, so it shouldn't be used, to avoid versions mixing.
|
||||
wine_path=$(dirname "$(which $wineboot)")
|
||||
wow64=true
|
||||
if ! [ -f "$wine_path/$wine" ]; then
|
||||
wine=$wine64
|
||||
wow64=false
|
||||
wineboot="$wine64 wineboot"
|
||||
fi
|
||||
|
||||
# resolve 32-bit and 64-bit system32 path
|
||||
winever=$($wine --version | grep wine)
|
||||
if [ -z "$winever" ]; then
|
||||
echo "$wine:"' Not a wine executable. Check your $wine.' >&2
|
||||
wait
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ensure wine placeholder dlls are recreated
|
||||
# if they are missing
|
||||
$wineboot -u
|
||||
|
||||
win64_sys_path=$($wine64 winepath -u 'C:\windows\system32' 2> /dev/null)
|
||||
win64_sys_path="${win64_sys_path/$'\r'/}"
|
||||
if $wow64; then
|
||||
win32_sys_path=$($wine winepath -u 'C:\windows\system32' 2> /dev/null)
|
||||
win32_sys_path="${win32_sys_path/$'\r'/}"
|
||||
fi
|
||||
|
||||
if [ -z "$win32_sys_path" ] && [ -z "$win64_sys_path" ]; then
|
||||
echo 'Failed to resolve C:\windows\system32.' >&2
|
||||
wait
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# create native dll override
|
||||
overrideDll() {
|
||||
$wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v $1 /d native /f >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "Failed to add override for $1"
|
||||
wait
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# remove dll override
|
||||
restoreDll() {
|
||||
$wine reg delete 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v $1 /f > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to remove override for $1"
|
||||
fi
|
||||
}
|
||||
|
||||
# copy or link dxvk dll, back up original file
|
||||
installFile() {
|
||||
dstfile="${1}/${3}.dll"
|
||||
srcfile="${basedir}/${2}/${3}.dll"
|
||||
|
||||
if [ -f "${srcfile}.so" ]; then
|
||||
srcfile="${srcfile}.so"
|
||||
fi
|
||||
|
||||
if ! [ -f "${srcfile}" ]; then
|
||||
echo "${srcfile}: File not found. Skipping." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
if [ -f "${dstfile}" ] || [ -h "${dstfile}" ]; then
|
||||
if ! [ -f "${dstfile}.old" ]; then
|
||||
mv -v "${dstfile}" "${dstfile}.old"
|
||||
else
|
||||
rm -v "${dstfile}"
|
||||
fi
|
||||
$file_cmd "${srcfile}" "${dstfile}"
|
||||
else
|
||||
echo "${dstfile}: File not found in wine prefix" >&2
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
# remove dxvk dll, restore original file
|
||||
uninstallFile() {
|
||||
dstfile="${1}/${3}.dll"
|
||||
srcfile="${basedir}/${2}/${3}.dll"
|
||||
|
||||
if [ -f "${srcfile}.so" ]; then
|
||||
srcfile="${srcfile}.so"
|
||||
fi
|
||||
|
||||
if ! [ -f "${srcfile}" ]; then
|
||||
echo "${srcfile}: File not found. Skipping." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! [ -f "${dstfile}" ] && ! [ -h "${dstfile}" ]; then
|
||||
echo "${dstfile}: File not found. Skipping." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -f "${dstfile}.old" ]; then
|
||||
rm -v "${dstfile}"
|
||||
mv -v "${dstfile}.old" "${dstfile}"
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
install() {
|
||||
installFile "$win64_sys_path" "$dxvk_lib64" "$1"
|
||||
inst64_ret="$?"
|
||||
|
||||
inst32_ret=-1
|
||||
if $wow64; then
|
||||
installFile "$win32_sys_path" "$dxvk_lib32" "$1"
|
||||
inst32_ret="$?"
|
||||
fi
|
||||
|
||||
if (( ($inst32_ret == 0) || ($inst64_ret == 0) )); then
|
||||
overrideDll "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
uninstallFile "$win64_sys_path" "$dxvk_lib64" "$1"
|
||||
uninst64_ret="$?"
|
||||
|
||||
uninst32_ret=-1
|
||||
if $wow64; then
|
||||
uninstallFile "$win32_sys_path" "$dxvk_lib32" "$1"
|
||||
uninst32_ret="$?"
|
||||
fi
|
||||
|
||||
if (( ($uninst32_ret == 0) || ($uninst64_ret == 0) )); then
|
||||
restoreDll "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
# skip dxgi during install if not explicitly
|
||||
# enabled, but always try to uninstall it
|
||||
if $with_dxgi || [ "$action" == "uninstall" ]; then
|
||||
$action dxgi
|
||||
fi
|
||||
|
||||
$action d3d9
|
||||
|
||||
if $with_d3d10 || [ "$action" == "uninstall" ]; then
|
||||
$action d3d10
|
||||
$action d3d10_1
|
||||
fi
|
||||
|
||||
$action d3d10core
|
||||
$action d3d11
|
||||
wait
|
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.
Binary file not shown.
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
{
|
||||
"Version": "1.9.0Alpha3",
|
||||
"Version": "1.9.0",
|
||||
"Thank": [
|
||||
"感谢 @a2035274 @虚幻的早晨 https://bbs.deepin.org/post/238301",
|
||||
"感谢 @zhangs https://bbs.deepin.org/post/227948",
|
||||
@ -12,7 +12,11 @@
|
||||
"感谢 @PossibleVing 提供的新版应用图标",
|
||||
"感谢 @zhengjl 反馈的 1.7.0 中 .net framrwork 3.5 非离线版安装包的问题以及 1.8.0 重复路径一直自动重复增加的问题",
|
||||
"感谢 @国川 @刘岐 提供的非 i386、amd64 运行 wine 使用 i386/amd64 可执行文件的教程和脚本",
|
||||
"感谢 @勇往直前 梦想启航 @189******09 @tfhyl 提供在非 X86 平台的国产 PC 进行测试",
|
||||
"感谢 @cuisirwork 提供的提供视频教程的建议",
|
||||
"感谢 @办公助手 提供的非 X86 平台 Wine 运行自定义 exe 应用教程和 deb 包",
|
||||
"感谢统信在 Wine 生态适配活动中提供的打包脚本",
|
||||
"也感谢 DXVK 的开发者开发了 DXVK 这个程序,项目链接:https://github.com/doitsujin/dxvk",
|
||||
"",
|
||||
"可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!",
|
||||
"如果上面有遗漏,请向我反馈补充"
|
||||
|
Binary file not shown.
1
deb/opt/apps/deepin-wine-runner/sparkstore.list
Normal file
1
deb/opt/apps/deepin-wine-runner/sparkstore.list
Normal file
@ -0,0 +1 @@
|
||||
deb [by-hash=force] https://d.store.deepinos.org.cn /
|
BIN
deb/opt/apps/deepin-wine-runner/wined3d.dll.so.7z
Normal file
BIN
deb/opt/apps/deepin-wine-runner/wined3d.dll.so.7z
Normal file
Binary file not shown.
1
deb/usr/bin/deepin-wine-runner-winehq-install
Symbolic link
1
deb/usr/bin/deepin-wine-runner-winehq-install
Symbolic link
@ -0,0 +1 @@
|
||||
/opt/apps/deepin-wine-runner/InstallNewWineHQ.sh
|
@ -61,6 +61,9 @@ def disabled_or_NORMAL_all(choose):
|
||||
option1_text.setDisabled(choose)
|
||||
chooseWineHelperValue.setDisabled(choose)
|
||||
wineVersion.setDisabled(choose)
|
||||
debArch.setDisabled(choose)
|
||||
if not choose:
|
||||
ChangeArchCombobox()
|
||||
|
||||
class QT:
|
||||
thread = None
|
||||
@ -157,82 +160,17 @@ class make_deb_threading(QtCore.QThread):
|
||||
disabled_or_NORMAL_all(True)
|
||||
self.label.emit("容器路径填写错误,无法进行构建 deb 包")
|
||||
return
|
||||
#############
|
||||
# 删除文件
|
||||
#############
|
||||
self.label.emit("正在删除对构建 deb 包有影响的文件……")
|
||||
debPackagePath = f"/tmp/{random.randint(0, 9999)}"
|
||||
self.run_command(f"rm -rfv /tmp/{debPackagePath}")
|
||||
###############
|
||||
# 创建目录
|
||||
###############
|
||||
self.label.emit("正在创建目录……")
|
||||
os.makedirs("{}/DEBIAN".format(debPackagePath))
|
||||
os.makedirs("{}/opt/apps/{}/entries/applications".format(debPackagePath, e1_text.text()))
|
||||
os.makedirs("{}/opt/apps/{}/entries/icons/hicolor/scalable/apps".format(debPackagePath, e1_text.text()))
|
||||
os.makedirs("{}/opt/apps/{}/files".format(debPackagePath, e1_text.text()))
|
||||
###############
|
||||
# 创建文件
|
||||
###############
|
||||
self.label.emit("正在创建文件……")
|
||||
os.mknod("{}/DEBIAN/control".format(debPackagePath))
|
||||
os.mknod("{}/opt/apps/{}/entries/applications/{}.desktop".format(debPackagePath, e1_text.text(), e1_text.text()))
|
||||
os.mknod("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()))
|
||||
os.mknod("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()))
|
||||
###############
|
||||
# 设置容器
|
||||
###############
|
||||
self.label.emit("正在设置 wine 容器")
|
||||
os.chdir(b)
|
||||
self.run_command("sed -i \"s#$USER#@current_user@#\" ./*.reg")
|
||||
os.chdir(f"{b}/drive_c/users")
|
||||
self.run_command(f"mv -v '{os.getlogin()}' @current_user@")
|
||||
os.chdir(programPath)
|
||||
###############
|
||||
# 压缩容器
|
||||
###############
|
||||
self.label.emit("正在打包 wine 容器")
|
||||
self.run_command("7z a {}/opt/apps/{}/files/files.7z {}/*".format(debPackagePath, e1_text.text(), b))
|
||||
###############
|
||||
# 复制图片
|
||||
###############
|
||||
self.label.emit("正在复制文件……")
|
||||
self.run_command(f"cp -rv '{programPath}/dlls' {debPackagePath}/opt/apps/{e1_text.text()}/files/")
|
||||
if e9_text.text() != "":
|
||||
shutil.copy(e9_text.text(), "{}/opt/apps/{}/entries/icons/hicolor/scalable/apps/{}.{}".format(debPackagePath, e1_text.text(), e1_text.text(), imms))
|
||||
################
|
||||
# 获取文件大小
|
||||
################
|
||||
self.label.emit("正在计算文件大小……")
|
||||
size = getFileFolderSize(debPackagePath) / 1024
|
||||
################
|
||||
# 写入文本文档
|
||||
################
|
||||
self.label.emit("正在写入文件……")
|
||||
if not chooseWineHelperValue.isChecked():
|
||||
write_txt("{}/DEBIAN/control".format(debPackagePath), '''Package: {}
|
||||
Version: {}
|
||||
Architecture: i386
|
||||
Maintainer: {}
|
||||
Depends: {}, deepin-wine-helper (>= 5.1.30-1), fonts-wqy-microhei, fonts-wqy-zenhei
|
||||
Section: non-free/otherosfs
|
||||
Priority: optional
|
||||
Multi-Arch: foreign
|
||||
Description: {}
|
||||
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wine[wineVersion.currentText()], e3_text.text()))
|
||||
else:
|
||||
write_txt("{}/DEBIAN/control".format(debPackagePath), '''Package: {}
|
||||
Version: {}
|
||||
Architecture: i386
|
||||
Maintainer: {}
|
||||
Depends: {}, spark-dwine-helper (>= 1.6.2), fonts-wqy-microhei, fonts-wqy-zenhei
|
||||
Section: non-free/otherosfs
|
||||
Priority: optional
|
||||
Multi-Arch: foreign
|
||||
Description: {}
|
||||
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wine[wineVersion.currentText()], e3_text.text()))
|
||||
if rmBash.isChecked():
|
||||
write_txt("{}/DEBIAN/postrm".format(debPackagePath, e1_text.text()), f'''#!/bin/bash
|
||||
debInformation = [
|
||||
{
|
||||
# I386 wine 打包配置文件
|
||||
"Wine": wine[wineVersion.currentText()],
|
||||
"Architecture": "i386",
|
||||
"Depends": [
|
||||
f"{wine[wineVersion.currentText()]}, deepin-wine-helper (>= 5.1.30-1), fonts-wqy-microhei, fonts-wqy-zenhei",
|
||||
f"{wine[wineVersion.currentText()]}, spark-dwine-helper (>= 1.6.2), fonts-wqy-microhei, fonts-wqy-zenhei"
|
||||
][int(chooseWineHelperValue.isChecked())],
|
||||
"postinst": "",
|
||||
"postrm": ["", f"""#!/bin/bash
|
||||
|
||||
if [ "$1" = "remove" ] || [ "$1" = "purge" ];then
|
||||
|
||||
@ -247,11 +185,9 @@ fi
|
||||
done
|
||||
else
|
||||
echo"非卸载,跳过清理"
|
||||
fi
|
||||
''')
|
||||
write_txt("{}/opt/apps/{}/entries/applications/{}.desktop".format(debPackagePath, e1_text.text(), e1_text.text()), '#!/usr/bin/env xdg-open\n[Desktop Entry]\nEncoding=UTF-8\nType=Application\nX-Created-By={}\nCategories={};\nIcon={}\nExec="/opt/apps/{}/files/run.sh" {}\nName={}\nComment={}\nMimeType={}\nGenericName={}\nTerminal=false\nStartupNotify=false\n'.format(e4_text.text(), option1_text.currentText(), a, e1_text.text(), e15_text.text(), e8_text.text(), e3_text.text(), e10_text.text(), e1_text.text()))
|
||||
if not bool(chooseWineHelperValue.text()):
|
||||
write_txt("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()), '''#!/bin/sh
|
||||
fi"""][int()],
|
||||
"run.sh": [
|
||||
f"""#!/bin/sh
|
||||
|
||||
# Copyright (C) 2016 Deepin, Inc.
|
||||
#
|
||||
@ -260,13 +196,13 @@ fi
|
||||
|
||||
version_gt() {{ test "$(echo "$@" | tr " " "\\n" | sort -V | head -n 1)" != "$1"; }}
|
||||
|
||||
BOTTLENAME="{}"
|
||||
APPVER="{}"
|
||||
EXEC_PATH="{}"
|
||||
BOTTLENAME="{e5_text.text()}"
|
||||
APPVER="{e2_text.text()}"
|
||||
EXEC_PATH="{e7_text.text()}"
|
||||
START_SHELL_PATH="/opt/deepinwine/tools/run_v4.sh"
|
||||
export MIME_TYPE=""
|
||||
export DEB_PACKAGE_NAME="{}"
|
||||
export APPRUN_CMD="{}"
|
||||
export DEB_PACKAGE_NAME="{e1_text.text()}"
|
||||
export APPRUN_CMD="{wine[wineVersion.currentText()]}"
|
||||
DISABLE_ATTACH_FILE_DIALOG=""
|
||||
EXPORT_ENVS=""
|
||||
|
||||
@ -294,10 +230,8 @@ if [ -n "$EXEC_PATH" ];then
|
||||
fi
|
||||
else
|
||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||
fi
|
||||
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wine[wineVersion.currentText()]))
|
||||
else:
|
||||
write_txt("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()), '''#!/bin/sh
|
||||
fi""",
|
||||
f"""#!/bin/sh
|
||||
|
||||
# Copyright (C) 2016 Deepin, Inc.
|
||||
#
|
||||
@ -333,16 +267,16 @@ Get_Dist_Name()
|
||||
|
||||
version_gt() {{ test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"; }}
|
||||
####用于比较版本?未实装
|
||||
BOTTLENAME="{}"
|
||||
APPVER="{}"
|
||||
EXEC_PATH="{}"
|
||||
BOTTLENAME="{e5_text.text()}"
|
||||
APPVER="{e2_text.text()}"
|
||||
EXEC_PATH="{e7_text.text()}"
|
||||
##### 软件在wine中的启动路径
|
||||
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
||||
export MIME_TYPE=""
|
||||
#####没什么用
|
||||
export DEB_PACKAGE_NAME="{}"
|
||||
export DEB_PACKAGE_NAME="{e1_text.text()}"
|
||||
####这里写包名才能在启动的时候正确找到files.7z,似乎也和杀残留进程有关
|
||||
export APPRUN_CMD="{}"
|
||||
export APPRUN_CMD="{wine[wineVersion.currentText()]}"
|
||||
#####wine启动指令,建议
|
||||
EXPORT_ENVS=""
|
||||
|
||||
@ -403,15 +337,412 @@ if [ -n "$EXEC_PATH" ];then
|
||||
fi
|
||||
else
|
||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||
fi"""
|
||||
][chooseWineHelperValue.isChecked()],
|
||||
"info": f'''{{
|
||||
"appid": "{e1_text.text()}",
|
||||
"name": "{e8_text.text()}",
|
||||
"version": "{e2_text.text()}",
|
||||
"arch": ["i386"],
|
||||
"permissions": {{
|
||||
"autostart": false,
|
||||
"notification": false,
|
||||
"trayicon": true,
|
||||
"clipboard": true,
|
||||
"account": false,
|
||||
"bluetooth": false,
|
||||
"camera": true,
|
||||
"audio_record": true,
|
||||
"installed_apps": false
|
||||
}}
|
||||
}}'''
|
||||
},
|
||||
{
|
||||
# ARM64 BOX86 wine 打包配置文件
|
||||
"Wine": f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 /opt/deepin-wine6-stable/bin/wine ",
|
||||
"Architecture": "arm64",
|
||||
"Depends": "deepin-elf-verify (>= 0.0.16.7-1), com.deepin-wine6-stable.deepin(>=6.0deepin14), com.deepin-box86.deepin(>=0.2.3deepin8), p7zip-full, fonts-wqy-microhei, fonts-noto-cjk",
|
||||
"postinst": f"""#!/bin/sh
|
||||
DEB_PATH=/opt/apps/{e1_text.text()}
|
||||
NVIDIA_DISP_CARD=`lspci | grep VGA | grep NVIDIA`
|
||||
if [ -f $DEB_PATH/files/wined3d.dll.so ] && [ ! -z "$NVIDIA_DISP_CARD" ];then
|
||||
mv $DEB_PATH/files/wined3d.dll.so $DEB_PATH/files/dlls
|
||||
fi
|
||||
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wine[wineVersion.currentText()]))
|
||||
write_txt("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()), '{\n "appid": "' + e1_text.text() + '",\n "name": "' + e8_text.text() + '",\n "version": "' + e2_text.text() + '",\n "arch": ["i386"],\n "permissions": {\n "autostart": false,\n "notification": false,\n "trayicon": true,\n "clipboard": true,\n "account": false,\n "bluetooth": false,\n "camera": false,\n "audio_record": false,\n "installed_apps": false\n }\n}')
|
||||
true
|
||||
""",
|
||||
"postrm": f"""#!/bin/sh
|
||||
|
||||
BOTTLE="$HOME/.deepinwine/{e5_text.text()}"
|
||||
WINESERVER=/opt/deepin-wine6-stable/bin/wineserver
|
||||
|
||||
if [ -d "$BOTTLE" ];then
|
||||
WINEPREFIX=$BOTTLE $WINESERVER -k
|
||||
rm $BOTTLE -rf
|
||||
fi
|
||||
|
||||
true""",
|
||||
"run.sh": f"""#!/bin/bash
|
||||
DEB_PATH="/opt/apps/{e1_text.text()}"
|
||||
WINE="/opt/deepin-wine6-stable/bin/wine"
|
||||
WINESERVER="/opt/deepin-wine6-stable/bin/wineserver"
|
||||
BOX86="/opt/deepin-box86/box86"
|
||||
EXE="{e7_text.text()}"
|
||||
NEW_VERSION="{e2_text.text()}"
|
||||
BOTTLE="$HOME/.deepinwine/{e5_text.text()}"
|
||||
|
||||
reconstruct_bottle_symlink() {{
|
||||
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Desktop ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Desktop
|
||||
ln -s $HOME/Desktop $BOTTLE/drive_c/users/$USER/Desktop
|
||||
fi
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Documents ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Documents
|
||||
ln -s $HOME/Documents $BOTTLE/drive_c/users/$USER/Documents
|
||||
fi
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Downloads ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Downloads
|
||||
ln -s $HOME/Downloads $BOTTLE/drive_c/users/$USER/Downloads
|
||||
fi
|
||||
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Documents" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Documents"
|
||||
ln -s $HOME/Documents "$BOTTLE/drive_c/users/$USER/My Documents"
|
||||
fi
|
||||
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Music" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Music"
|
||||
ln -s $HOME/Music "$BOTTLE/drive_c/users/$USER/My Music"
|
||||
fi
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Videos" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Videos"
|
||||
ln -s $HOME/Videos "$BOTTLE/drive_c/users/$USER/My Videos"
|
||||
fi
|
||||
}}
|
||||
|
||||
if [ ! -d "$HOME/.deepinwine" ];then
|
||||
mkdir -p "$HOME/.deepinwine"
|
||||
fi
|
||||
|
||||
if [ -f $BOTTLE/VERSION ];then
|
||||
old_version=""
|
||||
while read line; do
|
||||
old_version=$line
|
||||
done < $BOTTLE/VERSION
|
||||
if [ "$old_version" != "$NEW_VERSION" ];then
|
||||
WINEPREFIX=$BOTTLE $BOX86 $WINESERVER -k
|
||||
rm -rf $BOTTLE
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -d $BOTTLE ] && [ ! -f $BOTTLE/VERSION ];then
|
||||
WINEPREFIX=$BOTTLE $BOX86 $WINESERVER -k
|
||||
rm -rf $BOTTLE
|
||||
fi
|
||||
|
||||
if [ ! -d $BOTTLE ];then
|
||||
7z x "$DEB_PATH/files/files.7z" -o"$BOTTLE" -aoa
|
||||
mv "$BOTTLE/drive_c/users/@current_user@" "$BOTTLE/drive_c/users/$USER"
|
||||
sed -i "s#@current_user@#$USER#" $BOTTLE/*.reg
|
||||
reconstruct_bottle_symlink
|
||||
echo $NEW_VERSION > $BOTTLE/VERSION
|
||||
fi
|
||||
|
||||
export WINEPREDLL=$DEB_PATH/files/dlls
|
||||
export ATTACH_FILE_DIALOG=1
|
||||
export WINEDLLPATH=/opt/deepin-wine6-stable/lib
|
||||
WINEPREFIX=$BOTTLE $BOX86 $WINE "$EXE" &""",
|
||||
"info": f'''{{
|
||||
"appid": "{e1_text.text()}",
|
||||
"name": "{e8_text.text()}",
|
||||
"version": "{e2_text.text()}",
|
||||
"arch": ["arm64"],
|
||||
"permissions": {{
|
||||
"autostart": false,
|
||||
"notification": false,
|
||||
"trayicon": true,
|
||||
"clipboard": true,
|
||||
"account": false,
|
||||
"bluetooth": false,
|
||||
"camera": true,
|
||||
"audio_record": true,
|
||||
"installed_apps": false
|
||||
}}
|
||||
}}'''
|
||||
},
|
||||
{
|
||||
# ARM64 exagear wine 打包配置文件
|
||||
"Wine": f"/opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine ",
|
||||
"Architecture": "arm64",
|
||||
"Depends": "zenity, com.deepin-wine6-stable.deepin(>=6.0deepin14), deepin-wine-exagear-images(>=10deepin4), com.deepin-box86.deepin(>=0.2.3deepin9), p7zip-full, fonts-wqy-microhei, fonts-noto-cjk",
|
||||
"postinst": "",
|
||||
"postrm": "",
|
||||
"run.sh": f"""#!/bin/bash
|
||||
DEB_PATH="/opt/apps/{e1_text.text()}"
|
||||
WINE="/opt/deepin-wine6-stable/bin/wine"
|
||||
WINESERVER="/opt/deepin-wine6-stable/bin/wineserver"
|
||||
EMU="/opt/exagear/bin/ubt_x64a64_al"
|
||||
IMAGE_PATH=$HOME/.deepinwine/debian-buster
|
||||
EMU_ARGS="--path-prefix $IMAGE_PATH --utmp-paths-list $IMAGE_PATH/.exagear/utmp-list --vpaths-list $IMAGE_PATH/.exagear/vpaths-list --opaths-list $IMAGE_PATH/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- "
|
||||
EXE="{e7_text.text()}"
|
||||
NEW_VERSION="6.4.1deepin1"
|
||||
BOTTLE="$HOME/.deepinwine/{e5_text.text()}"
|
||||
KUNPENG=`lscpu | grep 'Model name' | grep Kunpeng`
|
||||
IMG_ARCHIVE_DIR=/opt/deepin-wine-exagear-images/debian-buster
|
||||
IMAGE_VER="{e2_text.text()}"
|
||||
LOCALTIME=`readlink -f /etc/localtime`
|
||||
|
||||
export LC_ALL=$LANG
|
||||
export XMODIFIERS=$XMODIFIERS
|
||||
export DESKTOP_SESSION=deepin
|
||||
|
||||
if command -v zenity >/dev/null 2>&1; then
|
||||
progressbar()
|
||||
{{
|
||||
WINDOWID="" zenity --progress --title="$1" --text="$2" --pulsate --width=400 --auto-close --no-cancel ||
|
||||
WINDOWID="" zenity --progress --title="$1" --text="$2" --pulsate --width=400 --auto-close
|
||||
}}
|
||||
|
||||
else
|
||||
progressbar()
|
||||
{{
|
||||
cat -
|
||||
}}
|
||||
fi
|
||||
|
||||
reconstruct_bottle_symlink() {{
|
||||
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Desktop ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Desktop
|
||||
ln -s $HOME/Desktop $BOTTLE/drive_c/users/$USER/Desktop
|
||||
fi
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Documents ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Documents
|
||||
ln -s $HOME/Documents $BOTTLE/drive_c/users/$USER/Documents
|
||||
fi
|
||||
if [ -L $BOTTLE/drive_c/users/$USER/Downloads ]; then
|
||||
rm -f $BOTTLE/drive_c/users/$USER/Downloads
|
||||
ln -s $HOME/Downloads $BOTTLE/drive_c/users/$USER/Downloads
|
||||
fi
|
||||
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Documents" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Documents"
|
||||
ln -s $HOME/Documents "$BOTTLE/drive_c/users/$USER/My Documents"
|
||||
fi
|
||||
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Music" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Music"
|
||||
ln -s $HOME/Music "$BOTTLE/drive_c/users/$USER/My Music"
|
||||
fi
|
||||
if [ -L "$BOTTLE/drive_c/users/$USER/My Videos" ]; then
|
||||
rm -f "$BOTTLE/drive_c/users/$USER/My Videos"
|
||||
ln -s $HOME/Videos "$BOTTLE/drive_c/users/$USER/My Videos"
|
||||
fi
|
||||
}}
|
||||
|
||||
extract_image() {{
|
||||
|
||||
progpid=$(ps -ef | grep "zenity --progress --title=${{BOTTLE}}" | grep -v grep)
|
||||
if [ -n "$progpid" ];then
|
||||
echo "one $BOTTLE app is extracting runtime images too."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
7z x "$IMG_ARCHIVE_DIR/files.7z" -o"$IMAGE_PATH" -aoa | progressbar "$BOTTLE" "正在释放环境..."
|
||||
cp /usr/bin/dde-file-manager $IMAGE_PATH/usr/bin/dde-file-manager
|
||||
rm $IMAGE_PATH/etc/localtime
|
||||
ln -s $LOCALTIME $IMAGE_PATH/etc/localtime
|
||||
if [ -d $IMAGE_PATH/etc/resolvconf ];then
|
||||
rm $IMAGE_PATH/etc/resolvconf
|
||||
fi
|
||||
if [ -d /etc/resolvconf ];then
|
||||
cp /etc/resolvconf $IMAGE_PATH/etc/ -rf
|
||||
fi
|
||||
cp /etc/resolv.conf $IMAGE_PATH/etc/
|
||||
cp /etc/hosts $IMAGE_PATH/etc/
|
||||
echo $IMAGE_VER > $IMAGE_PATH/VERSION
|
||||
}}
|
||||
|
||||
get_link_err_nums() {{
|
||||
|
||||
find $IMAGE_PATH -type l ! -exec test -e {{}} \; -print | wc -l
|
||||
}}
|
||||
|
||||
if [ ! -d "$HOME/.deepinwine" ];then
|
||||
mkdir -p "$HOME/.deepinwine"
|
||||
fi
|
||||
|
||||
if [ -f $BOTTLE/VERSION ];then
|
||||
old_version=`cat $BOTTLE/VERSION`
|
||||
if [ "$old_version" != "$NEW_VERSION" ];then
|
||||
WINEPREFIX=$BOTTLE $EMU $EMU_ARGS $WINESERVER -k
|
||||
rm -rf $BOTTLE
|
||||
fi
|
||||
fi
|
||||
Update_D() {{
|
||||
if [ -L "$BOTTLE/dosdevices/d:" ]; then
|
||||
rm -f "$BOTTLE/dosdevices/d:"
|
||||
ln -s $Downloads "$BOTTLE/dosdevices/d:"
|
||||
fi
|
||||
if [ -L "$BOTTLE/dosdevices/d:" ]; then
|
||||
rm -f "$BOTTLE/dosdevices/d:"
|
||||
ln -s $Downloads "$BOTTLE/dosdevices/d:"
|
||||
fi
|
||||
}}
|
||||
if [ ! -d $BOTTLE ];then
|
||||
|
||||
7z x "$DEB_PATH/files/files.7z" -o"$BOTTLE" -aoa
|
||||
mv "$BOTTLE/drive_c/users/@current_user@" "$BOTTLE/drive_c/users/$USER"
|
||||
sed -i "s#@current_user@#$USER#" $BOTTLE/*.reg
|
||||
reconstruct_bottle_symlink
|
||||
echo $NEW_VERSION > $BOTTLE/VERSION
|
||||
fi
|
||||
|
||||
if [ ! -z "$KUNPENG" ];then
|
||||
if [ ! -e $IMAGE_PATH/VERSION ];then
|
||||
extract_image
|
||||
fi
|
||||
|
||||
OLD_IMAGE_VER=`cat $IMAGE_PATH/VERSION`
|
||||
if [ "$OLD_IMAGE_VER" != "$IMAGE_VER" ];then
|
||||
extract_image
|
||||
fi
|
||||
|
||||
echo "======$(get_link_err_nums)===="
|
||||
if [ "$(get_link_err_nums)" -gt "120" ];then
|
||||
extract_image
|
||||
fi
|
||||
fi
|
||||
|
||||
## mount /data/ dir to geust
|
||||
if [ -d $IMAGE_PATH ] && [ ! -d $IMAGE_PATH/data ];then
|
||||
mkdir $IMAGE_PATH/data
|
||||
cp $DEB_PATH/files/exa/vpaths-list $IMAGE_PATH/.exagear
|
||||
fi
|
||||
|
||||
export WINEPREDLL=$DEB_PATH/files/dlls
|
||||
export ATTACH_FILE_DIALOG=1
|
||||
export WINEDLLPATH=/opt/deepin-wine6-stable/lib
|
||||
WINEPREFIX=$BOTTLE $EMU $EMU_ARGS $WINE $WINE wineboot --init
|
||||
Update_D
|
||||
WINEPREFIX=$BOTTLE $EMU $EMU_ARGS $WINE "$EXE" --disable-gpu &""",
|
||||
"info": f'''{{
|
||||
"appid": "{e1_text.text()}",
|
||||
"name": "{e8_text.text()}",
|
||||
"version": "{e2_text.text()}",
|
||||
"arch": ["arm64"],
|
||||
"permissions": {{
|
||||
"autostart": false,
|
||||
"notification": false,
|
||||
"trayicon": true,
|
||||
"clipboard": true,
|
||||
"account": false,
|
||||
"bluetooth": false,
|
||||
"camera": true,
|
||||
"audio_record": true,
|
||||
"installed_apps": false
|
||||
}}
|
||||
}}'''}
|
||||
]
|
||||
#############
|
||||
# 删除文件
|
||||
#############
|
||||
self.label.emit("正在删除对构建 deb 包有影响的文件……")
|
||||
debPackagePath = f"/tmp/{random.randint(0, 9999)}"
|
||||
self.run_command(f"rm -rfv /tmp/{debPackagePath}")
|
||||
###############
|
||||
# 创建目录
|
||||
###############
|
||||
self.label.emit("正在创建目录……")
|
||||
os.makedirs("{}/DEBIAN".format(debPackagePath))
|
||||
os.makedirs("{}/opt/apps/{}/entries/applications".format(debPackagePath, e1_text.text()))
|
||||
os.makedirs("{}/opt/apps/{}/entries/icons/hicolor/scalable/apps".format(debPackagePath, e1_text.text()))
|
||||
os.makedirs("{}/opt/apps/{}/files".format(debPackagePath, e1_text.text()))
|
||||
###############
|
||||
# 创建文件
|
||||
###############
|
||||
self.label.emit("正在创建文件……")
|
||||
os.mknod("{}/DEBIAN/control".format(debPackagePath))
|
||||
os.mknod("{}/opt/apps/{}/entries/applications/{}.desktop".format(debPackagePath, e1_text.text(), e1_text.text()))
|
||||
os.mknod("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()))
|
||||
os.mknod("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()))
|
||||
###############
|
||||
# 设置容器
|
||||
###############
|
||||
self.label.emit("正在设置 wine 容器")
|
||||
os.chdir(b)
|
||||
self.run_command("sed -i \"s#$USER#@current_user@#\" ./*.reg")
|
||||
os.chdir(f"{b}/drive_c/users")
|
||||
self.run_command(f"mv -v '{os.getlogin()}' @current_user@")
|
||||
os.chdir(programPath)
|
||||
if cleanBottonByUOS.isChecked():
|
||||
self.run_command(f"WINE='{debInformation[debArch.currentIndex()]['Wine']}' '{programPath}/cleanbottle.sh' '{b}'")
|
||||
###############
|
||||
# 压缩容器
|
||||
###############
|
||||
self.label.emit("正在打包 wine 容器")
|
||||
self.run_command("7z a {}/opt/apps/{}/files/files.7z {}/*".format(debPackagePath, e1_text.text(), b))
|
||||
###############
|
||||
# 复制图片
|
||||
###############
|
||||
self.label.emit("正在复制文件……")
|
||||
# arm64 box86 需要复制 dlls-arm 目录
|
||||
if debArch.currentIndex() == 0:
|
||||
if not os.path.exists(f"{programPath}/dlls"):
|
||||
self.run_command(f"7z x \"{programPath}/dlls.7z\" -o\"{programPath}\"")
|
||||
os.remove(f"{programPath}/dlls.7z")
|
||||
self.run_command(f"cp -rv '{programPath}/dlls' {debPackagePath}/opt/apps/{e1_text.text()}/files/")
|
||||
elif debArch.currentIndex() == 1:
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
self.run_command(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\"")
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if not os.path.exists(f"{programPath}/wined3d.dll.so"):
|
||||
self.run_command(f"7z x \"{programPath}/wined3d.dll.so.7z\" -o\"{programPath}\"")
|
||||
os.remove(f"{programPath}/wined3d.dll.so.7z")
|
||||
self.run_command(f"cp -rv '{programPath}/dlls-arm' {debPackagePath}/opt/apps/{e1_text.text()}/files/dlls")
|
||||
self.run_command(f"cp -rv '{programPath}/wined3d.dll.so' {debPackagePath}/opt/apps/{e1_text.text()}/files/")
|
||||
elif debArch.currentIndex() == 2:
|
||||
if not os.path.exists(f"{programPath}/exagear"):
|
||||
self.run_command(f"aria2c -x 16 -s 16 -d \"{programPath}\" -o \"exagear.7z\" https://gitlink.org.cn/api/attachments/392441")
|
||||
self.run_command(f"7z x \"{programPath}/exagear.7z\" -o\"{programPath}\"")
|
||||
os.remove(f"{programPath}/exagear.7z")
|
||||
self.run_command(f"cp -rv '{programPath}/exagear/*' {debPackagePath}/opt/apps/{e1_text.text()}/files/")
|
||||
if e9_text.text() != "":
|
||||
shutil.copy(e9_text.text(), "{}/opt/apps/{}/entries/icons/hicolor/scalable/apps/{}.{}".format(debPackagePath, e1_text.text(), e1_text.text(), imms))
|
||||
################
|
||||
# 获取文件大小
|
||||
################
|
||||
self.label.emit("正在计算文件大小……")
|
||||
size = getFileFolderSize(debPackagePath) / 1024
|
||||
################
|
||||
# 写入文本文档
|
||||
################
|
||||
self.label.emit("正在写入文件……")
|
||||
|
||||
write_txt(f"{debPackagePath}/DEBIAN/control", f'''Package: {e1_text.text()}
|
||||
Version: {e2_text.text()}
|
||||
Architecture: {debInformation[debArch.currentIndex()]["Architecture"]}
|
||||
Maintainer: {e4_text.text()}
|
||||
Depends: {debInformation[debArch.currentIndex()]["Depends"]}
|
||||
Section: non-free/otherosfs
|
||||
Priority: optional
|
||||
Multi-Arch: foreign
|
||||
Description: {e3_text.text()}
|
||||
''')
|
||||
if debInformation[debArch.currentIndex()]["postinst"] != "":
|
||||
write_txt(f"{debPackagePath}/DEBIAN/postinst", debInformation[debArch.currentIndex()]["postinst"])
|
||||
if debInformation[debArch.currentIndex()]["postrm"] != "":
|
||||
write_txt(f"{debPackagePath}/DEBIAN/postrm", debInformation[debArch.currentIndex()]["postrm"])
|
||||
write_txt("{}/opt/apps/{}/entries/applications/{}.desktop".format(debPackagePath, e1_text.text(), e1_text.text()), '#!/usr/bin/env xdg-open\n[Desktop Entry]\nEncoding=UTF-8\nType=Application\nX-Created-By={}\nCategories={};\nIcon={}\nExec="/opt/apps/{}/files/run.sh" {}\nName={}\nComment={}\nMimeType={}\nGenericName={}\nTerminal=false\nStartupNotify=false\n'.format(e4_text.text(), option1_text.currentText(), a, e1_text.text(), e15_text.text(), e8_text.text(), e3_text.text(), e10_text.text(), e1_text.text()))
|
||||
write_txt(f"{debPackagePath}/opt/apps/{e1_text.text()}/files/run.sh", debInformation[debArch.currentIndex()]["run.sh"])
|
||||
write_txt("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()), debInformation[debArch.currentIndex()]["info"])
|
||||
################
|
||||
# 修改文件权限
|
||||
################
|
||||
self.label.emit("正在修改文件权限……")
|
||||
self.run_command("chmod -Rv 644 {}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()))
|
||||
self.run_command("chmod -Rv 644 {}/opt/apps/{}/info".format(debPackagePath, e1_text.text()))
|
||||
self.run_command("chmod -Rv 0755 {}/DEBIAN".format(debPackagePath))
|
||||
self.run_command("chmod -Rv 755 {}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()))
|
||||
self.run_command("chmod -Rv 755 {}/opt/apps/{}/entries/applications/{}.desktop".format(debPackagePath, e1_text.text(), e1_text.text()))
|
||||
################
|
||||
@ -482,6 +813,18 @@ def readtxt(path):
|
||||
def get_home():
|
||||
return os.path.expanduser('~')
|
||||
|
||||
def ChangeArchCombobox():
|
||||
global chooseWineHelperValue
|
||||
option = True
|
||||
if debArch.currentIndex() != 0:
|
||||
option = False
|
||||
chooseWineHelperValue.setEnabled(option)
|
||||
wineVersion.setEnabled(option)
|
||||
|
||||
#chooseWineHelperValue.setEnabled(option)
|
||||
rmBash.setEnabled(option)
|
||||
|
||||
|
||||
###############
|
||||
# 程序信息
|
||||
###############
|
||||
@ -530,7 +873,13 @@ button1 = QtWidgets.QPushButton("浏览……")
|
||||
button2 = QtWidgets.QPushButton("浏览……")
|
||||
button4 = QtWidgets.QPushButton("浏览……")
|
||||
button5 = QtWidgets.QPushButton("打包……")
|
||||
debOption = QtWidgets.QHBoxLayout()
|
||||
rmBash = QtWidgets.QCheckBox("设置卸载该 deb 后自动删除该容器")
|
||||
cleanBottonByUOS = QtWidgets.QCheckBox("使用统信 Wine 生态适配活动容器清理脚本")
|
||||
debOption.addWidget(rmBash)
|
||||
debOption.addWidget(cleanBottonByUOS)
|
||||
debArch = QtWidgets.QComboBox()
|
||||
debArch.addItems(["i386", "arm64(box86)", "arm64(exagear)"])
|
||||
textbox1 = QtWidgets.QTextBrowser()
|
||||
option1_text.addItems(["Network", "Chat", "Audio", "Video", "Graphics", "Office", "Translation", "Development", "Utility"])
|
||||
option1_text.setCurrentText("Network")
|
||||
@ -541,6 +890,7 @@ button2.clicked.connect(button2_cl)
|
||||
button4.clicked.connect(button4_cl)
|
||||
button5.clicked.connect(make_deb)
|
||||
wineFrame.addWidget(wineVersion)
|
||||
debArch.currentIndexChanged.connect(ChangeArchCombobox)
|
||||
wineFrame.addWidget(chooseWineHelperValue)
|
||||
# 创建控件
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("要打包的 deb 包的包名(※必填):"), 0, 0, 1, 1)
|
||||
@ -557,7 +907,8 @@ widgetLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的图标
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的 MimeType 内容(选填):"), 11, 0, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("选择打包的 wine 版本(※必选):"), 12, 0, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("打包 deb 的保存路径(※必填):"), 13, 0, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("自动删除选项(选填):"), 14, 0, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("deb 包选项(选填):"), 14, 0, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel("打包 deb 架构(※必选):"), 15, 0, 1, 1)
|
||||
widgetLayout.addWidget(e1_text, 0, 1, 1, 1)
|
||||
widgetLayout.addWidget(e2_text, 1, 1, 1, 1)
|
||||
widgetLayout.addWidget(e3_text, 2, 1, 1, 1)
|
||||
@ -575,10 +926,11 @@ widgetLayout.addWidget(e10_text, 11, 1, 1, 1)
|
||||
widgetLayout.addLayout(wineFrame, 12, 1, 1, 1)
|
||||
widgetLayout.addWidget(e12_text, 13, 1, 1, 1)
|
||||
widgetLayout.addWidget(button4, 13, 2, 1, 1)
|
||||
widgetLayout.addWidget(rmBash, 14, 1, 1, 1)
|
||||
widgetLayout.addWidget(button5, 15, 1, 1, 1)
|
||||
widgetLayout.addWidget(label13_text, 16, 0, 1, 3)
|
||||
widgetLayout.addWidget(textbox1, 17, 0, 1, 3)
|
||||
widgetLayout.addLayout(debOption, 14, 1, 1, 1)
|
||||
widgetLayout.addWidget(debArch, 15, 1, 1, 1)
|
||||
widgetLayout.addWidget(button5, 16, 1, 1, 1)
|
||||
widgetLayout.addWidget(label13_text, 17, 0, 1, 3)
|
||||
widgetLayout.addWidget(textbox1, 18, 0, 1, 3)
|
||||
menu = window.menuBar()
|
||||
programmenu = menu.addMenu("程序")
|
||||
help = menu.addMenu("帮助")
|
||||
|
52
deepin-wine-runner-create-botton.py
Executable file
52
deepin-wine-runner-create-botton.py
Executable file
@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
import threading
|
||||
import PyQt5.QtGui as QtGui
|
||||
import PyQt5.QtWidgets as QtWidgets
|
||||
|
||||
def Create():
|
||||
# 解压容器
|
||||
# 这里参考了 deepin wine 的 run_v4.sh
|
||||
os.system(f"mkdir -p \"{sys.argv[1]}\"")
|
||||
os.system(f"7z x \"{programPath}/files-exagear.7z\" -o\"{sys.argv[1]}\"")
|
||||
os.system(f"mv \"{sys.argv[1]}/drive_c/users/@current_user@\" \"{sys.argv[1]}/drive_c/users/$USER\"")
|
||||
os.system(f"sed -i \"s#@current_user@#$USER#\" {sys.argv[1]}/*.reg")
|
||||
window.close()
|
||||
|
||||
def Download():
|
||||
os.system(f"aria2c -x 16 -s 16 -d \"{programPath}\" -o files-exagear.7z https://www.gitlink.org.cn/api/attachments/392364")
|
||||
window.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) <= 1 or "--help" in sys.argv:
|
||||
print("帮助:")
|
||||
print("参数为要解压到的路径")
|
||||
print("--help 查看帮助")
|
||||
sys.exit(1)
|
||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||
if os.path.exists(sys.argv[1]):
|
||||
exit()
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
window = QtWidgets.QMainWindow()
|
||||
widget = QtWidgets.QWidget()
|
||||
layout = QtWidgets.QHBoxLayout()
|
||||
label = QtWidgets.QLabel("正在下载容器,请稍后……")
|
||||
layout.addWidget(QtWidgets.QLabel(f"<img src=\"{programPath}/deepin-wine-runner.svg\" width=50>"))
|
||||
layout.addWidget(label)
|
||||
widget.setLayout(layout)
|
||||
window.setCentralWidget(widget)
|
||||
window.setWindowTitle("下载容器")
|
||||
window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg"))
|
||||
# 下载容器
|
||||
if not os.path.exists(f"{programPath}/files-exagear.7z"):
|
||||
window.setWindowTitle("下载容器")
|
||||
label.setText("正在下载容器,请稍后……")
|
||||
window.show()
|
||||
threading.Thread(target=Download).start()
|
||||
app.exec_()
|
||||
window.setWindowTitle(f"解压容器 {sys.argv[1]}")
|
||||
label.setText(f"正在解压容器,请稍后……\n容器路径:{sys.argv[1]}")
|
||||
window.show()
|
||||
threading.Thread(target=Create).start()
|
||||
app.exec_()
|
BIN
dlls-arm.7z
Normal file
BIN
dlls-arm.7z
Normal file
Binary file not shown.
BIN
dlls.7z
Normal file
BIN
dlls.7z
Normal file
Binary file not shown.
Binary file not shown.
BIN
dlls/gdi32.so
BIN
dlls/gdi32.so
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
dlls/user32.so
BIN
dlls/user32.so
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
dxvk.7z
Normal file
BIN
dxvk.7z
Normal file
Binary file not shown.
@ -1,232 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
function wait(){
|
||||
echo Press Enter To Exit
|
||||
read
|
||||
}
|
||||
# default directories
|
||||
dxvk_lib32=${dxvk_lib32:-"x32"}
|
||||
dxvk_lib64=${dxvk_lib64:-"x64"}
|
||||
|
||||
# figure out where we are
|
||||
basedir=$(dirname "$(readlink -f $0)")
|
||||
|
||||
# figure out which action to perform
|
||||
action="$1"
|
||||
|
||||
case "$action" in
|
||||
install)
|
||||
;;
|
||||
uninstall)
|
||||
;;
|
||||
*)
|
||||
echo "Unrecognized action: $action"
|
||||
echo "Usage: $0 [install|uninstall] [--without-dxgi] [--with-d3d10] [--symlink]"
|
||||
wait
|
||||
exit 1
|
||||
esac
|
||||
|
||||
# process arguments
|
||||
shift
|
||||
|
||||
with_dxgi=true
|
||||
with_d3d10=false
|
||||
file_cmd="cp -v"
|
||||
|
||||
while (($# > 0)); do
|
||||
case "$1" in
|
||||
"--without-dxgi")
|
||||
with_dxgi=false
|
||||
;;
|
||||
"--with-d3d10")
|
||||
with_d3d10=true
|
||||
;;
|
||||
"--symlink")
|
||||
file_cmd="ln -s -v"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# check wine prefix before invoking wine, so that we
|
||||
# don't accidentally create one if the user screws up
|
||||
if [ -n "$WINEPREFIX" ] && ! [ -f "$WINEPREFIX/system.reg" ]; then
|
||||
echo "$WINEPREFIX:"' Not a valid wine prefix.' >&2
|
||||
wait
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# find wine executable
|
||||
export WINEDEBUG=-all
|
||||
# disable mscoree and mshtml to avoid downloading
|
||||
# wine gecko and mono
|
||||
export WINEDLLOVERRIDES="mscoree,mshtml="
|
||||
# 专门添加,为了可以使用自定义的 wine
|
||||
wine=$WINE
|
||||
wine64=$WINE64
|
||||
wineboot="$WINE wineboot"
|
||||
if [[ $WINE == "" ]];then
|
||||
wine="wine"
|
||||
fi
|
||||
if [[ $WINE64 == "" ]];then
|
||||
wine64="wine64"
|
||||
fi
|
||||
|
||||
# $PATH is the way for user to control where wine is located (including custom Wine versions).
|
||||
# Pure 64-bit Wine (non Wow64) requries skipping 32-bit steps.
|
||||
# In such case, wine64 and winebooot will be present, but wine binary will be missing,
|
||||
# however it can be present in other PATHs, so it shouldn't be used, to avoid versions mixing.
|
||||
wine_path=$(dirname "$(which $wineboot)")
|
||||
wow64=true
|
||||
if ! [ -f "$wine_path/$wine" ]; then
|
||||
wine=$wine64
|
||||
wow64=false
|
||||
wineboot="$wine64 wineboot"
|
||||
fi
|
||||
|
||||
# resolve 32-bit and 64-bit system32 path
|
||||
winever=$($wine --version | grep wine)
|
||||
if [ -z "$winever" ]; then
|
||||
echo "$wine:"' Not a wine executable. Check your $wine.' >&2
|
||||
wait
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ensure wine placeholder dlls are recreated
|
||||
# if they are missing
|
||||
$wineboot -u
|
||||
|
||||
win64_sys_path=$($wine64 winepath -u 'C:\windows\system32' 2> /dev/null)
|
||||
win64_sys_path="${win64_sys_path/$'\r'/}"
|
||||
if $wow64; then
|
||||
win32_sys_path=$($wine winepath -u 'C:\windows\system32' 2> /dev/null)
|
||||
win32_sys_path="${win32_sys_path/$'\r'/}"
|
||||
fi
|
||||
|
||||
if [ -z "$win32_sys_path" ] && [ -z "$win64_sys_path" ]; then
|
||||
echo 'Failed to resolve C:\windows\system32.' >&2
|
||||
wait
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# create native dll override
|
||||
overrideDll() {
|
||||
$wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v $1 /d native /f >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "Failed to add override for $1"
|
||||
wait
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# remove dll override
|
||||
restoreDll() {
|
||||
$wine reg delete 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v $1 /f > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to remove override for $1"
|
||||
fi
|
||||
}
|
||||
|
||||
# copy or link dxvk dll, back up original file
|
||||
installFile() {
|
||||
dstfile="${1}/${3}.dll"
|
||||
srcfile="${basedir}/${2}/${3}.dll"
|
||||
|
||||
if [ -f "${srcfile}.so" ]; then
|
||||
srcfile="${srcfile}.so"
|
||||
fi
|
||||
|
||||
if ! [ -f "${srcfile}" ]; then
|
||||
echo "${srcfile}: File not found. Skipping." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
if [ -f "${dstfile}" ] || [ -h "${dstfile}" ]; then
|
||||
if ! [ -f "${dstfile}.old" ]; then
|
||||
mv -v "${dstfile}" "${dstfile}.old"
|
||||
else
|
||||
rm -v "${dstfile}"
|
||||
fi
|
||||
$file_cmd "${srcfile}" "${dstfile}"
|
||||
else
|
||||
echo "${dstfile}: File not found in wine prefix" >&2
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
# remove dxvk dll, restore original file
|
||||
uninstallFile() {
|
||||
dstfile="${1}/${3}.dll"
|
||||
srcfile="${basedir}/${2}/${3}.dll"
|
||||
|
||||
if [ -f "${srcfile}.so" ]; then
|
||||
srcfile="${srcfile}.so"
|
||||
fi
|
||||
|
||||
if ! [ -f "${srcfile}" ]; then
|
||||
echo "${srcfile}: File not found. Skipping." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! [ -f "${dstfile}" ] && ! [ -h "${dstfile}" ]; then
|
||||
echo "${dstfile}: File not found. Skipping." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -f "${dstfile}.old" ]; then
|
||||
rm -v "${dstfile}"
|
||||
mv -v "${dstfile}.old" "${dstfile}"
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
install() {
|
||||
installFile "$win64_sys_path" "$dxvk_lib64" "$1"
|
||||
inst64_ret="$?"
|
||||
|
||||
inst32_ret=-1
|
||||
if $wow64; then
|
||||
installFile "$win32_sys_path" "$dxvk_lib32" "$1"
|
||||
inst32_ret="$?"
|
||||
fi
|
||||
|
||||
if (( ($inst32_ret == 0) || ($inst64_ret == 0) )); then
|
||||
overrideDll "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
uninstallFile "$win64_sys_path" "$dxvk_lib64" "$1"
|
||||
uninst64_ret="$?"
|
||||
|
||||
uninst32_ret=-1
|
||||
if $wow64; then
|
||||
uninstallFile "$win32_sys_path" "$dxvk_lib32" "$1"
|
||||
uninst32_ret="$?"
|
||||
fi
|
||||
|
||||
if (( ($uninst32_ret == 0) || ($uninst64_ret == 0) )); then
|
||||
restoreDll "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
# skip dxgi during install if not explicitly
|
||||
# enabled, but always try to uninstall it
|
||||
if $with_dxgi || [ "$action" == "uninstall" ]; then
|
||||
$action dxgi
|
||||
fi
|
||||
|
||||
$action d3d9
|
||||
|
||||
if $with_d3d10 || [ "$action" == "uninstall" ]; then
|
||||
$action d3d10
|
||||
$action d3d10_1
|
||||
fi
|
||||
|
||||
$action d3d10core
|
||||
$action d3d11
|
||||
wait
|
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.
Binary file not shown.
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
{
|
||||
"Version": "1.9.0Alpha3",
|
||||
"Version": "1.9.0",
|
||||
"Thank": [
|
||||
"感谢 @a2035274 @虚幻的早晨 https://bbs.deepin.org/post/238301",
|
||||
"感谢 @zhangs https://bbs.deepin.org/post/227948",
|
||||
@ -12,7 +12,13 @@
|
||||
"感谢 @PossibleVing 提供的新版应用图标",
|
||||
"感谢 @zhengjl 反馈的 1.7.0 中 .net framrwork 3.5 非离线版安装包的问题以及 1.8.0 重复路径一直自动重复增加的问题",
|
||||
"感谢 @国川 @刘岐 提供的非 i386、amd64 运行 wine 使用 i386/amd64 可执行文件的教程和脚本",
|
||||
"感谢 @勇往直前 梦想启航 @189******09 @tfhyl 提供在非 X86 平台的国产 PC 进行测试",
|
||||
"感谢 @cuisirwork 提供的提供视频教程的建议",
|
||||
"感谢 @办公助手 提供的非 X86 平台 Wine 运行自定义 exe 应用教程和 deb 包",
|
||||
"感谢 @季星火 反馈的无法使用该程序删除生成的 .desktop 的问题",
|
||||
"感谢统信在 Wine 生态适配活动中提供的打包脚本",
|
||||
"也感谢 DXVK 的开发者开发了 DXVK 这个程序,项目链接:https://github.com/doitsujin/dxvk",
|
||||
"也感谢 WineHQ 开发团队开发的 WineHQ,项目网址:https://dl.winehq.org/",
|
||||
"",
|
||||
"可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!",
|
||||
"如果上面有遗漏,请向我反馈补充"
|
||||
|
182
mainwindow.py
182
mainwindow.py
@ -10,6 +10,7 @@
|
||||
#################
|
||||
# 引入所需的库
|
||||
#################
|
||||
from fileinput import close
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
@ -85,7 +86,7 @@ run = None
|
||||
def runexebutton(self):
|
||||
global run
|
||||
DisableButton(True)
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)" and o1.currentText() != "基于 exagear 的 deepin-wine6-stable" and o1.currentText() != "基于 box86 的 deepin-wine6-stable":
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine:
|
||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
||||
DisableButton(False)
|
||||
return
|
||||
@ -148,6 +149,14 @@ class Runexebutton_threading(QtCore.QThread):
|
||||
wineUsingOption = ""
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
wineUsingOption = "--disable-gpu"
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable":
|
||||
os.system(f"'{programPath}/deepin-wine-runner-create-botton.py' '{wineBottonPath}'")
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if setting["TerminalOpen"]:
|
||||
res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='" + wineBottonPath + "' " + option + wine[o1.currentText()] + " '" + e2.currentText() + "' " + setting["WineOption"] + "\" --keep-open" + wineUsingOption], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
else:
|
||||
@ -160,7 +169,7 @@ class Runexebutton_threading(QtCore.QThread):
|
||||
except:
|
||||
text = ""
|
||||
self.signal.emit(text)
|
||||
print(text)
|
||||
print(text, end="")
|
||||
if len(findExeHistory) == 0 or findExeHistory[-1] != wineBottonPath:
|
||||
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
||||
write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入
|
||||
@ -208,7 +217,7 @@ def make_desktop_on_launcher():
|
||||
if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容
|
||||
QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名")
|
||||
return
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]):
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine:
|
||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
|
||||
DisableButton(False)
|
||||
return
|
||||
@ -229,6 +238,12 @@ def make_desktop_on_launcher():
|
||||
if not setting["Debug"]:
|
||||
option += "WINEDEBUG=-all "
|
||||
wineUsingOption = ""
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
wineUsingOption = "--disable-gpu"
|
||||
write_txt(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop", f'''[Desktop Entry]
|
||||
@ -254,7 +269,7 @@ def make_desktop_on_desktop():
|
||||
if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容
|
||||
QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名")
|
||||
return
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]):
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine:
|
||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
|
||||
DisableButton(False)
|
||||
return
|
||||
@ -272,6 +287,12 @@ def make_desktop_on_desktop():
|
||||
wineUsingOption = ""
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
wineUsingOption = "--disable-gpu"
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if not os.path.exists(get_desktop_path()):
|
||||
os.makedirs(get_home())
|
||||
os.mknod(get_desktop_path() + "/" + combobox1.currentText() + ".desktop")
|
||||
@ -336,6 +357,9 @@ def InstallWine():
|
||||
def InstallWineOnDeepin23():
|
||||
threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -e \"{programPath}/InstallWineOnDeepin23.py\""]).start()
|
||||
|
||||
def InstallWineHQ():
|
||||
threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -e \"{programPath}/InstallNewWineHQ.sh\""]).start()
|
||||
|
||||
def OpenWineBotton():
|
||||
if e1.currentText() == "":
|
||||
wineBottonPath = setting["DefultBotton"]
|
||||
@ -373,10 +397,18 @@ class RunWineProgramThread(QtCore.QThread):
|
||||
if not setting["Debug"]:
|
||||
option += "WINEDEBUG=-all "
|
||||
wineUsingOption = ""
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable":
|
||||
os.system(f"'{programPath}/deepin-wine-runner-create-botton.py' '{wineBottonPath}'")
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
wineUsingOption = "--disable-gpu"
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if setting["TerminalOpen"]:
|
||||
res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='" + wineBottonPath + "' " + option + wine[o1.currentText()] + " '" + self.wineProgram + "' " + setting["WineOption"] + "\" --keep-open"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='" + wineBottonPath + "' " + option + wine[o1.currentText()] + " '" + self.wineProgram + "' " + setting["WineOption"] + " " + wineUsingOption + "\" --keep-open"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
else:
|
||||
res = subprocess.Popen(["WINEPREFIX='" + wineBottonPath + "' " + option + wine[o1.currentText()] + " '" + self.wineProgram + "' " + setting["WineOption"]], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
# 实时读取程序返回
|
||||
@ -386,7 +418,7 @@ class RunWineProgramThread(QtCore.QThread):
|
||||
except:
|
||||
text = ""
|
||||
self.signal.emit(text)
|
||||
print(text)
|
||||
print(text, end="")
|
||||
if self.history:
|
||||
if len(findExeHistory) == 0 or findExeHistory[-1] != wineBottonPath:
|
||||
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
||||
@ -404,7 +436,7 @@ def RunWineProgram(wineProgram, history = False, Disbled = True):
|
||||
global runProgram
|
||||
DisableButton(True)
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)" and o1.currentText() != "基于 exagear 的 deepin-wine6-stable" and o1.currentText() != "基于 box86 的 deepin-wine6-stable":
|
||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine:
|
||||
DisableButton(False)
|
||||
return
|
||||
returnText.setText("")
|
||||
@ -427,8 +459,17 @@ class RunWinetricksThread(QtCore.QThread):
|
||||
option += f"WINEARCH={setting['Architecture']} "
|
||||
if not setting["Debug"]:
|
||||
option += "WINEDEBUG=-all "
|
||||
wineUsingOption = ""
|
||||
if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
wineUsingOption = "--disable-gpu"
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
if setting["TerminalOpen"]:
|
||||
res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='{wineBottonPath}' {option} WINE=" + subprocess.getoutput(f"which {wine[o1.currentText()]}").replace(" ", "").replace("\n", "") + " winetricks --gui\" --keep-open"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='{wineBottonPath}' {option} WINE=" + subprocess.getoutput(f"which {wine[o1.currentText()]}").replace(" ", "").replace("\n", "") + f" winetricks --gui {wineUsingOption}\" --keep-open"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
else:
|
||||
res = subprocess.Popen([f"WINEPREFIX='{wineBottonPath}' {option} WINE='" + subprocess.getoutput(f"which {wine[o1.currentText()]}").replace(" ", "").replace("\n", "") + "' winetricks --gui"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
# 实时读取程序返回
|
||||
@ -445,21 +486,34 @@ runWinetricks = None
|
||||
def RunWinetricks():
|
||||
global runWinetricks
|
||||
DisableButton(True)
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]):
|
||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)" and o1.currentText() != "基于 exagear 的 deepin-wine6-stable" and o1.currentText() != "基于 box86 的 deepin-wine6-stable":
|
||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine:
|
||||
DisableButton(False)
|
||||
return
|
||||
if o1.currentText() == "基于 box86 的 deepin-wine6-stable":
|
||||
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||
if os.system(f"7z x \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dlls-arm.7z")
|
||||
returnText.setText("")
|
||||
runWinetricks = RunWinetricksThread()
|
||||
runWinetricks.signal.connect(QT.ShowWineReturn)
|
||||
runWinetricks.start()
|
||||
|
||||
|
||||
def CleanWineBottonByUOS():
|
||||
if e1.currentText() == "":
|
||||
wineBottonPath = setting["DefultBotton"]
|
||||
else:
|
||||
wineBottonPath = e1.currentText()
|
||||
os.system(f"'{programPath}/launch.sh' deepin-terminal -C \"WINE='{wine[o1.currentText()]}' '{programPath}/cleanbottle.sh' '{wineBottonPath}'; echo 按回车退出; read; read; exit;\"")
|
||||
|
||||
def FontAppStore():
|
||||
if e1.currentText() == "":
|
||||
wineBottonPath = setting["DefultBotton"]
|
||||
else:
|
||||
wineBottonPath = e1.currentText()
|
||||
os.system(f"'{programPath}/launch.sh' deepin-terminal -e '{programPath}/InstallFont.py' '{wineBottonPath}' {int(setting['RuntimeCache'])}")
|
||||
os.system(f"WINE='{programPath}/launch.sh' deepin-terminal -e '{programPath}/InstallFont.py' '{wineBottonPath}' {int(setting['RuntimeCache'])}")
|
||||
|
||||
def InstallMonoGecko(program):
|
||||
if e1.currentText() == "":
|
||||
@ -490,6 +544,11 @@ def InstallMSXML():
|
||||
os.system(f"'{programPath}/launch.sh' deepin-terminal -e '{programPath}/InstallMsxml.py' '{wineBottonPath}' '{wine[o1.currentText()]}' {int(setting['RuntimeCache'])}")
|
||||
|
||||
def InstallDXVK():
|
||||
if not os.path.exists(f"{programPath}/dxvk"):
|
||||
if os.system(f"7z x \"{programPath}/dxvk.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dxvk.7z")
|
||||
if e1.currentText() == "":
|
||||
wineBottonPath = setting["DefultBotton"]
|
||||
else:
|
||||
@ -500,6 +559,11 @@ def InstallDXVK():
|
||||
f"{programPath}/dxvk/setup_dxvk.sh", "install"])
|
||||
|
||||
def UninstallDXVK():
|
||||
if not os.path.exists(f"{programPath}/dxvk"):
|
||||
if os.system(f"7z x \"{programPath}/dxvk.7z\" -o\"{programPath}\""):
|
||||
QtWidgets.QMessageBox(widget, "错误", "无法解压资源")
|
||||
return
|
||||
os.remove(f"{programPath}/dxvk.7z")
|
||||
if e1.currentText() == "":
|
||||
wineBottonPath = setting["DefultBotton"]
|
||||
else:
|
||||
@ -553,6 +617,16 @@ def SetDeepinFileDialogDefult():
|
||||
def SetDeepinFileDialogRecovery():
|
||||
threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -C 'pkexec \"{programPath}/deepin-wine-venturi-setter.py\" recovery' --keep-open"]).start()
|
||||
|
||||
def DeleteDesktopIcon():
|
||||
if os.path.exists(f"{get_home()}/.local/share/applications/wine"):
|
||||
try:
|
||||
shutil.rmtree(f"{get_home()}/.local/share/applications/wine")
|
||||
except:
|
||||
traceback.print_exc()
|
||||
QtWidgets.QMessageBox.critical(widget, "错误", traceback.format_exc())
|
||||
return
|
||||
QtWidgets.QMessageBox.information(widget, "提示", "删除完成")
|
||||
|
||||
def DeleteWineBotton():
|
||||
if QtWidgets.QMessageBox.question(widget, "提示", "你确定要删除容器吗?删除后将无法恢复!\n如果没有选择 wine 容器,将会自动删除默认的容器!") == QtWidgets.QMessageBox.No:
|
||||
return
|
||||
@ -610,6 +684,9 @@ def UOSPackageScript():
|
||||
def RunVM():
|
||||
threading.Thread(target=os.system, args=[f"bash '{programPath}/RunVM.sh'"]).start()
|
||||
|
||||
def CleanProgram():
|
||||
os.system(f"'{programPath}/launch.sh' deepin-terminal -e \"{programPath}/clean-unuse-program.py\"")
|
||||
|
||||
class UpdateWindow():
|
||||
data = {}
|
||||
update = None
|
||||
@ -978,7 +1055,8 @@ defultProgramList = {
|
||||
"Theme": "",
|
||||
"MonoGeckoInstaller": True,
|
||||
"AutoWine": True,
|
||||
"RuntimeCache": True
|
||||
"RuntimeCache": True,
|
||||
"MustRead": False
|
||||
}
|
||||
if not os.path.exists(get_home() + "/.config/deepin-wine-runner"): # 如果没有配置文件夹
|
||||
os.mkdir(get_home() + "/.config/deepin-wine-runner") # 创建配置文件夹
|
||||
@ -1004,10 +1082,28 @@ if not os.path.exists(get_home() + "/.config/deepin-wine-runner/WineSetting.json
|
||||
###########################
|
||||
# 设置变量
|
||||
###########################
|
||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||
# 如果要添加其他 wine,请在字典添加其名称和执行路径
|
||||
try:
|
||||
wine = {"deepin-wine": "deepin-wine", "deepin-wine5": "deepin-wine5", "wine": "wine", "wine64": "wine64", "deepin-wine5 stable": "deepin-wine5-stable", "deepin-wine6 stable": "deepin-wine6-stable", "spark-wine7-devel": "spark-wine7-devel", "ukylin-wine": "ukylin-wine"}
|
||||
wine = {
|
||||
"基于 box86 的 deepin-wine6-stable": f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 /opt/deepin-wine6-stable/bin/wine ",
|
||||
"基于 exagear 的 deepin-wine6-stable": f"/opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine ",
|
||||
"deepin-wine6 stable": "deepin-wine6-stable",
|
||||
"deepin-wine5 stable": "deepin-wine5-stable",
|
||||
"spark-wine7-devel": "spark-wine7-devel",
|
||||
"deepin-wine": "deepin-wine",
|
||||
"deepin-wine5": "deepin-wine5",
|
||||
"wine": "wine",
|
||||
"wine64": "wine64",
|
||||
"ukylin-wine": "ukylin-wine",
|
||||
"基于 linglong 的 deepin-wine6-stable(不推荐)": f"ll-cli run '' --exec '/bin/deepin-wine6-stable'"
|
||||
}
|
||||
untipsWine = ["基于 box86 的 deepin-wine6-stable", "基于 exagear 的 deepin-wine6-stable", "基于 linglong 的 deepin-wine6-stable(不推荐)"]
|
||||
canUseWine = []
|
||||
if os.path.exists("/opt/deepin-box86/box86"):
|
||||
canUseWine.append("基于 box86 的 deepin-wine6-stable")
|
||||
if os.path.exists("/opt/exagear/bin/ubt_x64a64_al"):
|
||||
canUseWine.append("基于 exagear 的 deepin-wine6-stable")
|
||||
for i in wine.keys():
|
||||
if not os.system(f"which '{wine[i]}'"):
|
||||
canUseWine.append(i)
|
||||
@ -1022,12 +1118,6 @@ try:
|
||||
break
|
||||
except:
|
||||
pass
|
||||
if os.path.exists("/opt/deepin-box86/box86"):
|
||||
wine["基于 box86 的 deepin-wine6-stable"] = f"BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 /opt/deepin-wine6-stable/bin/wine "
|
||||
canUseWine.append("基于 box86 的 deepin-wine6-stable")
|
||||
if os.path.exists("/opt/exagear/bin/ubt_x64a64_al"):
|
||||
wine["基于 exagear 的 deepin-wine6-stable"] = f"/opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine "
|
||||
canUseWine.append("基于 exagear 的 deepin-wine6-stable")
|
||||
shellHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json")).values())
|
||||
findExeHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json")).values())
|
||||
wineBottonHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json")).values())
|
||||
@ -1050,7 +1140,6 @@ except:
|
||||
###########################
|
||||
# 程序信息
|
||||
###########################
|
||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||
iconPath = "{}/deepin-wine-runner.svg".format(programPath)
|
||||
programUrl = "https://gitee.com/gfdgd-xi/deep-wine-runner\nhttps://github.com/gfdgd-xi/deep-wine-runner\nhttps://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner"
|
||||
information = json.loads(readtxt(f"{programPath}/information.json"))
|
||||
@ -1065,26 +1154,32 @@ tips = '''<h4>提示:</h4>
|
||||
exe路径\' 参数 \'
|
||||
即可(单引号需要输入)
|
||||
5、wine 容器如果没有指定,则会默认为 ~/.wine
|
||||
6、在使用 linglong 包的 Wine 应用时,必须安装至少一个 linglong 的使用 Wine 软件包才会出现该选项,
|
||||
6、对于非 X86 的用户来说,请不要使用本程序自带的 Wine 安装程序和 Windows 虚拟机安装功能(检测到为非 X86 架构会自动禁用)
|
||||
7、在使用 linglong 包的 Wine 应用时,必须安装至少一个 linglong 的使用 Wine 软件包才会出现该选项,
|
||||
而程序识别到的 Wine 是按 linglong 的使用 Wine 软件包名的字母排序第一个的 Wine,且生成的容器不在用户目录下,而是在容器的用户目录下(~/.deepinwine、/tmp、桌面、下载、文档等被映射的目录除外),
|
||||
同理需要运行的 EXE 也必须在被映射的目录内
|
||||
7、如果是使用 Deepin 23 的 Wine 安装脚本,请切记——安装过程会临时添加 Deepin 20 的 apt 源,不要中断安装以及
|
||||
8、如果是使用 Deepin 23 的 Wine 安装脚本,请切记——安装过程会临时添加 Deepin 20 的 apt 源,不要中断安装以及
|
||||
<b>千万不要中断后不删除源的情况下 apt upgrade !!!</b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine(会自动执行恢复操作)即可
|
||||
以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示
|
||||
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>'''
|
||||
updateThingsString = '''※1、修复了重复路径一直自动重复增加的问题
|
||||
updateThingsString = '''<b>※1、修复了重复路径一直自动重复增加的问题
|
||||
※2、修复了两个打包器打包错误的问题(非基于生态活动脚本的为 wine 导入错误,基于生态活动脚本的为架构有误导致打包出的 deb 无法打包)
|
||||
※3、适配了部分非 i386、amd64 架构计算机的 UOS 系统使用的 wine
|
||||
※3、适配了部分非 i386、amd64 架构计算机的 UOS 系统使用的 wine 并支持打包非 i386、amd64 架构计算机的 UOS 系统使用的 wine 程序 deb 包
|
||||
※4、支持安装 dxvk(遵守 Zlib 开源协议)
|
||||
5、支持不显示没有安装的 Wine,方便用户识别
|
||||
6、增加字体商店
|
||||
※5、运行器、打包器(包括非基于生态适配活动脚本制作的)支持使用 Wine 生态适配活动的容器清理脚本
|
||||
※6、支持更加简易的安装最新版的 WineHQ</b>
|
||||
7、支持不显示没有安装的 Wine,方便用户识别
|
||||
8、增加字体商店
|
||||
9、修改了 Wine 的顺序使其更加合理
|
||||
10、支持删除安装 exe 后在启动器的快捷方式
|
||||
'''
|
||||
for i in information["Thank"]:
|
||||
thankText += f"{i}\n"
|
||||
updateTime = "2022年08月05日"
|
||||
updateTime = "2022年08月11日"
|
||||
about = f'''<h1>关于</h1>
|
||||
<p>一个能让Linux用户更加方便运行Windows应用的程序,内置了对wine图形话的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等</p>
|
||||
<p>同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具,可以做到只需要用户下载系统镜像并点击安装即可,无需顾及虚拟机安装、创建、虚拟机的分区等等</p>
|
||||
<p>本程序依照 GPLV3 协议开源</p>
|
||||
<pre>
|
||||
|
||||
一个图形化了如下命令的程序(最简单格式)
|
||||
@ -1261,24 +1356,30 @@ menu = window.menuBar()
|
||||
programmenu = menu.addMenu("程序(&P)")
|
||||
p1 = QtWidgets.QAction("安装 wine(&I)")
|
||||
installWineOnDeepin23 = QtWidgets.QAction("安装 wine(只限Deepin23)")
|
||||
installWineHQ = QtWidgets.QAction("安装 WineHQ")
|
||||
p2 = QtWidgets.QAction("设置程序(&S)")
|
||||
p3 = QtWidgets.QAction("清空软件历史记录(&C)")
|
||||
cleanCache = QtWidgets.QAction("清空软件缓存")
|
||||
cleanProgramUnuse = QtWidgets.QAction("删除程序组件")
|
||||
p4 = QtWidgets.QAction("退出程序(&E)")
|
||||
programmenu.addAction(p1)
|
||||
programmenu.addAction(installWineOnDeepin23)
|
||||
programmenu.addAction(installWineHQ)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(p2)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(p3)
|
||||
programmenu.addAction(cleanCache)
|
||||
programmenu.addAction(cleanProgramUnuse)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(p4)
|
||||
p1.triggered.connect(InstallWine)
|
||||
installWineOnDeepin23.triggered.connect(InstallWineOnDeepin23)
|
||||
installWineHQ.triggered.connect(InstallWineHQ)
|
||||
p2.triggered.connect(ProgramSetting.ShowWindow)
|
||||
p3.triggered.connect(CleanProgramHistory)
|
||||
cleanCache.triggered.connect(CleanProgramCache)
|
||||
cleanProgramUnuse.triggered.connect(CleanProgram)
|
||||
p4.triggered.connect(window.close)
|
||||
|
||||
wineOption = menu.addMenu("Wine(&W)")
|
||||
@ -1286,14 +1387,17 @@ w1 = QtWidgets.QAction("打开 Wine 容器目录")
|
||||
w2 = QtWidgets.QAction("安装常见字体")
|
||||
w3 = QtWidgets.QAction("安装自定义字体")
|
||||
w4 = QtWidgets.QAction("删除选择的 Wine 容器")
|
||||
cleanBottonUOS = QtWidgets.QAction("清理 Wine 容器(基于 Wine 适配活动脚本)")
|
||||
w5 = QtWidgets.QAction("打包 wine 应用")
|
||||
w6 = QtWidgets.QAction("使用官方 Wine 适配活动的脚本进行打包")
|
||||
w7 = QtWidgets.QAction("从镜像获取DLL(只支持Windows XP、Windows Server 2003官方安装镜像)")
|
||||
updateGeek = QtWidgets.QAction("从 Geek Uninstaller 官网升级程序")
|
||||
deleteDesktopIcon = QtWidgets.QAction("删除所有 Wine 程序在启动器的快捷方式")
|
||||
wineOption.addAction(w1)
|
||||
wineOption.addAction(w2)
|
||||
wineOption.addAction(w3)
|
||||
wineOption.addAction(w4)
|
||||
wineOption.addAction(cleanBottonUOS)
|
||||
wineOption.addSeparator()
|
||||
wineOption.addAction(w5)
|
||||
wineOption.addAction(w6)
|
||||
@ -1354,10 +1458,13 @@ installDxvk = QtWidgets.QAction("安装 DXVK")
|
||||
uninstallDxvk = QtWidgets.QAction("卸载 DXVK")
|
||||
dxvkMenu.addAction(installDxvk)
|
||||
dxvkMenu.addAction(uninstallDxvk)
|
||||
wineOption.addSeparator()
|
||||
wineOption.addAction(deleteDesktopIcon)
|
||||
w1.triggered.connect(OpenWineBotton)
|
||||
w2.triggered.connect(InstallWineFont)
|
||||
w3.triggered.connect(OpenWineFontPath)
|
||||
w4.triggered.connect(DeleteWineBotton)
|
||||
cleanBottonUOS.triggered.connect(CleanWineBottonByUOS)
|
||||
w5.triggered.connect(BuildExeDeb)
|
||||
w6.triggered.connect(UOSPackageScript)
|
||||
w7.triggered.connect(GetDllFromWindowsISO.ShowWindow)
|
||||
@ -1384,6 +1491,7 @@ wm4_1.triggered.connect(lambda: os.system(f"'{programPath}/launch.sh' deepin-ter
|
||||
wm4_2.triggered.connect(lambda: os.system(f"'{programPath}/launch.sh' deepin-terminal -C 'pkexec apt purge winbind -y' --keep-open"))
|
||||
installDxvk.triggered.connect(InstallDXVK)
|
||||
uninstallDxvk.triggered.connect(UninstallDXVK)
|
||||
deleteDesktopIcon.triggered.connect(DeleteDesktopIcon)
|
||||
|
||||
virtualMachine = menu.addMenu("虚拟机(&V)")
|
||||
v1 = QtWidgets.QAction("使用 Virtualbox 虚拟机运行 Windows 应用")
|
||||
@ -1451,6 +1559,24 @@ if setting["AutoWine"]:
|
||||
o1.addItems(canUseWine)
|
||||
else:
|
||||
o1.addItems(wine.keys())
|
||||
# 禁用被精简掉的控件
|
||||
for i in [
|
||||
[[p1, installWineOnDeepin23, installWineHQ], f"{programPath}/InstallWineOnDeepin23.py"],
|
||||
[[w5], f"{programPath}/deepin-wine-packager.py"],
|
||||
[[w6], f"{programPath}/deepin-wine-packager-with-script.py"],
|
||||
[[p1, v1], f"{programPath}/RunVM.sh"]
|
||||
]:
|
||||
if not os.path.exists(i[1]):
|
||||
for x in i[0]:
|
||||
x.setDisabled(True)
|
||||
# 有些功能是非 X86 不适用的,需要屏蔽
|
||||
if subprocess.getoutput("arch").lower() != "x86_64":
|
||||
p1.setDisabled(True)
|
||||
installWineOnDeepin23.setDisabled(True)
|
||||
virtualMachine.setDisabled(True)
|
||||
v1.setDisabled(True)
|
||||
installWineHQ.setDisabled(True)
|
||||
pass
|
||||
o1.setCurrentText(setting["DefultWine"])
|
||||
e1.setEditText(setting["DefultBotton"])
|
||||
e2.setEditText("")
|
||||
|
Binary file not shown.
@ -1,6 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
WINE_CMD="deepin-wine5"
|
||||
if [ $WINE = "" ]; then
|
||||
WINE_CMD="deepin-wine5"
|
||||
else
|
||||
WINE_CMD=$WINE
|
||||
fi
|
||||
userdir=$USER
|
||||
|
||||
remove_file()
|
||||
@ -364,7 +367,7 @@ if [ -z "$1" ]; then
|
||||
echo "prefix should be given"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
WINEPREFIX=$1
|
||||
BottlePath=$1
|
||||
BottleBase=${BottlePath}/drive_c
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
{
|
||||
"Version": "1.9.0Alpha3"
|
||||
"Version": "1.9.0"
|
||||
}
|
||||
|
@ -115,7 +115,8 @@ def PackageDeb():
|
||||
QT.run.start()
|
||||
|
||||
def RunCommand(command):
|
||||
commandReturn.append(command)
|
||||
if command.replace("\n", "").replace(" ", "") != "":
|
||||
commandReturn.append(command.replace("\n", ""))
|
||||
|
||||
def ShowHelp():
|
||||
QtWidgets.QMessageBox.information(widget, "帮助", f"下面是有关打包器的各个输入框的意义以及有关的 UOS 填写标准\n{tips}")
|
||||
|
38800
system.reg
Normal file
38800
system.reg
Normal file
File diff suppressed because it is too large
Load Diff
871
user.reg
Normal file
871
user.reg
Normal file
@ -0,0 +1,871 @@
|
||||
WINE REGISTRY Version 2
|
||||
;; All keys relative to \\User\\S-1-5-21-0-0-0-1000
|
||||
|
||||
#arch=win32
|
||||
|
||||
[AppEvents\\Schemes\\Apps\\Explorer\\Navigating\\.Current] 1660099897
|
||||
#time=1d8ac641c4eebbe
|
||||
@=""
|
||||
|
||||
[Control Panel\\Accessibility\\AudioDescription] 1660099895
|
||||
#time=1d8ac641ace0644
|
||||
"Locale"=dword:00000000
|
||||
"On"="0"
|
||||
|
||||
[Control Panel\\Accessibility\\Blind Access] 1660099895
|
||||
#time=1d8ac641acdfe9c
|
||||
"On"="0"
|
||||
|
||||
[Control Panel\\Accessibility\\Keyboard Preference] 1660099895
|
||||
#time=1d8ac641acdf398
|
||||
"On"="1"
|
||||
|
||||
[Control Panel\\Accessibility\\ShowSounds] 1660099895
|
||||
#time=1d8ac641ace00a4
|
||||
"On"="0"
|
||||
|
||||
[Control Panel\\Colors] 1660099895
|
||||
#time=1d8ac641adf6196
|
||||
|
||||
[Control Panel\\Desktop] 1660099895
|
||||
#time=1d8ac641ace0428
|
||||
"ActiveWndTrackTimeout"=dword:00000000
|
||||
"BlockSendInputResets"="0"
|
||||
"CaretWidth"=dword:00000001
|
||||
"ClickLockTime"=dword:000004b0
|
||||
"DoubleClickHeight"="4"
|
||||
"DoubleClickWidth"="4"
|
||||
"DragFullWindows"="0"
|
||||
"DragHeight"="4"
|
||||
"DragWidth"="4"
|
||||
"FocusBorderHeight"=dword:00000001
|
||||
"FocusBorderWidth"=dword:00000001
|
||||
"FontSmoothing"="2"
|
||||
"FontSmoothingGamma"=dword:00000000
|
||||
"FontSmoothingOrientation"=dword:00000001
|
||||
"FontSmoothingType"=dword:00000001
|
||||
"ForegroundFlashCount"=dword:00000003
|
||||
"ForegroundLockTimeout"=dword:00000000
|
||||
"IconTitleWrap"="1"
|
||||
"LowPowerActive"="0"
|
||||
"MenuShowDelay"="400"
|
||||
"UserPreferencesMask"=hex:30,00,00,80,12,00,00,00
|
||||
"Wallpaper"=""
|
||||
"WheelScrollChars"="3"
|
||||
"WheelScrollLines"="3"
|
||||
|
||||
[Control Panel\\Desktop\\WindowMetrics] 1660099895
|
||||
#time=1d8ac641ace01c6
|
||||
"BorderWidth"="-15"
|
||||
"CaptionHeight"="-270"
|
||||
"CaptionWidth"="-270"
|
||||
"IconSpacing"="-1125"
|
||||
"IconTitleWrap"="1"
|
||||
"IconVerticalSpacing"="-1125"
|
||||
"MenuHeight"="-270"
|
||||
"MenuWidth"="-270"
|
||||
"PaddedBorderWidth"="0"
|
||||
"ScrollHeight"="-240"
|
||||
"ScrollWidth"="-240"
|
||||
"SmCaptionHeight"="-225"
|
||||
"SmCaptionWidth"="-225"
|
||||
|
||||
[Control Panel\\International] 1660099895
|
||||
#time=1d8ac641ab76f7e
|
||||
"iCalendarType"="1"
|
||||
"iCountry"="86"
|
||||
"iCurrDigits"="2"
|
||||
"iCurrency"="0"
|
||||
"iDate"="2"
|
||||
"iDigits"="2"
|
||||
"iFirstDayOfWeek"="6"
|
||||
"iFirstWeekOfYear"="0"
|
||||
"iLDate"="2"
|
||||
"iLZero"="0"
|
||||
"iMeasure"="0"
|
||||
"iNegCurr"="2"
|
||||
"iNegNumber"="1"
|
||||
"iPaperSize"="9"
|
||||
"iTime"="1"
|
||||
"iTimePrefix"="1"
|
||||
"iTLZero"="0"
|
||||
"Locale"="00000804"
|
||||
"LocaleName"="zh-CN"
|
||||
"Numshape"="1"
|
||||
"s1159"="\x4e0a\x5348"
|
||||
"s2359"="\x4e0b\x5348"
|
||||
"sCountry"="People's Republic of China"
|
||||
"sCurrency"="\xffe5"
|
||||
"sDate"="-"
|
||||
"sDecimal"="."
|
||||
"sGrouping"="3;0"
|
||||
"sLanguage"="CHS"
|
||||
"sList"=","
|
||||
"sLongDate"="yyyy'\x5e74'M'\x6708'd'\x65e5'"
|
||||
"sMonDecimalSep"="."
|
||||
"sMonGrouping"="3;0"
|
||||
"sMonThousandSep"=","
|
||||
"sNativeDigits"="0123456789"
|
||||
"sNegativeSign"="-"
|
||||
"sPositiveSign"=""
|
||||
"sShortDate"="yyyy-M-d"
|
||||
"sThousand"=","
|
||||
"sTime"=":"
|
||||
"sTimeFormat"="H:mm:ss"
|
||||
"sYearMonth"="yyyy'\x5e74'M'\x6708'"
|
||||
|
||||
[Control Panel\\International\\Geo] 1660099895
|
||||
#time=1d8ac641ab75f5c
|
||||
"Nation"="45"
|
||||
|
||||
[Control Panel\\Keyboard] 1660099895
|
||||
#time=1d8ac641acdf44c
|
||||
"KeyboardDelay"="1"
|
||||
"KeyboardSpeed"="31"
|
||||
|
||||
[Control Panel\\Mouse] 1660099895
|
||||
#time=1d8ac641ace0252
|
||||
"ActiveWindowTracking"=dword:00000000
|
||||
"DoubleClickHeight"="4"
|
||||
"DoubleClickSpeed"="500"
|
||||
"DoubleClickWidth"="4"
|
||||
"MouseHoverHeight"="4"
|
||||
"MouseHoverTime"="400"
|
||||
"MouseHoverWidth"="4"
|
||||
"MouseSensitivity"="10"
|
||||
"MouseSpeed"="1"
|
||||
"MouseThreshold1"="6"
|
||||
"MouseThreshold2"="10"
|
||||
"SnapToDefaultButton"="0"
|
||||
"SwapMouseButtons"="0"
|
||||
|
||||
[Control Panel\\Sound] 1660099895
|
||||
#time=1d8ac641acdd89a
|
||||
"Beep"="Yes"
|
||||
|
||||
[Environment] 1660099897
|
||||
#time=1d8ac641bf2343c
|
||||
"TEMP"="C:\\users\\@current_user@\\Temp"
|
||||
"TMP"="C:\\users\\@current_user@\\Temp"
|
||||
|
||||
[Keyboard Layout\\Preload] 1660099895
|
||||
#time=1d8ac641ad8980c
|
||||
"1"="e0010804"
|
||||
|
||||
[Software\\Microsoft\\Internet Explorer\\Main] 1660099897
|
||||
#time=1d8ac641c4a3ec0
|
||||
"Search Page"="https://www.google.com"
|
||||
"Start Page"="https://www.winehq.org"
|
||||
|
||||
[Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl] 1660099897
|
||||
#time=1d8ac641bcbc69e
|
||||
|
||||
[Software\\Microsoft\\Internet Explorer\\Settings] 1660099897
|
||||
#time=1d8ac641c4a4078
|
||||
"Text Color"="0,0,0"
|
||||
|
||||
[Software\\Microsoft\\Protected Storage System Provider] 1660099897
|
||||
#time=1d8ac641c4eec7c
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders] 1660099897
|
||||
#time=1d8ac641bf1734e
|
||||
"Administrative Tools"="C:\\users\\@current_user@\\Start Menu\\Programs\\Administrative Tools"
|
||||
"AppData"="C:\\users\\@current_user@\\Application Data"
|
||||
"Cache"="C:\\users\\@current_user@\\Local Settings\\Temporary Internet Files"
|
||||
"Cookies"="C:\\users\\@current_user@\\Cookies"
|
||||
"Desktop"="C:\\users\\@current_user@\\Desktop"
|
||||
"Favorites"="C:\\users\\@current_user@\\Favorites"
|
||||
"Fonts"="C:\\windows\\Fonts"
|
||||
"History"="C:\\users\\@current_user@\\Local Settings\\History"
|
||||
"Local AppData"="C:\\users\\@current_user@\\Local Settings\\Application Data"
|
||||
"My Music"="C:\\users\\@current_user@\\My Music"
|
||||
"My Pictures"="C:\\users\\@current_user@\\\x6211\x7684\x56fe\x7247"
|
||||
"My Videos"="C:\\users\\@current_user@\\My Videos"
|
||||
"NetHood"="C:\\users\\@current_user@\\NetHood"
|
||||
"Personal"="C:\\users\\@current_user@\\My Documents"
|
||||
"PrintHood"="C:\\users\\@current_user@\\PrintHood"
|
||||
"Programs"="C:\\users\\@current_user@\\Start Menu\\Programs"
|
||||
"Recent"="C:\\users\\@current_user@\\Recent"
|
||||
"SendTo"="C:\\users\\@current_user@\\SendTo"
|
||||
"Start Menu"="C:\\users\\@current_user@\\Start Menu"
|
||||
"StartUp"="C:\\users\\@current_user@\\Start Menu\\Programs\\StartUp"
|
||||
"Templates"="C:\\users\\@current_user@\\Templates"
|
||||
"{374DE290-123F-4565-9164-39C4925E467B}"="C:\\users\\@current_user@\\Downloads"
|
||||
"{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}"="C:\\users\\@current_user@\\Saved Games"
|
||||
"{56784854-C6CB-462B-8169-88E350ACB882}"="C:\\users\\@current_user@\\Contacts"
|
||||
"{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}"="C:\\users\\@current_user@\\Searches"
|
||||
"{A520A1A4-1780-4FF6-BD18-167343C5AF16}"="C:\\users\\@current_user@\\AppData\\LocalLow"
|
||||
"{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}"="C:\\users\\@current_user@\\Links"
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders] 1660099897
|
||||
#time=1d8ac641bf1701a
|
||||
"Administrative Tools"=str(2):"%USERPROFILE%\\Start Menu\\Programs\\Administrative Tools"
|
||||
"AppData"=str(2):"%USERPROFILE%\\Application Data"
|
||||
"Cache"=str(2):"%USERPROFILE%\\Local Settings\\Temporary Internet Files"
|
||||
"Cookies"=str(2):"%USERPROFILE%\\Cookies"
|
||||
"Desktop"=str(2):"%USERPROFILE%\\Desktop"
|
||||
"Favorites"=str(2):"%USERPROFILE%\\Favorites"
|
||||
"Fonts"=str(2):"C:\\windows\\Fonts"
|
||||
"History"=str(2):"%USERPROFILE%\\Local Settings\\History"
|
||||
"Local AppData"=str(2):"%USERPROFILE%\\Local Settings\\Application Data"
|
||||
"My Music"=str(2):"%USERPROFILE%\\My Music"
|
||||
"My Pictures"=str(2):"%USERPROFILE%\\\x6211\x7684\x56fe\x7247"
|
||||
"My Videos"=str(2):"%USERPROFILE%\\My Videos"
|
||||
"NetHood"=str(2):"%USERPROFILE%\\NetHood"
|
||||
"Personal"=str(2):"%USERPROFILE%\\My Documents"
|
||||
"PrintHood"=str(2):"%USERPROFILE%\\PrintHood"
|
||||
"Programs"=str(2):"%USERPROFILE%\\Start Menu\\Programs"
|
||||
"Recent"=str(2):"%USERPROFILE%\\Recent"
|
||||
"SendTo"=str(2):"%USERPROFILE%\\SendTo"
|
||||
"Start Menu"=str(2):"%USERPROFILE%\\Start Menu"
|
||||
"StartUp"=str(2):"%USERPROFILE%\\Start Menu\\Programs\\StartUp"
|
||||
"Templates"=str(2):"%USERPROFILE%\\Templates"
|
||||
"{374DE290-123F-4565-9164-39C4925E467B}"=str(2):"%USERPROFILE%\\Downloads"
|
||||
"{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}"=str(2):"%USERPROFILE%\\Saved Games"
|
||||
"{56784854-C6CB-462B-8169-88E350ACB882}"=str(2):"%USERPROFILE%\\Contacts"
|
||||
"{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}"=str(2):"%USERPROFILE%\\Searches"
|
||||
"{A520A1A4-1780-4FF6-BD18-167343C5AF16}"=str(2):"%USERPROFILE%\\AppData\\LocalLow"
|
||||
"{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}"=str(2):"%USERPROFILE%\\Links"
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings] 1660099897
|
||||
#time=1d8ac641c2cc93a
|
||||
"User Agent"="Mozilla/4.0 (compatible; MSIE 8.0; Win32)"
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap] 1660099897
|
||||
#time=1d8ac641c2cc5f2
|
||||
@=""
|
||||
"IntranetName"=dword:00000001
|
||||
"ProxyByPass"=dword:00000001
|
||||
"UNCAsIntranet"=dword:00000001
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains] 1660099897
|
||||
#time=1d8ac641c2cc35e
|
||||
@=""
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\ProtocolDefaults] 1660099897
|
||||
#time=1d8ac641c2cc098
|
||||
@=""
|
||||
"@ivt"=dword:00000001
|
||||
"file"=dword:00000003
|
||||
"ftp"=dword:00000003
|
||||
"http"=dword:00000003
|
||||
"https"=dword:00000003
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Ranges] 1660099897
|
||||
#time=1d8ac641c2cc660
|
||||
@=""
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones] 1660099897
|
||||
#time=1d8ac641c2f5790
|
||||
@=""
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\0] 1660099897
|
||||
#time=1d8ac641c2d8596
|
||||
@=""
|
||||
"1001"=dword:00000000
|
||||
"1004"=dword:00000000
|
||||
"1200"=dword:00000000
|
||||
"1201"=dword:00000001
|
||||
"1400"=dword:00000000
|
||||
"1402"=dword:00000000
|
||||
"1405"=dword:00000000
|
||||
"1406"=dword:00000000
|
||||
"1407"=dword:00000000
|
||||
"1601"=dword:00000000
|
||||
"1604"=dword:00000000
|
||||
"1605"=dword:00000000
|
||||
"1606"=dword:00000000
|
||||
"1607"=dword:00000000
|
||||
"1608"=dword:00000000
|
||||
"1609"=dword:00000001
|
||||
"1800"=dword:00000000
|
||||
"1802"=dword:00000000
|
||||
"1803"=dword:00000000
|
||||
"1804"=dword:00000000
|
||||
"1805"=dword:00000000
|
||||
"1A00"=dword:00000000
|
||||
"1A02"=dword:00000000
|
||||
"1A03"=dword:00000000
|
||||
"1A04"=dword:00000000
|
||||
"1A05"=dword:00000000
|
||||
"1A06"=dword:00000000
|
||||
"1A10"=dword:00000000
|
||||
"1C00"=dword:00020000
|
||||
"1E05"=dword:00030000
|
||||
"CurrentLevel"=dword:00000000
|
||||
"Description"="Your computer"
|
||||
"DisplayName"="My Computer"
|
||||
"Flags"=dword:00000021
|
||||
"Icon"="explorer.exe#0100"
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\1] 1660099897
|
||||
#time=1d8ac641c2e0f20
|
||||
@=""
|
||||
"1001"=dword:00000001
|
||||
"1004"=dword:00000003
|
||||
"1200"=dword:00000000
|
||||
"1201"=dword:00000003
|
||||
"1400"=dword:00000000
|
||||
"1402"=dword:00000000
|
||||
"1405"=dword:00000000
|
||||
"1406"=dword:00000001
|
||||
"1407"=dword:00000000
|
||||
"1601"=dword:00000000
|
||||
"1604"=dword:00000000
|
||||
"1605"=dword:00000000
|
||||
"1606"=dword:00000000
|
||||
"1607"=dword:00000000
|
||||
"1608"=dword:00000000
|
||||
"1609"=dword:00000001
|
||||
"1800"=dword:00000001
|
||||
"1802"=dword:00000000
|
||||
"1803"=dword:00000000
|
||||
"1804"=dword:00000001
|
||||
"1805"=dword:00000000
|
||||
"1A00"=dword:00020000
|
||||
"1A02"=dword:00000000
|
||||
"1A03"=dword:00000000
|
||||
"1A04"=dword:00000000
|
||||
"1A05"=dword:00000000
|
||||
"1A06"=dword:00000000
|
||||
"1A10"=dword:00000000
|
||||
"1C00"=dword:00020000
|
||||
"1E05"=dword:00020000
|
||||
"CurrentLevel"=dword:00010500
|
||||
"Description"="This zone contains all Web sites that are on your organization's intranet."
|
||||
"DisplayName"="Local intranet"
|
||||
"Flags"=dword:000000db
|
||||
"Icon"="shell32.dll#0018"
|
||||
"MinLevel"=dword:00010000
|
||||
"RecommendedLevel"=dword:00010500
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\2] 1660099897
|
||||
#time=1d8ac641c2eaebc
|
||||
@=""
|
||||
"1001"=dword:00000000
|
||||
"1004"=dword:00000001
|
||||
"1200"=dword:00000000
|
||||
"1201"=dword:00000001
|
||||
"1400"=dword:00000000
|
||||
"1402"=dword:00000000
|
||||
"1405"=dword:00000000
|
||||
"1406"=dword:00000000
|
||||
"1407"=dword:00000000
|
||||
"1601"=dword:00000000
|
||||
"1604"=dword:00000000
|
||||
"1605"=dword:00000000
|
||||
"1606"=dword:00000000
|
||||
"1607"=dword:00000000
|
||||
"1608"=dword:00000000
|
||||
"1609"=dword:00000001
|
||||
"1800"=dword:00000000
|
||||
"1802"=dword:00000000
|
||||
"1803"=dword:00000000
|
||||
"1804"=dword:00000000
|
||||
"1805"=dword:00000000
|
||||
"1A00"=dword:00000000
|
||||
"1A02"=dword:00000000
|
||||
"1A03"=dword:00000000
|
||||
"1A04"=dword:00000000
|
||||
"1A05"=dword:00000000
|
||||
"1A06"=dword:00000000
|
||||
"1A10"=dword:00000000
|
||||
"1C00"=dword:00030000
|
||||
"1E05"=dword:00030000
|
||||
"CurrentLevel"=dword:00010000
|
||||
"Description"="This zone contains Web sites that you trust not to damage your computer or data."
|
||||
"DisplayName"="Trusted sites"
|
||||
"Flags"=dword:00000047
|
||||
"Icon"="inetcpl.cpl#00004480"
|
||||
"MinLevel"=dword:00010000
|
||||
"RecommendedLevel"=dword:00010000
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3] 1660099897
|
||||
#time=1d8ac641c2f54ca
|
||||
@=""
|
||||
"1001"=dword:00000001
|
||||
"1004"=dword:00000003
|
||||
"1200"=dword:00000000
|
||||
"1201"=dword:00000003
|
||||
"1400"=dword:00000000
|
||||
"1402"=dword:00000000
|
||||
"1405"=dword:00000000
|
||||
"1406"=dword:00000003
|
||||
"1407"=dword:00000000
|
||||
"1601"=dword:00000001
|
||||
"1604"=dword:00000000
|
||||
"1605"=dword:00000000
|
||||
"1606"=dword:00000000
|
||||
"1607"=dword:00000000
|
||||
"1608"=dword:00000000
|
||||
"1609"=dword:00000001
|
||||
"1800"=dword:00000001
|
||||
"1802"=dword:00000000
|
||||
"1803"=dword:00000000
|
||||
"1804"=dword:00000001
|
||||
"1805"=dword:00000001
|
||||
"1A00"=dword:00020000
|
||||
"1A02"=dword:00000000
|
||||
"1A03"=dword:00000000
|
||||
"1A04"=dword:00000003
|
||||
"1A05"=dword:00000001
|
||||
"1A06"=dword:00000000
|
||||
"1A10"=dword:00000001
|
||||
"1C00"=dword:00010000
|
||||
"1E05"=dword:00020000
|
||||
"CurrentLevel"=dword:00011000
|
||||
"Description"="This zone contains all Web sites you haven't placed in other zones"
|
||||
"DisplayName"="Internet"
|
||||
"Flags"=dword:00000001
|
||||
"Icon"="inetcpl.cpl#001313"
|
||||
"MinLevel"=dword:00011000
|
||||
"RecommendedLevel"=dword:00011000
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\4] 1660099897
|
||||
#time=1d8ac641c2ff6e6
|
||||
@=""
|
||||
"1001"=dword:00000003
|
||||
"1004"=dword:00000003
|
||||
"1200"=dword:00000003
|
||||
"1201"=dword:00000003
|
||||
"1400"=dword:00000003
|
||||
"1402"=dword:00000003
|
||||
"1405"=dword:00000003
|
||||
"1406"=dword:00000003
|
||||
"1407"=dword:00000003
|
||||
"1601"=dword:00000001
|
||||
"1604"=dword:00000001
|
||||
"1605"=dword:00000000
|
||||
"1606"=dword:00000003
|
||||
"1607"=dword:00000003
|
||||
"1608"=dword:00000003
|
||||
"1609"=dword:00000001
|
||||
"1800"=dword:00000003
|
||||
"1802"=dword:00000001
|
||||
"1803"=dword:00000003
|
||||
"1804"=dword:00000003
|
||||
"1805"=dword:00000001
|
||||
"1A00"=dword:00010000
|
||||
"1A02"=dword:00000003
|
||||
"1A03"=dword:00000003
|
||||
"1A04"=dword:00000003
|
||||
"1A05"=dword:00000003
|
||||
"1A06"=dword:00000003
|
||||
"1A10"=dword:00000003
|
||||
"1C00"=dword:00000000
|
||||
"1E05"=dword:00010000
|
||||
"CurrentLevel"=dword:00012000
|
||||
"Description"="This zone contains Web sites that could potentially damage your computer or data."
|
||||
"DisplayName"="Restricted sites"
|
||||
"Flags"=dword:00000003
|
||||
"Icon"="inetcpl.cpl#00004481"
|
||||
"MinLevel"=dword:00012000
|
||||
"RecommendedLevel"=dword:00012000
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Run] 1660099897
|
||||
#time=1d8ac641c4d9a02
|
||||
|
||||
[Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\ftp\\UserChoice] 1660099897
|
||||
#time=1d8ac641c4f0cb6
|
||||
"ProgId"="ftp"
|
||||
|
||||
[Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice] 1660099897
|
||||
#time=1d8ac641c4f12d8
|
||||
"ProgId"="http"
|
||||
|
||||
[Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\https\\UserChoice] 1660099897
|
||||
#time=1d8ac641c4f188c
|
||||
"ProgId"="https"
|
||||
|
||||
[Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon] 1660099897
|
||||
#time=1d8ac641c4da8ee
|
||||
|
||||
[Software\\Wine\\Debug] 1660099897
|
||||
#time=1d8ac641c4e0a0a
|
||||
"RelayExclude"="ntdll.RtlEnterCriticalSection;ntdll.RtlTryEnterCriticalSection;ntdll.RtlLeaveCriticalSection;kernel32.48;kernel32.49;kernel32.94;kernel32.95;kernel32.96;kernel32.97;kernel32.98;kernel32.TlsGetValue;kernel32.TlsSetValue;kernel32.FlsGetValue;kernel32.FlsSetValue;kernel32.SetLastError"
|
||||
"RelayFromExclude"="winex11.drv;winemac.drv;user32;gdi32;advapi32;kernel32"
|
||||
|
||||
[Software\\Wine\\Fonts] 1660099895
|
||||
#time=1d8ac641acbeeae
|
||||
"Codepages"="936,936"
|
||||
"LogPixels"=dword:00000060
|
||||
|
||||
[Software\\Wine\\Fonts\\External Fonts] 1660099895
|
||||
#time=1d8ac641acdbe32
|
||||
"@Droid Sans Fallback (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\droid\\DroidSansFallbackFull.ttf"
|
||||
"@Noto Sans CJK JP Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"@Noto Sans CJK JP Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"@Noto Sans CJK KR Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"@Noto Sans CJK KR Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"@Noto Sans CJK SC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"@Noto Sans CJK SC Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"@Noto Sans CJK TC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"@Noto Sans CJK TC Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"@Noto Sans Mono CJK JP Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"@Noto Sans Mono CJK JP Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"@Noto Sans Mono CJK KR Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"@Noto Sans Mono CJK KR Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"@Noto Sans Mono CJK SC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"@Noto Sans Mono CJK SC Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"@Noto Sans Mono CJK TC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"@Noto Sans Mono CJK TC Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"@Noto Sans Syriac Eastern (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSyriacEastern-Regular.ttf"
|
||||
"@Noto Sans Syriac Estrangela (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSyriacEstrangela-Regular.ttf"
|
||||
"@Noto Sans Syriac Western (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSyriacWestern-Regular.ttf"
|
||||
"@Noto Serif CJK JP (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Regular.ttc"
|
||||
"@Noto Serif CJK JP Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Bold.ttc"
|
||||
"@Noto Serif CJK KR (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Regular.ttc"
|
||||
"@Noto Serif CJK KR Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Bold.ttc"
|
||||
"@Noto Serif CJK SC (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Regular.ttc"
|
||||
"@Noto Serif CJK SC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Bold.ttc"
|
||||
"@Noto Serif CJK TC (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Regular.ttc"
|
||||
"@Noto Serif CJK TC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Bold.ttc"
|
||||
"@Unifont (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\unifont\\unifont.ttf"
|
||||
"@\x5fae\x8f6f\x96c5\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\msyh.ttf"
|
||||
"@\x5fae\x8f6f\x96c5\x9ed1 Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\msyhbd.ttf"
|
||||
"@\x6587\x6cc9\x9a7f\x5fae\x7c73\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\wqy\\wqy-microhei.ttc"
|
||||
"@\x6587\x6cc9\x9a7f\x6b63\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\wqy\\wqy-zenhei.ttc"
|
||||
"@\x6587\x6cc9\x9a7f\x70b9\x9635\x6b63\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\wqy\\wqy-zenhei.ttc"
|
||||
"@\x6587\x6cc9\x9a7f\x7b49\x5bbd\x5fae\x7c73\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\wqy\\wqy-microhei.ttc"
|
||||
"@\x6587\x6cc9\x9a7f\x7b49\x5bbd\x6b63\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\wqy\\wqy-zenhei.ttc"
|
||||
"Andale Mono (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\AndaleMo.TTF"
|
||||
"Arial (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Arial.TTF"
|
||||
"Arial Black (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\AriBlk.TTF"
|
||||
"Arial Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Arialbd.TTF"
|
||||
"Arial Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Arialbi.TTF"
|
||||
"Arial Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Ariali.TTF"
|
||||
"Bitstream Vera Sans (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ttf-bitstream-vera\\Vera.ttf"
|
||||
"Bitstream Vera Sans Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ttf-bitstream-vera\\VeraBd.ttf"
|
||||
"Bitstream Vera Sans Bold Oblique (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ttf-bitstream-vera\\VeraBI.ttf"
|
||||
"Bitstream Vera Sans Mono (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ttf-bitstream-vera\\VeraMono.ttf"
|
||||
"Bitstream Vera Sans Mono Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ttf-bitstream-vera\\VeraMoBd.ttf"
|
||||
"Bitstream Vera Sans Mono Bold Oblique (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ttf-bitstream-vera\\VeraMoBI.ttf"
|
||||
"Bitstream Vera Sans Mono Oblique (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ttf-bitstream-vera\\VeraMoIt.ttf"
|
||||
"Bitstream Vera Sans Oblique (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ttf-bitstream-vera\\VeraIt.ttf"
|
||||
"Bitstream Vera Serif (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ttf-bitstream-vera\\VeraSe.ttf"
|
||||
"Bitstream Vera Serif Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ttf-bitstream-vera\\VeraSeBd.ttf"
|
||||
"cmex10 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lyx\\cmex10.ttf"
|
||||
"cmmi10 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lyx\\cmmi10.ttf"
|
||||
"cmr10 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lyx\\cmr10.ttf"
|
||||
"cmsy10 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lyx\\cmsy10.ttf"
|
||||
"Comic Sans MS (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Comic.TTF"
|
||||
"Comic Sans MS Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Comicbd.TTF"
|
||||
"Courier New (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\cour.ttf"
|
||||
"Courier New Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\courbd.ttf"
|
||||
"Courier New Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\courbi.ttf"
|
||||
"Courier New Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\couri.ttf"
|
||||
"Deepin OpenSymbol 2 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\deepin\\DeepinOpenSymbol2.ttf"
|
||||
"Deepin OpenSymbol 3 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\deepin\\DeepinOpenSymbol3.ttf"
|
||||
"Deepin OpenSymbol 4 Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\deepin\\DeepinOpenSymbol4.ttf"
|
||||
"Deepin OpenSymbol 5 Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\deepin\\DeepinOpenSymbol5.ttf"
|
||||
"Deepin OpenSymbol 6 Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\deepin\\DeepinOpenSymbol6.ttf"
|
||||
"Deepin OpenSymbol Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\deepin\\DeepinOpenSymbol.ttf"
|
||||
"DejaVu Sans (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\dejavu\\DejaVuSans.ttf"
|
||||
"DejaVu Sans Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\dejavu\\DejaVuSans-Bold.ttf"
|
||||
"DejaVu Sans Mono (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\dejavu\\DejaVuSansMono.ttf"
|
||||
"DejaVu Sans Mono Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\dejavu\\DejaVuSansMono-Bold.ttf"
|
||||
"DejaVu Serif (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\dejavu\\DejaVuSerif.ttf"
|
||||
"DejaVu Serif Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\dejavu\\DejaVuSerif-Bold.ttf"
|
||||
"Droid Sans Fallback (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\droid\\DroidSansFallbackFull.ttf"
|
||||
"esint10 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lyx\\esint10.ttf"
|
||||
"eufm10 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lyx\\eufm10.ttf"
|
||||
"Georgia (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Georgia.TTF"
|
||||
"Georgia Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Georgiab.TTF"
|
||||
"Georgia Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Georgiaz.TTF"
|
||||
"Georgia Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Georgiai.TTF"
|
||||
"Impact (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Impact.TTF"
|
||||
"Liberation Mono (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationMono-Regular.ttf"
|
||||
"Liberation Mono Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationMono-Bold.ttf"
|
||||
"Liberation Mono Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationMono-BoldItalic.ttf"
|
||||
"Liberation Mono Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationMono-Italic.ttf"
|
||||
"Liberation Sans (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSans-Regular.ttf"
|
||||
"Liberation Sans Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSans-Bold.ttf"
|
||||
"Liberation Sans Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSans-BoldItalic.ttf"
|
||||
"Liberation Sans Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSans-Italic.ttf"
|
||||
"Liberation Sans Narrow (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSansNarrow-Regular.ttf"
|
||||
"Liberation Sans Narrow Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSansNarrow-Bold.ttf"
|
||||
"Liberation Sans Narrow Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSansNarrow-BoldItalic.ttf"
|
||||
"Liberation Sans Narrow Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSansNarrow-Italic.ttf"
|
||||
"Liberation Serif (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSerif-Regular.ttf"
|
||||
"Liberation Serif Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSerif-Bold.ttf"
|
||||
"Liberation Serif Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSerif-BoldItalic.ttf"
|
||||
"Liberation Serif Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\liberation\\LiberationSerif-Italic.ttf"
|
||||
"Lohit Devanagari (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lohit-devanagari\\Lohit-Devanagari.ttf"
|
||||
"Marlett (TrueType)"="Z:\\opt\\deepin-wine6-stable\\share\\wine\\fonts\\marlett.ttf"
|
||||
"msam10 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lyx\\msam10.ttf"
|
||||
"msbm10 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lyx\\msbm10.ttf"
|
||||
"Noto Kufi Arabic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoKufiArabic-Regular.ttf"
|
||||
"Noto Kufi Arabic Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoKufiArabic-Bold.ttf"
|
||||
"Noto Mono (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoMono-Regular.ttf"
|
||||
"Noto Music Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoMusic-Regular.ttf"
|
||||
"Noto Naskh Arabic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoNaskhArabic-Regular.ttf"
|
||||
"Noto Naskh Arabic Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoNaskhArabic-Bold.ttf"
|
||||
"Noto Nastaliq Urdu Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoNastaliqUrdu-Bold.ttf"
|
||||
"Noto Nastaliq Urdu Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoNastaliqUrdu-Regular.ttf"
|
||||
"Noto Sans Adlam Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansAdlam-Regular.ttf"
|
||||
"Noto Sans Adlam Unjoined Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansAdlamUnjoined-Regular.ttf"
|
||||
"Noto Sans Anatolian Hieroglyphs Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansAnatolianHieroglyphs-Regular.ttf"
|
||||
"Noto Sans Arabic Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansArabic-Bold.ttf"
|
||||
"Noto Sans Arabic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansArabic-Regular.ttf"
|
||||
"Noto Sans Armenian Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansArmenian-Bold.ttf"
|
||||
"Noto Sans Armenian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansArmenian-Regular.ttf"
|
||||
"Noto Sans Avestan Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansAvestan-Regular.ttf"
|
||||
"Noto Sans Bamum Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansBamum-Regular.ttf"
|
||||
"Noto Sans Bassa Vah Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansBassaVah-Regular.ttf"
|
||||
"Noto Sans Batak Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansBatak-Regular.ttf"
|
||||
"Noto Sans Bengali Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansBengali-Bold.ttf"
|
||||
"Noto Sans Bengali Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansBengali-Regular.ttf"
|
||||
"Noto Sans Bhaiksuki Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansBhaiksuki-Regular.ttf"
|
||||
"Noto Sans Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSans-Bold.ttf"
|
||||
"Noto Sans Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSans-BoldItalic.ttf"
|
||||
"Noto Sans Brahmi Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansBrahmi-Regular.ttf"
|
||||
"Noto Sans Buginese Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansBuginese-Regular.ttf"
|
||||
"Noto Sans Buhid Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansBuhid-Regular.ttf"
|
||||
"Noto Sans Canadian Aboriginal Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansCanadianAboriginal-Bold.ttf"
|
||||
"Noto Sans Canadian Aboriginal Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansCanadianAboriginal-Regular.ttf"
|
||||
"Noto Sans Carian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansCarian-Regular.ttf"
|
||||
"Noto Sans Caucasian Albanian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansCaucasianAlbanian-Regular.ttf"
|
||||
"Noto Sans Chakma Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansChakma-Regular.ttf"
|
||||
"Noto Sans Cham Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansCham-Bold.ttf"
|
||||
"Noto Sans Cham Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansCham-Regular.ttf"
|
||||
"Noto Sans Cherokee Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansCherokee-Bold.ttf"
|
||||
"Noto Sans Cherokee Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansCherokee-Regular.ttf"
|
||||
"Noto Sans CJK JP Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"Noto Sans CJK JP Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"Noto Sans CJK KR Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"Noto Sans CJK KR Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"Noto Sans CJK SC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"Noto Sans CJK SC Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"Noto Sans CJK TC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"Noto Sans CJK TC Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"Noto Sans Coptic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansCoptic-Regular.ttf"
|
||||
"Noto Sans Cuneiform Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansCuneiform-Regular.ttf"
|
||||
"Noto Sans Cypriot Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansCypriot-Regular.ttf"
|
||||
"Noto Sans Deseret Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansDeseret-Regular.ttf"
|
||||
"Noto Sans Devanagari Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansDevanagari-Bold.ttf"
|
||||
"Noto Sans Devanagari Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansDevanagari-Regular.ttf"
|
||||
"Noto Sans Display Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansDisplay-Bold.ttf"
|
||||
"Noto Sans Display Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansDisplay-BoldItalic.ttf"
|
||||
"Noto Sans Display Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansDisplay-Italic.ttf"
|
||||
"Noto Sans Display Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansDisplay-Regular.ttf"
|
||||
"Noto Sans Duployan Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansDuployan-Regular.ttf"
|
||||
"Noto Sans Egyptian Hieroglyphs Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansEgyptianHieroglyphs-Regular.ttf"
|
||||
"Noto Sans Elbasan Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansElbasan-Regular.ttf"
|
||||
"Noto Sans Ethiopic Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansEthiopic-Bold.ttf"
|
||||
"Noto Sans Ethiopic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansEthiopic-Regular.ttf"
|
||||
"Noto Sans Georgian Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansGeorgian-Bold.ttf"
|
||||
"Noto Sans Georgian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansGeorgian-Regular.ttf"
|
||||
"Noto Sans Glagolitic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansGlagolitic-Regular.ttf"
|
||||
"Noto Sans Gothic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansGothic-Regular.ttf"
|
||||
"Noto Sans Grantha Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansGrantha-Regular.ttf"
|
||||
"Noto Sans Gujarati (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansGujarati-Regular.ttf"
|
||||
"Noto Sans Gujarati Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansGujarati-Bold.ttf"
|
||||
"Noto Sans Gurmukhi (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansGurmukhi-Regular.ttf"
|
||||
"Noto Sans Gurmukhi Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansGurmukhi-Bold.ttf"
|
||||
"Noto Sans Hanunoo Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansHanunoo-Regular.ttf"
|
||||
"Noto Sans Hatran Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansHatran-Regular.ttf"
|
||||
"Noto Sans Hebrew Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansHebrew-Bold.ttf"
|
||||
"Noto Sans Hebrew Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansHebrew-Regular.ttf"
|
||||
"Noto Sans Imperial Aramaic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansImperialAramaic-Regular.ttf"
|
||||
"Noto Sans Inscriptional Pahlavi Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansInscriptionalPahlavi-Regular.ttf"
|
||||
"Noto Sans Inscriptional Parthian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansInscriptionalParthian-Regular.ttf"
|
||||
"Noto Sans Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSans-Italic.ttf"
|
||||
"Noto Sans Javanese (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansJavanese-Regular.ttf"
|
||||
"Noto Sans Javanese Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansJavanese-Bold.ttf"
|
||||
"Noto Sans Kaithi Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansKaithi-Regular.ttf"
|
||||
"Noto Sans Kannada Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansKannada-Bold.ttf"
|
||||
"Noto Sans Kannada Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansKannada-Regular.ttf"
|
||||
"Noto Sans Kayah Li Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansKayahLi-Regular.ttf"
|
||||
"Noto Sans Kharoshthi Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansKharoshthi-Regular.ttf"
|
||||
"Noto Sans Khmer Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansKhmer-Bold.ttf"
|
||||
"Noto Sans Khmer Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansKhmer-Regular.ttf"
|
||||
"Noto Sans Khojki Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansKhojki-Regular.ttf"
|
||||
"Noto Sans Khudawadi Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansKhudawadi-Regular.ttf"
|
||||
"Noto Sans Lao Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansLao-Bold.ttf"
|
||||
"Noto Sans Lao Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansLao-Regular.ttf"
|
||||
"Noto Sans Lepcha Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansLepcha-Regular.ttf"
|
||||
"Noto Sans Limbu Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansLimbu-Regular.ttf"
|
||||
"Noto Sans Linear A Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansLinearA-Regular.ttf"
|
||||
"Noto Sans Linear B Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansLinearB-Regular.ttf"
|
||||
"Noto Sans Lisu Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansLisu-Regular.ttf"
|
||||
"Noto Sans Lycian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansLycian-Regular.ttf"
|
||||
"Noto Sans Lydian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansLydian-Regular.ttf"
|
||||
"Noto Sans Mahajani Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMahajani-Regular.ttf"
|
||||
"Noto Sans Malayalam Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMalayalam-Bold.ttf"
|
||||
"Noto Sans Malayalam Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMalayalam-Regular.ttf"
|
||||
"Noto Sans Mandaic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMandaic-Regular.ttf"
|
||||
"Noto Sans Manichaean Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansManichaean-Regular.ttf"
|
||||
"Noto Sans Marchen Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMarchen-Regular.ttf"
|
||||
"Noto Sans Math Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMath-Regular.ttf"
|
||||
"Noto Sans Meetei Mayek Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMeeteiMayek-Regular.ttf"
|
||||
"Noto Sans Mende Kikakui Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMendeKikakui-Regular.ttf"
|
||||
"Noto Sans Meroitic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMeroitic-Regular.ttf"
|
||||
"Noto Sans Miao Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMiao-Regular.ttf"
|
||||
"Noto Sans Modi Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansModi-Regular.ttf"
|
||||
"Noto Sans Mongolian (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMongolian-Regular.ttf"
|
||||
"Noto Sans Mono Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMono-Bold.ttf"
|
||||
"Noto Sans Mono CJK JP Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"Noto Sans Mono CJK JP Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"Noto Sans Mono CJK KR Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"Noto Sans Mono CJK KR Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"Noto Sans Mono CJK SC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"Noto Sans Mono CJK SC Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"Noto Sans Mono CJK TC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Bold.ttc"
|
||||
"Noto Sans Mono CJK TC Regular (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSansCJK-Regular.ttc"
|
||||
"Noto Sans Mono Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMono-Regular.ttf"
|
||||
"Noto Sans Mro Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMro-Regular.ttf"
|
||||
"Noto Sans Multani Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMultani-Regular.ttf"
|
||||
"Noto Sans Myanmar Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMyanmar-Bold.ttf"
|
||||
"Noto Sans Myanmar Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansMyanmar-Regular.ttf"
|
||||
"Noto Sans Nabataean Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansNabataean-Regular.ttf"
|
||||
"Noto Sans New Tai Lue Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansNewTaiLue-Regular.ttf"
|
||||
"Noto Sans Newa Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansNewa-Regular.ttf"
|
||||
"Noto Sans NKo Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansNKo-Regular.ttf"
|
||||
"Noto Sans Ogham Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOgham-Regular.ttf"
|
||||
"Noto Sans Ol Chiki Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOlChiki-Regular.ttf"
|
||||
"Noto Sans Old Hungarian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOldHungarian-Regular.ttf"
|
||||
"Noto Sans Old Italic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOldItalic-Regular.ttf"
|
||||
"Noto Sans Old North Arabian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOldNorthArabian-Regular.ttf"
|
||||
"Noto Sans Old Permic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOldPermic-Regular.ttf"
|
||||
"Noto Sans Old Persian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOldPersian-Regular.ttf"
|
||||
"Noto Sans Old South Arabian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOldSouthArabian-Regular.ttf"
|
||||
"Noto Sans Old Turkic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOldTurkic-Regular.ttf"
|
||||
"Noto Sans Oriya (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOriya-Regular.ttf"
|
||||
"Noto Sans Oriya Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOriya-Bold.ttf"
|
||||
"Noto Sans Osage Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOsage-Regular.ttf"
|
||||
"Noto Sans Osmanya Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansOsmanya-Regular.ttf"
|
||||
"Noto Sans Pahawh Hmong Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansPahawhHmong-Regular.ttf"
|
||||
"Noto Sans Palmyrene Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansPalmyrene-Regular.ttf"
|
||||
"Noto Sans Pau Cin Hau Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansPauCinHau-Regular.ttf"
|
||||
"Noto Sans PhagsPa Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansPhagsPa-Regular.ttf"
|
||||
"Noto Sans Phoenician Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansPhoenician-Regular.ttf"
|
||||
"Noto Sans Psalter Pahlavi Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansPsalterPahlavi-Regular.ttf"
|
||||
"Noto Sans Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSans-Regular.ttf"
|
||||
"Noto Sans Rejang Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansRejang-Regular.ttf"
|
||||
"Noto Sans Runic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansRunic-Regular.ttf"
|
||||
"Noto Sans Samaritan Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSamaritan-Regular.ttf"
|
||||
"Noto Sans Saurashtra Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSaurashtra-Regular.ttf"
|
||||
"Noto Sans Sharada Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSharada-Regular.ttf"
|
||||
"Noto Sans Shavian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansShavian-Regular.ttf"
|
||||
"Noto Sans Sinhala Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSinhala-Bold.ttf"
|
||||
"Noto Sans Sinhala Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSinhala-Regular.ttf"
|
||||
"Noto Sans Sora Sompeng Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSoraSompeng-Regular.ttf"
|
||||
"Noto Sans Sundanese Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSundanese-Regular.ttf"
|
||||
"Noto Sans Syloti Nagri Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSylotiNagri-Regular.ttf"
|
||||
"Noto Sans Symbols Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSymbols-Bold.ttf"
|
||||
"Noto Sans Symbols Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSymbols-Regular.ttf"
|
||||
"Noto Sans Symbols2 Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSymbols2-Regular.ttf"
|
||||
"Noto Sans Syriac Eastern (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSyriacEastern-Regular.ttf"
|
||||
"Noto Sans Syriac Estrangela (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSyriacEstrangela-Regular.ttf"
|
||||
"Noto Sans Syriac Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSyriac-Regular.ttf"
|
||||
"Noto Sans Syriac Western (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansSyriacWestern-Regular.ttf"
|
||||
"Noto Sans Tagalog Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTagalog-Regular.ttf"
|
||||
"Noto Sans Tagbanwa Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTagbanwa-Regular.ttf"
|
||||
"Noto Sans Tai Le Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTaiLe-Regular.ttf"
|
||||
"Noto Sans Tai Tham (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTaiTham-Regular.ttf"
|
||||
"Noto Sans Tai Viet Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTaiViet-Regular.ttf"
|
||||
"Noto Sans Takri Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTakri-Regular.ttf"
|
||||
"Noto Sans Tamil Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTamil-Bold.ttf"
|
||||
"Noto Sans Tamil Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTamil-Regular.ttf"
|
||||
"Noto Sans Telugu (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTelugu-Regular.ttf"
|
||||
"Noto Sans Telugu Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTelugu-Bold.ttf"
|
||||
"Noto Sans Thaana (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansThaana-Regular.ttf"
|
||||
"Noto Sans Thaana Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansThaana-Bold.ttf"
|
||||
"Noto Sans Thai Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansThai-Bold.ttf"
|
||||
"Noto Sans Thai Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansThai-Regular.ttf"
|
||||
"Noto Sans Tibetan (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTibetan-Regular.ttf"
|
||||
"Noto Sans Tibetan Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTibetan-Bold.ttf"
|
||||
"Noto Sans Tifinagh Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTifinagh-Regular.ttf"
|
||||
"Noto Sans Tirhuta Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansTirhuta-Regular.ttf"
|
||||
"Noto Sans Ugaritic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansUgaritic-Regular.ttf"
|
||||
"Noto Sans Vai Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansVai-Regular.ttf"
|
||||
"Noto Sans Warang Citi Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansWarangCiti-Regular.ttf"
|
||||
"Noto Sans Yi Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSansYi-Regular.ttf"
|
||||
"Noto Serif Ahom Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifAhom-Regular.ttf"
|
||||
"Noto Serif Armenian Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifArmenian-Bold.ttf"
|
||||
"Noto Serif Armenian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifArmenian-Regular.ttf"
|
||||
"Noto Serif Balinese Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifBalinese-Regular.ttf"
|
||||
"Noto Serif Bengali (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifBengali-Regular.ttf"
|
||||
"Noto Serif Bengali Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifBengali-Bold.ttf"
|
||||
"Noto Serif Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerif-Bold.ttf"
|
||||
"Noto Serif Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerif-BoldItalic.ttf"
|
||||
"Noto Serif CJK JP (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Regular.ttc"
|
||||
"Noto Serif CJK JP Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Bold.ttc"
|
||||
"Noto Serif CJK KR (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Regular.ttc"
|
||||
"Noto Serif CJK KR Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Bold.ttc"
|
||||
"Noto Serif CJK SC (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Regular.ttc"
|
||||
"Noto Serif CJK SC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Bold.ttc"
|
||||
"Noto Serif CJK TC (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Regular.ttc"
|
||||
"Noto Serif CJK TC Bold (TrueType)"="Z:\\usr\\share\\fonts\\opentype\\noto\\NotoSerifCJK-Bold.ttc"
|
||||
"Noto Serif Devanagari (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifDevanagari-Regular.ttf"
|
||||
"Noto Serif Devanagari Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifDevanagari-Bold.ttf"
|
||||
"Noto Serif Display Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifDisplay-Bold.ttf"
|
||||
"Noto Serif Display Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifDisplay-BoldItalic.ttf"
|
||||
"Noto Serif Display Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifDisplay-Italic.ttf"
|
||||
"Noto Serif Display Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifDisplay-Regular.ttf"
|
||||
"Noto Serif Ethiopic Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifEthiopic-Bold.ttf"
|
||||
"Noto Serif Ethiopic Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifEthiopic-Regular.ttf"
|
||||
"Noto Serif Georgian Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifGeorgian-Bold.ttf"
|
||||
"Noto Serif Georgian Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifGeorgian-Regular.ttf"
|
||||
"Noto Serif Gujarati Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifGujarati-Bold.ttf"
|
||||
"Noto Serif Gujarati Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifGujarati-Regular.ttf"
|
||||
"Noto Serif Gurmukhi Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifGurmukhi-Bold.ttf"
|
||||
"Noto Serif Gurmukhi Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifGurmukhi-Regular.ttf"
|
||||
"Noto Serif Hebrew Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifHebrew-Bold.ttf"
|
||||
"Noto Serif Hebrew Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifHebrew-Regular.ttf"
|
||||
"Noto Serif Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerif-Italic.ttf"
|
||||
"Noto Serif Kannada Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifKannada-Bold.ttf"
|
||||
"Noto Serif Kannada Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifKannada-Regular.ttf"
|
||||
"Noto Serif Khmer Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifKhmer-Bold.ttf"
|
||||
"Noto Serif Khmer Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifKhmer-Regular.ttf"
|
||||
"Noto Serif Lao Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifLao-Bold.ttf"
|
||||
"Noto Serif Lao Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifLao-Regular.ttf"
|
||||
"Noto Serif Malayalam (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifMalayalam-Regular.ttf"
|
||||
"Noto Serif Malayalam Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifMalayalam-Bold.ttf"
|
||||
"Noto Serif Myanmar Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifMyanmar-Bold.ttf"
|
||||
"Noto Serif Myanmar Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifMyanmar-Regular.ttf"
|
||||
"Noto Serif Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerif-Regular.ttf"
|
||||
"Noto Serif Sinhala Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifSinhala-Bold.ttf"
|
||||
"Noto Serif Sinhala Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifSinhala-Regular.ttf"
|
||||
"Noto Serif Tamil Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifTamil-Bold.ttf"
|
||||
"Noto Serif Tamil Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifTamil-Regular.ttf"
|
||||
"Noto Serif Tamil Slanted Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifTamilSlanted-Bold.ttf"
|
||||
"Noto Serif Tamil Slanted Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifTamilSlanted-Regular.ttf"
|
||||
"Noto Serif Telugu (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifTelugu-Regular.ttf"
|
||||
"Noto Serif Telugu Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifTelugu-Bold.ttf"
|
||||
"Noto Serif Thai Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifThai-Bold.ttf"
|
||||
"Noto Serif Thai Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifThai-Regular.ttf"
|
||||
"Noto Serif Tibetan Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifTibetan-Bold.ttf"
|
||||
"Noto Serif Tibetan Regular (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\noto\\NotoSerifTibetan-Regular.ttf"
|
||||
"OpenSymbol (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\libreoffice\\opens___.ttf"
|
||||
"rsfs10 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lyx\\rsfs10.ttf"
|
||||
"stmary10 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lyx\\stmary10.ttf"
|
||||
"Symbol (TrueType)"="Z:\\opt\\deepin-wine6-stable\\share\\wine\\fonts\\symbol.ttf"
|
||||
"Symbola (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ancient-scripts\\Symbola_hint.ttf"
|
||||
"Tahoma (TrueType)"="Z:\\opt\\deepin-wine6-stable\\share\\wine\\fonts\\tahoma.ttf"
|
||||
"Tahoma Bold (TrueType)"="Z:\\opt\\deepin-wine6-stable\\share\\wine\\fonts\\tahomabd.ttf"
|
||||
"Times New Roman (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Times.TTF"
|
||||
"Times New Roman Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Timesbd.TTF"
|
||||
"Times New Roman Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Timesbi.TTF"
|
||||
"Times New Roman Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Timesi.TTF"
|
||||
"Trebuchet MS (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\trebuc.ttf"
|
||||
"Trebuchet MS Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Trebucbd.ttf"
|
||||
"Trebuchet MS Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\trebucbi.ttf"
|
||||
"Trebuchet MS Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\trebucit.ttf"
|
||||
"Unifont (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\unifont\\unifont.ttf"
|
||||
"Unifont CSUR (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\unifont\\unifont_csur.ttf"
|
||||
"Unifont Upper (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\unifont\\unifont_upper.ttf"
|
||||
"Verdana (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Verdana.TTF"
|
||||
"Verdana Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Verdanab.TTF"
|
||||
"Verdana Bold Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Verdanaz.TTF"
|
||||
"Verdana Italic (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\Verdanai.TTF"
|
||||
"wasy10 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\lyx\\wasy10.ttf"
|
||||
"Webdings (TrueType)"="Z:\\opt\\deepin-wine6-stable\\share\\wine\\fonts\\webdings.ttf"
|
||||
"Wingdings (TrueType)"="Z:\\opt\\deepin-wine6-stable\\share\\wine\\fonts\\wingding.ttf"
|
||||
"\x5fae\x8f6f\x96c5\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\msyh.ttf"
|
||||
"\x5fae\x8f6f\x96c5\x9ed1 Bold (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\ms-core-fonts\\msyhbd.ttf"
|
||||
"\x6587\x6cc9\x9a7f\x5fae\x7c73\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\wqy\\wqy-microhei.ttc"
|
||||
"\x6587\x6cc9\x9a7f\x6b63\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\wqy\\wqy-zenhei.ttc"
|
||||
"\x6587\x6cc9\x9a7f\x70b9\x9635\x6b63\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\wqy\\wqy-zenhei.ttc"
|
||||
"\x6587\x6cc9\x9a7f\x7b49\x5bbd\x5fae\x7c73\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\wqy\\wqy-microhei.ttc"
|
||||
"\x6587\x6cc9\x9a7f\x7b49\x5bbd\x6b63\x9ed1 (TrueType)"="Z:\\usr\\share\\fonts\\truetype\\wqy\\wqy-zenhei.ttc"
|
64
userdef.reg
Normal file
64
userdef.reg
Normal file
@ -0,0 +1,64 @@
|
||||
WINE REGISTRY Version 2
|
||||
;; All keys relative to \\User\\.Default
|
||||
|
||||
#arch=win32
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders] 1660099897
|
||||
#time=1d8ac641bf11958
|
||||
"Administrative Tools"="C:\\users\\@current_user@\\Start Menu\\Programs\\Administrative Tools"
|
||||
"AppData"="C:\\users\\@current_user@\\Application Data"
|
||||
"Cache"="C:\\users\\@current_user@\\Local Settings\\Temporary Internet Files"
|
||||
"Cookies"="C:\\users\\@current_user@\\Cookies"
|
||||
"Desktop"="C:\\users\\@current_user@\\Desktop"
|
||||
"Favorites"="C:\\users\\@current_user@\\Favorites"
|
||||
"Fonts"="C:\\windows\\Fonts"
|
||||
"History"="C:\\users\\@current_user@\\Local Settings\\History"
|
||||
"Local AppData"="C:\\users\\@current_user@\\Local Settings\\Application Data"
|
||||
"My Music"="C:\\users\\@current_user@\\My Music"
|
||||
"My Pictures"="C:\\users\\@current_user@\\\x6211\x7684\x56fe\x7247"
|
||||
"My Videos"="C:\\users\\@current_user@\\My Videos"
|
||||
"NetHood"="C:\\users\\@current_user@\\NetHood"
|
||||
"Personal"="C:\\users\\@current_user@\\My Documents"
|
||||
"PrintHood"="C:\\users\\@current_user@\\PrintHood"
|
||||
"Programs"="C:\\users\\@current_user@\\Start Menu\\Programs"
|
||||
"Recent"="C:\\users\\@current_user@\\Recent"
|
||||
"SendTo"="C:\\users\\@current_user@\\SendTo"
|
||||
"Start Menu"="C:\\users\\@current_user@\\Start Menu"
|
||||
"StartUp"="C:\\users\\@current_user@\\Start Menu\\Programs\\StartUp"
|
||||
"Templates"="C:\\users\\@current_user@\\Templates"
|
||||
"{374DE290-123F-4565-9164-39C4925E467B}"="C:\\users\\@current_user@\\Downloads"
|
||||
"{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}"="C:\\users\\@current_user@\\Saved Games"
|
||||
"{56784854-C6CB-462B-8169-88E350ACB882}"="C:\\users\\@current_user@\\Contacts"
|
||||
"{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}"="C:\\users\\@current_user@\\Searches"
|
||||
"{A520A1A4-1780-4FF6-BD18-167343C5AF16}"="C:\\users\\@current_user@\\AppData\\LocalLow"
|
||||
"{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}"="C:\\users\\@current_user@\\Links"
|
||||
|
||||
[Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders] 1660099897
|
||||
#time=1d8ac641bf1107a
|
||||
"Administrative Tools"=str(2):"%USERPROFILE%\\Start Menu\\Programs\\Administrative Tools"
|
||||
"AppData"=str(2):"%USERPROFILE%\\Application Data"
|
||||
"Cache"=str(2):"%USERPROFILE%\\Local Settings\\Temporary Internet Files"
|
||||
"Cookies"=str(2):"%USERPROFILE%\\Cookies"
|
||||
"Desktop"=str(2):"%USERPROFILE%\\Desktop"
|
||||
"Favorites"=str(2):"%USERPROFILE%\\Favorites"
|
||||
"Fonts"=str(2):"C:\\windows\\Fonts"
|
||||
"History"=str(2):"%USERPROFILE%\\Local Settings\\History"
|
||||
"Local AppData"=str(2):"%USERPROFILE%\\Local Settings\\Application Data"
|
||||
"My Music"=str(2):"%USERPROFILE%\\My Music"
|
||||
"My Pictures"=str(2):"%USERPROFILE%\\\x6211\x7684\x56fe\x7247"
|
||||
"My Videos"=str(2):"%USERPROFILE%\\My Videos"
|
||||
"NetHood"=str(2):"%USERPROFILE%\\NetHood"
|
||||
"Personal"=str(2):"%USERPROFILE%\\My Documents"
|
||||
"PrintHood"=str(2):"%USERPROFILE%\\PrintHood"
|
||||
"Programs"=str(2):"%USERPROFILE%\\Start Menu\\Programs"
|
||||
"Recent"=str(2):"%USERPROFILE%\\Recent"
|
||||
"SendTo"=str(2):"%USERPROFILE%\\SendTo"
|
||||
"Start Menu"=str(2):"%USERPROFILE%\\Start Menu"
|
||||
"StartUp"=str(2):"%USERPROFILE%\\Start Menu\\Programs\\StartUp"
|
||||
"Templates"=str(2):"%USERPROFILE%\\Templates"
|
||||
"{374DE290-123F-4565-9164-39C4925E467B}"=str(2):"%USERPROFILE%\\Downloads"
|
||||
"{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}"=str(2):"%USERPROFILE%\\Saved Games"
|
||||
"{56784854-C6CB-462B-8169-88E350ACB882}"=str(2):"%USERPROFILE%\\Contacts"
|
||||
"{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}"=str(2):"%USERPROFILE%\\Searches"
|
||||
"{A520A1A4-1780-4FF6-BD18-167343C5AF16}"=str(2):"%USERPROFILE%\\AppData\\LocalLow"
|
||||
"{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}"=str(2):"%USERPROFILE%\\Links"
|
BIN
wined3d.dll.so.7z
Normal file
BIN
wined3d.dll.so.7z
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user