diff --git a/deb/DEBIAN/control b/deb/DEBIAN/control index bbcfd7a..0a565c2 100755 --- a/deb/DEBIAN/control +++ b/deb/DEBIAN/control @@ -1,5 +1,5 @@ Package: spark-deepin-wine-runner -Version: 2.2.0-Alpha4 +Version: 2.2.0-spark Maintainer: gfdgd xi <3025613752@qq.com>, 为什么您不喜欢熊出没和阿布呢 Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner, https://github.com/gfdgd-xi/deep-wine-runner, https://gitlink.org.cn/gfdgd_xi/deep-wine-runner Architecture: all @@ -9,25 +9,30 @@ Recommends: winbind Section: utils Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52 Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52 -Installed-Size: 25152 +Installed-Size: 26500 Description: gfdgd xi、为什么您不喜欢熊出没和阿布呢 制作的 wine 运行器 - 2.1.0-1 更新内容: - ※1、删除多余图标 - ※2、修复将打包文件生成目录设置为 / 等重要目录导致删库的问题 - 3、修复了打包器浏览按钮闪退、生成的 postrm 有误的问题 - 4、支持在输入信息时自动生成 deb 保存路径 - 2.1.0 更新内容: - ※1、新增新的 Wine 安装器,并支持将安装的 Wine 打包到 Wine 程序 deb 包中 - ※2、Wine 打包器打包 Windows 应用支持将 Wine 打包入 deb 内,可以不依赖 Wine(一般不推荐把 Wine 打包入内,推荐用依赖的形式),并支持设置自定义依赖和生成模板 - ※3、开始初步多语言支持 - ※4、修复了在没有安装任何 Wine 的情况下使用高级功能导致程序闪退的问题 - ※5、支持云端自动获取数据配置 Wine 容器 - ※6、支持手动导入配置文件自动配置 Wine 容器 - ※7、新增从云端下载 Dll 的功能 - ※8、修复了 Dll 提取工具不会在 winecfg 中添加原装的问题 - 9、修改错别字(图形话=>图形化) - 10、修复评分功能名称为空也可以上传评分的问题 - 11、去除 toilet 依赖,使在 Deepin 23 Preview 上运行更佳 - 12、支持删除所有由 Wine 创建的启动器快捷方式 - 更新时间:2022年08月26日 + 2.2.0 更新内容: + ※1、Dll 提取工具支持 NT 6.X 及以上版本的 Dll 提取并优化了提示文本 + ※2、支持卸载后自动删除缓存/配置文件(删除配置文件只限 purge 参数删除) + ※3、DEBUG 模式输出更多信息以方便调试(原本只输出 pid、Err) + ※4、支持安装 msi 文件 + ※5、修复无法正常评分的问题 + ※6、修复 QQ、TIM 安装后无法正常生成快捷方式的问题 + ※7、基于生态适配活动的打包器更换为 spark-wine-helper 以及添加自动删除残留脚本 + ※8、打包器支持从 deb 文件读取信息 + ※9、修复在 UOS 专业版(鲲鹏)无法正常运行的问题以及组件安装功能无法正常执行安装命令的问题 + ※10、修复出现星火应用商店和官方应用商店反复提示更新死循环的问题 + ※11、新增评分分数预测功能(不准) + ※12、更换程序接口 + 13、更新组件安装的离线列表 + 14、不再强制依赖深度终端,只做推荐安装 + 15、基于生态活动适配脚本的打包器在打包完成后会弹出对话框提示打包完成 + 16、优化打包器的 spark wine helper 依赖设置方式 + 17、新增 RegShot(注册表比对工具) + 18、添加 Wine 运行器评分数据的搜索功能 + 以下更新内容旧版本也适用(只限 2.1.0 及以上版本): + ※1、在“安装更多Wine”的Wine安装工具中上新 Wine + ※2、云 Dll 工具上新 Dll + ※3、VCPP、net 运行库安装工具新增运行库 + 更新时间:2022年09月24日 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢 diff --git a/deb/DEBIAN/postinst b/deb/DEBIAN/postinst index 76bb470..fcc623b 100755 --- a/deb/DEBIAN/postinst +++ b/deb/DEBIAN/postinst @@ -1,4 +1,12 @@ #!/bin/sh +# 使用系统默认的 sh 运行 +################################################################################################################# +# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢 +# 版本:2.2.0 +# 更新时间:2022年09月24日 +# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序 +# 基于 sh +################################################################################################################# # 如果为非 X86 PC,可以删除掉一些无用组件(主要是用不了) if [ `arch` != "x86_64" ]; then echo 非X86架构,删除对非X86架构无用的组件 @@ -24,4 +32,4 @@ fi # 设置目录权限,让用户可读可写,方便后续删除组件 chmod 777 -R /opt/apps/deepin-wine-runner # 向服务器返回安装数加1(不显示内容且忽略错误) -curl https://304626p927.goho.co/spark-deepin-wine-runner/Install.php?Version=2.1.0-2 -s > /dev/null | true +curl https://304626p927.goho.co/spark-deepin-wine-runner/Install.php?Version=2.2.0 -s > /dev/null | true diff --git a/deb/DEBIAN/postrm b/deb/DEBIAN/postrm index 23e55d1..8be3ac3 100755 --- a/deb/DEBIAN/postrm +++ b/deb/DEBIAN/postrm @@ -1,4 +1,12 @@ #!/bin/bash +# 使用系统默认的 sh 运行 +################################################################################################################# +# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢 +# 版本:2.2.0 +# 更新时间:2022年09月24日 +# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序 +# 基于 sh +################################################################################################################# # 删除软件残留,简单粗暴一点直接全部删掉,防止出现警告 # 加判断是为了怕 reinstall 后程序就再也打不开了(除非卸载后重新安装) if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then diff --git a/deb/opt/apps/deepin-wine-runner/AppStore.py b/deb/opt/apps/deepin-wine-runner/AppStore.py index 0e0465a..9e8dda8 100755 --- a/deb/opt/apps/deepin-wine-runner/AppStore.py +++ b/deb/opt/apps/deepin-wine-runner/AppStore.py @@ -57,6 +57,7 @@ if __name__ == "__main__": try: apiReturn = json.loads(requests.get(f"https://s.pcmgr.qq.com/tapi/web/searchcgi.php?type=search&callback=searchCallback&keyword={parse.quote(search)}&page=1&pernum=30").text[:-2][15:]) except: + #traceback.print_exc() input("无法连接服务器,按回车键继续") CleanTerminal() continue diff --git a/deb/opt/apps/deepin-wine-runner/Icon/360.svg b/deb/opt/apps/deepin-wine-runner/Icon/360.svg new file mode 100644 index 0000000..17017a6 --- /dev/null +++ b/deb/opt/apps/deepin-wine-runner/Icon/360.svg @@ -0,0 +1,329 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deb/opt/apps/deepin-wine-runner/Icon/cmd.svg b/deb/opt/apps/deepin-wine-runner/Icon/cmd.svg new file mode 100644 index 0000000..3457482 --- /dev/null +++ b/deb/opt/apps/deepin-wine-runner/Icon/cmd.svg @@ -0,0 +1,340 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + C:\>winver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deb/opt/apps/deepin-wine-runner/Icon/compressor.svg b/deb/opt/apps/deepin-wine-runner/Icon/compressor.svg new file mode 100644 index 0000000..e3189ca --- /dev/null +++ b/deb/opt/apps/deepin-wine-runner/Icon/compressor.svg @@ -0,0 +1,1012 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deb/opt/apps/deepin-wine-runner/Icon/internet explorer.svg b/deb/opt/apps/deepin-wine-runner/Icon/internet explorer.svg new file mode 100644 index 0000000..73349f0 --- /dev/null +++ b/deb/opt/apps/deepin-wine-runner/Icon/internet explorer.svg @@ -0,0 +1,326 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + e + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deb/opt/apps/deepin-wine-runner/Icon/wine.svg b/deb/opt/apps/deepin-wine-runner/Icon/wine.svg new file mode 100644 index 0000000..273dc69 --- /dev/null +++ b/deb/opt/apps/deepin-wine-runner/Icon/wine.svg @@ -0,0 +1,723 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/deb/opt/apps/deepin-wine-runner/InstallDll.py b/deb/opt/apps/deepin-wine-runner/InstallDll.py index b66085b..1d07749 100755 --- a/deb/opt/apps/deepin-wine-runner/InstallDll.py +++ b/deb/opt/apps/deepin-wine-runner/InstallDll.py @@ -48,7 +48,7 @@ def Download(wineBotton, dllName, urlPart, wine: str) -> bool: except: pass os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/system32' -o '{dllName}' '{urlPart}'") - os.system(f"WINEPREFIX='{wineBotton}' '{wine}' reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(dllName)[0]} /d native /f") + os.system(f"WINEPREFIX='{wineBotton}' {wine} reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(dllName)[0]} /d native /f") return 0 def exit(): diff --git a/deb/opt/apps/deepin-wine-runner/InstallMono.py b/deb/opt/apps/deepin-wine-runner/InstallMono.py index fd9feb7..f941287 100755 --- a/deb/opt/apps/deepin-wine-runner/InstallMono.py +++ b/deb/opt/apps/deepin-wine-runner/InstallMono.py @@ -65,7 +65,7 @@ except: file = open(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt", "r") version = file.read().replace("\n", "") print("安装版本:", version) - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"") + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"") if exitInputShow: input("安装结束,按回车键退出") exit() @@ -98,7 +98,7 @@ if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.m print("缓存版本:", version.replace("/", "")) print("已经缓存,使用本地版本") file.close() - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"") + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"") if exitInputShow: input("安装结束,按回车键退出") exit() @@ -109,7 +109,7 @@ os.system(f"rm -rf \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install. os.system("mkdir -p /tmp/winegeckomonoinstall") os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}\" -o install.msi \"{programDownloadUrl}\"") print("开始安装") -os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"") +os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"") try: if sys.argv[4] == "1": print("写入缓存") diff --git a/deb/opt/apps/deepin-wine-runner/InstallMsxml.py b/deb/opt/apps/deepin-wine-runner/InstallMsxml.py index 6e17061..040ac4c 100755 --- a/deb/opt/apps/deepin-wine-runner/InstallMsxml.py +++ b/deb/opt/apps/deepin-wine-runner/InstallMsxml.py @@ -25,7 +25,7 @@ except: def Download(wineBotton: str, id: int, wine: str): os.system(f"aria2c -x 16 -s 16 -d \"/tmp/deepin-wine-runner-msxml/\" -o \"{msxmlList[id][2]}\" \"{msxmlList[id][1]}\"") - os.system(f"WINEPREFIX='{wineBotton}' '{wine}' msiexec /i \"/tmp/deepin-wine-runner-msxml/{msxmlList[id][2]}\"") + os.system(f"WINEPREFIX='{wineBotton}' {wine} msiexec /i \"/tmp/deepin-wine-runner-msxml/{msxmlList[id][2]}\"") if __name__ == "__main__": if "--help" in sys.argv: @@ -77,7 +77,7 @@ if __name__ == "__main__": choice = (sys.argv[3] == "1") if os.path.exists(f"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}") and choice: print("已经缓存,使用本地版本") - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"") + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"") input("安装结束,按回车键退出") exit() print("开始下载") @@ -85,5 +85,5 @@ if __name__ == "__main__": os.system(f"mkdir -p \"{homePath}/.config/deepin-wine-runner/MSXML/\"") os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.config/deepin-wine-runner/MSXML\" -o \"{msxmlList[choose][2]}\" \"{msxmlList[choose][1]}\"") print("开始安装") - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"") + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"") input("安装结束,按回车键退出") \ No newline at end of file diff --git a/deb/opt/apps/deepin-wine-runner/InstallNetFramework.py b/deb/opt/apps/deepin-wine-runner/InstallNetFramework.py index e3d6c92..95ce62b 100755 --- a/deb/opt/apps/deepin-wine-runner/InstallNetFramework.py +++ b/deb/opt/apps/deepin-wine-runner/InstallNetFramework.py @@ -48,7 +48,7 @@ except: def Download(wineBotton: str, id: int, wine: str): programName = os.path.split(netList[id][1])[1] os.system(f"aria2c -x 16 -s 16 -d \"/tmp/deepin-wine-runner-net\" -o \"{programName}\" \"{netList[id][1]}\"") - os.system(f"WINEPREFIX='{wineBotton}' '{wine}' '/tmp/deepin-wine-runner-net/{programName}'") + os.system(f"WINEPREFIX='{wineBotton}' {wine} '/tmp/deepin-wine-runner-net/{programName}'") if __name__ == "__main__": if "--help" in sys.argv: @@ -101,12 +101,12 @@ if __name__ == "__main__": programName = os.path.split(netList[choose][1])[1] if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/.netframework/{programName}") and choice: print("已经缓存,使用本地版本") - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'") + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'") input("安装结束,按回车键退出") exit() print("开始下载") os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'") os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/.netframework'") os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.cache/deepin-wine-runner/.netframework\" -o \"{programName}\" \"{netList[choose][1]}\"") - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'") - input("安装结束,按回车键退出") \ No newline at end of file + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'") + input("安装结束,按回车键退出") diff --git a/deb/opt/apps/deepin-wine-runner/InstallOther.py b/deb/opt/apps/deepin-wine-runner/InstallOther.py index cb7af1e..b29ee9c 100755 --- a/deb/opt/apps/deepin-wine-runner/InstallOther.py +++ b/deb/opt/apps/deepin-wine-runner/InstallOther.py @@ -66,11 +66,11 @@ print(f"您选择了{msxmlList[choose][0]}") if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}") and choice: print("已经缓存,使用本地版本") if msxmlList[choose][2] == "msi": - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'") + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'") input("安装结束,按回车键退出") sys.exit() if msxmlList[choose][2] == "exe": - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'") + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'") input("安装结束,按回车键退出") sys.exit() print("开始下载") @@ -79,12 +79,12 @@ os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/other'") if msxmlList[choose][2] == "msi": os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/other' -o '{msxmlList[choose][3]}' \"{msxmlList[choose][1]}\"") print("开始安装") - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'") + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'") print("安装结束") sys.exit() if msxmlList[choose][2] == "exe": os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/other' -o '{msxmlList[choose][3]}' \"{msxmlList[choose][1]}\"") print("开始安装") - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'") + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'") input("安装结束,按回车键退出") sys.exit() \ No newline at end of file diff --git a/deb/opt/apps/deepin-wine-runner/InstallVisualCPlusPlus.py b/deb/opt/apps/deepin-wine-runner/InstallVisualCPlusPlus.py index 640e5e9..de97bc9 100755 --- a/deb/opt/apps/deepin-wine-runner/InstallVisualCPlusPlus.py +++ b/deb/opt/apps/deepin-wine-runner/InstallVisualCPlusPlus.py @@ -38,7 +38,7 @@ def Download(wineBotton: str, id: int, wine: str) -> int: except: pass os.system(f"aria2c -x 16 -s 16 -d '/tmp/deepin-wine-runner-vcpp' -o '{netList[id][2]}' \"{netList[id][1]}\"") - os.system(f"WINEPREFIX='{wineBotton}' '{wine}' '/tmp/deepin-wine-runner-vcpp/{netList[id][2]}'") + os.system(f"WINEPREFIX='{wineBotton}' {wine} '/tmp/deepin-wine-runner-vcpp/{netList[id][2]}'") if __name__ == "__main__": if "--help" in sys.argv: @@ -83,12 +83,12 @@ if __name__ == "__main__": print(f"您选择了 Visual Studio C++ {netList[choose][0]}") if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}"): print("已经缓存,使用本地版本") - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'") + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'") input("安装结束,按回车键退出") exit() print("开始下载") os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'") os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/vcpp'") os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/vcpp' -o '{netList[choose][2]}' \"{netList[choose][1]}\"") - os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'") + os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'") input("安装结束,按回车键退出") \ No newline at end of file diff --git a/deb/opt/apps/deepin-wine-runner/LANG/InstallDll.py b/deb/opt/apps/deepin-wine-runner/LANG/InstallDll.py index b66085b..1d07749 100755 --- a/deb/opt/apps/deepin-wine-runner/LANG/InstallDll.py +++ b/deb/opt/apps/deepin-wine-runner/LANG/InstallDll.py @@ -48,7 +48,7 @@ def Download(wineBotton, dllName, urlPart, wine: str) -> bool: except: pass os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/system32' -o '{dllName}' '{urlPart}'") - os.system(f"WINEPREFIX='{wineBotton}' '{wine}' reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(dllName)[0]} /d native /f") + os.system(f"WINEPREFIX='{wineBotton}' {wine} reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(dllName)[0]} /d native /f") return 0 def exit(): diff --git a/deb/opt/apps/deepin-wine-runner/Model/__pycache__/__init__.cpython-310.pyc b/deb/opt/apps/deepin-wine-runner/Model/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..e66ac70 Binary files /dev/null and b/deb/opt/apps/deepin-wine-runner/Model/__pycache__/__init__.cpython-310.pyc differ diff --git a/deb/opt/apps/deepin-wine-runner/RegShot/182to183.exe b/deb/opt/apps/deepin-wine-runner/RegShot/182to183.exe new file mode 100644 index 0000000..29bb56c Binary files /dev/null and b/deb/opt/apps/deepin-wine-runner/RegShot/182to183.exe differ diff --git a/deb/opt/apps/deepin-wine-runner/RegShot/gpl.txt b/deb/opt/apps/deepin-wine-runner/RegShot/gpl.txt new file mode 100644 index 0000000..48807be --- /dev/null +++ b/deb/opt/apps/deepin-wine-runner/RegShot/gpl.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/deb/opt/apps/deepin-wine-runner/RegShot/language.ini b/deb/opt/apps/deepin-wine-runner/RegShot/language.ini new file mode 100644 index 0000000..ac88f55 --- /dev/null +++ b/deb/opt/apps/deepin-wine-runner/RegShot/language.ini @@ -0,0 +1,1424 @@ +[Current] +Current=English + +[English] +1=Keys: +2=Values: +3=Dirs: +4=Files: +5=Time: +6=Keys added: +7=Keys deleted: +8=Values added: +9=Values deleted: +10=Values modified: +11=Files added: +12=Files deleted: +13=Files [attributes?] modified: +14=Folders added: +15=Folders deleted: +16=Folders attributes changed: +17=Total changes: +18=Comments: +19=Datetime: +20=Computer: +21=Username: +22=About +23=Error +24=Error call External Viewer! +25=Error creating file! +26=Error open file! +27=Error move file pointer! +28=&1st shot +29=&2nd shot +30=C&ompare +31=&Clear +32=&Quit +33=&About +34=&Monitor.. +35=Compare logs save as: +36=Output path: +37=Add comment into the log: +38=Plain &TXT +39=&HTML document +40=&Scan dir1[;dir2;dir3;...;dir nn]: +41=&Shot +42=Shot and Sa&ve... +43=Loa&d... +44=&Clear All +45=Clear &1st shot +46=Clear &2nd shot + +[Espaol] +Translator=[FESTL] Freelance English-Spanish Technical Localizations +1=Claves: +2=Valores: +3=Directorios: +4=Archivos: +5=Tiempo: +6=Claves aadidas: +7=Claves borradas: +8=Valores aadidos: +9=Valores borrados: +10=Valores modificados: +11=Archivos aadidos: +12=Archivos borrados: +13=Atributos de archivo modificados: +14=Carpetas aadidas: +15=Carpetas borradas: +16=Atributos de carpeta modificados: +17=Total de cambios: +18=Comentarios: +19=Fecha y hora: +20=Computador: +21=Usuario: +22=Sobre +23=Error +24=Error al llamar visor externo! +25=Error al crear archivo! +26=Error al abrir archivos! +27=Error al mover puntero de archivo! +28=&1er. Foto +29=&2da. Foto +30=C&omparar +31=&Limpiar +32=S&alir +33=&Sobre +34=&Monitor.. +35=Comparar logs guardados como: +36=Ruta de salida: +37=Aadir comentario al log: +38=&Texto +39=Documento &HTML +40=&Escanear dir1[;dir2;...;dir nn] +41=&Foto +42=Foto + &guardar... +43=&Cargar... +44=&Limpiar +45=Limpiar &1er. Foto +46=Limpiar &2da. Foto + +[Russian] +Translator=Mikhail A.Medvedev +1=: +2=: +3=: +4=: +5=: +6= : +7= : +8= : +9= : +10= : +11= : +12= : +13= []: +14= : +15= : +16= []: +17= : +18=: +19= : +20= : +21= : +22= +23= +24= ! +25= ! +26= ! +27=Error move file pointer! +28=&1 +29=&2 +30=& +31=& +32=& +33= & +34=&... +35= : +36= : +37= : +38=& +39=& HTML +40=& 1[;dir2;...;dir nn]: +41=& +42= + &... +43=&... +44=& +45= &1 +46= &2 + +[Franais] +Translator=Marcel Drappier - Charles Fitoussi +1=Cls : +2=Valeurs : +3=Dirs : +4=Fichiers : +5=Temps : +6=Cls ajoutes : +7=Cls effaces : +8=Valeurs ajoutes : +9=Valeurs effaces : +10=Valeurs modifies : +11=Fichiers ajouts : +12=Fichiers effacs : +13=Fichiers [attributs ?] modifis : +14=Dossiers ajouts : +15=Dossiers effacs : +16=Attributs de dossiers modifis : +17=Nombre de modifications : +18=Commentaires : +19=Dates & Heures : +20=Ordinateur : +21=Utilisateur : +22=A propos de RegShot +23=Erreur +24=Erreur d'appel du programme de visualisation externe ! +25=Erreur en crant le fichier ! +26=Erreur d'ouverture du fichier ! +27=Erreur de dplacement du pointeur de fichier ! +28=&1er clich +29=&2me clich +30=C&omparer +31=Effa&cer +32=&Quitter +33=&A propos... +34=&Moniteur... +35=Sauver les comparaisons comme : +36=Rpertoire de sauvegarde : +37=Commentaire additionnel : +38=Fichier &Txt +39=Document &Html +40=&Scan dir1[;dir2;...;dir n] : +41=&Clich +42=Clich + &Sauvegarde... +43=Char&ger... +44=Effa&cer tout +45=Effacer &1er clich +46=Effacer &2me clich + +[GB] +Translator=!!! +1=: +2=ֵ: +3=Ŀ¼: +4=ļ: +5=ʱ: +6=Ӽ: +7=ɾ: +8=ֵ: +9=ɾֵ: +10=޸ֵ: +11=ļ: +12=ļɾ: +13=ļ޸: +14=Ŀ¼: +15=Ŀ¼ɾ: +16=Ŀ¼޸: +17=ܼ: +18=Ҫע: +19=ʱ: +20=: +21=ʹ: +22= +23= +24=޷ⲿ! +25=޷ļ! +26=޷ļ! +27=޷ƶļָ! +28=ȡ[&1] +29=ȡ[&2] +30=Ƚ[&O] +31=[&C] +32=˳[&Q] +33=[&A] +34=[&M].. +35=Ƚϼ¼Ϊ: +36=·: +37=ڼ¼ļע: +38=&TXT ĵ +39=&HTML ĵ +40=ɨ[&S] dir1[;dir2;...dir nn]: +41=ȡ[&S] +42=ȡ浵[&V]... +43=ᵵ[&D]... +44=ȫ[&C] +45=ȡ1[&1] +46=ȡ2[&2] + +[Big5] +Translator=!!! +1=: +2=: +3=ؿ: +4=: +5=ɶ: +6=W[: +7=R: +8=W[: +9=R: +10=ק: +11=W[: +12=R: +13=ק: +14=ؿW[: +15=ؿR: +16=ؿݩʭק: +17=`p: +18=nI`: +19=ɶ: +20=pW: +21=ϥΪ̦W: +22=_ +23=~ +24=LkեΥ~su! +25=LkЫؤ! +26=Lk}! +27=Lkʤw! +28=[&1] +29=[&2] +30=[&O] +31=M[&C] +32=hX[&Q] +33=_[&A] +34=ʱ[&M].. +35=Ots: +36=X|: +37=bO󤺲K[`: +38=&TXT +39=&HTML +40=y[&S] dir1[;dir2;...dir nn]: +41=[&S] +42=}s[&V]... +43=[&D]... +44=M[&C] +45=M1[&1] +46=M2[&2] + +[Norsk] +Translator=Kenneth Aarseth +1=Nkler: +2=Verdier: +3=Mapper: +4=Filer: +5=Tid: +6=Nkler lagt til: +7=Slettede nkler: +8=Verdier lagt til: +9=Slettede verdier: +10=Forandrede verdier: +11=Fil lagt til: +12=Slettede filer: +13=Filer [engenskaper] forandret: +14=Mapper lagt til: +15=Mapper slettet: +16=Mappe egenskaper forandret: +17=Antall endringer: +18=Kommentarer: +19=Dato tid: +20=Maskin navn: +21=Brukernavn: +22=Om +23=Error +24=Error call External Viewer! +25=Error creating file! +26=Error open file! +27=Error move file pointer! +28=F&ste sk +29=A&ndre sk +30=&Sammenlign +31=&Tilbakestill +32=&Avslutt +33=&Om Regshot +34=Over&vk.. +35=Lagre logg som: +36=Logg fil plassering: +37=Legg til en kommentar: +38=&Ren tekst +39=&Web format +40=S?k mappe1[;mappe2;osv]: +41=&Sk +42=Sk and La&gre... +43=Loa&d... +44=&Tilbakestill +45=Tilbakestill F&ste sk +46=Tilbakestill A&ndre sk + +[Italiano] +Translator=Vittorio +1=Chiave: +2=Valore: +3=Dir: +4=File: +5=Tempo: +6=Chiave aggiunta: +7=Chiave cancellata: +8=Valore aggiunto: +9=Valore cancellato: +10=Valore modificato: +11=File aggiunto: +12=File cancellato: +13=File [attributi?] modificato: +14=Cartella aggiunta: +15=Cartella cancellata: +16=Attributi cambiati nella cartella: +17=Variazioni totali: +18=Commenti: +19=Dataora: +20=Computer: +21=Username: +22=About +23=Error +24=Error call External Viewer! +25=Error creating file! +26=Error open file! +27=Error move file pointer! +28=&1st shot +29=&2nd shot +30=C&onfronta +31=&Pulisci +32=&Esci +33=&Info +34=&Monitor.. +35=Confronta il log salvato come: +36=Directory di destinazione: +37=Aggiungi commenti nel log: +38=File &TXT +39=&Documento HTML +40=&Scan dir1[;dir2;...;dir nn]: +41=&Shot +42=Shot and Sa&lva... +43=Loa&d... +44=&Pulisci +45=Pulisci &1st shot +46=Pulisci &2nd shot + +[Deutsch] +Translator=Gnatix & AVE7 +1=Schlssel: +2=Werte: +3=Ordner: +4=Dateien: +5=Zeit: +6=Schlssel hinzugefgt: +7=Schlssel gelscht: +8=Werte hinzugefgt: +9=Werte gelscht: +10=Werte gendert: +11=Dateien hinzugefgt: +12=Dateien gelscht: +13=Dateiattribute gendert: +14=Ordner hinzugefgt: +15=Ordner gelscht: +16=Ordnerattribute gendert: +17=Gesamte nderungen: +18=Kommentar: +19=Datum und Zeit: +20=Computer: +21=Benutzername: +22=ber +23=Fehler +24=Fehler beim Starten von externem Viewer! +25=Fehler beim Erstellen von Datei! +26=Fehler beim ffnen von Dateien! +27=Fehler beim Verschieben von Dateizeiger! +28=&1. Schu +29=&2. Schu +30=&Vergleichen +31=&Leeren +32=&Beenden +33=be&r +34=ber&wachen.. +35=Speichern Vergleichslogdatei als: +36=Ausgabepfad: +37=Kommentar in Logdatei hinzufgen: +38=&TXT Datei +39=&HTML Datei +40=&Scannen dir1[;dir2;...;dir nn]: +41=&Schu +42=Schu + Spei&chern... +43=La&den... +44=&Leeren +45=Leeren &1. Schu +46=Leeren &2. Schu + +[Trke] +Translator=Murat KASABOGLU +1=Anahtar: +2=Deerler: +3=Klasrler: +4=Dosyalar: +5=Sre: +6=Anahtarlar eklenmi? +7=Anahtarlar silinmi? +8=Deerler eklenmi? +9=Deerler silinmi? +10=Deerler deitirilmi? +11=Dosyalar?eklenmi? +12=Dosyalar?silinmi? +13=Dosyalarn zellikleri deitirilmi? +14=Klasrler eklenmi? +15=Klasrler silinmi? +16=Klasrlerin zellikleri deitirilmi? +17=Tm deiiklikler: +18=Aklamalar: +19=Zaman: +20=Bilgisayar: +21=Kullanc? +22=Hakknda +23=Hata +24=Hata harici gstericinin arlmasnda olutu +25=Hata dosya yaratlamad? +26=Hata dosya alamad? +27=Hata dosya gstergesinin tanmasnda olutu +28=&1. kayt +29=&2. kayt +30=&Karlatrma +31=&Temizle +32=&k +33=&Hakknda +34=T&akip.. +35=Karlatrmay?kaydet: +36=Kayt yeri: +37=Yaplan kayda, aklama ekle: +38=&Dz Metin +39=&HTML dosyas +40=&Klasr tara; kls1[;kls2;kls nn]: +41=&Gzle +42=Gzle &ve Kaydet... +43=&Ykle +44=T&emizle +45=1. G?zlemi temizle +46=2. Gz&lemi temizle + +[Nederlands] +Translator=Paul Lowagie +1=Sleutels: +2=Waarden: +3=Mappen: +4=Bestanden: +5=Tijd: +6=Sleutels toegevoegd: +7=Sleutels verwijderd: +8=Waarden toegevoegd: +9=Waarden verwijderd: +10=Waarden gewijzigd: +11=Bestanden toegevoegd: +12=Bestanden verwijderd: +13=Bestanden (kenmerken?) gewijzigd: +14=Mappen toegevoegd: +15=Mappen verwijderd: +16=Mapkemmerken gewijzigd: +17=Totaal aantal wijzigingen: +18=Commentaar: +19=Datum & tijd: +20=Computer: +21=Gebruikersnaam: +22=Info +23=Fout +24=Fout bij starten externe kijker! +25=Fout bij creren bestand! +26=Fout bij openen regshot.vxd! +27=Fout bij bestandtoewijzing! +28=&1ste opname +29=&2de opname +30=V&ergelijken +31=&Wissen +32=&Afsluiten +33=&Info +34=&Monitor.. +35=Vergelijking opslaan als +36=Uitvoerpad: +37=Commentaar toevoegen in logbestand: +38=Platte &TXT +39=&HTML document +40=&Scan map1[;map2;...;map nn]: +41=&Opnemen +42=Opnemen en bewa&ren... +43=Lade&n... +44=&Alles wissen +45=Wissen &1ste opname +46=Wissen &2de opname + +[esky] +Translator=ondra +1=Kl? +2=Hodnot: +3=Adres? +4=Soubor? +5=as: +6=Kl?pidno: +7=Kl?vymazno: +8=Hodnot pidno: +9=Hodnot vymazno: +10=Hodnot zmnno: +11=Soubor?pidno: +12=Soubor?vymazno: +13=Soubor?[atribut?] zmnno: +14=Sloek pidno: +15=Sloek vymazno: +16=Atribut?sloek zmnno: +17=Celkem zmn: +18=Komente: +19=Datum&as: +20=Pota? +21=Jmno uivatele: +22=O programu +23=Chyba +24=Chyba pi spoutn?externho prohlee! +25=Chyba pi tvorb?souboru! +26=Chyba pi otevrn?souboru! +27=Error move file pointer! +28=&1. zznam +29=&2. zznam +30=P&orovnat +31=&Vymazat +32=&Konec +33=&O programu +34=&Monitor.. +35=Zznam o porovnn?uloit jako: +36=Pracovn?adres: +37=Pidat koment do zznamu: +38=&TXT +39=&HTML +40=Sl&oky: adr1[;...;adr nn]: +41=&Vytvoit +42=Vytvoit a ul&oit... +43=N&ast... +44=Vym&azat ve +45=Vymazat &1. zznam +46=Vymazat &2. zznam + +[Catal] +Translator=Pau Bosch i Crespo PauBCrespo@hotmail.com. Visiteu: www.all4you.dk si voleu ms programes gratuts en catal. +1=Claus: +2=Valors: +3=Directoris: +4=Arxius: +5=Temps: +6=Claus afegides: +7=Claus esborrades: +8=Valors afegits: +9=Valors esborrats: +10=Valors modificats: +11=Arxius afegits: +12=Arxius esborrats: +13=Atributs modificats d'arxiu: +14=Carpetes afegides: +15=Carpetes esborrades: +16=Atributs modificats de carpeta: +17=Total de canvis: +18=Comentaris: +19=Data i hora: +20=Ordinador: +21=Usuari: +22=Sobre +23=Error +24=Error en connectar amb el visualitzador extern! +25=Error en crear arxiu! +26=Error en obrir arxius! +27=Error en moure cursor d'arxiu! +28=&1r. Tret +29=&2n. Tret +30=C&ompara +31=&Neteja +32=S&urt +33=&Sobre +34=&Monitor.. +35=Compara registres desats com a: +36=Ruta de sortida: +37=Afegeix comentari al registre: +38=&Text +39=Document &HTML +40=&Escaneja dir1[;dir2;...;dir nn] +41=&Dispara +42=Dispara i &desa... +43=&Carrega... +44=&Neteja +45=Neteja &1r Tret +46=Neteja &2n Tret + +[] +Translator=Michael Papadakis +1=: +2=: +3=: +4=: +5=: +6= : +7= : +8= : +9= : +10= : +11= : +12= : +13= () : +14= : +15= : +16= () : +17= : +18=: +19=/: +20=: +21=: +22= +23= +24= Viewer! +25= ! +26= ! +27= ! +28=&1 +29=&2 +30=& +31=& +32=& +33=& +34=&.. +35= : +36= : +37= : +38= &TXT +39= &HTML +40= &1(;2;...): +41=& +42= &... +43=&... +44=& +45= &1 +46= &2 + +[Dansk] +Translator=Per Bryldt +1=Ngler: +2=Vrdier: +3=Mapper: +4=Filer: +5=Tid: +6=Ngler lagt til: +7=Slettede ngler: +8=Vrdier lagt til: +9=Slettede vrdier: +10=Forandrede vrdier: +11=Fil lagt til: +12=Slettede filer: +13=Filer [egenskaber] forandret: +14=Mapper lagt til: +15=Mapper slettet: +16=Mappe egenskaber forandret: +17=Antal ndringer: +18=Kommentarer: +19=Dato tid: +20=Computer navn: +21=Brugernavn: +22=Om +23=Fejl +24=Fejl bner External Viewer! +25=Fejl oprettelse af fil! +26=Fejl ben fil! +27=Fejl flyt fil pointer! +28=F&ste sgning +29=A&nden sgning +30=&Sammenlign +31=&Fortryd +32=&Afslut +33=&Om Regshot +34=Over&vg.. +35=Gemmer log som: +36=Log fil placering: +37=Tilfj en kommentar: +38=&Ren tekst +39=&Html format +40=Sg mappe1[;mappe2;osv]: +41=&Sg +42=Sg og G&em... +43=He&nt... +44=&Fortryd +45=Fortryd F&ste sgning +46=Fortryd A&nden sgning + +[Latvieu] +Translator=Armands Radzuka +1=Atslgas: +2=Vrtbas: +3=Mapes: +4=Faili: +5=Laiks: +6=Pievienots atslgas: +7=Dzsts atslgas: +8=Pievienots vrtbas: +9=Dzsts vrtbas: +10=Prveidots vrtbas: +11=Pievienotie faili: +12=Dzstie faili: +13=Prveidotie faili [atribti?]: +14=Pievienots mapes: +15=Dzsts mapes: +16=Prveidotie mapju atribti: +17=Kop izmaias: +18=Komentri: +19=Datums, laiks: +20=Dators: +21=Lietotjs: +22=Par +23=Kda +24=Kda izsaucot rjo apskattju! +25=Kda izveidojot failu! +26=Kda atverot failu! +27=Kda prveidojot faila rdtju! +28=&1. viens +29=&2. viens +30=&Saldzint +31=&Dzst +32=&Beigt +33=&Par +34=&Novrot.. +35=Saldzinanas protokolus saglabt k: +36=Izejas ce: +37=Pievienot komentru protokolam: +38=&Tekstu +39=&HTML dokumentu +40=&Skant mapi1[;mapi2;...]: +41=&viens +42=aut un sa&glabt... +43=Iel&dt... +44=&Dzst visu +45=Dzst &1. vienu +46=Dzst &2. vienu + + +[Portuguese] +Translator=Leandro +1=Chaves: +2=Valores: +3=Diretrios: +4=Arquivos: +5=Tempo: +6=Chaves adicionadas: +7=Chaves apagadas: +8=Valores adicionados: +9=Valores apagados: +10=Valores modificados: +11=Arquivos adicionados: +12=Arquivos apagados: +13=Arquivos [atributos?] modificados: +14=Pastas adicionadas: +15=Pastas apagadas: +16=Atributos de pastas alterados: +17=Total de alteraes: +18=Comentrios: +19=Dia/hora: +20=Computador: +21=Usurio: +22=Sobre +23=Erro +24=Erro ao chamar visualizador externo! +25=Erro ao criar arquivo! +26=Erro ao abrir arquivo! +27=Erro ao mover o ponteiro do arquivo! +28=&1 foto +29=&2 foto +30=&Comparar +31=&Limpar +32=Sai&r +33=&Sobre +34=&Monitor... +35=Salvar notas comparadas como: +36=Destino: +37=Adicionar comentrio em nota: +38=&Texto +39=&HTML +40=&Pesquisar diretrio: +41=&Fotografar +42=Fotografar e &salvar... +43=&Carregar... +44=&Limpar tudo +45=Apagar &1 foto +46=Apagar &2 foto + +[Slovensk] +Translator=Roland Turcan (regshot@rotursoft.sk) +1=Klvesy: +2=Hodnoty: +3=Prieinky: +4=Sbory: +5=as: +6=Ke pridan: +7=Ke zmazan: +8=Hodnoty pridan: +9=Hodnoty zmazan: +10=Hodnoty zmenen: +11=Sbory pridan: +12=Sbory zmazan: +13=Sbory [atribty?] zmenen: +14=Prieinky pridan: +15=Prieinky zmazan: +16=Atribty prieinkov zmenen: +17=Spolu zmien: +18=Komentre: +19=Dtum/as: +20=Pota: +21=Uvate: +22=O programe +23=Chyba +24=Chyba pri volan externho prehliadaa! +25=Chyba pri vytvran sboru! +26=Chyba pri otvoren sboru! +27=Chyba pri presvan ukazovatea v sbore! +28=&1. zznam +29=&2. zznam +30=P&orovnaj +31=&Vyma +32=&Koniec +33=&O Programe +34=&Monitor.. +35=Porovnaj zznamy a ulo ako: +36=Vstup ulo do: +37=Pridaj komentr do zznamu: +38=ist &TXT +39=&HTML dokument +40=&Hadaj dir1[;dir2;...;dir nn]: +41=&Zznam +42=Zaznamenaj a ulo... +43=Nataj... +44=&Vyma vetko +45=Vyma &1. zznam +46=Vyma &2. zznam + +[{] +Translator=Kentaro Okude +1=Keys: +2=Values: +3=Dirs: +4=Files: +5=Time: +6=ljꂽWXgL[: +7=폜ꂽWXgL[: +8=ljꂽl: +9=폜ꂽl: +10=ύX̂l: +11=ljꂽt@C: +12=폜ꂽt@C: +13=iHjύX̂t@C: +14=ljꂽtH_: +15=폜ꂽtH_: +16=ύX̂tH_: +17=S̕ύX: +18=Rg: +19=: +20=Rs[^: +21=[U[l[: +22=About +23=G[ +24=֘AtꂽvONł܂łB +25=t@C쐬ł܂łB +26=t@CJ炯܂łB +27=t@C|C^[𓮂܂łB +28=P +29=Q +30=r +31= +32=‚ +33=About +34=Ď +35=O̕ۑ`: +36=ۑ: +37=OɃRg}: +38=Text +39=HTML +40=ĎtH_: +41=sI +42=sZ[u +43=[h +44=ׂď +45=Pڂ̃O +46=Qڂ̃O + +[Polski] +Translator=Adam Mikusiski +1=Klucze: +2=Wartoci: +3=Katalogi: +4=Pliki: +5=Czas: +6=Klucze dodane: +7=Klucze usunite: +8=Wartoci dodane: +9=Wartoci usunite: +10=Wartoci zmodyfikowane: +11=Pliki dodane: +12=Pliki usunite: +13=Pliki [atrybuty?] zmodyfikowane: +14=Katalogi dodane: +15=Katalogi usunite: +16=Zmienione atrybuty katalogw: +17=Wszystkie zmiany: +18=Komentarze: +19=Data i godzina: +20=Komputer: +21=Nazwa uytkownika: +22=O programie +23=Bd +24=Bd wywoania przegldarki zewntrznej! +25=Bd tworzenia pliku! +26=Bd otwarcia pliku! +27=Bd przesunicia wskanika pliku! +28=Zdjcie &1 +29=Zdjcie &2 +30=&Porwnaj +31=W&yma +32=&Wyjcie +33=&O programie +34=&Monitor.. +35=Zapisz porwnanie rejestru jako: +36=Katalog docelowy: +37=Dodaj komentarz do rejestru: +38=&TXT +39=Dokument &HTML +40=&Skanuj kat1[;kat2;...;kat nn]: +41=&Zdjcie +42=Zdjcie + Za&pis... +43=W&czytaj... +44=W&yma wszystko +45=Wyma zdjcie &1 +46=Wyma zdjcie &2 + +[Serbian] +Translator=Computer Wizard +1=Kljuevi: +2=Vrednosti: +3=Direktorijumi: +4=Fajlovi: +5=Vreme: +6=Dodato kljuceva: +7=Obrisano kljuceva: +8=Dodato vrednosti: +9=Izbrisano vrednosti: +10=Izmenjeno vrednosti: +11=Dodato fajlova: +12=Izbrisano fajlova: +13=Fajlova [atributa?] izmenjeno: +14=Dodato foldera: +15=Izbrisano foldera: +16=Promenjeno atributa foldera: +17=Ukupno promena: +18=Komanda: +19=Datum i vreme: +20=Kompjuter: +21=Korisnicko ime: +22=O programu +23=Greka +24=Greka pri pozivanju eksternog viewer-a! +25=Greka pri kreiranju fajla! +26=Greka pri otvaranju fajla! +27=Greka pri promeni pokazivaa fajla! +28=&Prvi snimak +29=&Drugi snimak +30=&Uporedi +31=O&brii +32=&Izlaz +33=&O programu +34=&Monitor... +35=Rezultat poreenja snimi kao: +36=Izlazna putanja: +37=Dodaj komentar u log: +38=&Tekst +39=&HTML dokument +40=&Skeniraj dir1[;dir2;...;dir nn]: +41=&Snimi +42=Snimi i sauvaj na &disku... +43=&Uitaj... +44=&Obrii sve +45=Obrii prvi snimak +46=Obrii drugi snimak + +[Hebrew-] +Translator=Jack Gorji-[' ']-Email:zakgj@hotmail.com +1=: +2=: +3=: +4=: +5=-Time: +6= : +7= : +8= : +9= : +10= : +11= : +12= : +13= : +14= : +15= : +16= : +17=" : +18=: +19= : +20= : +21= : +22=& +23= +24= ! +25= ! +26= ! +27= ! +28=& '1 +29=& '2 +30=& +31=& +32=& +33=& +34= +35= +36= : +37= : +38=Plain &TXT +39=&HTML document +40=& dir1[;dir2;...;dir nn]: +41=& +42= ... +43=... +44= & +45= & +46= & + +[Galego] +Translator=Xos Antn Vicente Rodrguez (antonvicente@navegalia.com) +1=Claves: +2=Valores: +3=Directorios: +4=Arquivos: +5=Tempo: +6=Claves engadidas: +7=Claves borradas: +8=Valores engadidos: +9=Valores borrados: +10=Valores modificados: +11=Arquivos engadidos: +12=Arquivos borrados: +13=Atributos de arquivo modificados: +14=Cartafois engadidos: +15=Cartafois borrados: +16=Atributos de cartafol modificados: +17=Total de trocos: +18=Comentarios: +19=Data e hora: +20=Computador: +21=Usuario: +22=Sobre +23=Erro +24=Erro ao chamar a un visor externo! +25=Erro ao crear arquivo! +26=Erro ao abrir arquivos! +27=Erro ao mover punteiro de arquivo! +28=&1ra. Foto +29=&2da. Foto +30=C&omparar +31=&Limpar +32=S&ar +33=&Sobre +34=&Monitor.. +35=Comparar logs gardados como: +36=Ruta de sada: +37=Engadir comentario ao log: +38=&Texto +39=Documento &HTML +40=&Escanear dir1[;dir2;...;dir nn] +41=&Foto +42=Foto + &gardar... +43=&Cargar... +44=&Limpar +45=Limpar &1ra. Foto +46=Limpar &2da. Foto + +[Hrvatski] +Translator=Obelix (JK875@yahoo.cu.uk) +1=Kljuevi: +2=Vrijednosti: +3=Direktoriji: +4=Datoteke: +5=Vrijeme: +6=Dodano kljuceva: +7=Brisano kljuceva: +8=Dodano vrijednosti: +9=Brisano vrijednosti: +10=Izmijenjeno vrijednosti: +11=Dodano datoteka: +12=Izbrisano datoteka: +13=Datoteka [atributa?] izmijenjeno: +14=Dodano pod_direktorija: +15=Brisano pod_direktorija: +16=Promijenjeno atributa pod_direktorija: +17=Ukupno promjena: +18=Komanda: +19=Datum i vrijeme: +20=Kompjutor: +21=Korisniko ime: +22=O programu +23=Greka +24=Greka pri pozivanju vanjskog preglednika! +25=Greka pri kreiranju datoteke! +26=Greka pri otvaranju datoteke! +27=Greka pri promjeni pokazivaa datoteke! +28=&Prvi snimak +29=&Drugi snimak +30=&Usporedi +31=&Brii +32=&Izlaz +33=&O programu +34=&Monitor... +35=Rezultat usporedbe spremi kao: +36=Izlazna putanja: +37=Dodaj komentar u log: +38=&Tekst +39=&HTML dokument +40=&Pretrai dir1[;dir2;...;dir nn]: +41=&Snimi +42=Snimi i spremi na &disk... +43=&Uitaj... +44=&Bbrii sve +45=Brii prvi snimak +46=Brii drugi snimak + +[Bulgarian] +Translator=Alex Simidchiev +1=: +2=: +3=: +4=: +5=: +6= : +7= : +8= : +9= : +10= : +11= : +12= : +13= []: +14= : +15= : +16= []: +17= : +18=: +19= : +20= : +21= : +22= +23= +24= ! +25= ! +26= ! +27=Error move file pointer! +28=&1 +29=&2 +30=& +31=& +32=& +33=& +34=&... +35= : +36= : +37= : +38=& +39=& HTML +40=& [dir1;dir2;...;dir nn]: +41=& +42= + ... +43=&... +44=& +45= &1 +46= &2 + +[Svenska] +Translator=joup@algonet.se +1=Nycklar: +2=Vrden: +3=Kataloger: +4=Filer: +5=Tid: +6=Adderade nycklar: +7=Borttagna nycklar: +8=Adderade vrden: +9=Borttagna vrden: +10=ndrade vrden: +11=Adderade filer: +12=Borttagna filer: +13=ndrade filer [attribut?]: +14=Adderade kataloger: +15=Borttagna kataloger: +16=ndrade katalogattribut: +17=Totala ndringar: +18=Kommentarer: +19=Datum/tid: +20=Dator: +21=Anvndarnamn: +22=Om +23=Fel +24=Fel vid anrop av extern filvisare! +25=Kunde inte skapa fil! +26=Kunde inte ppna fil! +27=Fel vid flyttning av filpekare! +28=&1:a tagningen +29=&2:a tagningen +30=&Jmfr +31=&Tm +32=A&vsluta +33=&Om Regshot +34=&Bevaka.. +35=Jmfrelselog sparas som: +36=Mlkatalog: +37=Lgg till kommentar i loggen: +38=Ren &TXT +39=&HTMLdokument +40=&Scanna dir1[;dir2;...;dir nn]: +41=&Shot +42=Shot och spa&ra... +43=Ls &in... +44=&Tm allt +45=Tm &1:a tagningen +46=Tm &2:a tagningen + +[Hungarian] +Translator=Bata Gyrgy +1=Kulcsok: +2=rtkek: +3=Mappk: +4=Fjlok: +5=Id: +6=Hozzadott rendszerler kulcsok: +7=Trlt rendszerler kulcsok: +8=Hozzadott rendszerler rtkek: +9=Trlt rendszerler rtkek: +10=Mdostott rendszerler rtkek: +11=Hozzadott fjlok: +12=Trlt fjlok: +13=Mdostott fjlok [attribtumok]: +14=Hozzadott mappk: +15=Trlt mappk: +16=Mdostott mappa attribtumok: +17=sszes vltozs: +18=Megjegyzs: +19=Dtum s id: +20=Szmtgp: +21=Felhasznlnv: +22=Nvjegy +23=Hiba +24=Hiba a kls szerkeszt meghvsakor! +25=Hiba a fjl ltrehozsakor! +26=Hiba a fjl megnyitsakor! +27=Hiba a fjlmutat mozgatsakor! +28=&1. Minta +29=&2. Minta +30=&sszevets +31=&Trls +32=&Kilps +33=&Nvjegy +34=Figy&els... +35=Naplfjl formtuma: +36=Eredmny mentse ide: +37=Megjegyzs a naplfjlban, fjlnv: +38=T&XT fjl +39=&HTML fjl +40=&Figyelt mappk [a;b;c;...]: +41=&Vizsglat +42=Vizsglat s &ments... +43=&Betlts... +44=&Mind trlse +45=&1. Minta trlse +46=&2. Minta trlse + +[] +Translator=Dmitry P. +1=: +2=: +3=: +4=: +5=: +6= : +7= : +8= : +9= : +10= : +11= : +12= : +13= []: +14= : +15= : +16= []: +17= : +18=: +19= : +20=' ': +21=' : +22= +23= +24= ! +25= ! +26= ! +27=Error move file pointer! +28=1 +29=2 +30= +31= +32= +33= +34= +35= : +36= : +37= : +38= +39= HTML +40= 1[;dir2;...]: +41= +42= + ... +43=³... +44= +45= 1 +46= 2 + +[Kazakh] +Translator= +1=: +2=: +3=: +4=: +5=: +6= : +7=f o: +8= : +9=f : +10= : +11= : +12=f : +13= []: +14= : +15=f : +16= []: +17= : +18= : +19=ff : +20= : +21= : +22=C +23= +24= ! +25= ! +26= ! +27=Error move file pointer! +28=&1 +29=&2 +30=& +31=& +32=&f +33=&C +34=&... +35= : +36= : +37= : +38=& +39=&HTML +40=& 1[;dir2;...;dir nn]: +41=& +42= + &... +43=&... +44=& +45= &1 +46= &2 + diff --git a/deb/opt/apps/deepin-wine-runner/RegShot/regshot.exe b/deb/opt/apps/deepin-wine-runner/RegShot/regshot.exe new file mode 100644 index 0000000..3e9527b Binary files /dev/null and b/deb/opt/apps/deepin-wine-runner/RegShot/regshot.exe differ diff --git a/deb/opt/apps/deepin-wine-runner/RegShot/regshot.ini b/deb/opt/apps/deepin-wine-runner/RegShot/regshot.ini new file mode 100644 index 0000000..48e223b --- /dev/null +++ b/deb/opt/apps/deepin-wine-runner/RegShot/regshot.ini @@ -0,0 +1,15 @@ +[Setup] +Flag=1 +ExtDir= +OutDir= +UseLongRegHead=0 + +[SkipRegKey] +0= +1= +2= + +[SkipDir] +0= +1= +2= diff --git a/deb/opt/apps/deepin-wine-runner/RegShot/regshot_x64.exe b/deb/opt/apps/deepin-wine-runner/RegShot/regshot_x64.exe new file mode 100644 index 0000000..6f0bdc1 Binary files /dev/null and b/deb/opt/apps/deepin-wine-runner/RegShot/regshot_x64.exe differ diff --git a/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py b/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py index 4478998..fc04b0c 100755 --- a/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py +++ b/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py @@ -215,7 +215,7 @@ class make_deb_threading(QtCore.QThread): "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" + f"{wine[wineVersion.currentText()]}, spark-dwine-helper | store.spark-app.spark-dwine-helper, fonts-wqy-microhei, fonts-wqy-zenhei" ][int(chooseWineHelperValue.isChecked())], "postinst": "", "postrm": ["", f"""#!/bin/bash @@ -695,7 +695,7 @@ WINEPREFIX=$BOTTLE $EMU $EMU_ARGS $WINE "$EXE" --disable-gpu &""", print("c") if os.path.exists(wine[wineVersion.currentText()]): debInformation[0]["Depends"] = ["deepin-wine-helper (>= 5.1.30-1)", - "spark-dwine-helper (>= 1.6.2)" + "spark-dwine-helper | store.spark-app.spark-dwine-helper" ][int(chooseWineHelperValue.isChecked())] #+ ["", "libasound2 (>= 1.0.16), libc6 (>= 2.28), libglib2.0-0 (>= 2.12.0), libgphoto2-6 (>= 2.5.10), libgphoto2-port12 (>= 2.5.10), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.4.0), liblcms2-2 (>= 2.2+git20110628), libldap-2.4-2 (>= 2.4.7), libmpg123-0 (>= 1.13.7), libopenal1 (>= 1.14), libpcap0.8 (>= 0.9.8), libpulse0 (>= 0.99.1), libudev1 (>= 183), libvkd3d1 (>= 1.0), libx11-6, libxext6, libxml2 (>= 2.9.0), ocl-icd-libopencl1 | libopencl1, udis86, zlib1g (>= 1:1.1.4), libasound2-plugins, libncurses6 | libncurses5 | libncurses, deepin-wine-plugin-virtual\nRecommends: libcapi20-3, libcups2, libdbus-1-3, libfontconfig1, libfreetype6, libglu1-mesa | libglu1, libgnutls30 | libgnutls28 | libgnutls26, libgsm1, libgssapi-krb5-2, libjpeg62-turbo | libjpeg8, libkrb5-3, libodbc1, libosmesa6, libpng16-16 | libpng12-0, libsane | libsane1, libsdl2-2.0-0, libtiff5, libv4l-0, libxcomposite1, libxcursor1, libxfixes3, libxi6, libxinerama1, libxrandr2, libxrender1, libxslt1.1, libxxf86vm1"][] print("d") debInformation[0]["run.sh"] = f'''#!/bin/sh @@ -849,6 +849,7 @@ fi if os.path.exists(wine[wineVersion.currentText()]): shutil.copy(f"{programPath}/gtkGetFileNameDlg", f"{debPackagePath}/opt/apps/{e1_text.text()}/files/gtkGetFileNameDlg") if wine[wineVersion.currentText()][-3:] == ".7z": + # 都有了为什么要打包呢? shutil.copy(wine[wineVersion.currentText()], f"{debPackagePath}/opt/apps/{e1_text.text()}/files/wine_archive.7z") else: self.run_command(f"7z a '{debPackagePath}/opt/apps/{e1_text.text()}/files/wine_archive.7z' '{wine[wineVersion.currentText()]}/*'") @@ -856,7 +857,11 @@ fi # 压缩容器 ############### self.label.emit("正在打包 wine 容器") - self.run_command("7z a {}/opt/apps/{}/files/files.7z {}/*".format(debPackagePath, e1_text.text(), b)) + # 都有 7z 了为什么要打包呢? + if e1_text.text()[-3: ] == ".7z": + shutil.copy(e1_text.text(), f"{debPackagePath}/opt/apps/{e1_text.text()}/files/files.7z") + else: + self.run_command("7z a {}/opt/apps/{}/files/files.7z {}/*".format(debPackagePath, e1_text.text(), b)) ############### # 复制文件 ############### @@ -1024,12 +1029,12 @@ def InstallDeb(): def ChangeWine(): useInstallWineArch.setEnabled(os.path.exists(wine[wineVersion.currentText()])) debDepends.setText([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" + f"{wine[wineVersion.currentText()]}, spark-dwine-helper | store.spark-app.spark-dwine-helper, fonts-wqy-microhei, fonts-wqy-zenhei" ][int(chooseWineHelperValue.isChecked())]) debRecommend.setText("") if os.path.exists(wine[wineVersion.currentText()]): debDepends.setText(["deepin-wine-helper (>= 5.1.30-1)", - "spark-dwine-helper (>= 1.6.2)" + "spark-dwine-helper | store.spark-app.spark-dwine-helper" ][int(chooseWineHelperValue.isChecked())]) if "deepin-wine5-stable" in wine[wineVersion.currentText()]: debDepends.setText("libasound2 (>= 1.0.16), libc6 (>= 2.28), libglib2.0-0 (>= 2.12.0), libgphoto2-6 (>= 2.5.10), libgphoto2-port12 (>= 2.5.10), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.4.0), liblcms2-2 (>= 2.2+git20110628), libldap-2.4-2 (>= 2.4.7), libmpg123-0 (>= 1.13.7), libopenal1 (>= 1.14), libpcap0.8 (>= 0.9.8), libpulse0 (>= 0.99.1), libudev1 (>= 183), libvkd3d1 (>= 1.0), libx11-6, libxext6, libxml2 (>= 2.9.0), ocl-icd-libopencl1 | libopencl1, udis86, zlib1g (>= 1:1.1.4), libasound2-plugins, libncurses6 | libncurses5 | libncurses, deepin-wine-plugin-virtual") @@ -1067,12 +1072,178 @@ def UserPathSet(): return change = True +def ReadDeb(unzip = False): + # 获取路径 + debPath = QtWidgets.QFileDialog.getOpenFileName(window, "读取 deb 包", get_home(), "deb包(*.deb);;所有文件(*.*)")[0] + print(debPath) + # 分类讨论 + path = f"/tmp/deb-unzip-{random.randint(0, 1000)}" + # 新建文件夹 + os.system(f"mkdir -p '{path}'") + # 解包 control 文件 + os.system(f"dpkg -e '{debPath}' '{path}/DEBIAN'") + # 读取 control 文件 + file = open(f"{path}/DEBIAN/control", "r") + lists = file.read().splitlines() + + # 控件映射表 + lnkMap = { + "Package": e1_text, + "Version": e2_text, + "Description": e3_text, + "Maintainer": e4_text, + "Recommends": debRecommend, + "Depends": debDepends + } + + for i in lists: + # 遍历文件 + items = i.strip() + try: + lnkMap[items[:items.index(":")]].setText(items[items.index(":") + 1:].strip()) + if unzip: + # 解压全部文件将不在 control 分析 wine 版本以提升运行效率 + continue + print(items[:items.index(":")]) + if items[:items.index(":")] == "Depends": + # 以下可以通过依赖判断使用什么 wine + depends = items[items.index(":") + 1:].strip().split(",") + for i in depends: + print(i) + # 读取 + if "(" in i: + # 如果有括号(即版本号限制的情况) + temp = i.strip() + dependsItem = temp[:temp.index("(")] + else: + dependsItem = i.strip() + try: + # 这个 wine 是理论上用于运行的 wine + print(wineValue[dependsItem]) + wineVersion.setCurrentText(wineValue[dependsItem]) + break + except: + print("此 Wine 不存在") + except: + # 报错忽略 + print(f"“{items}”项忽略") + + # 判断 postrm 文件是不是自动移除脚本 + # postrm 文件不存在就不需要考虑 + # 三个特征: + # 1、/home/$username/.deepinwine + # 2、非卸载,跳过清理 + # 3、清理卸载残留 + # 都符合才算 + rmBash.setChecked(False) + if os.path.exists(f"{path}/DEBIAN/postrm"): + # 读取文件进行特征筛查 + file = open(f"{path}/DEBIAN/postrm", "r") + postrm = file.read() + if "/home/$username/.deepinwine" in postrm and "非卸载,跳过清理" in postrm and "清理卸载残留" in postrm: + rmBash.setChecked(True) + file.close() + # 解包主文件 + if not unzip: + # 只解压 control 文件的话,结束 + # 顺便删除临时文件 + os.system(f"rm -rfv '{path}'") + return + os.system(f"dpkg -x '{debPath}' '{path}'") + # 读取文件 + # 目前只能实现读取 Wine 运行器(生态适配脚本的也可以读取)打包的 deb + # opt/apps/XXX/files/run.sh 的文件读取识别 + if not os.path.exists(f"{path}/opt/apps/"): + return + # 取默认第一个 + package = os.listdir(f"{path}/opt/apps/")[0] + # 读 7z(基本不读取) + if os.path.exists(f"{path}/opt/apps/{package}/files/files.7z"): + e6_text.setText(f"{path}/opt/apps/{package}/files/files.7z") + lnkMap = { + "Icon": e9_text, + "Name": e8_text, + "MimeType": e10_text + } + # 读 desktop 文件 + if os.path.exists(f"{path}/opt/apps/{package}/entries/applications"): + filePath = f"{path}/opt/apps/{package}/entries/applications/{os.listdir(f'{path}/opt/apps/{package}/entries/applications')[0]}" + file = open(filePath, "r") + items = file.read().splitlines() + file.close() + for i in items: + # 按行解析 + if i.replace(" ", "").replace("\n", "") == "": + # 空行,忽略 + continue + # 忽略注释 + line = i + if "#" in line: + line = line[:line.index("#")] + # 判断是否合法 + try: + name = line[:line.index("=")].strip() + value = line[line.index("=") + 1:]#.replace("\"", "").strip() + if name in lnkMap: + lnkMap[name].setText(value) + continue + # 其它的特殊情况判断 + if name == "Exec": + value = value[value.index(".sh") + 3:].strip() + if value[0] == "\"": + value = value[1:].strip() + # helper + e15_text.setText(value) + if name == "Categories": + option1_text.setCurrentText(value) + except: + print(f"忽略行:{i}") + lnkMap = { + "BOTTLENAME": e5_text, + "EXEC_PATH": e7_text + #"APPRUN_CMD" + } + # 读 run.sh + if os.path.exists(f"{path}/opt/apps/{package}/files/run.sh"): + file = open(f"{path}/opt/apps/{package}/files/run.sh", "r") + items = file.read().splitlines() + file.close() + for i in items: + # 按行解析 + if i.replace(" ", "").replace("\n", "") == "": + # 空行,忽略 + continue + # 忽略 export + line = i.replace("export ", "") + # 忽略注释 + if "#" in line: + line = line[:line.index("#")] + # 判断是否合法 + try: + name = line[:line.index("=")].strip() + value = line[line.index("=") + 1:].replace("\"", "").strip() + #lnkMap[name].setText(value) + if name in lnkMap: + lnkMap[name].setText(value) + continue + # 其它的特殊情况判断 + if name == "START_SHELL_PATH" and value == "/opt/deepinwine/tools/spark_run_v4.sh": + # helper + chooseWineHelperValue.setChecked(True) + if name == "APPRUN_CMD" and value in wineValue: + wineVersion.setCurrentText(wineValue[dependsItem]) + except: + print(f"忽略行:{i}") + + + ############### # 程序信息 ############### programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string # 如果要添加其他 wine,请在字典添加其名称和执行路径 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"} +wineValue = {"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 本地列表 for i in ["/opt/wine-staging", "/opt/wine-dev", "/opt/wine-stable", "/opt/spark-wine7-devel"]: if os.path.exists(i): @@ -1228,12 +1399,19 @@ e12_text.textChanged.connect(UserPathSet) # 菜单栏 menu = window.menuBar() programmenu = menu.addMenu(QtCore.QCoreApplication.translate("U", "程序")) +debMenu = menu.addMenu(QtCore.QCoreApplication.translate("U", "deb 包")) help = menu.addMenu(QtCore.QCoreApplication.translate("U", "帮助")) exit = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "退出程序")) +debE = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "只读取 Control 信息")) +debX = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "读取所有(需解包,时间较久)")) tip = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "小提示")) exit.triggered.connect(window.close) tip.triggered.connect(helps) programmenu.addAction(exit) +debMenu.addAction(debE) +debMenu.addAction(debX) +debE.triggered.connect(lambda: ReadDeb(False)) +debX.triggered.connect(lambda: ReadDeb(True)) help.addAction(tip) # 控件配置 try: @@ -1249,4 +1427,5 @@ window.setWindowTitle(f"wine 应用打包器 {version}") window.setWindowIcon(QtGui.QIcon(iconPath)) window.resize(int(window.frameSize().width() * 2.1), window.frameSize().height()) window.show() -sys.exit(app.exec_()) \ No newline at end of file +sys.exit(app.exec_()) +# Flag:解包只读control和解包全部读取 \ No newline at end of file diff --git a/deb/opt/apps/deepin-wine-runner/deepin-wine-runner b/deb/opt/apps/deepin-wine-runner/deepin-wine-runner index a801118..f114df5 100755 --- a/deb/opt/apps/deepin-wine-runner/deepin-wine-runner +++ b/deb/opt/apps/deepin-wine-runner/deepin-wine-runner @@ -2,8 +2,8 @@ # 使用系统默认的 python3 运行 ################################################################################################################# # 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢 -# 版本:2.0.0 -# 更新时间:2022年08月12日 +# 版本:2.2.0 +# 更新时间:2022年09月24日 # 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序 # 基于 Python3 的 PyQt5 构建 ################################################################################################################# @@ -18,11 +18,11 @@ import base64 import shutil import hashlib import platform -import req as requests import threading import traceback import webbrowser import subprocess +import req as requests import urllib.parse as parse import PyQt5.QtGui as QtGui import PyQt5.QtCore as QtCore @@ -36,7 +36,7 @@ def PythonLower(): # Python 版本检测,因为 f-string 格式化要至少 Python 3.6 及以上的版本,所以需要检测 # 判断主版本号 -if sys.version_info[0] > 3: +if sys.version_info[0] < 3: PythonLower() if sys.version_info[1] < 6: PythonLower() @@ -128,6 +128,7 @@ class QT: e1.setEditText(findExeHistory[-1]) def DisableButton(things): + button_r_6.setDisabled(things) button1.setDisabled(things) button2.setDisabled(things) button3.setDisabled(things) @@ -166,15 +167,7 @@ class Runexebutton_threading(QtCore.QThread): wineUsingOption = "" if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable": wineUsingOption = "" - if o1.currentText() == "基于 exagear 的 deepin-wine6-stable": - os.system(f"'{programPath}/deepin-wine-runner-create-botton.py' '{wineBottonPath}'") - if not os.path.exists(f"{programPath}/exagear"): - #self.run_command(f"aria2c -x 16 -s 16 -d \"{programPath}\" -o \"exagear.7z\" https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/other/exagear.7z") - if os.system(f"7z x \"{programPath}/exagear.7z\" -o\"{programPath}\""): - QtWidgets.QMessageBox(widget, "错误", "无法解压资源") - return - os.remove(f"{programPath}/exagear.7z") - if o1.currentText() == "基于 box86 的 deepin-wine6-stable": + if o1.currentText() == "基于 box86 的 deepin-wine6-stable" or o1.currentText() == "基于 exagear 的 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, "错误", "无法解压资源") @@ -295,7 +288,7 @@ def make_desktop_on_launcher(): else: option += "WINEDEBUG=FIXME,ERR,WARN,TRACE,Message " wineUsingOption = "" - if o1.currentText() == "基于 box86 的 deepin-wine6-stable": + if o1.currentText() == "基于 box86 的 deepin-wine6-stable" or o1.currentText() == "基于 exagear 的 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, "错误", "无法解压资源") @@ -357,7 +350,7 @@ def make_desktop_on_desktop(): wineUsingOption = "" if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable": wineUsingOption = "" - if o1.currentText() == "基于 box86 的 deepin-wine6-stable": + if o1.currentText() == "基于 box86 的 deepin-wine6-stable" or o1.currentText() == "基于 exagear 的 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, "错误", "无法解压资源") @@ -484,7 +477,7 @@ class RunWineProgramThread(QtCore.QThread): 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 = "" - if o1.currentText() == "基于 box86 的 deepin-wine6-stable": + if o1.currentText() == "基于 box86 的 deepin-wine6-stable" or o1.currentText() == "基于 exagear 的 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, "错误", "无法解压资源") @@ -548,7 +541,7 @@ class RunWinetricksThread(QtCore.QThread): wineUsingOption = "" if o1.currentText() == "基于 exagear 的 deepin-wine6-stable" or o1.currentText() == "基于 box86 的 deepin-wine6-stable": wineUsingOption = "" - if o1.currentText() == "基于 box86 的 deepin-wine6-stable": + if o1.currentText() == "基于 box86 的 deepin-wine6-stable" or o1.currentText() == "基于 exagear 的 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, "错误", "无法解压资源") @@ -581,7 +574,7 @@ def RunWinetricks(): if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine: DisableButton(False) return - if o1.currentText() == "基于 box86 的 deepin-wine6-stable": + if o1.currentText() == "基于 box86 的 deepin-wine6-stable" or o1.currentText() == "基于 exagear 的 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, "错误", "无法解压资源") @@ -815,17 +808,30 @@ class UpdateWindow(): ok.clicked.connect(UpdateWindow.Update) cancel = QtWidgets.QPushButton("取消") cancel.clicked.connect(UpdateWindow.update.close) - try: - UpdateWindow.data = json.loads(requests.get(base64.b64decode("aHR0cHM6Ly8zMDQ2MjZwOTI3LmdvaG8uY28vc3BhcmstZGVlcGluLXdpbmUtcnVubmVyL3VwZGF0ZS5qc29u").decode("utf-8")).text) - versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本:{UpdateWindow.data['Version']}\n更新内容:") - if UpdateWindow.data["Version"] == version: - updateText.setText(QtCore.QCoreApplication.translate("U", "此为最新版本,无需更新")) + if "从源码运行的版本" == programVersionType: + versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本:未知(从源码运行不提供更新)\n更新内容:") + updateText.setText("从源码运行不提供更新") + ok.setDisabled(True) + else: + if "deepin/UOS 应用商店版本<带签名>" == programVersionType: + url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUtdW9zLmpzb24=" + elif "星火应用商店版本" == programVersionType: + url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUtc3BhcmsuanNvbg==" + else: + url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUuanNvbg==" + try: + UpdateWindow.data = json.loads(requests.get(base64.b64decode(url).decode("utf-8")).text) + versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本:{UpdateWindow.data['Version']}\n更新内容:") + if UpdateWindow.data["Version"] == version: + updateText.setText(QtCore.QCoreApplication.translate("U", "此为最新版本,无需更新")) + ok.setDisabled(True) + else: + updateText.setText(UpdateWindow.data["New"].replace("\\n", "\n")) + except: + traceback.print_exc() + QtWidgets.QMessageBox.critical(updateWidget, QtCore.QCoreApplication.translate("U", "错误"), QtCore.QCoreApplication.translate("U", "无法连接服务器!")) + updateText.setText("无法连接服务器,无法更新") ok.setDisabled(True) - else: - updateText.setText(UpdateWindow.data["New"].replace("\\n", "\n")) - except: - traceback.print_exc() - QtWidgets.QMessageBox.critical(updateWidget, QtCore.QCoreApplication.translate("U", "错误"), QtCore.QCoreApplication.translate("U", "无法连接服务器!")) updateWidgetLayout.addWidget(versionLabel, 0, 0, 1, 1) updateWidgetLayout.addWidget(updateText, 1, 0, 1, 3) updateWidgetLayout.addWidget(ok, 2, 2, 1, 1) @@ -1138,22 +1144,51 @@ class GetDllFromWindowsISO: traceback.print_exc() QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, "错误", traceback.format_exc()) +choose = None class ProgramRunStatusShow(): msgWindow = None def ShowWindow(): + global choose + choose = None + dateVersion = "" if not os.path.exists(e2.currentText()): QtWidgets.QMessageBox.information(widget, "提示", "您输入的 exe 不存在") return try: sha = ProgramRunStatusUpload.GetSHA1(e2.currentText()) - lists = json.loads(requests.get(base64.b64decode("aHR0cHM6Ly8zMDQ2MjZwOTI3LmdvaG8uY28vc3BhcmstZGVlcGluLXdpbmUtcnVubmVyL2FwcC8=").decode("utf-8") + sha + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).text) - r = requests.get(base64.b64decode("aHR0cHM6Ly8zMDQ2MjZwOTI3LmdvaG8uY28vc3BhcmstZGVlcGluLXdpbmUtcnVubmVyL2FwcC8=").decode("utf-8") + sha + base64.b64decode("L3RpdGxlLnR4dA==").decode("utf-8")) + lists = json.loads(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9hcHAv").decode("utf-8") + sha + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).text) + r = requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9hcHAv").decode("utf-8") + sha + base64.b64decode("L3RpdGxlLnR4dA==").decode("utf-8")) r.encoding = "utf-8" title = r.text except: - if QtWidgets.QMessageBox.question(widget, QtCore.QCoreApplication.translate("U", "提示"), QtCore.QCoreApplication.translate("U", "暂时还没有该软件的运行情况信息\n是否自己上传该软件的运行情况?")) == QtWidgets.QMessageBox.Yes: + choosemsg = QtWidgets.QMessageBox() + choosemsg.setText("""暂时还没有该软件的运行情况信息,请问需要?""") + choosemsg.setWindowTitle("提示") + def Choose(choices): + global choose + choose = choices + choosemsg.addButton("取消", QtWidgets.QMessageBox.ActionRole).clicked.connect(lambda: Choose(0)) + choosemsg.addButton("提交评分", QtWidgets.QMessageBox.ActionRole).clicked.connect(lambda: Choose(1)) + choosemsg.addButton("预测评分(不准确)", QtWidgets.QMessageBox.ActionRole).clicked.connect(lambda: Choose(2)) + choosemsg.exec_() + if choose == None or choose == 0: + return + if choose == 1: ProgramRunStatusUpload.ShowWindow(sha) - return + return + if choose == 2: + try: + lists = [0, 0, 0, 0, 0, 0, 0, 0] + info = json.loads(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUwL0FJP1NIQTE9").decode("utf-8") + sha).text) + lists[int(info["Fen"])] = 1 + dateVersion = info["Version"] + title = "null" + except: + traceback.print_exc() + QtWidgets.QMessageBox.critical(window, "错误", "无法获取预测数值") + return + + informationList = [ "0分:无法运行并且也没有报错,自己无法解决", "1分:无法运行但有报错,自己无法解决", @@ -1164,7 +1199,10 @@ class ProgramRunStatusShow(): "含有不良内容,不宜安装", "含有病毒、木马等对计算机有害的软件" ] - if title.lower() == "null": + try: + if title.lower() == "null": + title = "未知应用" + except: title = "未知应用" maxHead = lists.index(max(lists)) ProgramRunStatusShow.msgWindow = QtWidgets.QMainWindow() @@ -1176,7 +1214,8 @@ class ProgramRunStatusShow(): msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "综合评价:")), 0, 0) msgWidgetLayout.addLayout(starLayout, 0, 1) msgWidgetLayout.addWidget(QtWidgets.QLabel(informationList[maxHead]), 1, 0, 1, 2) - msgWidgetLayout.addWidget(uploadButton, 2, 0, 1, 2) + msgWidgetLayout.addWidget(QtWidgets.QLabel("" if dateVersion == "" else f"数据版本:{dateVersion}"), 2, 0, 1, 2) + msgWidgetLayout.addWidget(uploadButton, 3, 0, 1, 2) end = 5 if maxHead > 5: for i in range(end): @@ -1542,7 +1581,7 @@ programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string try: 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"WINEPREDLL='{programPath}/exagear' WINEDLLPATH=/opt/deepin-wine6-stable/lib /opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine ", + "基于 exagear 的 deepin-wine6-stable": f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib /opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine ", "deepin-wine6 stable": "deepin-wine6-stable", "deepin-wine5 stable": "deepin-wine5-stable", "spark-wine7-devel": "spark-wine7-devel", @@ -1585,7 +1624,7 @@ try: value = f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 " if os.path.exists("/opt/exagear/bin/ubt_x64a64_al"): name = "基于 exagear 的 " - value = f"WINEPREDLL='{programPath}/exagear' WINEDLLPATH=/opt/deepin-wine6-stable/lib /opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- " + value = f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib /opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- " except: pass if os.path.exists(f"{programPath}/wine/{i}/bin/wine"): @@ -1627,9 +1666,91 @@ except: QtWidgets.QMessageBox.critical(None, "错误", f"无法读取配置,无法继续\n{traceback.format_exc()}") sys.exit(1) +def getFileFolderSize(fileOrFolderPath): + """get size for file or folder""" + totalSize = 0 + if not os.path.exists(fileOrFolderPath): + return totalSize + if os.path.isfile(fileOrFolderPath): + totalSize = os.path.getsize(fileOrFolderPath) # 5041481 + return totalSize + if os.path.isdir(fileOrFolderPath): + with os.scandir(fileOrFolderPath) as dirEntryList: + for curSubEntry in dirEntryList: + curSubEntryFullPath = os.path.join(fileOrFolderPath, curSubEntry.name) + if curSubEntry.is_dir(): + curSubFolderSize = getFileFolderSize(curSubEntryFullPath) # 5800007 + totalSize += curSubFolderSize + elif curSubEntry.is_file(): + curSubFileSize = os.path.getsize(curSubEntryFullPath) # 1891 + totalSize += curSubFileSize + return totalSize + # 获取当前语言 def get_now_lang()->"获取当前语言": return os.getenv('LANG') + +def GetVersion(): + global about + global programVersionType + # 目前分为几个版本(在 control 文件区分): + # 星火版本:~spark + # 商店版本:~uos + # 编译版本:无版本号 + # Gitee/Github……:正常版本 + programVersionTypeLnk = { + "spark": "星火应用商店版本", + "uos": "deepin/UOS 应用商店版本<带签名>" + } + programVersionType = "从源码运行的版本" + try: + if not os.path.exists("/var/lib/dpkg/status"): + print("无 dpkg,结束") + file = open("/var/lib/dpkg/status", "r") + fileName = file.read().splitlines() + package = False + for i in range(0, len(fileName)): + if fileName[i] == "Package: spark-deepin-wine-runner-52": + programVersionType = "吾爱专版" + window.setWindowTitle(f"{title} 吾爱专版") + break + if fileName[i] == "Package: spark-deepin-wine-runner": + package = True + continue + if not package: + continue + if fileName[i].replace(" ", "").replace("\n", "") == "": + # 空行,不再考虑 + break + # 搜索版本号 + try: + if fileName[i][:fileName[i].index(":")] == "Version": + version = fileName[i][fileName[i].index(":") + 1:].strip() + print(f"版本号为:{version}") + if not "-" in version: + programVersionType = "从Gitee/Github/Gitlink等平台获取的版本" + break + programVersionType = version[version.index("-") + 1:] + print(programVersionType) + if "-" in programVersionType: + # 考虑到如 2.1.0-2-spark 的情况 + programVersionType = programVersionType[programVersionType.index("-") + 1:] + try: + programVersionType = programVersionTypeLnk[programVersionType] + except: + programVersionType = "从Gitee/Github/Gitlink等平台获取的版本" + break + except: + traceback.print_exc() + continue + except: + print("无法读取,当没有处理") + print(programVersionType) + about = about.replace("@VersionForType@", programVersionType) + # 获取程序体积 + about = about.replace("@programSize@", str(int(getFileFolderSize(programPath) / 1024 / 1024))) + +programVersionType = "" print(wine) ########################### # 程序信息 @@ -1665,16 +1786,25 @@ updateThingsString = '''※1、Dll 提取工具支持 NT 6.X 及以上版本的 ※5、修复无法正常评分的问题 ※6、修复 QQ、TIM 安装后无法正常生成快捷方式的问题 ※7、基于生态适配活动的打包器更换为 spark-wine-helper 以及添加自动删除残留脚本 -8、更新组件安装的离线列表 -9、不再强制依赖深度终端,只做推荐安装 +※8、打包器支持从 deb 文件读取信息 +※9、修复在 UOS 专业版(鲲鹏)无法正常运行的问题以及组件安装功能无法正常执行安装命令的问题 +※10、修复出现星火应用商店和官方应用商店反复提示更新死循环的问题 +※11、新增评分分数预测功能(不准) +※12、更换程序接口 +13、更新组件安装的离线列表 +14、不再强制依赖深度终端,只做推荐安装 +15、基于生态活动适配脚本的打包器在打包完成后会弹出对话框提示打包完成 +16、优化打包器的 spark wine helper 依赖设置方式 +17、新增 RegShot(注册表比对工具) +18、添加 Wine 运行器评分数据的搜索功能 以下更新内容旧版本也适用(只限 2.1.0 及以上版本) -※1、在“安装更多Wine”的Wine安装工具中上 wine-staging 7.17、wine-staging 6.7、spark-wine7-devel 7.17 +※1、在“安装更多Wine”的Wine安装工具中上新 Wine ※2、云 Dll 工具上新 Dll -※3、VCPP 运行库安装工具新增 VC6 运行库 +※3、VCPP、net 运行库安装工具新增运行库 ''' for i in information["Thank"]: thankText += f"{i}\n" -updateTime = "2022年09月11日" +updateTime = "2022年09月24日" about = f'''

关于

一个能让Linux用户更加方便运行Windows应用的程序,内置了对wine图形化的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等

同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具,可以做到只需要用户下载系统镜像并点击安装即可,无需顾及虚拟机安装、创建、虚拟机的分区等等

@@ -1686,9 +1816,10 @@ about = f'''

关于

让你可以简易方便的使用 wine 版本:{version} -适用平台:{goodRunSystem} +适用平台:{goodRunSystem}(@VersionForType@) Qt 版本:{QtCore.qVersion()} -程序官网:{programUrl} +程序官网:{programUrl} +程序占用体积:@programSize@MB

谢明名单

{thankText}
@@ -1705,7 +1836,7 @@ Qt 版本:{QtCore.qVersion()} title = "Wine 运行器 {}".format(version) updateThings = "{} 更新内容:\n{}\n更新时间:{}".format(version, updateThingsString, updateTime, time.strftime("%Y")) try: - threading.Thread(target=requests.get, args=[parse.unquote(base64.b64decode("aHR0cHM6Ly8zMDQ2MjZwOTI3LmdvaG8uY28vc3BhcmstZGVlcGluLXdpbmUtcnVubmVyL29wZW4vSW5zdGFsbC5waHA=").decode("utf-8")) + "?Version=" + version]).start() + threading.Thread(target=requests.get, args=[parse.unquote(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9vcGVuL0luc3RhbGwucGhw").decode("utf-8")) + "?Version=" + version]).start() except: pass iconListUnBuild = [ @@ -1740,6 +1871,9 @@ if not get_now_lang() == "zh_CN.UTF-8": trans.load(f"{programPath}/LANG/deepin-wine-runner-en_US.qm") app.installTranslator(trans) window = QtWidgets.QMainWindow() +window.setWindowTitle(title) +# 异同步获取信息 +threading.Thread(target=GetVersion).start() widget = QtWidgets.QWidget() window.setCentralWidget(widget) mainLayout = QtWidgets.QGridLayout() @@ -1832,8 +1966,8 @@ programManager.addWidget(wineConfig, 3, 0, 1, 1) fontAppStore = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "字体商店")) fontAppStore.clicked.connect(FontAppStore) programManager.addWidget(fontAppStore, 3, 2, 1, 1) -button_r_6 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "安装自定义字体")) -button_r_6.clicked.connect(OpenWineFontPath) +button_r_6 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "RegShot")) +button_r_6.clicked.connect(lambda: RunWineProgram(f"{programPath}/RegShot/regshot.exe")) programManager.addWidget(button_r_6, 3, 4, 1, 1) sparkWineSetting = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "星火wine配置")) sparkWineSetting.clicked.connect(lambda: threading.Thread(target=os.system, args=["/opt/durapps/spark-dwine-helper/spark-dwine-helper-settings/settings.sh"]).start()) @@ -2126,7 +2260,6 @@ hm1_1.triggered.connect(lambda: webbrowser.open_new_tab("https://gitee.com/gfdgd # 窗口设置 window.resize(widget.frameGeometry().width() * 2, widget.frameGeometry().height()) widget.setLayout(mainLayout) -window.setWindowTitle(title) window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg")) widget.show() window.show() diff --git a/deb/opt/apps/deepin-wine-runner/dlls-arm.7z b/deb/opt/apps/deepin-wine-runner/dlls-arm.7z index 55d907a..ee5bc4d 100644 Binary files a/deb/opt/apps/deepin-wine-runner/dlls-arm.7z and b/deb/opt/apps/deepin-wine-runner/dlls-arm.7z differ diff --git a/deb/opt/apps/deepin-wine-runner/information.json b/deb/opt/apps/deepin-wine-runner/information.json index 3e6e3f2..4e5a9a4 100755 --- a/deb/opt/apps/deepin-wine-runner/information.json +++ b/deb/opt/apps/deepin-wine-runner/information.json @@ -1,5 +1,5 @@ { - "Version": "2.2.0-Alpha3", + "Version": "2.2.0", "Thank": [ "感谢 @a2035274 @虚幻的早晨 https://bbs.deepin.org/post/238301", "感谢 @zhangs https://bbs.deepin.org/post/227948", @@ -23,6 +23,10 @@ "感谢 @云的眼泪 @zhengjl 反馈的 2.0.0 发布忘记把安装包传蓝奏云的问题", "感谢 @虚幻的早晨 提出的添加 DXVK、VKD3D 的功能(VKD3D 暂未实现)", "感谢 @以勒 修改 Dll 提取工具提示文本的建议", + "感谢 @历山居士 反馈的获取自动配置容器脚本工具无法正常加载数据的问题", + "感谢 @Nick @奋斗ing 反馈的 2.1.0-2 的快捷方式故障", + "感谢 @俊生鹏程 反馈的 2.1.0-2 及以前版本在鲲鹏运行 wine 错误的问题并积极测试,以及组件安装工具在 arm 架构的异常", + "感谢 @云的眼泪 反馈的 2.1.0-2 更新死循环的问题,可见:https://bbs.deepin.org/post/243241,以及感谢 @神末shenmo @忘记、过去 和 @历山居士 的讨论", "感谢统信在 Wine 生态适配活动中提供的打包脚本", "也感谢 DXVK 的开发者开发了 DXVK 这个程序,项目链接:https://github.com/doitsujin/dxvk", "也感谢 WineHQ 开发团队开发的 WineHQ,项目网址:https://dl.winehq.org/", diff --git a/deb/opt/apps/deepin-wine-runner/package-script.zip b/deb/opt/apps/deepin-wine-runner/package-script.zip index bd1779a..add44e3 100755 Binary files a/deb/opt/apps/deepin-wine-runner/package-script.zip and b/deb/opt/apps/deepin-wine-runner/package-script.zip differ diff --git a/deb/opt/apps/deepin-wine-runner/req/__init__.py b/deb/opt/apps/deepin-wine-runner/req/__init__.py new file mode 100644 index 0000000..37115bd --- /dev/null +++ b/deb/opt/apps/deepin-wine-runner/req/__init__.py @@ -0,0 +1,33 @@ +# 此库用于实现 52 版不连接程序服务器 +import requests + +unConnect = False +with open("/var/lib/dpkg/status", "r") as i: + unConnect = "Package: spark-deepin-wine-runner-52" in open("/var/lib/dpkg/status", "r").read() +if unConnect: + print("52专版,将会无法连接服务器") + +badUrl = [ + "http://120.25.153.144", + "https://304626p927.goho.co", + "https://30x46269h2.goho.co" +] + +class Respon: + text = "" + +def get(url): # -> requests.Response: + if unConnect: + # 筛选 Url,只有特定的 url 才会被拦截 + for i in badUrl: + if i in url: + raise Exception("52专版不支持连接作者服务器") + return requests.get(url) + +def post(url, data): + if unConnect: + # 筛选 Url,只有特定的 url 才会被拦截 + for i in badUrl: + if i in url: + raise Exception("52专版不支持连接作者服务器") + return requests.post(url, data) \ No newline at end of file diff --git a/deb/opt/apps/deepin-wine-runner/req/__pycache__/__init__.cpython-37.pyc b/deb/opt/apps/deepin-wine-runner/req/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000..68a4567 Binary files /dev/null and b/deb/opt/apps/deepin-wine-runner/req/__pycache__/__init__.cpython-37.pyc differ diff --git a/deb/opt/apps/deepin-wine-runner/wine/installwine b/deb/opt/apps/deepin-wine-runner/wine/installwine index 9690184..2dae947 100755 --- a/deb/opt/apps/deepin-wine-runner/wine/installwine +++ b/deb/opt/apps/deepin-wine-runner/wine/installwine @@ -14,7 +14,7 @@ import shutil import sys import json import traceback -import req as requests +import requests from PyQt5 import QtCore, QtGui, QtWidgets # UI 布局(自动生成) diff --git a/information.json b/information.json index d9f1194..4e5a9a4 100755 --- a/information.json +++ b/information.json @@ -25,7 +25,7 @@ "感谢 @以勒 修改 Dll 提取工具提示文本的建议", "感谢 @历山居士 反馈的获取自动配置容器脚本工具无法正常加载数据的问题", "感谢 @Nick @奋斗ing 反馈的 2.1.0-2 的快捷方式故障", - "感谢 @俊生鹏程 反馈的 2.1.0-2 及以前版本在鲲鹏运行 wine 错误的问题并积极测试", + "感谢 @俊生鹏程 反馈的 2.1.0-2 及以前版本在鲲鹏运行 wine 错误的问题并积极测试,以及组件安装工具在 arm 架构的异常", "感谢 @云的眼泪 反馈的 2.1.0-2 更新死循环的问题,可见:https://bbs.deepin.org/post/243241,以及感谢 @神末shenmo @忘记、过去 和 @历山居士 的讨论", "感谢统信在 Wine 生态适配活动中提供的打包脚本", "也感谢 DXVK 的开发者开发了 DXVK 这个程序,项目链接:https://github.com/doitsujin/dxvk", diff --git a/mainwindow.py b/mainwindow.py index 1d67118..f114df5 100755 --- a/mainwindow.py +++ b/mainwindow.py @@ -2,8 +2,8 @@ # 使用系统默认的 python3 运行 ################################################################################################################# # 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢 -# 版本:2.0.0 -# 更新时间:2022年08月12日 +# 版本:2.2.0 +# 更新时间:2022年09月24日 # 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序 # 基于 Python3 的 PyQt5 构建 ################################################################################################################# @@ -1787,14 +1787,16 @@ updateThingsString = '''※1、Dll 提取工具支持 NT 6.X 及以上版本的 ※6、修复 QQ、TIM 安装后无法正常生成快捷方式的问题 ※7、基于生态适配活动的打包器更换为 spark-wine-helper 以及添加自动删除残留脚本 ※8、打包器支持从 deb 文件读取信息 -※9、修复在 UOS 专业版(鲲鹏)无法正常运行的问题 +※9、修复在 UOS 专业版(鲲鹏)无法正常运行的问题以及组件安装功能无法正常执行安装命令的问题 ※10、修复出现星火应用商店和官方应用商店反复提示更新死循环的问题 ※11、新增评分分数预测功能(不准) -12、更新组件安装的离线列表 -13、不再强制依赖深度终端,只做推荐安装 -14、基于生态活动适配脚本的打包器在打包完成后会弹出对话框提示打包完成 -15、优化打包器的 spark wine helper 依赖设置方式 -16、新增 RegShot(注册表比对工具) +※12、更换程序接口 +13、更新组件安装的离线列表 +14、不再强制依赖深度终端,只做推荐安装 +15、基于生态活动适配脚本的打包器在打包完成后会弹出对话框提示打包完成 +16、优化打包器的 spark wine helper 依赖设置方式 +17、新增 RegShot(注册表比对工具) +18、添加 Wine 运行器评分数据的搜索功能 以下更新内容旧版本也适用(只限 2.1.0 及以上版本) ※1、在“安装更多Wine”的Wine安装工具中上新 Wine ※2、云 Dll 工具上新 Dll @@ -1802,7 +1804,7 @@ updateThingsString = '''※1、Dll 提取工具支持 NT 6.X 及以上版本的 ''' for i in information["Thank"]: thankText += f"{i}\n" -updateTime = "2022年09月22日" +updateTime = "2022年09月24日" about = f'''

关于

一个能让Linux用户更加方便运行Windows应用的程序,内置了对wine图形化的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等

同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具,可以做到只需要用户下载系统镜像并点击安装即可,无需顾及虚拟机安装、创建、虚拟机的分区等等

diff --git a/package-script.zip b/package-script.zip index bd1779a..add44e3 100755 Binary files a/package-script.zip and b/package-script.zip differ