Compare commits

..

177 Commits
3.2.0 ... 3.3.0

Author SHA1 Message Date
6d4dc4d7d9 修改README 2023-07-12 12:21:56 +08:00
995aad5273 优化exagear调用 2023-07-12 12:11:38 +08:00
851bf9fcc6 修改版本号 2023-07-12 12:06:53 +08:00
00da7fc010 修改星火应用商店投稿链接 2023-07-12 08:00:47 +08:00
9fd8f5144f 修复小问题 2023-07-11 22:32:28 +08:00
b31c4bf134 支持自定义移除组件 2023-07-11 22:05:06 +08:00
66ace92775 测试 2023-07-11 21:51:01 +08:00
74e82aca00 修改位置 2023-07-11 21:07:59 +08:00
e175a80e57 优化lib挂载方式 2023-07-11 20:58:17 +08:00
27cd65a48f 就备份下 2023-07-11 19:34:41 +08:00
a5cb1f81f8 新增qemu识别 2023-07-11 18:52:18 +08:00
2fb32f84d7 忽略调用UOS Exagear容器 2023-07-11 18:44:27 +08:00
6c6b5ff67e 缩进错误 2023-07-11 18:16:12 +08:00
d3790780dd 支持使用Exagear的容器 2023-07-11 18:10:51 +08:00
00245232bf 优化lib64识别 2023-07-11 17:19:39 +08:00
5cb05e9956 修复在安装exagear的情况下无法正常显示使用运行器带的运行库运行程序的问题 2023-07-11 15:25:29 +08:00
72208fd378 一个遗漏的地方 2023-07-11 15:13:29 +08:00
f63cdff0aa 优化运行库显示方式 2023-07-11 15:08:28 +08:00
6c43ce51b4 修复部分小问题 2023-07-11 10:51:37 +08:00
a85a7aeb0c 新增foxpro安装器 2023-07-11 10:44:35 +08:00
70014b29ef 修复运行库安装闪退问题 2023-07-11 10:23:56 +08:00
808471c330 缺失.start() 2023-07-11 10:08:14 +08:00
cf0be8a2f1 忘记添加事件 2023-07-11 10:01:55 +08:00
fffb56c098 修改依赖 2023-07-11 09:57:16 +08:00
2dab9ef7ce Wine运行库 2023-07-10 22:35:54 +08:00
adf35abfc7 设置安装glibc6:armhf 2023-07-07 15:41:46 +08:00
6ef513d6f5 修改url 2023-07-07 14:51:39 +08:00
550827f97c 添加缺失文件 2023-07-07 13:39:02 +08:00
29f42c95b4 新增exagear识别 2023-07-07 12:31:43 +08:00
ee68f6e26a 更换国内源 2023-07-07 10:59:18 +08:00
aff9996515 Box86/64国内源 2023-07-07 10:33:23 +08:00
075478029d 新增box86安装添加binfmt-support支持 2023-07-06 22:40:18 +08:00
f766e8577c 新增提示 2023-07-06 22:33:40 +08:00
08191c17ed 修改box86/64安装器、新增Wine自建源添加工具、WineHQ添加工具支持选择国内清华大学镜像源/官方源 2023-07-06 22:20:33 +08:00
7665dbe6d9 添加Wine源添加工具(支持Deepin20) 2023-07-06 21:53:13 +08:00
7711c186fd 自动构建 2023-07-06 21:33:19 +08:00
93d41ac3e2 小改README 2023-07-06 21:32:04 +08:00
59ec3d5822 简易打包器支持选择wine版本 2023-07-06 18:44:04 +08:00
a5d1a04573 修改依赖 2023-07-06 15:33:15 +08:00
e434aa9116 优化 2023-07-06 15:31:48 +08:00
dc789132d3 action 2023-07-06 15:30:03 +08:00
9b5beadbcc remove 2023-07-02 18:37:10 +08:00
635171998d 9 2023-07-02 18:19:39 +08:00
b757d09901 debian9 2023-07-02 17:42:40 +08:00
84f0eefc27 将gitlink源改为gitee源 2023-06-29 17:03:46 +08:00
f9cac7619c 修改容器清理脚本 2023-06-29 12:09:23 +08:00
8ae5efe50c arm-daily 2023-06-27 14:31:26 +08:00
58798dd0c6 少了git 2023-06-27 09:06:23 +08:00
fdced1f2c3 添加脚本 2023-06-27 08:15:08 +08:00
aaa5b724e4 优化脚本 2023-06-24 08:45:20 +08:00
bbff9aa85f 新增脚本 2023-06-24 08:39:49 +08:00
4a469f2a82 尝试修复无图标问题 2023-06-23 14:30:41 +08:00
58400ed5ff 完成“安装其他wine版本后 运行器主界面选择wine版本下拉框没有刷新 还要重启一下wine运行器程序,这导致我上面选择的wine容器路径又被重置 重新选择 From Jokul”,https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I7E8Q4 2023-06-22 13:19:55 +08:00
2de9de6633 change? 2023-06-22 12:55:59 +08:00
eba3d9f728 初步? 2023-06-22 12:23:11 +08:00
d8dce3b62c control文件 2023-06-22 12:03:57 +08:00
81f49ae83c 修改为打包xz格式的deb包 2023-06-18 11:18:11 +08:00
160d2ecf9d 优化 2023-06-06 20:37:13 +08:00
d31be64151 修改环境配置包 2023-06-05 20:56:57 +08:00
77ec7ff2bf 修复 2023-06-05 20:34:12 +08:00
6201ec2ed6 修复一些问题 2023-06-05 20:02:01 +08:00
ed344e7a6c aarch64-build 2023-06-05 19:39:15 +08:00
ed61089844 修改以前没改全的东东 2023-06-04 16:40:53 +08:00
e3435ad29a 修复脚本问题 2023-06-04 14:38:20 +08:00
0e705a955a 修复一些错误 2023-06-04 14:31:26 +08:00
77d91f31b2 修复一些问题 2023-06-04 14:29:40 +08:00
c0b7c99c43 7zBuilder 2023-06-04 14:07:06 +08:00
cfbffc1a68 完成 2023-06-04 13:19:25 +08:00
490b6ce28d 修改 2023-06-04 12:10:25 +08:00
75ae205cbf d 2023-06-04 12:05:53 +08:00
ee49a4aec1 修改测试包 2023-06-04 12:00:46 +08:00
364983ac5b aria2 2023-06-04 11:50:02 +08:00
ef375f32b9 修复脚本问题 2023-06-04 11:46:44 +08:00
4ff2d0815d 自动编译脚本? 2023-06-04 11:04:50 +08:00
8df919cadb 更新README 2023-06-03 20:19:40 +08:00
89b812e6a6 更换为xfreerdp 2023-05-28 21:01:35 +08:00
803eb09b5a 初步远程桌面功能? 2023-05-28 20:37:13 +08:00
6397130bb2 修改DLL获取工具的地址 2023-05-28 07:23:18 +08:00
8a4a5f4ee3 修改运行库URL 2023-05-27 22:45:29 +08:00
3529dc1503 修改control 2023-05-27 16:11:26 +08:00
09eb12d750 修复简易打包器Installed-Size格式不规范的问题 2023-05-18 22:33:43 +08:00
bf95889b93 修复control文件以解决冲突的问题 2023-05-17 21:37:37 +08:00
76d3fd556e 更新 2023-05-13 13:15:31 +08:00
45befa142f 修改README 2023-05-12 22:32:59 +08:00
9785ad98fc 修改makefile 2023-05-12 21:47:14 +08:00
201328afea 新增更新内容 2023-05-10 22:25:51 +08:00
4d10470776 修改源 2023-05-09 22:40:26 +08:00
85895b5ae2 择优选择源 2023-05-09 22:36:35 +08:00
b785779d8a 尝试修改url 2023-05-09 22:23:14 +08:00
b1b07d482b 尝试自动选择源 2023-05-09 22:20:48 +08:00
137193c993 修改chroot默认源 2023-05-09 22:12:41 +08:00
9e9f2e2732 修改更新内容 2023-05-08 22:24:32 +08:00
95ddbb7246 修改日期 2023-05-08 21:55:28 +08:00
b1142664ac 修改box86地址 2023-05-08 21:16:09 +08:00
97f85bc640 3.2.2 2023-05-08 20:56:48 +08:00
7d80d24ff6 修改url 2023-05-06 22:47:20 +08:00
64e1c56c8e Merge branch 'main' of https://gitee.com/gfdgd-xi/deep-wine-runner 2023-05-03 20:01:58 +08:00
e9d8bc1ee3 修复选非Gitlink源无法正常安装wine的问题 2023-05-03 20:01:53 +08:00
d10beed003 Change Text 2023-05-03 09:01:13 +00:00
1f4e209f6c repair some VM bug 2023-05-03 08:53:00 +00:00
下雨中gfd
f54e589e3d update README.md.
Signed-off-by: 下雨中gfd <gfdgdxi@foxmail.com>
2023-05-02 14:22:57 +00:00
6dd18d9e8f 更改qemu运行库地址 2023-04-30 22:23:20 +08:00
0360eaf5e0 修改安装器地址 2023-04-30 21:04:13 +08:00
d00baaf2ce 修改msxml安装器 2023-04-30 20:38:21 +08:00
e0a977b7ea 修改字体安装器的默认源 2023-04-30 20:10:35 +08:00
787de003e3 更新地址 2023-04-30 19:57:36 +08:00
b7dfe86710 2023-04-30 14:06:17 +08:00
ee16593767 开始换源 2023-04-30 13:08:25 +08:00
c64b5670d9 支持spark_kill.sh 2023-04-29 23:50:06 +08:00
1bfb04e588 架构错误 2023-04-29 21:33:45 +08:00
03dbe8d6ef 修改版本号 2023-04-29 21:23:47 +08:00
1d2f8a46f2 3.2.1基本完成 2023-04-29 21:05:41 +08:00
d554a8c5da 更新tab页顺序 2023-04-29 20:00:07 +08:00
cbb81c6261 更新内容文本 2023-04-29 17:27:15 +08:00
95e7d42a52 新增 Qemu User 运行 Wine 的帮助 2023-04-29 17:23:12 +08:00
07f0c4eb2d 修改版本号 2023-04-29 17:14:11 +08:00
466a7c5596 更新UI+新增磁盘文件添加/导出/删除功能 2023-04-29 17:09:09 +08:00
5443654791 修复QEMU安装XP无网络的问题 2023-04-29 08:57:35 +08:00
0d3e798644 新增添加Qemu镜像功能 2023-04-28 21:43:14 +08:00
73551e9a12 尽量的移除了 2023-04-24 22:00:17 +08:00
e755cea8f1 change 2023-04-24 21:52:51 +08:00
fb653fe6ec 移除作者信息 2023-04-24 21:49:18 +08:00
044bc860ef 大改 2023-04-24 21:44:14 +08:00
fd8e74d05f change 2023-04-24 21:42:33 +08:00
d2929f83c6 change 2023-04-24 21:40:40 +08:00
53836dac4d 继续移除ID 2023-04-24 21:21:28 +08:00
321a840b7d 新增预编译文件 2023-04-24 19:49:29 +08:00
aaf7ccb793 修改版本号 2023-04-23 22:32:49 +08:00
81ae9751cd 就这样吧 2023-04-23 22:25:39 +08:00
4a693831d1 新增头文件以便能正常编译 2023-04-22 21:30:30 +08:00
4a438a2732 change 2023-04-22 21:25:27 +08:00
2105f6f9fc 新增应用商店截图 2023-04-19 22:13:30 +08:00
bddd39ae7b 新增pkexec配置文件 2023-04-19 22:08:05 +08:00
f913cde28e 修改作者信息 2023-04-19 22:06:45 +08:00
c0eb6410ee 支持设置默认项 2023-04-19 21:55:21 +08:00
20fc7f75f2 新增用于生效QEMU设置的东东 2023-04-19 21:39:44 +08:00
603d7a3827 完成设置保存功能 2023-04-19 21:02:24 +08:00
620cea5136 完善设置功能 2023-04-16 22:06:38 +08:00
db5cee1345 新增配置文件 2023-04-16 11:13:57 +08:00
9132acc0f6 修复ISO问题 2023-04-16 11:11:24 +08:00
03bcb9cb4e 修改URL 2023-04-15 22:42:59 +08:00
25f399b5cc 移除Github Action文件 2023-04-15 20:06:06 +08:00
b1d4710ddd 设置CNAME 2023-04-15 19:59:06 +08:00
eb72ed46a2 新增编译方法 2023-04-15 19:48:57 +08:00
8ede908e73 新增README 2023-04-15 19:48:06 +08:00
9f61096967 新增复制功能 2023-04-15 19:35:17 +08:00
df96b2fd7f 修改对话框类型 2023-04-15 19:28:07 +08:00
6a44167c9a 新增QEMU设置窗口 2023-04-15 19:14:30 +08:00
125aa730c2 移除冗余文件 2023-04-15 18:43:53 +08:00
c61607de13 修改DEBIAN/postinst 2023-04-15 18:39:30 +08:00
0a643cb808 支持打all架构包(也支持选架构) 2023-04-15 18:25:47 +08:00
afb0754795 更新README 2023-04-15 14:01:42 +08:00
2157a4df0d 打包器x86支持spark-wine8 2023-04-12 20:06:27 +08:00
2320317961 运行器支持调用spark-wine8 2023-04-12 19:59:39 +08:00
3b8d32aa69 新增参数 2023-04-11 22:41:28 +08:00
f170dd093f 新增端口映射 2023-04-11 22:11:05 +08:00
fc06f42161 修改文案错误 2023-04-10 22:02:29 +08:00
a471fe43d2 新增README 2023-04-09 22:26:19 +08:00
33d115c836 新增开源许可证 2023-04-09 22:19:59 +08:00
78d359a3db 脚本错误 2023-04-09 21:19:01 +08:00
b7c3ebf024 支持从QEMU开启 2023-04-09 21:12:36 +08:00
a1d61c2b65 新增预编译文件 2023-04-09 19:25:55 +08:00
fa8a2a0685 移除垃圾文件 2023-04-09 19:06:30 +08:00
3d6067d4c4 ui error 2023-04-09 19:05:59 +08:00
266bd65372 优化make clean 2023-04-09 19:02:45 +08:00
a615098594 移除影响编译的属性 2023-04-09 18:58:59 +08:00
0caecc9181 更新默认标签页 2023-04-09 18:57:50 +08:00
baf3fbefdd 新增安装包构建时间 2023-04-09 18:49:39 +08:00
fd78edd2f7 新增安装qemu/vbox功能 2023-04-08 11:57:36 +08:00
002a6e309d 支持qemu+vbox 2023-04-08 11:07:42 +08:00
8a061efa2b 优化wine运行器更新策略 2023-04-05 16:53:09 +08:00
cc9298f6af 优化更新功能 2023-04-05 16:42:53 +08:00
05c297647e 优化wine下载器 2023-04-05 16:10:10 +08:00
ba91aae7e1 添加shell脚本 2023-03-27 21:56:14 +08:00
c3062915f4 ??? 2023-03-26 21:53:03 +08:00
542668311d 修复一些问题 2023-03-19 19:29:04 +08:00
8dc9db1f59 new 2023-03-19 16:38:43 +08:00
388 changed files with 4123 additions and 30061 deletions

30
.github/workflows/auto-building.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: Auto Building Wine Runner
run-name: ${{ github.actor }} Auto Building Wine Runner 🚀
on:
push:
workflow_dispatch:
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
steps:
- name: Building DEB
env:
GUSER: ${{ secrets.GUSER }}
PASSWORD: ${{ secrets.PASSWORD }}
UPLOADURL: ${{ secrets.UPLOADURL }}
run: |
# 配置环境
sudo apt update
sudo apt install git dpkg-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qt5-qmake -y
git clone https://github.com/gfdgd-xi/deep-wine-runner
cd deep-wine-runner
make build
mv spark-deepin-wine-runner.deb ~
- name: upload result
uses: actions/upload-artifact@v1
with:
name: spark-deepin-wine-runner.deb
path: /home/runner/spark-deepin-wine-runner.deb

3
.idea/.gitignore generated vendored
View File

@@ -1,3 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="Python 3.10" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@@ -1,6 +0,0 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

4
.idea/misc.xml generated
View File

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

8
.idea/modules.xml generated
View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/deepin-wine-run.iml" filepath="$PROJECT_DIR$/.idea/deepin-wine-run.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated
View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@@ -1,52 +0,0 @@
version: '1.0'
name: branch-pipeline
displayName: BranchPipeline
stages:
- stage:
name: compile
displayName: 编译
steps:
- step: build@python
name: build_python
displayName: Python 构建
pythonVersion: '3.9'
# 非必填字段开启后表示将构建产物暂存但不会上传到制品库中7天后自动清除
artifacts:
# 构建产物名字作为产物的唯一标识可向下传递支持自定义默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
- name: BUILD_ARTIFACT
# 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
path:
- ./
commands:
- python3 -m pip install --upgrade pip
- pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- pip3 install -r requirements.txt
- python3 ./main.py
- step: publish@general_artifacts
name: publish_general_artifacts
displayName: 上传制品
# 上游构建任务定义的产物名默认BUILD_ARTIFACT
dependArtifact: BUILD_ARTIFACT
# 上传到制品库时的制品命名默认output
artifactName: output
dependsOn: build_python
- stage:
name: release
displayName: 发布
steps:
- step: publish@release_artifacts
name: publish_release_artifacts
displayName: '发布'
# 上游上传制品任务的产出
dependArtifact: output
# 发布制品版本号
version: '1.0.0.0'
# 是否开启版本号自增,默认开启
autoIncrement: true
triggers:
push:
branches:
exclude:
- master
include:
- .*

View File

@@ -1,50 +0,0 @@
version: '1.0'
name: master-pipeline
displayName: MasterPipeline
stages:
- stage:
name: compile
displayName: 编译
steps:
- step: build@python
name: build_python
displayName: Python 构建
pythonVersion: '3.9'
# 非必填字段开启后表示将构建产物暂存但不会上传到制品库中7天后自动清除
artifacts:
# 构建产物名字作为产物的唯一标识可向下传递支持自定义默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
- name: BUILD_ARTIFACT
# 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
path:
- ./
commands:
- python3 -m pip install --upgrade pip
- pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- pip3 install -r requirements.txt
- python3 ./main.py
- step: publish@general_artifacts
name: publish_general_artifacts
displayName: 上传制品
# 上游构建任务定义的产物名默认BUILD_ARTIFACT
dependArtifact: BUILD_ARTIFACT
# 上传到制品库时的制品命名默认output
artifactName: output
dependsOn: build_python
- stage:
name: release
displayName: 发布
steps:
- step: publish@release_artifacts
name: publish_release_artifacts
displayName: '发布'
# 上游上传制品任务的产出
dependArtifact: output
# 发布制品版本号
version: '1.0.0.0'
# 是否开启版本号自增,默认开启
autoIncrement: true
triggers:
push:
branches:
include:
- master

View File

@@ -1,37 +0,0 @@
version: '1.0'
name: pr-pipeline
displayName: PRPipeline
stages:
- stage:
name: compile
displayName: 编译
steps:
- step: build@python
name: build_python
displayName: Python 构建
pythonVersion: '3.9'
# 非必填字段开启后表示将构建产物暂存但不会上传到制品库中7天后自动清除
artifacts:
# 构建产物名字作为产物的唯一标识可向下传递支持自定义默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
- name: BUILD_ARTIFACT
# 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
path:
- ./
commands:
- python3 -m pip install --upgrade pip
- pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- pip3 install -r requirements.txt
- python3 ./main.py
- step: publish@general_artifacts
name: publish_general_artifacts
displayName: 上传制品
# 上游构建任务定义的产物名默认BUILD_ARTIFACT
dependArtifact: BUILD_ARTIFACT
# 上传到制品库时的制品命名默认output
artifactName: output
dependsOn: build_python
triggers:
pr:
branches:
include:
- master

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.4.0
# 更新时间2022年10月15日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序

21
AddWineDebMirrorForDeepin20.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/bash
echo 网址http://deb.wine.wine-runner.gfdgdxi.top/
if [[ ! -f /etc/apt/sources.list.d/gfdgdxi-list-winehq.list ]]; then
echo 未添加源,现在开始添加!
sudo apt update
sudo apt install wget gpg
if [[ -f /tmp/github.sh ]]; then
rm -v /tmp/github.sh
fi
cd /tmp
wget http://deb.wine.wine-runner.gfdgdxi.top/sources/github.sh
bash github.sh
rm github.sh
echo 添加完成,现在安装 Wine
else
echo 已添加源,忽略,现在安装 Wine
sudo apt update
fi
sudo apt install winehq-devel -y
echo 安装完成,按回车键退出!
read

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -11,6 +11,7 @@
# 引入所需的库
#################
import os
import updatekiller
def AddSparkStoreSource():
# Download and install key

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本1.8.0
# 更新时间2022年08月01日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -14,6 +14,7 @@ import os
import sys
import json
import pyquery
import updatekiller
import req as requests
import urllib.parse as parse
@@ -34,7 +35,7 @@ def CleanTerminal():
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("作者gfdgd xi")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装指定应用")
sys.exit()

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.4.0
# 更新时间2022年10月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -15,6 +15,7 @@ import sys
import base64
import json
import traceback
import updatekiller
import urllib.request
import req as requests
import PyQt5.QtWidgets as QtWidgets
@@ -28,9 +29,9 @@ except:
webeng = False
urlSourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/auto", # Gitlink
"http://www.gfdgdxi.top/deep-wine-runner-auto-configuration-script/", # Github
"https://gitee.com/gfdgd-xi/deep-wine-runner-auto-configuration-script/raw/master/", # Gitee 源
"https://gfdgd-xi.github.io/deep-wine-runner-auto-configuration-script/", # Github
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/auto", # Gitlink
"http://gfdgdxi.msns.cn/wine-runner-list/auto/", # 备用源1纯 IPv6 源
"http://gfdgdxi.free.idcfengye.com/deep-wine-runner-auto-configuration-script/", # 备用源2
"http://gfdgdxi.free.idcfengye.com/wine-runner-list/auto/", # 备用源 3
@@ -138,7 +139,7 @@ class InformationWindow():
about = f"<h1>关于“{choose}”的介绍</h1>\n<p>暂无此程序的介绍</p>"
try:
import requests as r
fenlists = requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Jhc2hBcHBGZW4v").decode("utf-8") + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8"), timeout=1000).json()
fenlists = requests.get("http://data.download.gfdgdxi.top/BashAppFen/" + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8"), timeout=1000).json()
tipsInfo = ""
except:
fenlists = [0, 0, 0, 0, 0]
@@ -158,19 +159,19 @@ class InformationWindow():
if maxHead > 5:
for i in range(end):
if webeng:
starHtml += f"<img src='https://code.gitlink.org.cn/gfdgd_xi/deep-wine-runner/raw/branch/main/Icon/BadStar.svg' width=50>\n"
starHtml += f"<img src='http://wine-runner.gfdgdxi.top/BadStar.svg' width=50>\n"
else:
starHtml += f"<img src='{programPath}/Icon/BadStar.svg' width=50>\n"
else:
for i in range(maxHead):
if webeng:
starHtml += f"<img src='https://code.gitlink.org.cn/gfdgd_xi/deep-wine-runner/raw/branch/main/Icon/Star.svg' width=50>\n"
starHtml += f"<img src='http://wine-runner.gfdgdxi.top/Star.svg' width=50>\n"
else:
starHtml += f"<img src='{programPath}/Icon/Star.svg' width=50>\n"
head = maxHead
for i in range(head, end):
if webeng:
starHtml += f"<img src='https://code.gitlink.org.cn/gfdgd_xi/deep-wine-runner/raw/branch/main/Icon/UnStar.svg' width=50>"
starHtml += f"<img src='http://wine-runner.gfdgdxi.top/UnStar.svg' width=50>"
else:
starHtml += f"<img src='{programPath}/Icon/UnStar.svg' width=50>"
about += f"\n<hr/><h1>评分情况</h1>\n<p align='center'>{starHtml}</p>\n<p align='center'>{tipsInfo}</p>"
@@ -252,7 +253,7 @@ class ProgramRunStatusShow():
fileName = i[1]
break
try:
fenlists = requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Jhc2hBcHBGZW4v").decode("utf-8") + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).json()
fenlists = requests.get("http://data.download.gfdgdxi.top/BashAppFen/" + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).json()
tipsInfo = ""
except:
#traceback.print_exc()
@@ -310,7 +311,7 @@ class ProgramRunStatusShow():
else:
# 显示最新的3条评论
try:
all = int(requests.get(f"{base64.b64decode('aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy9iYXNocGlubHVuL3Jhdy9icmFuY2gvbWFzdGVyLw==').decode('utf-8')}{urllib.request.quote(fileName)}/data.txt").text)
all = int(requests.get(f"http://bashpinlun.gfdgdxi.top/{urllib.request.quote(fileName)}/data.txt").text)
now = all - 3
print(all)
if all < 3:
@@ -321,7 +322,7 @@ class ProgramRunStatusShow():
uploadList = []
for i in range(all - 1, start - 1, -1):
print(f"{i + 1} 条评论:")
info = requests.get(f"{base64.b64decode('aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy9iYXNocGlubHVuL3Jhdy9icmFuY2gvbWFzdGVyLw==').decode('utf-8')}{urllib.request.quote(fileName)}/pf-{i}.txt").text.strip()
info = requests.get(f"http://bashpinlun.gfdgdxi.top/{urllib.request.quote(fileName)}/pf-{i}.txt").text.strip()
print(info)
uploadList.append([f"用户{i + 1}", i + 1, info])
Add(uploadList)
@@ -378,7 +379,7 @@ def UpdateFen():
uploadList = []
for i in range(now + 2, now - 1, -1):
print(f"{i + 1} 条评论:")
info = requests.get(f"https://code.gitlink.org.cn/gfdgd-xi/bashpinlun/raw/branch/master/{urllib.request.quote(fileName)}/pf-{i}.txt").text.strip()
info = requests.get(f"http://bashpinlun.gfdgdxi.top/{urllib.request.quote(fileName)}/pf-{i}.txt").text.strip()
print(info)
uploadList.append([f"用户{i + 1}", i + 1, info])
#ProgramRunStatusShow.pingLunLayout.removeItem(ProgramRunStatusShow.pingLunLayout.itemAt(2))
@@ -515,7 +516,7 @@ def readtxt(path):
def ChangeSources():
global urlSources
sources = [ui.actionGitlink, ui.actionGitee, ui.actionGithub, ui.action_IPv6, ui.action_2, ui.action_3, ui.action]
sources = [ui.actionGitee, ui.actionGithub, ui.actionGitlink, ui.action_IPv6, ui.action_2, ui.action_3, ui.action]
for i in range(0, len(sources)):
if sources[i].isChecked():
urlSources = urlSourcesList[i]
@@ -556,9 +557,10 @@ if __name__ == "__main__":
window.show()
#ui.actionGitlink.setExclusive(True)
sourcesGroup = QtWidgets.QActionGroup(window)
sourcesGroup.addAction(ui.actionGitlink)
sourcesGroup.addAction(ui.actionGitee)
sourcesGroup.addAction(ui.actionGithub)
sourcesGroup.addAction(ui.actionGitlink)
sourcesGroup.addAction(ui.action_IPv6)
sourcesGroup.addAction(ui.action_2)
sourcesGroup.addAction(ui.action_3)

View File

@@ -24,8 +24,8 @@ programEnv = [
["PROGRAMPATH", programPath],
["VERSION", version],
["THANK", thankText.replace("\n", "\\n")],
["MAKER", "gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["COPYRIGHT", f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["MAKER", "gfdgd xi"],
["COPYRIGHT", f"©2020~{time.strftime('%Y')} gfdgd xi"],
["PLATFORM", platform.system()],
["DEBUG", str(int("--debug" in sys.argv))]
]
@@ -37,8 +37,8 @@ programEnv = [
["($PROGRAMPATH)", programPath],
["($VERSION)", version],
["($THANK)", thankText],
["($MAKER)", "gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["($MAKER)", "gfdgd xi"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi"],
["?", "0"],
["PLATFORM)", platform.system()],
["DEBUG)", str(int("--debug" in sys.argv))]
@@ -61,7 +61,7 @@ commandEnv += f"PATH=\"{programPath}/command:$PATH\" "
if len(sys.argv) - optionAll < 2:
print("Wine 运行器自动配置文件解析器交互环境(基于 Bash")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print(f"©2020~{time.strftime('%Y')} gfdgd xi")
print("--------------------------------------------------------------")
os.system(f"{commandEnv} bash ")
exit()
@@ -70,6 +70,6 @@ for i in sys.argv[1:]:
command += f"\"{i}\" "
print("Wine 运行器自动配置文件解析器(基于 Bash")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print(f"©2020~{time.strftime('%Y')} gfdgd xi")
print("--------------------------------------------------------------")
os.system(f"{commandEnv} bash {command}")

View File

@@ -13,6 +13,7 @@
import os
import sys
import traceback
import updatekiller
import PyQt5.QtGui as QtGui
import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
#################################################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.5.0
# 更新时间2022年11月18日
# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env deepin-wine-runner-auto-install-bash
# 使用 Wine 运行器的语言解析器
##########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 更新时间2022年11月19日
##########################################################################################
# 用于判断是否为 bash 解释器

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env deepin-wine-runner-auto-install-bash
# 使用 Wine 运行器的语言解析器
##########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 更新时间2022年11月03日
##########################################################################################
# 用于判断是否为 bash 解释器

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env deepin-wine-runner-auto-install-bash
# 使用 Wine 运行器的语言解析器
##########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 更新时间2022年11月19日
##########################################################################################
# 用于判断是否为 bash 解释器

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本3.0.1
# 更新时间2022年10月05日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -12,6 +12,7 @@ import sys
import time
import json
import random
import updatekiller
# 阉割 Android 应用安装功能
#import uengineapi
import platform
@@ -42,8 +43,8 @@ programEnv = [
["($PROGRAMPATH)", programPath],
["($VERSION)", version],
["($THANK)", thankText],
["($MAKER)", "RacoonGX 团队By gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} RacoonGX 团队By gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["($MAKER)", "gfdgd xi"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi"],
["($?)", "0"],
["($PLATFORM)", platform.system()],
["($DEBUG)", "1"]
@@ -300,7 +301,7 @@ class Command():
def Version(self):
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} RacoonGX 团队By gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print(f"©2020~{time.strftime('%Y')} gfdgd xi")
return 0
def Pause(self) -> int:
@@ -649,7 +650,7 @@ if __name__ == "__main__":
if len(sys.argv) - optionAll < 2:
print("Wine 运行器自动配置文件解析器交互环境")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} RacoonGX 团队By gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print(f"©2020~{time.strftime('%Y')} By gfdgd xi")
print("--------------------------------------------------------------")
while True:
commandLine = input(">")
@@ -668,7 +669,7 @@ if __name__ == "__main__":
sys.exit(1)
print("Wine 运行器自动配置文件解析器")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print(f"©2020~{time.strftime('%Y')} gfdgd xi")
print("--------------------------------------------------------------")
com.Run(com.GetCommandList(), programEnv[0][1], programEnv[1][1])
sys.exit(int(programEnv[9][1]))

BIN
Icon/doge.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

47
InstallBox86-cn.sh Executable file
View File

@@ -0,0 +1,47 @@
#!/bin/bash
if [[ `whoami` != root ]]; then
echo 请以 root 权限运行
echo 按任意键退出
read
exit 1
fi
PCArch=`dpkg --print-architecture`
if [[ $PCArch != "aarch64" ]] && [[ $PCArch != "arm64" ]]; then
echo 非 ARM 架构,无法继续
echo 按任意键退出
read
exit 1
fi
which box86
if [[ $? == 0 ]]; then
echo 已安装,结束
echo 按回车键退出
read
exit 1
fi
echo 使用国内源
#sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list
sudo bash -c "echo deb http://jihulab.com/gfdgd-xi/box86-debs/-/raw/master/debian ./ > /etc/apt/sources.list.d/box86.list"
wget -qO- http://jihulab.com/gfdgd-xi/box86-debs/-/raw/master/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box86-debs-archive-keyring.gpg
echo "adding key..."
installBox=box86-generic-arm
if [[ $PCArch == "arm64" ]]; then
sudo bash -c "echo deb http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box64-debs/debian ./ > /etc/apt/sources.list.d/box64.list"
wget -qO- http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box64-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box64-debs-archive-keyring.gpg
installBox="box86-generic-arm box64-generic-arm libc6:armhf"
sudo dpkg --add-architecture armhf
fi
echo " + sudo apt update"
sudo apt update
sudo apt install binfmt-support -y
echo apt 源添加完毕!按回车键继续安装 Box86/Box64若想要停止安装则请按 Ctrl+C 或按终端右上角 ×(叉叉)退出
echo 按回车键后将会自动安装包名为 box86-generic-arm、box64-generic-armbox64 要在 aarch64 系统才可安装)的 Box86/Box64 包(适用于通用 ARM 系统)
echo 其他特殊版本及其包名可见如下链接(如适用于 rk3399 的版本):
echo " - Box64https://github.com/ryanfortner/box64-debs/"
echo " - Box86https://github.com/ryanfortner/box86-debs/"
echo " - Box64国内镜像https://jihulab.com/gfdgd-xi/box64-debs"
echo " - Box64国内镜像https://jihulab.com/gfdgd-xi/box86-debs"
read
sudo apt install -y $installBox
echo 安装完成!按回车键退出
read

View File

@@ -19,17 +19,29 @@ if [[ $? == 0 ]]; then
read
exit 1
fi
#sudo wget https://itai-nelken.github.io/weekly-box86-debs/debian/box86.list -O /etc/apt/sources.list.d/box86.list
echo deb https://code.gitlink.org.cn/gfdgd_xi/weekly-box86-debs/raw/branch/main/debian / > /etc/apt/sources.list.d/box86.list
echo 使用 Github 源
#sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list
sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list
wget -qO- https://ryanfortner.github.io/box86-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box86-debs-archive-keyring.gpg
echo "adding key..."
wget -qO- https://code.gitlink.org.cn/gfdgd_xi/weekly-box86-debs/raw/branch/main/debian/KEY.gpg | sudo apt-key add -
installBox=box86
installBox=box86-generic-arm
if [[ $PCArch == "arm64" ]]; then
installBox="box86 box64"
sudo wget https://ryanfortner.github.io/box64-debs/box64.list -O /etc/apt/sources.list.d/box64.list
wget -qO- https://ryanfortner.github.io/box64-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box64-debs-archive-keyring.gpg
installBox="box86-generic-arm box64-generic-arm"
sudo dpkg --add-architecture armhf
fi
echo " + sudo apt update"
sudo apt update
sudo apt install binfmt-support -y
echo apt 源添加完毕!按回车键继续安装 Box86/Box64若想要停止安装则请按 Ctrl+C 或按终端右上角 ×(叉叉)退出
echo 按回车键后将会自动安装包名为 box86-generic-arm、box64-generic-armbox64 要在 aarch64 系统才可安装)的 Box86/Box64 包(适用于通用 ARM 系统)
echo 其他特殊版本及其包名可见如下链接(如适用于 rk3399 的版本):
echo " - Box64https://github.com/ryanfortner/box64-debs/"
echo " - Box86https://github.com/ryanfortner/box86-debs/"
echo " - Box64国内镜像https://jihulab.com/gfdgd-xi/box64-debs"
echo " - Box64国内镜像https://jihulab.com/gfdgd-xi/box86-debs"
read
sudo apt install -y $installBox
echo 安装完成!按回车键退出
read

View File

@@ -0,0 +1,4 @@
#!/bin/bash
wget -O- https://deepin-wine.i-m.dev/setup.sh | sh
echo 安装完成,按回车键后退出
read

View File

@@ -0,0 +1,14 @@
#!/bin/bash
which git > /dev/null
if [[ $? != 0 ]]; then
sudo apt install git -y
fi
cd /tmp
if [ -d /tmp/deepin-wine-for-ubuntu ]; then
rm -rf /tmp/deepin-wine-for-ubuntu
fi
git clone https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu.git
cd deepin-wine-for-ubuntu
bash install.sh
echo 安装完成,按回车键退出
read

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -13,6 +13,7 @@
import os
import sys
import json
import updatekiller
import traceback
import req as requests
def exit():
@@ -22,6 +23,7 @@ def exit():
sys.exit()
# 获取云列表
sourcesList = [
"http://dll.wine-runner.gfdgdxi.top",
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/dlls",
"http://gfdgdxi.msns.cn/wine-runner-list/dlls"
]
@@ -30,7 +32,8 @@ print("获取列表中……", end="")
try:
lists = json.loads(requests.get(f"{url}/list.json").text)
except:
print("\r列表获取失败!")
print("\r列表获取失败!按回车键退出")
input()
exit()
print("\r列表获取成功!")
@@ -62,7 +65,7 @@ def exit():
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("作者gfdgd xi")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装指定应用")
sys.exit()

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -14,29 +14,70 @@ import os
import sys
import json
import shutil
import updatekiller
import req as requests
homePath = os.path.expanduser('~')
try:
sources = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/fonts/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/fonts/list.json"
sourcesList = [
"http://fonts.wine-runner.gfdgdxi.top/list.json",
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/fonts/list.json"
]
fontList = json.loads(requests.get(sources[0]).text)
change = False
for i in sourcesList:
try:
fontList = json.loads(requests.get(i).text)
change = True
break
except:
pass
if not change:
fontList = json.loads(requests.get(sourcesList[0]).text)
except:
print("使用离线列表")
fontList = [
["fake_simsun.ttc", "https://gitlink.org.cn/api/attachments/392168", "simsun.ttc", "fake_simsun.ttc会替换容器内的宋体且与 deepin 有问题)"],
["simsun.ttc", "https://gitlink.org.cn/api/attachments/392181", "simsun.ttc", "simsun.ttc"],
["simsunb.ttf", "https://gitlink.org.cn/api/attachments/392180", "simsunb.ttf", "simsunb.ttf"],
["msyh.ttc", "https://gitlink.org.cn/api/attachments/392182", "msyh.ttc", "msyh.ttc"],
["msyhl.ttc", "https://gitlink.org.cn/api/attachments/392184", "msyhl.ttc", "msyhl.ttc"],
["msyhbd.ttc", "https://gitlink.org.cn/api/attachments/392183", "msyhbd.ttc", "msyhbd.ttc"]
[
"fake_simsun.ttc",
"http://fonts.wine-runner.gfdgdxi.top/fake_simsun.ttc",
"simsun.ttc",
"fake_simsun.ttc会替换容器内的宋体"
],
[
"simsun.ttc",
"http://fonts.wine-runner.gfdgdxi.top/simsun.ttc",
"simsun.ttc",
"simsun.ttc"
],
[
"simsunb.ttf",
"http://fonts.wine-runner.gfdgdxi.top/simsunb.ttf",
"simsunb.ttf",
"simsunb.ttf"
],
[
"msyh.ttc",
"http://fonts.wine-runner.gfdgdxi.top/msyh.ttc",
"msyh.ttc",
"msyh.ttc"
],
[
"msyhl.ttc",
"http://fonts.wine-runner.gfdgdxi.top/msyhl.ttc",
"msyhl.ttc",
"msyhl.ttc"
],
[
"msyhbd.ttc",
"http://fonts.wine-runner.gfdgdxi.top/msyhbd.ttc",
"msyhbd.ttc",
"msyhbd.ttc"
]
]
def Download(wineBotton: str, id: int) -> int:
return os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/Fonts/' -o '{fontList[id][0]}' \"{fontList[id][1]}\"")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("作者gfdgd xi")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装指定应用")
sys.exit()

105
InstallFoxpro.py Executable file
View File

@@ -0,0 +1,105 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
import sys
import json
import updatekiller
import req as requests
try:
sourcesList = [
"http://foxpro.wine-runner.gfdgdxi.top/list.json",
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/Visual FoxPro/list.json"
]
change = False
for i in sourcesList:
try:
netList = json.loads(requests.get(i).text)
change = True
break
except:
pass
if not change:
netList = json.loads(requests.get(sourcesList[0]).text)
except:
print("使用离线列表")
netList = [
["3.0 Runtime Service Pack 1", "http://foxpro.wine-runner.gfdgdxi.top/VFP3SP1RT.EXE", "VFP3SP1RT.EXE"],
["5.0 Runtime Service Pack 1", "http://foxpro.wine-runner.gfdgdxi.top/VFP5SP1RT.EXE", "VFP5SP1RT.EXE"],
["6.0 Runtime Service Pack 5", "http://foxpro.wine-runner.gfdgdxi.top/VFP6SP5RT.EXE", "VFP6SP5RT.EXE"],
["7.0 Runtime Service Pack 0", "http://foxpro.wine-runner.gfdgdxi.top/VFP7SP0RT.EXE", "VFP7SP0RT.EXE"],
["7.0 Runtime Service Pack 1", "http://foxpro.wine-runner.gfdgdxi.top/VFP7SP1RT.EXE", "VFP7SP1RT.EXE"],
["8.0 Runtime Service Pack 0", "http://foxpro.wine-runner.gfdgdxi.top/VFP8SP0RT.EXE", "VFP8SP0RT.EXE"],
["8.0 Runtime Service Pack 1", "http://foxpro.wine-runner.gfdgdxi.top/VFP8SP1RT.EXE", "VFP8SP1RT.EXE"],
["9.0 Runtime Service Pack 1", "http://foxpro.wine-runner.gfdgdxi.top/VFP9SP1RT.EXE", "VFP9SP1RT.EXE"],
["9.0 Runtime Service Pack 2 with Hotfixes", "http://foxpro.wine-runner.gfdgdxi.top/VFP9SP2RT.EXE", "VFP9SP2RT.EXE"]
]
def Download(wineBotton: str, id: int, wine: str) -> int:
try:
os.remove(f"/tmp/deepin-wine-runner-FoxPro/{netList[id][2]}")
except:
pass
os.system(f"aria2c -x 16 -s 16 -d '/tmp/deepin-wine-runner-FoxPro' -o '{netList[id][2]}' \"{netList[id][1]}\"")
return os.system(f"WINEPREFIX='{wineBotton}' {wine} '/tmp/deepin-wine-runner-FoxPro/{netList[id][2]}'")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装 Visual FoxPro")
sys.exit()
if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
print("您未指定需要安装 Visual FoxPro 的容器和使用的 wine无法继续")
print("参数:")
print("XXX 参数一 参数二 参数三(可略)")
print("参数一为需要安装的容器参数二为需要使用的wine参数三为是否缓存可略三个参数位置不能颠倒")
sys.exit()
homePath = os.path.expanduser('~')
print('''
mmmmmm mmmmm
# mmm m m # "# m mm mmm
#mmmmm #" "# #m# #mmm#" #" " #" "#
# # # m#m # # # #
# "#m#" m" "m # # "#m#"
''')
print("请选择以下的 Visual FoxPro 进行安装(不保证能正常安装运行)")
for i in range(0, len(netList)):
print(f"{i} Visual FoxPro {netList[i][0]}")
while True:
try:
choose = input("请输入要选择的 Visual FoxPro 版本输入“exit”退出").lower()
if choose == "exit":
break
choose = int(choose)
except:
print("输入错误,请重新输入")
continue
if 0 <= choose and choose < len(netList):
break
if choose == "exit":
exit()
print(f"您选择了 Visual FoxPro {netList[choose][0]}")
if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}"):
print("已经缓存,使用本地版本")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
input("安装结束,按回车键退出")
exit()
print("开始下载")
os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/vcpp'")
os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/vcpp' -o '{netList[choose][2]}' \"{netList[choose][1]}\"")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
input("安装结束,按回车键退出")

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -12,11 +12,12 @@
#################
import os
import sys
import updatekiller
import traceback
import pyquery
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("作者gfdgd xi")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装 mono、gecko")
sys.exit()

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -13,27 +13,40 @@
import os
import sys
import json
import updatekiller
import req as requests
try:
sourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/msxml/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/msxml/list.json"
"http://msxml.wine-runner.gfdgdxi.top/list.json",
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/msxml/list.json"
]
msxmlList = json.loads(requests.get(sourcesList[0]).text)
change = False
for i in sourcesList:
try:
msxmlList = json.loads(requests.get(i).text)
change = True
break
except:
pass
if not change:
msxmlList = json.loads(requests.get(sourcesList[0]).text)
except:
print("使用离线列表")
msxmlList = [
["MSXML 4.0 SP2", "https://www.gitlink.org.cn/api/attachments/390679?gfdgd_xi", "msxml6.0.msi"],
["MSXML 4.0 SP3", "https://www.gitlink.org.cn/api/attachments/390678?gfdgd_xi", "msxml4.0SP3.msi"],
["MSXML 6.0", "https://www.gitlink.org.cn/api/attachments/390681?gfdgd_xi", "msxml6_x64.msi"]
["MSXML 4.0 SP2", "http://msxml.wine-runner.gfdgdxi.top/msxml6.0.msi", "msxml6.0.msi"],
["MSXML 4.0 SP3", "http://msxml.wine-runner.gfdgdxi.top/msxml4.0SP3.msi", "msxml4.0SP3.msi"],
["MSXML 6.0", "http://msxml.wine-runner.gfdgdxi.top/msxml6_x64.msi", "msxml6_x64.msi"],
["MSXML 3.0", "http://msxml.wine-runner.gfdgdxi.top/msxml3.msi", "msxml3.msi"]
]
def Download(wineBotton: str, id: int, wine: str):
os.system(f"aria2c -x 16 -s 16 -d \"/tmp/deepin-wine-runner-msxml/\" -o \"{msxmlList[id][2]}\" \"{msxmlList[id][1]}\"")
return os.system(f"WINEPREFIX='{wineBotton}' {wine} msiexec /i \"/tmp/deepin-wine-runner-msxml/{msxmlList[id][2]}\"")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("作者gfdgd xi")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装 MSXML")
sys.exit()

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -13,14 +13,26 @@
import os
import sys
import json
import updatekiller
import req as requests
try:
sourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/net/list.json",
"http://net.wine-runner.gfdgdxi.top/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/net/list.json"
]
netList = json.loads(requests.get(sourcesList[0]).text)
change = False
for i in sourcesList:
try:
netList = json.loads(requests.get(i).text)
change = True
break
except:
pass
if not change:
netList = json.loads(requests.get(sourcesList[0]).text)
except:
print("使用离线列表")
netList = [
["Microsoft® .NET Framework 1.1 版可转散发套件", "https://download.microsoft.com/download/8/2/7/827bb1ef-f5e1-4464-9788-40ef682930fd/dotnetfx.exe"],
["Microsoft .NET Framework 2.0 Service Pack 1 (x86)", "https://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exe"],
@@ -56,7 +68,7 @@ def Download(wineBotton: str, id: int, wine: str):
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("作者gfdgd xi")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装 .net framework")
sys.exit()

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# 使用系统默认的 bash 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.2.0
# 更新时间2022年09月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -17,7 +17,9 @@ echo '" #"# # # #" # #" # #mmmm# # #'
echo ' ## ##" # # # #"""" # # # #'
echo ' # # mm#mm # # "#mm" # # #mm#"'
echo ' # '
echo
echo "WineHQ 官网https://wiki.winehq.org/"
echo 当前使用国内镜像源https://mirrors-i.tuna.tsinghua.edu.cn/help/wine-builds/
ubuntuSource=(
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ jammy main | sudo tee /etc/apt/sources.list.d/winehq.list"
@@ -28,11 +30,11 @@ ubuntuSource=(
debianSource=(
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ buster main | sudo tee /etc/apt/sources.list.d/winehq.list"
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ bullseye main | sudo tee /etc/apt/sources.list.d/winehq.list"
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources"
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ bookworm main | sudo tee /etc/apt/sources.list.d/winehq.list"
)
# 选择发行版
echo "WineHQ 官网https://wiki.winehq.org/"
echo "国内镜像源https://mirrors-i.tuna.tsinghua.edu.cn/help/wine-builds/"
#echo "WineHQ 官网https://wiki.winehq.org/"
#echo "国内镜像源https://mirrors-i.tuna.tsinghua.edu.cn/help/wine-builds/"
echo
echo "选择发行版:"
echo "0. Debian"
@@ -43,7 +45,7 @@ echo "选择系统版本"
if [ $system = "0" ]; then
echo "0. Debian 10 (Buster)"
echo "1. Debian 11 (Bullseye)"
echo "2. Debian Testing (Bookworm)"
echo "2. Debian 12 (Bookworm)"
fi
if [ $system = "1" ]; then
echo "0. Ubuntu 22.04"

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# 使用系统默认的 bash 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.2.0
# 更新时间2022年09月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -17,17 +17,19 @@ echo '" #"# # # #" # #" # #mmmm# # #'
echo ' ## ##" # # # #"""" # # # #'
echo ' # # mm#mm # # "#mm" # # #mm#"'
echo ' # '
echo
echo "WineHQ 官网https://wiki.winehq.org/"
echo 当前不使用国内镜像源
ubuntuSource=(
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ jammy main | sudo tee /etc/apt/sources.list.d/winehq.list"
"sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources"
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/impish/winehq-impish.sources"
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ focal main | sudo tee /etc/apt/sources.list.d/winehq.list"
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ bionic main | sudo tee /etc/apt/sources.list.d/winehq.list"
"sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/focal/winehq-focal.sources"
"sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/bionic/winehq-bionic.sources"
)
debianSource=(
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ buster main | sudo tee /etc/apt/sources.list.d/winehq.list"
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ bullseye main | sudo tee /etc/apt/sources.list.d/winehq.list"
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/buster/winehq-buster.sources"
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bullseye/winehq-bullseye.sources"
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources"
)
# 选择发行版
@@ -43,7 +45,7 @@ echo "选择系统版本"
if [ $system = "0" ]; then
echo "0. Debian 10 (Buster)"
echo "1. Debian 11 (Bullseye)"
echo "2. Debian Testing (Bookworm)"
echo "2. Debian 12 (Bookworm)"
fi
if [ $system = "1" ]; then
echo "0. Ubuntu 22.04"
@@ -61,7 +63,9 @@ read programVersion
# 初步配置
sudo apt-key del "D43F 6401 4536 9C51 D786 DDEA 76F1 A20F F987 672F"
sudo dpkg --add-architecture i386
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
#sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
# 检测 apt-fast 或 ss-apt-fast 是否存在
apt="apt"
which apt-fast > /dev/null

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -13,14 +13,26 @@
import os
import sys
import json
import updatekiller
import req as requests
try:
sourcesList = [
"http://other.wine-runner.gfdgdxi.top/list.json",
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/other/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/other/list.json"
]
msxmlList = json.loads(requests.get(sourcesList[0]).text)
change = False
for i in sourcesList:
try:
msxmlList = json.loads(requests.get(i).text)
change = True
break
except:
pass
if not change:
msxmlList = json.loads(requests.get(sourcesList[0]).text)
except:
print("使用离线列表")
msxmlList = [
["Windows Script 5.7 for Windows XP", "https://download.microsoft.com/download/f/f/e/ffea3abf-b55f-4924-b5a5-bde0805ad67c/scripten.exe", "exe", "scripten.exe"],
["Windows Management Instrumentation 1.50.1131", "https://www.gitlink.org.cn/api/attachments/390680", "exe", "WMITools.exe"]
@@ -38,7 +50,7 @@ def Download(wineBotton: str, id: int, wine: str) -> int:
return os.system(f"WINEPREFIX='{wineBotton}' {wine} msiexec /i '/tmp/deepin-wine-runner-other/{msxmlList[id][3]}'")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("作者gfdgd xi")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装运行库")
sys.exit()
@@ -65,6 +77,8 @@ if __name__ == "__main__":
while True:
try:
choose = input("请输入要选择要安装的应用输入“exit”退出").lower()
if choose == "exit":
break
choose = int(choose)
except:
print("输入错误,请重新输入")

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# 判断是否有安装 Qemu User
which qemu-i386 > /dev/null
if [[ !$? ]]; then
if [[ $? == 0 ]]; then
echo 您已安装过 Qemu User按回车键后退出
read
exit 1

View File

@@ -1,8 +1,8 @@
#!/bin/bash
arch=amd64
libPath=/usr/lib/x86_64-linux-gnu/
version=1.0.0
url="https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/$arch-runtime-for-qemu_${version}_all.deb"
version=1.0.1
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
fileName=`basename $url`
if [[ -d $libPath ]]; then
@@ -16,5 +16,6 @@ fi
aria2c -x 16 -s 16 -c $url -d /tmp -o $fileName
sudo apt update
sudo dpkg -i /tmp/$fileName
sudo apt install qemu-user qemu-user-static binfmt-support -y
echo 安装完成,按回车键退出
read

View File

@@ -2,7 +2,7 @@
arch=arm64
libPath=/usr/lib/aarch64-linux-gnu
version=1.0.0
url="https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/$arch-runtime-for-qemu_${version}_all.deb"
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
fileName=`basename $url`
if [[ -d $libPath ]]; then
@@ -15,6 +15,7 @@ if [[ -f /tmp/$fileName ]]; then
fi
aria2c -x 16 -s 16 -c $url -d /tmp -o $fileName
sudo apt update
sudo apt install qemu-user qemu-user-static binfmt-support -y
sudo dpkg -i /tmp/$fileName
echo 安装完成,按回车键退出
read

View File

@@ -2,7 +2,7 @@
arch=armhf
libPath=/usr/lib/arm-linux-gnueabihf/
version=1.0.0
url="https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/$arch-runtime-for-qemu_${version}_all.deb"
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
fileName=`basename $url`
if [[ -d $libPath ]]; then
@@ -15,6 +15,7 @@ if [[ -f /tmp/$fileName ]]; then
fi
aria2c -x 16 -s 16 -c $url -d /tmp -o $fileName
sudo apt update
sudo apt install qemu-user qemu-user-static binfmt-support -y
sudo dpkg -i /tmp/$fileName
echo 安装完成,按回车键退出
read

View File

@@ -2,7 +2,7 @@
arch=i386
libPath=/usr/lib/i386-linux-gnu/
version=1.0.0
url="https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/$arch-runtime-for-qemu_${version}_all.deb"
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
fileName=`basename $url`
if [[ -d $libPath ]]; then
@@ -15,6 +15,7 @@ if [[ -f /tmp/$fileName ]]; then
fi
aria2c -x 16 -s 16 -c $url -d /tmp -o $fileName
sudo apt update
sudo apt install qemu-user qemu-user-static binfmt-support -y
sudo dpkg -i /tmp/$fileName
echo 安装完成,按回车键退出
read

View File

@@ -2,7 +2,7 @@
arch=mips64el
libPath=/usr/lib/mips64el-linux-gnuabi64
version=1.0.0
url="https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/$arch-runtime-for-qemu_${version}_all.deb"
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
fileName=`basename $url`
if [[ -d $libPath ]]; then
@@ -15,6 +15,7 @@ if [[ -f /tmp/$fileName ]]; then
fi
aria2c -x 16 -s 16 -c $url -d /tmp -o $fileName
sudo apt update
sudo apt install qemu-user qemu-user-static binfmt-support -y
sudo dpkg -i /tmp/$fileName
echo 安装完成,按回车键退出
read

View File

@@ -2,7 +2,7 @@
arch=ppc64el
libPath=/usr/lib/powerpc64le-linux-gnu/
version=1.0.0
url="https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/$arch-runtime-for-qemu_${version}_all.deb"
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
fileName=`basename $url`
if [[ -d $libPath ]]; then
@@ -15,6 +15,7 @@ if [[ -f /tmp/$fileName ]]; then
fi
aria2c -x 16 -s 16 -c $url -d /tmp -o $fileName
sudo apt update
sudo apt install qemu-user qemu-user-static binfmt-support -y
sudo dpkg -i /tmp/$fileName
echo 安装完成,按回车键退出
read

View File

@@ -2,7 +2,7 @@
arch=riscv64
libPath=/usr/lib/riscv64-linux-gnu/
version=1.0.0
url="https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/$arch-runtime-for-qemu_${version}_all.deb"
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
fileName=`basename $url`
if [[ -d $libPath ]]; then

View File

@@ -2,7 +2,7 @@
arch=s390x
libPath=/usr/lib/s390x-linux-gnu/
version=1.0.0
url="https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/$arch-runtime-for-qemu_${version}_all.deb"
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
fileName=`basename $url`
if [[ -d $libPath ]]; then

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年10月05日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -13,20 +13,31 @@
import os
import sys
import json
import updatekiller
import req as requests
try:
sourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/vb/list.json"
"http://vb.wine-runner.gfdgdxi.top/list.json",
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/list.json"
]
netList = json.loads(requests.get().text)
change = False
for i in sourcesList:
try:
netList = json.loads(requests.get(i).text)
change = True
break
except:
pass
if not change:
netList = json.loads(requests.get(sourcesList[0]).text)
except:
print("使用离线列表")
netList = [
["Visual Basic 1(DOS application)", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/vbrun100.exe", "vbrun100.exe"],
["Visual Basic 2(DOS application)", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/vbrun200.exe", "vbrun200.exe"],
["Visual Basic 3", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/vb3run.exe", "vb3run.exe"],
["Visual Basic 4", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/vb4run.exe", "vb4run.exe"],
["Visual Basic 6", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/vbrun60sp4.exe", "vbrun60sp4.exe"]
["Visual Basic 1", "http://vb.wine-runner.gfdgdxi.top/vbrun100.exe", "vbrun100.exe"],
["Visual Basic 2", "http://vb.wine-runner.gfdgdxi.top/vbrun200.exe", "vbrun200.exe"],
["Visual Basic 3", "http://vb.wine-runner.gfdgdxi.top/vb3run.exe", "vb3run.exe"],
["Visual Basic 4", "http://vb.wine-runner.gfdgdxi.top/vb4run.exe", "vb4run.exe"],
["Visual Basic 6", "http://vb.wine-runner.gfdgdxi.top/vbrun60sp4.exe", "vbrun60sp4.exe"]
]
def Download(wineBotton: str, id: int, wine: str) -> int:
try:
@@ -38,7 +49,7 @@ def Download(wineBotton: str, id: int, wine: str) -> int:
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("作者gfdgd xi")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装 Visual Basic Runtime")
sys.exit()

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -13,16 +13,27 @@
import os
import sys
import json
import updatekiller
import req as requests
try:
sourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/vscpp/list.json"
"http://vcpp.wine-runner.gfdgdxi.top/list.json",
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/list.json"
]
netList = json.loads(requests.get(sourcesList[0]).text)
change = False
for i in sourcesList:
try:
netList = json.loads(requests.get(i).text)
change = True
break
except:
pass
if not change:
netList = json.loads(requests.get(sourcesList[0]).text)
except:
print("使用离线列表")
netList = [
["VC6 运行库", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/VC6RedistSetup_deu.exe", "VC6RedistSetup_deu.exe"],
["VC6 运行库", "http://vcpp.wine-runner.gfdgdxi.top/VC6RedistSetup_deu.exe", "VC6RedistSetup_deu.exe"],
["2005 Service Pack 1 Redistributable Package MFC 安全更新", "https://download.microsoft.com/download/4/A/2/4A22001F-FA3B-4C13-BF4E-42EC249D51C4/vcredist_x86.EXE", "vcredist05_x86.exe"],
["2008 (VC++ 9.0) SP1 (不再支持) X86", "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe", "vcredist08_x86.exe"],
["2008 (VC++ 9.0) SP1 (不再支持) X64", "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe", "vcredist08_x86.exe"],
@@ -46,7 +57,7 @@ def Download(wineBotton: str, id: int, wine: str) -> int:
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("作者gfdgd xi")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装 Visual Studio C++")
sys.exit()

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.1.0
# 更新时间2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -11,6 +11,7 @@
# 引入所需的库
#################
import os
import updatekiller
def InstallWithDeepinSource(program):
os.system(f"sudo cp '{programPath}/deepin.list' /etc/apt/sources.list.d/deepin20-withwinerunner.list")

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.5.0
# 更新时间2022年11月15日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
@@ -12,6 +12,7 @@
#################
import os
import webbrowser
import updatekiller
def YesOrNo():
if input().replace(" ", "").upper() == "N":

View File

@@ -3,14 +3,19 @@ build:
clean:
python3 RemovePycacheFile.py
cd VM-source ; make clean
rm VM-source/VirtualMachine -rfv
rm -rfv VM-source/.qmake.stash
package:
#cd VM-source && qmake
#cd VM-source && make
#cd wine && make
make clean -j$(nproc)
mkdir deb/opt/apps/deepin-wine-runner/LANG -pv
cp -rv helperset deb/opt/apps/deepin-wine-runner/
cp -rv VM-source/VirtualMachine VM
#cp -rv VM-source/VirtualMachine VM
cp -rv VM-source/deepin-wine-runner.svg VM
cp -rv VM-source/Windows7X64Auto.iso VM
cp -rv VM-source/Windows7X86Auto.iso VM
@@ -18,6 +23,7 @@ package:
cp -rv Test/ deb/opt/apps/deepin-wine-runner/
cp -rv information.json package-script
zip -v -q -r package-script.zip package-script
cp -rv InstallBox86-cn.sh deb/opt/apps/deepin-wine-runner/
cp -rv VM deb/opt/apps/deepin-wine-runner
cp -rv 2048 deb/opt/apps/deepin-wine-runner/
cp -rv Download.py deb/opt/apps/deepin-wine-runner/
@@ -26,6 +32,9 @@ package:
cp -rv QemuDownload.py deb/opt/apps/deepin-wine-runner
cp -rv QemuRun.py deb/opt/apps/deepin-wine-runner
cp -rv kill.sh deb/opt/apps/deepin-wine-runner
cp -rv updatekiller.py deb/opt/apps/deepin-wine-runner
cp -rv AddWineDebMirrorForDeepin20.sh deb/opt/apps/deepin-wine-runner
cp -rv InstallNewWineHQOrg.sh deb/opt/apps/deepin-wine-runner
cp -rv InstallWineOnDeepin23Alpha.py deb/opt/apps/deepin-wine-runner
cp -rv wrestool deb/opt/apps/deepin-wine-runner
cp -rv Mount.sh deb/opt/apps/deepin-wine-runner
@@ -35,10 +44,14 @@ package:
cp -rv IconList.json deb/opt/apps/deepin-wine-runner
cp -rv GetEXEVersion.exe deb/opt/apps/deepin-wine-runner
cp -rv MountWithoutHome.sh deb/opt/apps/deepin-wine-runner
cp -rv RunCommandWithTerminal.py deb/opt/apps/deepin-wine-runner
cp -rv QemuSystemInstall.sh deb/opt/apps/deepin-wine-runner
echo "[]" > deb/opt/apps/deepin-wine-runner/wine/winelist.json
rm -rfv deb/opt/apps/deepin-wine-runner/wine/winelist.json
cp -rv req deb/opt/apps/deepin-wine-runner
cp -rv pardus-chroot deb/opt/apps/deepin-wine-runner
cp -rv WineLib deb/opt/apps/deepin-wine-runner
cp -rv InstallFoxpro.py deb/opt/apps/deepin-wine-runner
cp -rv BuildDesktop.py deb/opt/apps/deepin-wine-runner
cp -rv ChangePassword.sh deb/opt/apps/deepin-wine-runner
cp -rv trans deb/opt/apps/deepin-wine-runner
@@ -100,8 +113,18 @@ package:
cp -rv Model deb/opt/apps/deepin-wine-runner
cp -rv API deb/opt/apps/deepin-wine-runner
cp -rv key deb/opt/apps/deepin-wine-runner
cp -rv InstallQemuUser.sh deb/opt/apps/deepin-wine-runner
cp -rv RemoveQemuUser.sh deb/opt/apps/deepin-wine-runner
cp -rv InstallBox86.sh deb/opt/apps/deepin-wine-runner
cp -rv InstallRuntime deb/opt/apps/deepin-wine-runner
mkdir -pv deb/opt/apps/deepin-wine-runner/entries/
cp -rv deb/usr/share/applications deb/opt/apps/deepin-wine-runner/entries/applications
python3 UpdateTime.py
python3 RemovePycacheFile.py
sudo rm -rfv /tmp/spark-deepin-wine-runner-builder/
cp -rv deb /tmp/spark-deepin-wine-runner-builder
rm -rfv deb/opt/apps/deepin-wine-runner/*
rm -rfv package-script.zip
mkdir -pv /tmp/spark-deepin-wine-runner-builder/usr/bin
ln -s /opt/apps/deepin-wine-runner/deepin-wine-packager.py /tmp/spark-deepin-wine-runner-builder/usr/bin/deepin-wine-package-builder
ln -s /opt/apps/deepin-wine-runner/deepin-wine-easy-packager.py /tmp/spark-deepin-wine-runner-builder/usr/bin/deepin-wine-packager-easy-builder
@@ -125,7 +148,7 @@ package:
sudo chown -R root:root /tmp/spark-deepin-wine-runner-builder
dpkg -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner.deb
dpkg-deb -Z xz -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner.deb
sudo rm -rfv /tmp/spark-deepin-wine-runner-builder
@@ -134,9 +157,10 @@ install:
sudo apt update ; true
#sudo dpkg -i spark-deepin-wine-runner.deb
sudo apt reinstall ./spark-deepin-wine-runner.deb -y --allow-downgrades
rm spark-deepin-wine-runner.deb -vf
remove:
sudo apt purge spark-deepin-wine-runner
sudo apt purge spark-deepin-wine-runner -y
run:
python3 mainwindow.py

View File

@@ -1,3 +1,4 @@
#!/usr/bin/env python3
import os
import sys
import PyQt5.QtWidgets as QtWidgets

View File

@@ -0,0 +1,10 @@
Package: @@PACKAGE@@
Version: @@VERSION@@
Architecture: @@ARCH@@
Maintainer: @@MAKER@@
Depends: @@DEPENDS@@
Section: non-free/otherosfs
Priority: optional
Multi-Arch: foreign
Installed-Size: @@SIZE@@
Description: @@DESCRIPTION@@

View File

@@ -0,0 +1,14 @@
[Desktop Entry]
Categories=;
Comment=@@NAME@@
Encoding=UTF-8
Exec="/opt/apps/@@PACKAGE@@/files/run.sh" --uri
GenericName=@@NAME@@
Icon=@@ICONLIST@@
MimeType=@@MIMETYPE@@
Name=@@NAME@@.desktop
StartupNotify=false
Terminal=false
Type=Application
X-Created-By=
X-Deepin-Vendor=user-custom

View File

@@ -0,0 +1,113 @@
#!/bin/sh
# Copyright (C) 2016 Deepin, Inc.
#
# Author: Li LongYu <lilongyu@linuxdeepin.com>
# Peng Hao <penghao@linuxdeepin.com>
#
#
# Copyright (C) 2022 The Spark Project
#
#
# Modifier shenmo <shenmo@spark-app.store>
#
#
#
#######################函数段。下文调用的额外功能会在此处声明
Get_Dist_Name()
{{
if grep -Eqii "Deepin" /etc/issue || grep -Eq "Deepin" /etc/*-release; then
DISTRO='Deepin'
elif grep -Eqi "UnionTech" /etc/issue || grep -Eq "UnionTech" /etc/*-release; then
DISTRO='UniontechOS'
else
DISTRO='OtherOS'
fi
}}
####获得发行版名称
#########################预设值段
version_gt() { test "$(echo "$@" | tr " " "
" | sort -V | head -n 1)" != "$1"; }
####用于比较版本?未实装
BOTTLENAME="@@@BOTTLENAME@@@"
APPVER="@@@APPVER@@@"
EXEC_PATH="@@@EXEC_PATH@@@"
##### 软件在wine中的启动路径
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
export MIME_TYPE=""
#####没什么用
export DEB_PACKAGE_NAME="@@@DEB_PACKAGE_NAME@@@"
####这里写包名才能在启动的时候正确找到files.7z,似乎也和杀残留进程有关
export APPRUN_CMD="@@@APPRUN_CMD@@@"
#####wine启动指令建议
EXPORT_ENVS=""
export SPECIFY_SHELL_DIR=`dirname $START_SHELL_PATH`
ARCHIVE_FILE_DIR="/opt/apps/$DEB_PACKAGE_NAME/files"
export WINEDLLPATH=/opt/$APPRUN_CMD/lib:/opt/$APPRUN_CMD/lib64
export WINEPREDLL="$ARCHIVE_FILE_DIR/dlls"
DISABLE_ATTACH_FILE_DIALOG=""
##默认为空。若为1则不使用系统自带的文件选择而是使用wine的
##对于deepin/UOS大部分的应用都不需要使用wine的如果有需求比如wine应用选择的限定种类文件系统的文管不支持
##请填1。
##注意因为非DDE的环境不确定所以默认会在非Deepin/UOS发行版上禁用这个功能。如果你确认在适配的发行版上可以正常启动请注释或者删除下面这段
##############<<<<<<<<<禁用文件选择工具开始
Get_Dist_Name
#此功能实现参见结尾函数段
if [ "$DISTRO" != "Deepin" ] && [ "$DISTRO" != "UniontechOS" ];then
DISABLE_ATTACH_FILE_DIALOG="1"
echo "非deepin/UOS默认关闭系统自带的文件选择工具使用Wine的"
echo "如果你想改变这个行为,请到/opt/apps/$DEB_PACKAGE_NAME/files/$0处修改"
echo "To打包者如果你要打开自带请注意在适配的发行版上进行测试"
echo "To用户打包者没有打开这个功能这证明启用这个功能可能造成运行问题。如果你要修改这个行为请确保你有一定的动手能力"
fi
##############>>>>>>>>>禁用文件选择工具结束
##############<<<<<<<<<屏蔽mono和gecko安装器开始
##默认屏蔽mono和gecko安装器
{['''#if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then
#export WINEDLLOVERRIDES="mscoree,mshtml="
#echo "为了降低打包体积默认关闭gecko和momo如有需要注释此行仅对spark-wine7-devel有效"
#fi''', '''if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then
export WINEDLLOVERRIDES="mscoree,mshtml="
echo "为了降低打包体积默认关闭gecko和momo如有需要注释此行仅对spark-wine7-devel有效"
fi'''][int(disabledMono.isChecked())]}
##############>>>>>>>>>屏蔽mono和gecko安装器结束
#########################执行段
if [ -z "$DISABLE_ATTACH_FILE_DIALOG" ];then
export ATTACH_FILE_DIALOG=1
fi
if [ -n "$EXPORT_ENVS" ];then
export $EXPORT_ENVS
fi
if [ -n "$EXEC_PATH" ];then
if [ -z "${{EXEC_PATH##*.lnk*}}" ];then
$START_SHELL_PATH $BOTTLENAME $APPVER "C:/windows/command/start.exe" "/Unix" "$EXEC_PATH" "$@"
else
$START_SHELL_PATH $BOTTLENAME $APPVER "$EXEC_PATH" "$@"
fi
else
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
fi

13
PackageConfig/list.json Normal file
View File

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

View File

@@ -3,6 +3,7 @@ import os
import sys
import base64
import traceback
import updatekiller
import req as requests
import PyQt5.QtGui as QtGui
import PyQt5.QtCore as QtCore
@@ -14,7 +15,7 @@ class ProgramRunStatusShow():
try:
fenlists = []
for i in range(6):
fenlists.append(int(requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Zlbi9GZW4=").decode("utf-8") + f"{i}.txt").text))
fenlists.append(int(requests.get("http://data.download.gfdgdxi.top/Fen/Fen" + f"{i}.txt").text))
tipsInfo = ""
except:
traceback.print_exc()

View File

@@ -13,6 +13,7 @@ import os
import shutil
import random
import sys
import updatekiller
import json
import traceback
import requests
@@ -91,7 +92,7 @@ class Ui_MainWindow(object):
self.menu = MainWindow.menuBar()
self.changeSources = self.menu.addMenu(_translate("MainWindow", "更换源"))
self.gitlinkAction = QtWidgets.QAction(_translate("MainWindow", "Gitlink 源(推荐)"))
self.gitlinkAction = QtWidgets.QAction(_translate("MainWindow", "Github 源(推荐)"))
self.ipv6Action = QtWidgets.QAction(_translate("MainWindow", "备用源(只支持 IPv6 用户)"))
self.localAction = QtWidgets.QAction(_translate("MainWindow", "本地测试源127.0.0.1"))
self.changeSources.addAction(self.gitlinkAction)
@@ -323,7 +324,10 @@ def on_addButton_clicked():
# ui.deleteZip.setChecked(False)
# ui.unzip.setChecked(False)
arch = internetJsonList[choose][2]
downloadUrl = f"{internetWineSource}/{arch}/{downloadName}"
if "://" in downloadName:
downloadUrl = downloadName
else:
downloadUrl = f"{internetWineSource}/{arch}/{downloadName}"
dialog = QtWidgets.QProgressDialog()
cancel = QtWidgets.QPushButton("取消")
cancel.setDisabled(True)
@@ -392,7 +396,7 @@ if __name__ == "__main__":
localJsonList = []
internetJsonList = []
internetWineSourceList = [
"https://code.gitlink.org.cn/gfdgd_xi/deepin-wine-runner-ubuntu-image/raw/branch/master/Sandbox",
"http://chroot.gfdgdxi.top",
"http://gfdgdxi.msns.cn/deepin-wine-runner-ubuntu-image/Sandbox", # 备用源,纯 IPv6 源
"http://127.0.0.1/deepin-wine-runner-ubuntu-image/Sandbox/" # 本地测试源
]

View File

@@ -2,6 +2,7 @@
import os
import sys
import getpass
import updatekiller
import PyQt5.QtWidgets as QtWidgets
if __name__ == "__main__":

4
QemuSystemInstall.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
pkexec apt install qemu-system -y
echo 安装完成!按回车键退出
read

View File

@@ -1,17 +1,17 @@
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
<h1 align="center">Wine 运行器 3.2.0</h1>
<h1 align="center">Wine 运行器 3.3.0</h1>
<hr>
## 介绍
Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。
它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具可以做到只需下载系统镜像并点击安装即可无需考虑虚拟机的安装、创建、分区等操作。
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具可以做到只需下载系统镜像并点击安装即可无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低)
此外它还简化了如下命令让你可以更简便地使用Wine
```bash
env WINEPREFIX=容器路径 winewine的路径 可执行文件路径
```
让你可以简易方便的使用 wine
是使用 Python3 的 PyQt5 构建的
测试平台deepin 20.8UOS 家庭版 21.3.1Ubuntu 22.04Ubuntu 20.04UOS 专业版 1050openkylin
测试平台deepin 20.8UOS 家庭版 22Ubuntu 22.04Ubuntu 20.04Ubuntu 23.04UOS 专业版 1050openkylincuteosyoyo os
![截图_选择区域_20221002221112.png](https://storage.deepin.org/thread/202210022215217037_截图_选择区域_20221002221112.png)
而打包器可以方便的把您的 wine 容器打包成 deb 包供他人使用,程序创建的 deb 构建临时文件夹目录树如下:
```bash
@@ -44,11 +44,14 @@ env WINEPREFIX=容器路径 winewine的路径 可执行文件路径
理论上支持全架构,如果 Python 能运行的话
非 X86 架构会利用到 `box86``exagear``qemu` 等技术
## Wine 运行器自动构建Newest
此只供尝鲜不保证能用https://github.com/gfdgd-xi/deep-wine-runner/actions/workflows/auto-building.yml
## 目前实现功能(部分)
1. 用 Wine 运行 EXE
2. 支持下载/安装 Wine
3. 支持下载定制好的 Chroot 容器并使用 Qemu 调用运行
4. 支持**半自动**安装 Windows 7 镜像至 VirtualBox(只限 x86_64
4. 支持**半自动**安装 Windows 7 镜像至 VirtualBox/Qemu
5. 支持打包 Wine 应用(简易打包器/基于生态适配脚本的打包器/高级打包器)
6. 检测容器缺失 DLL 并下载
7. 支持在线/本地拉取 Wine 容器配置方案并部署(初步应用商店)
@@ -61,6 +64,20 @@ env WINEPREFIX=容器路径 winewine的路径 可执行文件路径
14. 支持下载适配常用字体
15. 支持终止指定容器运行的所有程序
## 上架到的应用商店
> 可以从下列应用商店获取 Wine 运行器
### Deepin/UOS 应用商店
![图片.png](https://storage.deepin.org/thread/202304192211278050_图片.png)
### 星火应用商店
![图片.png](https://storage.deepin.org/thread/202304192212308212_图片.png)
### 龙芯应用合作社
![图片.png](https://storage.deepin.org/thread/20230603201852396_图片.png)
## 分支介绍
### main 分支
主分支,稳定分支
@@ -119,6 +136,49 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
![image.png](https://storage.deepin.org/thread/202207190822204627_image.png)
## 更新日志
### 3.3.02023年07月12日
**※1、简易打包器支持选择 Wine 版本以及修改打包生成的 deb 包的架构为 all**
**※2、修改容器自动配置脚本的 Gitlink 源为 Gitee 源**
**※3、在安装更多 Wine 处安装 Wine 后主窗口 Wine 版本下拉框自动更新**
**※4、设置打包器在 Ubuntu 依旧打包 xz 格式的 deb 包**
**※5、修复 Wine 简易打包器 control 文件 Installed-Size 格式不规范的问题**
**※6、更换 Box86 源并支持安装 Box64如果为 aarch64 架构)**
**※7、新增 Wine 自建源(支持 Debian10、Deepin20**
**※8、修改 WineHQ 安装器使其支持选择国内清华大学镜像源或 WineHQ 官方源**
**※9、新增 Visual FoxPro 安装器**
**※10、新增安装局部运行库以解决部分低版本系统运行高版本 Wine 的问题且不与其他运行库和兼容层冲突**
**※11、支持调用原版的 Exagear 以及 Qemu Useri386、x86_64 运行 Wine**
12、新增自动构建https://github.com/gfdgd-xi/deep-wine-runner/actions/workflows/auto-building.yml只供尝鲜
13、新增 Wine 日构建(在“安装更多 Wine”处可以获取目前有 i386、amd64、i386+amd64、amd64+wow64 mode、aarch64
14、优化容器清理脚本
15、修复部分组件没完全换源的问题部分组件支持自动换可用源
![图片.png](https://storage.deepin.org/thread/202307121216143835_图片.png)
![图片.png](https://storage.deepin.org/thread/202307121221299140_图片.png)
### 3.2.22023年05月12日
**※1. 修改源地址(迁出 Gitlink**
**※2. 修复非 X86 架构运行器主页面虚拟机工具禁用的问题;**
3、部分组件支持选择最优源。
![图片.png](https://storage.deepin.org/thread/202305122231441391_图片.png)
### 3.2.12023年04月29日
**※1、Windows 虚拟机安装工具支持非 X86 架构;**
**※2、应用打包器可以与星火应用商店配合构建 arm/all 全架构的 Wine 包;**
**※3、Windows 虚拟机安装工具支持调用 Qemu**
**※4、新增 Qemu User 运行 Wine 的帮助入口;**
**※5、修复 Windows 虚拟机的自动配置镜像缺少 aria2c.exe 的故障;**
**※6、支持在更新程序版本时自动关闭程序进程**
7、运行器和打包器支持调用 spark-wine8
8、修改作者信息
9、新增安装包构建时间
10、优化 Wine 运行器更新策略。
![图片.png](https://storage.deepin.org/thread/20230429210452509_图片.png)
### 3.2.02023年03月19日
**※1、Windows 应用适配工具新增系统资源显示;**
**※2、Windows 应用适配工具使用 C++ 重写;**
@@ -552,18 +612,19 @@ Gitlinkhttps://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner
## 运行库下载
| 架构 | 运行库下载 |
|-|-|
| i386 | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/i386-runtime-for-qemu_1.0.0_all.deb |
| amd64 | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/amd64-runtime-for-qemu_1.0.0_all.deb |
| armhf | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/armhf-runtime-for-qemu_1.0.0_all.deb |
| arm64 | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/arm64-runtime-for-qemu_1.0.0_all.deb |
| mips64el | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/mips64el-runtime-for-qemu_1.0.0_all.deb |
| ppc64el | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/ppc64el-runtime-for-qemu_1.0.0_all.deb |
| riscv64 | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/riscv64-runtime-for-qemu_1.0.0_all.deb |
| s390x | https://code.gitlink.org.cn/gfdgd_xi/runtime-for-qemu/raw/branch/master/s390x-runtime-for-qemu_1.0.0_all.deb |
| i386 | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/i386-runtime-for-qemu_1.0.0_all.deb |
| amd64 | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/amd64-runtime-for-qemu_1.0.0_all.deb |
| armhf | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/armhf-runtime-for-qemu_1.0.0_all.deb |
| arm64 | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/arm64-runtime-for-qemu_1.0.0_all.deb |
| mips64el | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/mips64el-runtime-for-qemu_1.0.0_all.deb |
| ppc64el | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/ppc64el-runtime-for-qemu_1.0.0_all.deb |
| riscv64 | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/riscv64-runtime-for-qemu_1.0.0_all.deb |
| s390x | https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/s390x-runtime-for-qemu_1.0.0_all.deb |
## 附:用于编译 Wine 的 Docker 容器Debian10
内安装了编译 Wine 所需要的依赖Wine 编译教程https://wiki.winehq.org/Building_Wine
当然也可以到 http://wine.wine-runner.racoongx.cn/ 或 Wine 运行器内下载已经编译好的 Wine
当然也可以到 http://wine.wine-runner.gfdgdxi.top/ 或 Wine 运行器内下载已经编译好的 Wine
屏蔽微信在Wine中运行时产生的水印/黑块可以参考https://12101111.github.io/block-wine-wechat-black-window/ 和 https://blog.csdn.net/ericden/article/details/122118443
### 拉取
***(需要先安装 Docker 后再输入以下命令)***
```bash
@@ -617,4 +678,4 @@ make install -j4
```
# ©2020-Now gfdgd xi、为什么您不喜欢熊出没和阿布呢
# ©2020-Now gfdgd xi

10
RunCommandWithTerminal.py Normal file
View File

@@ -0,0 +1,10 @@
#!/usr/bin/env python3
import sys
from Model import *
if len(sys.argv) < 2:
print("请加入需要的命令")
sys.exit(1)
o = ""
for i in sys.argv[1:]:
o += f"'{i}' "
OpenTerminal(o)

View File

@@ -1,17 +1,18 @@
#!/bin/bash
# 使用系统默认的 bash 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本2.4.1
# 更新时间2022年11月06日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 tkinter 构建
###########################################################################################
cd `dirname $0`
which VBoxManage
if test $? == 0 ; then
VM/VirtualMachine
exit
fi
zenity --info --no-wrap --text="未安装 VirtualBox请自行安装 VirtualBox 并重新运行"
#which VBoxManage
#if test $? == 0 ; then
# VM/VirtualMachine
# exit
#fi
#zenity --info --no-wrap --text="未安装 VirtualBox请自行安装 VirtualBox 并重新运行"
#./launch.sh deepin-terminal -C "pkexec apt install virtualbox-6.1 -y && zenity --info --text=\"安装完毕,关闭此对话框和安装终端重新运行程序即可\" --no-wrap" --keep-open
VM/VirtualMachine

View File

@@ -1,20 +1,43 @@
#!/bin/bash
# 使用系统默认的 bash 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本1.7.0
# 更新时间2022年07月15日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 tkinter 构建
###########################################################################################
VBoxManage showvminfo Windows
if test 0 == $?; then
if [[ 0 == $? ]]; then
# 检测到虚拟机存在,启动虚拟机
VBoxManage startvm Windows
exit
fi
# 检查是否有 QEMU
if [[ -f "$HOME/Qemu/Windows/Windows.qcow2" ]]; then
if [[ -f "$HOME/.config/deepin-wine-runner/QemuSetting.json" ]]; then
echo 有设置文件,读设置文件
cd `dirname $0`
python3 ./VM/StartQemu.py
exit
fi
# 查看逻辑CPU的个数
CpuCount=`cat /proc/cpuinfo| grep "processor"| wc -l`
# 总内存大小GB
MemTotal=`awk '($1 == "MemTotal:"){printf "%.2f\n",$2/1024/1024}' /proc/meminfo`
use=$(echo "scale=4; $MemTotal / 3" | bc)
if [[ `arch` == "x86_64" ]]; then
echo X86 架构,使用 kvm 加速
kvm --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139
exit
fi
echo 非 X86 架构,不使用 kvm 加速
qemu-system-x86_64 --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139
exit
fi
zenity --question --no-wrap --text="检查到您未创建所指定的虚拟机,是否创建虚拟机并继续?\n如果不创建将无法使用"
if test 1 == $?; then
if [[ 1 == $? ]]; then
# 用户不想创建虚拟机,结束
exit
fi

View File

@@ -64,13 +64,14 @@ class Ui_MainWindow(object):
self.openFile.setObjectName("openFile")
self.actionGitlink = QtWidgets.QAction(MainWindow)
self.actionGitlink.setCheckable(True)
self.actionGitlink.setChecked(True)
#self.actionGitlink.setChecked(True)
self.actionGitlink.setObjectName("actionGitlink")
self.actionGitee = QtWidgets.QAction(MainWindow)
self.actionGitee.setCheckable(True)
self.actionGitee.setObjectName("actionGitee")
self.actionGithub = QtWidgets.QAction(MainWindow)
self.actionGithub.setCheckable(True)
self.actionGithub.setChecked(True)
self.actionGithub.setObjectName("actionGithub")
self.action_IPv6 = QtWidgets.QAction(MainWindow)
self.action_IPv6.setCheckable(True)
@@ -88,9 +89,11 @@ class Ui_MainWindow(object):
self.menu.addAction(self.openFile)
self.menu.addSeparator()
self.menu.addAction(self.exitProgram)
self.menu_2.addAction(self.actionGitlink)
self.menu_2.addAction(self.actionGitee)
self.menu_2.addAction(self.actionGithub)
self.menu_2.addAction(self.actionGitlink)
self.menu_2.addAction(self.action_IPv6)
self.menu_2.addAction(self.action_2)
self.menu_2.addAction(self.action_3)

12
UpdateTime.py Normal file
View File

@@ -0,0 +1,12 @@
#!/usr/bin/env python3
# 更新构建时间
import os
import json
import platform
import datetime
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
with open(f"{programPath}/deb/opt/apps/deepin-wine-runner/information.json", "r") as file:
info = json.loads(file.read())
info["Time"] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " " + platform.platform()
with open(f"{programPath}/deb/opt/apps/deepin-wine-runner/information.json", "w") as file:
file.write(json.dumps(info, ensure_ascii=False, indent=4))

View File

@@ -1,24 +0,0 @@
QMAKE_CXX.QT_COMPILER_STDCXX = 201402L
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 8
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 3
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
QMAKE_CXX.COMPILER_MACROS = \
QT_COMPILER_STDCXX \
QMAKE_GCC_MAJOR_VERSION \
QMAKE_GCC_MINOR_VERSION \
QMAKE_GCC_PATCH_VERSION
QMAKE_CXX.INCDIRS = \
/usr/include/c++/8 \
/usr/include/x86_64-linux-gnu/c++/8 \
/usr/include/c++/8/backward \
/usr/lib/gcc/x86_64-linux-gnu/8/include \
/usr/local/include \
/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed \
/usr/include/x86_64-linux-gnu \
/usr/include
QMAKE_CXX.LIBDIRS = \
/usr/lib/gcc/x86_64-linux-gnu/8 \
/usr/lib/x86_64-linux-gnu \
/usr/lib \
/lib/x86_64-linux-gnu \
/lib

Binary file not shown.

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SetupUILanguage>
<UILanguage>zh-CN</UILanguage>
</SetupUILanguage>
<InputLocale>zh-CN</InputLocale>
<SystemLocale>zh-CN</SystemLocale>
<UILanguage>zh-CN</UILanguage>
<UserLocale>zh-CN</UserLocale>
</component>
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserData>
<ProductKey>
<Key />
</ProductKey>
<AcceptEula>true</AcceptEula>
</UserData>
<ImageInstall>
<OSImage>
<InstallFrom>
<MetaData wcm:action="add">
<Key>/image/index</Key>
<Value>4</Value>
</MetaData>
</InstallFrom>
<InstallTo>
<DiskID>0</DiskID>
<PartitionID>1</PartitionID>
</InstallTo>
</OSImage>
</ImageInstall>
<DiskConfiguration>
<Disk wcm:action="add">
<CreatePartitions>
<CreatePartition wcm:action="add">
<Order>1</Order>
<Size>130000</Size>
<Type>Primary</Type>
</CreatePartition>
</CreatePartitions>
<DiskID>0</DiskID>
<WillWipeDisk>true</WillWipeDisk>
<ModifyPartitions>
<ModifyPartition wcm:action="add">
<Active>true</Active>
<Extend>false</Extend>
<Format>NTFS</Format>
<Label>OS</Label>
<Letter>C</Letter>
<Order>1</Order>
<PartitionID>1</PartitionID>
</ModifyPartition>
</ModifyPartitions>
</Disk>
</DiskConfiguration>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value>UABhAHMAcwB3AG8AcgBkAA==</Value>
<PlainText>false</PlainText>
</Password>
<DisplayName>Windows</DisplayName>
<Group>Administrators</Group>
<Name>Windows</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<OOBE>
<NetworkLocation>Work</NetworkLocation>
<ProtectYourPC>3</ProtectYourPC>
</OOBE>
<TimeZone>China Standard Time</TimeZone>
</component>
</settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ComputerName>*</ComputerName>
</component>
</settings>
<cpi:offlineImage cpi:source="wim:d:/sources/install.wim#Windows 7 ULTIMATE" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SetupUILanguage>
<UILanguage>zh-CN</UILanguage>
</SetupUILanguage>
<InputLocale>zh-CN</InputLocale>
<SystemLocale>zh-CN</SystemLocale>
<UILanguage>zh-CN</UILanguage>
<UserLocale>zh-CN</UserLocale>
</component>
<component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserData>
<AcceptEula>true</AcceptEula>
</UserData>
<ImageInstall>
<OSImage>
<InstallFrom>
<MetaData wcm:action="add">
<Value>5</Value>
<Key>/image/index</Key>
</MetaData>
</InstallFrom>
<InstallTo>
<DiskID>0</DiskID>
<PartitionID>1</PartitionID>
</InstallTo>
</OSImage>
</ImageInstall>
<DiskConfiguration>
<Disk wcm:action="add">
<CreatePartitions>
<CreatePartition wcm:action="add">
<Type>Primary</Type>
<Order>1</Order>
<Size>130000</Size>
</CreatePartition>
</CreatePartitions>
<WillWipeDisk>true</WillWipeDisk>
<DiskID>0</DiskID>
<ModifyPartitions>
<ModifyPartition wcm:action="add">
<Active>true</Active>
<Extend>false</Extend>
<Format>NTFS</Format>
<Label>OS</Label>
<Letter>C</Letter>
<Order>1</Order>
<PartitionID>1</PartitionID>
</ModifyPartition>
</ModifyPartitions>
</Disk>
</DiskConfiguration>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value>UABhAHMAcwB3AG8AcgBkAA==</Value>
<PlainText>false</PlainText>
</Password>
<DisplayName>Windows</DisplayName>
<Group>Administrators</Group>
<Name>Windows</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<OOBE>
<NetworkLocation>Work</NetworkLocation>
<ProtectYourPC>3</ProtectYourPC>
</OOBE>
<TimeZone>China Standard Time</TimeZone>
</component>
</settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ComputerName>*</ComputerName>
</component>
</settings>
<cpi:offlineImage cpi:source="wim:l:/install.wim#Windows 7 ULTIMATE" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

1
VM-source/CNAME Normal file
View File

@@ -0,0 +1 @@
windows-virtual-machine-installer-for-wine-runner.gfdgdxi.top

View File

@@ -1,6 +1,6 @@
#############################################################################
# Makefile for building: VirtualMachine
# Generated by qmake (3.1) (Qt 5.15.6)
# Generated by qmake (3.1) (Qt 5.15.8)
# Project: VirtualMachine.pro
# Template: app
# Command: /usr/lib/qt5/bin/qmake -o Makefile VirtualMachine.pro
@@ -57,18 +57,24 @@ SOURCES = main.cpp \
buildvbox.cpp \
vbox.cpp \
command.cpp \
infoutils.cpp qrc_图标.cpp \
infoutils.cpp \
qemu.cpp \
qemusetting.cpp qrc_图标.cpp \
moc_mainwindow.cpp \
moc_infoutils.cpp
moc_infoutils.cpp \
moc_qemusetting.cpp
OBJECTS = main.o \
mainwindow.o \
buildvbox.o \
vbox.o \
command.o \
infoutils.o \
qemu.o \
qemusetting.o \
qrc_图标.o \
moc_mainwindow.o \
moc_infoutils.o
moc_infoutils.o \
moc_qemusetting.o
DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
@@ -93,6 +99,7 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIdleTime.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOCore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOFileWidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOGui.pri \
@@ -104,11 +111,38 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandClient.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandServer.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_charts.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
@@ -117,10 +151,7 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
@@ -169,6 +200,10 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri \
@@ -191,7 +226,6 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
.qmake.stash \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
@@ -215,12 +249,16 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
buildvbox.h \
vbox.h \
command.h \
infoutils.h main.cpp \
infoutils.h \
qemu.h \
qemusetting.h main.cpp \
mainwindow.cpp \
buildvbox.cpp \
vbox.cpp \
command.cpp \
infoutils.cpp
infoutils.cpp \
qemu.cpp \
qemusetting.cpp
QMAKE_TARGET = VirtualMachine
DESTDIR =
TARGET = VirtualMachine
@@ -229,7 +267,7 @@ TARGET = VirtualMachine
first: all
####### Build rules
VirtualMachine: ui_mainwindow.h $(OBJECTS)
VirtualMachine: ui_mainwindow.h ui_qemusetting.h $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
@@ -256,6 +294,7 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIdleTime.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOCore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOFileWidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOGui.pri \
@@ -267,11 +306,38 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandClient.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandServer.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_charts.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
@@ -280,10 +346,7 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
@@ -332,6 +395,10 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri \
@@ -354,7 +421,6 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
.qmake.stash \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
@@ -401,6 +467,7 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIdleTime.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOCore.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOFileWidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOGui.pri:
@@ -412,11 +479,38 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandClient.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandServer.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_charts.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri:
@@ -425,10 +519,7 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
@@ -477,6 +568,10 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri:
@@ -499,7 +594,6 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf:
.qmake.stash:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf:
@@ -537,9 +631,9 @@ distdir: FORCE
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
$(COPY_FILE) --parents 图标.qrc $(DISTDIR)/
$(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.h buildvbox.h vbox.h command.h infoutils.h $(DISTDIR)/
$(COPY_FILE) --parents main.cpp mainwindow.cpp buildvbox.cpp vbox.cpp command.cpp infoutils.cpp $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.ui $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.h buildvbox.h vbox.h command.h infoutils.h qemu.h qemusetting.h $(DISTDIR)/
$(COPY_FILE) --parents main.cpp mainwindow.cpp buildvbox.cpp vbox.cpp command.cpp infoutils.cpp qemu.cpp qemusetting.cpp $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.ui qemusetting.ui $(DISTDIR)/
$(COPY_FILE) --parents zh_CN.ts en_US.ts $(DISTDIR)/
@@ -594,9 +688,9 @@ compiler_moc_predefs_clean:
moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
g++ -pipe -O2 -std=gnu++11 -Wall -Wextra -dM -E -o moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
compiler_moc_header_make_all: moc_mainwindow.cpp moc_infoutils.cpp
compiler_moc_header_make_all: moc_mainwindow.cpp moc_infoutils.cpp moc_qemusetting.cpp
compiler_moc_header_clean:
-$(DEL_FILE) moc_mainwindow.cpp moc_infoutils.cpp
-$(DEL_FILE) moc_mainwindow.cpp moc_infoutils.cpp moc_qemusetting.cpp
moc_mainwindow.cpp: mainwindow.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
@@ -607,17 +701,26 @@ moc_infoutils.cpp: infoutils.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include infoutils.h -o moc_infoutils.cpp
moc_qemusetting.cpp: qemusetting.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qemusetting.h -o moc_qemusetting.cpp
compiler_moc_objc_header_make_all:
compiler_moc_objc_header_clean:
compiler_moc_source_make_all:
compiler_moc_source_clean:
compiler_uic_make_all: ui_mainwindow.h
compiler_uic_make_all: ui_mainwindow.h ui_qemusetting.h
compiler_uic_clean:
-$(DEL_FILE) ui_mainwindow.h
-$(DEL_FILE) ui_mainwindow.h ui_qemusetting.h
ui_mainwindow.h: mainwindow.ui \
/usr/lib/qt5/bin/uic
/usr/lib/qt5/bin/uic mainwindow.ui -o ui_mainwindow.h
ui_qemusetting.h: qemusetting.ui \
/usr/lib/qt5/bin/uic
/usr/lib/qt5/bin/uic qemusetting.ui -o ui_qemusetting.h
compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
@@ -634,12 +737,14 @@ main.o: main.cpp mainwindow.h
mainwindow.o: mainwindow.cpp mainwindow.h \
ui_mainwindow.h \
buildvbox.h \
infoutils.h
infoutils.h \
qemusetting.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
buildvbox.o: buildvbox.cpp buildvbox.h \
vbox.h \
infoutils.h
infoutils.h \
qemu.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o buildvbox.o buildvbox.cpp
vbox.o: vbox.cpp vbox.h \
@@ -652,6 +757,15 @@ command.o: command.cpp command.h
infoutils.o: infoutils.cpp infoutils.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o infoutils.o infoutils.cpp
qemu.o: qemu.cpp qemu.h \
command.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o qemu.o qemu.cpp
qemusetting.o: qemusetting.cpp qemusetting.h \
ui_qemusetting.h \
infoutils.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o qemusetting.o qemusetting.cpp
qrc_图标.o: qrc_图标.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o qrc_图标.o qrc_图标.cpp
@@ -661,6 +775,9 @@ moc_mainwindow.o: moc_mainwindow.cpp
moc_infoutils.o: moc_infoutils.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_infoutils.o moc_infoutils.cpp
moc_qemusetting.o: moc_qemusetting.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qemusetting.o moc_qemusetting.cpp
####### Install
install_target: first FORCE

26
VM-source/README.md Normal file
View File

@@ -0,0 +1,26 @@
# Windows虚拟机安装工具
## 介绍
基于VirtualBox/Qemu制作的小白Windows虚拟机安装工具可以做到只需要用户下载系统镜像并点击安装即可无需顾及虚拟机安装、创建、虚拟机的分区等等
此为 Wine 运行器子项目https://gitee.com/gfdgd-xi/deep-wine-runner
依照 GPLV3 协议开源
![图片.png](https://storage.deepin.org/thread/202304092224497604_图片.png)
![图片.png](https://storage.deepin.org/thread/202304092224396099_图片.png)
![图片.png](https://storage.deepin.org/thread/202304092224315599_图片.png)
## 如何使用
安装最新版本的 Wine 运行器即可,最新版本的 Wine 运行器自带此安装工具
## 编译指南
```bash
git clone https://gitee.com/gfdgd-xi/windows-virtual-machine-installer-for-wine-runner.git
cd windows-virtual-machine-installer-for-wine-runner
qmake .
make -j4
```
## 预编译版本
https://gitee.com/gfdgd-xi/deep-wine-runner/tree/main/VM
# ©2020~2023 gfdgd xi

View File

@@ -33,17 +33,22 @@ SOURCES += \
buildvbox.cpp \
vbox.cpp \
command.cpp \
infoutils.cpp
infoutils.cpp \
qemu.cpp \
qemusetting.cpp
HEADERS += \
mainwindow.h \
buildvbox.h \
vbox.h \
command.h \
infoutils.h
infoutils.h \
qemu.h \
qemusetting.h
FORMS += \
mainwindow.ui
mainwindow.ui \
qemusetting.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.2, 2023-03-11T11:41:41. -->
<!-- Written by QtCreator 4.8.2, 2023-04-29T19:59:36. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
@@ -181,19 +181,20 @@
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Executable</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">VirtualMachine</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/VirtualMachine.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">VirtualMachine.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>

Binary file not shown.

Binary file not shown.

View File

@@ -1,5 +1,5 @@
################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 作者gfdgd xi
# 版本1.0
# 依照 GPL V3 协议开源
################################################

View File

@@ -1,3 +1,8 @@
/*
* gfdgd xi
* 依照 GPLV3 开源
*/
#include <sys/sysinfo.h>
#include "buildvbox.h"
#include "vbox.h"
#include <QFile>
@@ -6,6 +11,7 @@
#include <QMessageBox>
#include <QCoreApplication>
#include <infoutils.h>
#include "qemu.h"
// 懒得用 QThread 了(要继承)
#include <thread>
using namespace std;
@@ -42,13 +48,15 @@ int buildvbox::Download(QString url, QString path, QString fileName){
return system(("aria2c -x 16 -s 16 -c " + url + " -d " + path + " -o " + fileName).toUtf8());
}
buildvbox::buildvbox(QString isoPath, int id){
/*QDir vboxPath(QDir::homePath() + "/VirtualBox VMs/Windows");
if(vboxPath.exists()){
qDebug("虚拟机存在,直接启动!");
vbox vm("Windows");
vm.Start();
return;
buildvbox::buildvbox(QString isoPath, int id, int vm){
/*if(vm == 1){
QDir vboxPath(QDir::homePath() + "/VirtualBox VMs/Windows");
if(vboxPath.exists()){
qDebug("虚拟机存在,直接启动!");
vbox vm("Windows");
vm.Start();
return;
}
}*/
QString programPath = QCoreApplication::applicationDirPath();
@@ -62,54 +70,126 @@ buildvbox::buildvbox(QString isoPath, int id){
QString net = GetNet();
qDebug() << "使用网卡:" << net << endl;
//vbox *box = new vbox("Window");
vbox vm("Windows");
switch (id) {
case 0:
vm.Create("Windows7");
break;
case 1:
vm.Create("Windows7_64");
break;
vm.Create("WindowsNT_64");
if(vm == 0){
//vbox *box = new vbox("Window");
//vbox vm("Windows");
qemu vm("Windows");
switch (id) {
case 0:
vm.Create("Windows7");
break;
case 1:
vm.Create("Windows7_64");
break;
vm.Create("WindowsNT_64");
}
vm.CreateDiskControl();
//vm.CreateDiskControl("storage_controller_2");
vm.CreateDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", 131072);
vm.MountDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
switch (id) {
case 0:
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 2);
break;
case 1:
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 2);
break;
}
/*vm.MountISO(isoPath, "storage_controller_1", 0, 1);
switch (id) {
case 0:
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0);
break;
case 1:
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0);
break;
}*/
// 判断 VirtualBox Guest ISO 是否存在
// 在的话直接挂载
/*if(QFile::exists("/usr/share/virtualbox/VBoxGuestAdditions.iso")){
vm.MountISO("/usr/share/virtualbox/VBoxGuestAdditions.iso", "storage_controller_1", 1, 1);
}*/
vm.SetCPU(get_nprocs());
long memory = 0;
long memoryAll = 0;
long swap = 0;
long swapAll = 0;
infoUtils::memoryRate(memory, memoryAll, swap, swapAll);
//memoryRate(memory, memoryAll, swap, swapAll);
vm.SetMemory(memoryAll / 3 / 1024);
vm.SetDisplayMemory(32);
vm.SetNetBridge(net);
vm.EnabledAudio();
vm.EnabledClipboardMode();
vm.EnabledDraganddrop();
vm.SetVBoxSVGA();
vm.SetMousePS2();
vm.SetKeyboardPS2();
vm.OpenUSB();
vm.ShareFile("ROOT", "/");
vm.ShareFile("HOME", QDir::homePath());
vm.Start();
}
vm.CreateDiskControl();
//vm.CreateDiskControl("storage_controller_2");
vm.CreateDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi", 131072);
vm.MountDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi");
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
switch (id) {
case 0:
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0);
break;
case 1:
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0);
break;
}
// 判断 VirtualBox Guest ISO 是否存在
// 在的话直接挂载
if(QFile::exists("/usr/share/virtualbox/VBoxGuestAdditions.iso")){
vm.MountISO("/usr/share/virtualbox/VBoxGuestAdditions.iso", "storage_controller_1", 1, 1);
else if(vm == 1){
// ?
//vbox *box = new vbox("Window");
vbox vm("Windows");
//qemu vm("Windows");
switch (id) {
case 0:
vm.Create("Windows7");
break;
case 1:
vm.Create("Windows7_64");
break;
vm.Create("WindowsNT_64");
}
QDir dir("/home/gfdgd_xi/Qemu/Windows/");
dir.mkpath("/home/gfdgd_xi/Qemu/Windows/");
vm.CreateDiskControl();
//vm.CreateDiskControl("storage_controller_2");
vm.CreateDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi", 131072);
vm.MountDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi");
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
switch (id) {
case 0:
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0);
break;
case 1:
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0);
break;
}
// 判断 VirtualBox Guest ISO 是否存在
// 在的话直接挂载
if(QFile::exists("/usr/share/virtualbox/VBoxGuestAdditions.iso")){
vm.MountISO("/usr/share/virtualbox/VBoxGuestAdditions.iso", "storage_controller_1", 1, 1);
}
vm.SetCPU(get_nprocs_conf());
long memory = 0;
long memoryAll = 0;
long swap = 0;
long swapAll = 0;
infoUtils::memoryRate(memory, memoryAll, swap, swapAll);
//memoryRate(memory, memoryAll, swap, swapAll);
vm.SetMemory(memoryAll / 3 / 1024);
vm.SetDisplayMemory(32);
vm.SetNetBridge(net);
vm.EnabledAudio();
vm.EnabledClipboardMode();
vm.EnabledDraganddrop();
vm.SetVBoxSVGA();
vm.SetMousePS2();
vm.SetKeyboardPS2();
vm.OpenUSB();
vm.ShareFile("ROOT", "/");
vm.ShareFile("HOME", QDir::homePath());
vm.Start();
}
vm.SetCPU(1);
long memory = 0;
long memoryAll = 0;
long swap = 0;
long swapAll = 0;
infoUtils::memoryRate(memory, memoryAll, swap, swapAll);
//memoryRate(memory, memoryAll, swap, swapAll);
vm.SetMemory(memoryAll / 3 / 1024);
vm.SetDisplayMemory(32);
vm.SetNetBridge(net);
vm.EnabledAudio();
vm.EnabledClipboardMode();
vm.EnabledDraganddrop();
vm.SetVBoxSVGA();
vm.SetMousePS2();
vm.SetKeyboardPS2();
vm.OpenUSB();
vm.ShareFile("ROOT", "/");
vm.ShareFile("HOME", QDir::homePath());
vm.Start();
}

View File

@@ -1,3 +1,7 @@
/*
* gfdgd xi
* 依照 GPLV3 开源
*/
#ifndef BUILDVBOX_H
#define BUILDVBOX_H
#include <QString>
@@ -6,7 +10,7 @@ class buildvbox
{
// Q_OBJECT
public:
buildvbox(QString isoPath, int id=0);
buildvbox(QString isoPath, int id=0, int vm=0);
void CleanScreen();
QString GetNet();
int Download(QString url, QString path, QString fileName);

View File

@@ -1,3 +1,7 @@
/*
* gfdgd xi
* 依照 GPLV3 开源
*/
#include "command.h"
#include <QProcess>
Command::Command()

View File

@@ -1,3 +1,7 @@
/*
* gfdgd xi
* 依照 GPLV3 开源
*/
#ifndef COMMAND_H
#define COMMAND_H
#include <QString>

View File

@@ -1,3 +1,7 @@
/*
* gfdgd xi
* 依照 GPLV3 开源
*/
#include "mainwindow.h"
#include <QApplication>
#include <QTranslator>
@@ -23,11 +27,11 @@ int main(int argc, char *argv[])
trans->load("virtualmachine-en_US.qm");
a.installTranslator(trans);
// 判断是否为 !amd64
if(GetRunCommand("arch").replace(" ", "").replace("\n", "") != QString("x86_64")){
// 判断是否为 !amd64(无需判断了)
/*if(GetRunCommand("arch").replace(" ", "").replace("\n", "") != QString("x86_64")){
QMessageBox::critical(NULL, "错误", "此程序不支持非 X86 架构,立即退出");
return 0;
}
}*/
MainWindow w;
w.show();

View File

@@ -1,5 +1,5 @@
/*
* gfdgd xi、为什么您不喜欢熊出没和阿布呢
* gfdgd xi
* 依照 GPLV3 开源
*/
#include "mainwindow.h"
@@ -19,6 +19,9 @@
#include <QtMath>
#include <QJsonArray>
#include <QDesktopServices>
#include <QMessageBox>
#include <iostream>
#include "qemusetting.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
@@ -26,14 +29,24 @@ MainWindow::MainWindow(QWidget *parent) :
{
ui->setupUi(this);
ui->tabWidget->setTabPosition(QTabWidget::West); // 标签靠左
// 选择最优虚拟机
if(!system("which qemu-system-x86_64")){
ui->vmChooser->setCurrentIndex(0);
}
if(!system("which vboxmanage")){
ui->vmChooser->setCurrentIndex(1);
}
if(!QFile::exists(QCoreApplication::applicationDirPath() + "/../RunCommandWithTerminal.py")){
ui->getQemu->setDisabled(true);
}
// 允许输出 qDebug 信息
QLoggingCategory::defaultCategory()->setEnabled(QtDebugMsg, true);
// 判断是否安装 vbox
if(system("which VBoxManage")){
// 判断是否安装 vbox(无需判断)
/*if(system("which VBoxManage")){
if(QMessageBox::question(this, "提示", "检测到您似乎没有安装 VirtualBox立即安装") == QMessageBox::Yes){
system("xdg-open https://www.virtualbox.org/wiki/Linux_Downloads");
}
}
}*/
// QTimer
QTimer *cpuGet = new QTimer(this);
connect(cpuGet, &QTimer::timeout, this, &MainWindow::ShowCPUMessage);
@@ -57,6 +70,7 @@ MainWindow::MainWindow(QWidget *parent) :
return;
}
QJsonObject versionObject = doc.object();
QJsonValue buildTime = versionObject.value("Time");
QJsonValue versionValue = versionObject.value("Version");
QJsonArray thank = versionObject.value("Thank").toArray();
QString thankText = "";
@@ -68,7 +82,8 @@ MainWindow::MainWindow(QWidget *parent) :
// 设置程序标题
this->setWindowTitle("Windows 应用适配工具 " + versionValue.toString());
// 读取谢明列表
ui->textBrowser_2->setHtml("<p>程序版本号:" + versionValue.toString() + "</p>" + ui->textBrowser_2->toHtml() +
ui->textBrowser_2->setHtml("<p>程序版本号:" + versionValue.toString() + ", " + GetRunCommand("arch") + "</p><p>安装包构建时间:" + buildTime.toString() + "</p><p>该组件构建时间:"
+ __DATE__ + " " + __TIME__ + "</p>" + ui->textBrowser_2->toHtml() +
"<hr/><h1>谢明列表</h1>" + thankText);
connect(ui->textBrowser_2, &QTextBrowser::anchorClicked, this, [=](const QUrl &link){
QDesktopServices::openUrl(link);
@@ -79,6 +94,7 @@ MainWindow::MainWindow(QWidget *parent) :
connect(ui->textBrowser_3, &QTextBrowser::anchorClicked, this, [=](const QUrl &link){
QDesktopServices::openUrl(link);
});
}
void MainWindow::ShowCPUMessage(){
@@ -145,6 +161,110 @@ void MainWindow::on_browser_clicked()
void MainWindow::on_install_clicked()
{
buildvbox(ui->isoPath->text(), ui->systemVersion->currentIndex());
switch (ui->vmChooser->currentIndex()) {
case 0:
if(system("which qemu-system-x86_64")){
if(QMessageBox::question(this, "提示", "您似乎没有安装 Qemu是否继续创建虚拟机") == QMessageBox::No){
return;
}
}
break;
case 1:
if(system("which vboxmanage")){
if(QMessageBox::question(this, "提示", "您似乎没有安装 VBox是否继续创建虚拟机") == QMessageBox::No){
return;
}
}
break;
}
buildvbox(ui->isoPath->text(), ui->systemVersion->currentIndex(), ui->vmChooser->currentIndex());
return;
}
void MainWindow::on_getvbox_clicked()
{
QDesktopServices::openUrl(QUrl("https://www.virtualbox.org/wiki/Linux_Downloads"));
}
void MainWindow::on_getQemu_clicked()
{
system(("python3 '" + QCoreApplication::applicationDirPath() + "/../RunCommandWithTerminal.py' '" + QCoreApplication::applicationDirPath() + "/../QemuSystemInstall.sh'").toLatin1());
}
void MainWindow::on_vmChooser_currentIndexChanged(int index)
{
ui->qemuSetting->setDisabled(index);
}
void MainWindow::on_qemuSetting_clicked()
{
QemuSetting *show = new QemuSetting();
show->show();
}
void MainWindow::on_addQemuDisk_triggered()
{
if(QFile::exists(QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
if(QMessageBox::question(this, "提示", "磁盘文件已存在,是否覆盖?\n覆盖后将无法恢复!") == QMessageBox::No){
return;
}
}
QString path = QFileDialog::getOpenFileName(this, "选择 Qemu 镜像", QDir::homePath(), "Qemu镜像(*.qcow2 *.img *.raw *.qcow *.qed *.vdi *.vhdx *.vmdk);;所有文件(*.*)");
qDebug() << path;
if(path == ""){
return;
}
QDir dir(QDir::homePath() + "/Qemu/Windows");
if(!dir.exists()){
dir.mkpath(QDir::homePath() + "/Qemu/Windows");
}
if(QFile::exists(QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
if(!QFile::remove(QDir::homePath() + "/Qemu/Windows/Windows.qcow2") | !QFile::copy(path, QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
QMessageBox::critical(this, "提示", "添加错误!");
return;
}
}
else{
if(!QFile::copy(path, QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
QMessageBox::critical(this, "提示", "添加错误!");
return;
}
}
QMessageBox::information(this, "提示", "添加完成!");
}
void MainWindow::on_delQemuDisk_triggered()
{
if(!QFile::exists(QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
QMessageBox::information(this, "提示", "不存在磁盘文件,无法导出");
return;
}
std::system(("xdg-open \"" + QDir::homePath() + "/Qemu/Windows/\"").toUtf8());
}
void MainWindow::on_addQemuDiskButton_clicked()
{
MainWindow::on_addQemuDisk_triggered();
}
void MainWindow::on_saveQemuDiskButton_clicked()
{
MainWindow::on_delQemuDisk_triggered();
}
void MainWindow::on_delQemuDiskButton_clicked()
{
if(!QFile::exists(QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
QMessageBox::information(this, "提示", "不存在磁盘文件,无法移除");
return;
}
if(QMessageBox::question(this, "提示", "是否删除?\n删除后将无法恢复!") == QMessageBox::No){
return;
}
if(!QFile::remove(QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
QMessageBox::critical(this, "提示", "移除失败");
return;
}
QMessageBox::information(this, "提示", "移除成功");
}

View File

@@ -1,3 +1,7 @@
/*
* gfdgd xi
* 依照 GPLV3 开源
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
@@ -22,6 +26,24 @@ private slots:
void on_install_clicked();
void on_getvbox_clicked();
void on_getQemu_clicked();
void on_vmChooser_currentIndexChanged(int index);
void on_qemuSetting_clicked();
void on_addQemuDisk_triggered();
void on_delQemuDisk_triggered();
void on_addQemuDiskButton_clicked();
void on_saveQemuDiskButton_clicked();
void on_delQemuDiskButton_clicked();
private:
Ui::MainWindow *ui;
long m_cpuAll;

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>807</width>
<height>429</height>
<width>1058</width>
<height>512</height>
</rect>
</property>
<property name="windowTitle">
@@ -72,10 +72,7 @@
<item>
<widget class="QComboBox" name="systemVersion">
<property name="currentText">
<string/>
</property>
<property name="placeholderText">
<string>请选择系统类型(如果识别不了请自行选择,如果选择错误或不支持将无法进行自动安装)</string>
<string>Windows 7 32 位(支持自动安装)</string>
</property>
<item>
<property name="text">
@@ -96,6 +93,40 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7" stretch="0,1">
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>虚拟机(建议默认):</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="vmChooser">
<property name="currentText">
<string>qemu/kvm</string>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<property name="duplicatesEnabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>qemu/kvm</string>
</property>
</item>
<item>
<property name="text">
<string>VirtualBox</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
@@ -111,6 +142,48 @@
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="getQemu">
<property name="text">
<string>安装 Qemu</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="qemuSetting">
<property name="text">
<string>Qemu虚拟机设置</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="addQemuDiskButton">
<property name="text">
<string>添加/覆盖Qemu磁盘</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="saveQemuDiskButton">
<property name="text">
<string>导出Qemu磁盘</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="delQemuDiskButton">
<property name="text">
<string>移除Qemu磁盘</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="getvbox">
<property name="text">
<string>获取VirtualBox</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="install">
<property name="text">
@@ -158,9 +231,11 @@ p, li { white-space: pre-wrap; }
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;给小白的一段话&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;其实本质上跑完安装程序就没有然后了,顶多如果想要运行舒服一点点,可以安装加强功能,直接拉到最底下看就可以了&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;其实本质上跑完安装程序就没有然后了,顶多如果想要运行舒服一点点,可以安装加强功能,直接拉到最底下看就可以了&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;只限使用 VirtualBox&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;如果你是用非 X86 PC那暂时只能使用 qemu没 kvm且跨架构的性能损失很大推荐使用 Windows XP 而非 Windows 7&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;如果爱折腾的话,下面的都看看也无所谓的,想看往下翻就可以了&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;如果鼠标被锁定到里面了按下键盘右边的“Ctrl”键就可以了&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600; text-decoration: underline;&quot;&gt;(这里的帮助更新可能不会那么及时,更详细/新的帮助可以看https://gitee.com/gfdgd-xi/deep-wine-runner/wikis 或 https://gitee.com/gfdgd-xi/wine-runner-wiki&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;如果鼠标被锁定到里面了按下键盘右边的“Ctrl”键就可以了&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;qemu则是 Ctrl+Alt+G&lt;/span&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
@@ -193,7 +268,7 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;3、在这里修改即可&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox_20220712223705.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;安装加强功能有什么好处?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;安装加强功能有什么好处?(只限使用 VirtualBox&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1、支持鼠标自由从虚拟机和实体机切换&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2、支持虚拟机根据窗口大小自动设置分辨率&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3、支持文件共享、剪切板共享、文件拖放&lt;/p&gt;
@@ -299,7 +374,7 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Github&lt;a href=&quot;https://github.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://github.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitlink&lt;a href=&quot;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;此组件也有非常大的缺点,就是相比于 Wine会需要占用大量的空间、安装需要大量的时间、某些情况下需要相比于 Wine 需要消耗更多的系统资源,但可以更加完美、流畅的运行 Windows 应用,会尽量减少因为缺少或未实现导致的 Windows exe 程序运行异常&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;该组件制作者gfdgd xi、为什么您不喜欢熊出没和阿布呢&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;该组件制作者gfdgd xi&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;参考文献:&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Droid Sans Mono','monospace','monospace'; font-size:11pt; color:#6a9955;&quot;&gt;https://juejin.cn/post/7080484519328874510&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@@ -330,6 +405,16 @@ p, li { white-space: pre-wrap; }
<string>关于</string>
</property>
</action>
<action name="addQemuDisk">
<property name="text">
<string>导入/覆盖</string>
</property>
</action>
<action name="delQemuDisk">
<property name="text">
<string>导出</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>

115
VM-source/qemu.cpp Normal file
View File

@@ -0,0 +1,115 @@
/*
* gfdgd xi
*/
#include "qemu.h"
#include <QDir>
#include <QFile>
#include <QCoreApplication>
#include "command.h"
#include <QMessageBox>
#include <QProcess>
#include <QDebug>
qemu::qemu(QString name, QString managerPath) {
if(!QFile::exists(name)){
this->name = QDir::homePath() + "/Qemu/" + name;
}
else{
this->name = name;
}
this->managerPath = managerPath;
//Command command = Command();
this->vboxVersion = Command().GetCommand("'" + managerPath + "qemu-system-i386' --version");
}
int qemu::Create(QString type){
if(!QFile::exists(this->name)){
QDir dir(this->name);
dir.mkpath(this->name);
}
return 0;
}
int qemu::CreateDisk(QString path, int size){
if(QFile::exists(path)){
return 0;
}
return system(("qemu-img create -f qcow2 '" + path + "' " + QString::number(size) + "M").toLatin1());
}
int qemu::CreateDiskControl(QString controlName){
return 0;
}
int qemu::MountDisk(QString diskPath, QString controlName, int port, int device){
commandOption += "-drive 'file=" + diskPath + ",if=ide,index=" + QString::number(device) + "' ";
return 0;
}
int qemu::MountISO(QString isoPath, QString controlName, int port, int device){
commandOption += "-drive 'media=cdrom,file=" + isoPath + ",if=ide,index=" + QString::number(device) + "' ";
return 0;
}
int qemu::BootFirst(QString bootDrive){
commandOption += "-boot '" + bootDrive + "' ";
return 0;
}
int qemu::SetNetBridge(QString netDriver){
return 0;
}
int qemu::SetCPU(int number){
commandOption += "-smp " + QString::number(number) + " ";
return 0;
}
int qemu::SetMemory(int memory){
commandOption += "-m " + QString::number(memory) + "M ";
return 0;
}
int qemu::SetRemote(bool setting){
return 0;
}
int qemu::SetRemoteConnectSetting(int port){
return 0;
}
int qemu::Start(bool unShown){
qDebug() << commandOption;
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "x86_64"){
return system(("kvm " + commandOption + " &").toLatin1());
}
return system(("qemu-system-x86_64 -nic model=rtl8139 " + commandOption + " &").toLatin1());
}
int qemu::Stop(){
system("killall qemu-system-x86_64 -9");
system("killall kvm -9");
return 0;
}
int qemu::Delete(){
return system(("rm -rfv '" + name + "'").toLatin1());
}
int qemu::SetDisplayMemory(int memory){
return 0;
}
int qemu::InstallGuessAdditions(QString controlName, int port, int device){
return 0;
}
int qemu::EnabledAudio(){
commandOption += "-soundhw all ";
return 0;
}
int qemu::EnabledClipboardMode(){
return 0;
}
int qemu::EnabledDraganddrop(){
return 0;
}
int qemu::ShareFile(QString name, QString path){
return 0;
}
int qemu::SetVBoxSVGA(){
return 0;
}
int qemu::SetMousePS2(){
return 0;
}
int qemu::SetKeyboardPS2(){
return 0;
}
int qemu::OpenUSB(){
return 0;
}

46
VM-source/qemu.h Normal file
View File

@@ -0,0 +1,46 @@
/*
* gfdgd xi
* 依照 GPLV3 开源
*/
#ifndef QEMU_H
#define QEMU_H
#include <QString>
class qemu
{
public:
// 虚拟机信息
QString name;
QString managerPath;
QString vboxVersion;
qemu(QString name, QString managerPath="/usr/bin");
int Create(QString type="Windows7");
int CreateDisk(QString path, int size);
int CreateDiskControl(QString controlName="storage_controller_1");
int MountDisk(QString diskPath, QString controlName="storage_controller_1", int port=0, int device=0);
int MountISO(QString isoPath, QString controlName="storage_controller_1", int port=1, int device=0);
int BootFirst(QString bootDrive);
int SetNetBridge(QString netDriver);
int SetCPU(int number);
int SetMemory(int memory);
int SetRemote(bool setting);
int SetRemoteConnectSetting(int port=5540);
int Start(bool unShown=false);
int Stop();
int Delete();
int SetDisplayMemory(int memory);
int InstallGuessAdditions(QString controlName="storage_controller_1", int port=1, int device=0);
int EnabledAudio();
int EnabledClipboardMode();
int EnabledDraganddrop();
int ShareFile(QString name, QString path);
int SetVBoxSVGA();
int SetMousePS2();
int SetKeyboardPS2();
int OpenUSB();
private:
QString commandOption;
};
#endif // QEMU_H

130
VM-source/qemusetting.cpp Normal file
View File

@@ -0,0 +1,130 @@
#include "qemusetting.h"
#include "ui_qemusetting.h"
#include <QMessageBox>
#include <QDesktopServices>
#include <QUrl>
#include <QJsonObject>
#include <QJsonDocument>
#include <QFile>
#include "infoutils.h"
#include <QDir>
#include <sys/sysinfo.h>
#include <QDebug>
QemuSetting::QemuSetting(QWidget *parent) :
QWidget(parent),
ui(new Ui::QemuSetting)
{
ui->setupUi(this);
// 判断是否安装了 Wine 运行器
ui->getrunner->setHidden(QFile::exists(QCoreApplication::applicationDirPath() + "/../mainwindow.py"));
// 设置变量
if(QFile::exists(QDir::homePath() + "/.config/deepin-wine-runner/QemuSetting.json")){
// 读取配置文件
QFile file(QDir::homePath() + "/.config/deepin-wine-runner/QemuSetting.json");
file.open(QIODevice::ReadOnly);
QJsonParseError error;
QJsonDocument document = QJsonDocument::fromJson(file.readAll(), &error);
file.close();
if(error.error != QJsonParseError::NoError){
QMessageBox::critical(this, "错误", error.errorString());
}
else {
QJsonObject object = document.object();
qDebug() << QJsonDocument(object).toJson();
ui->enableKvm->setChecked(object.value("EnableKVM").toBool());
ui->enableRdp->setChecked(object.value("EnableRDP").toBool());
ui->enableVnc->setChecked(object.value("EnableVNC").toBool());
ui->enableSound->setChecked(object.value("EnableSound").toBool());
ui->memoryNumber->setValue(object.value("Memory").toInt());
ui->vncNumber->setValue(object.value("VNC").toInt());
ui->cpuNumber->setValue(object.value("CPU").toInt());
}
}
else {
// 默认
this->SetDefaultValue();
}
}
void QemuSetting::SetDefaultValue(){
long memory = 0;
long memoryAll = 0;
long swap = 0;
long swapAll = 0;
infoUtils::memoryRate(memory, memoryAll, swap, swapAll);
ui->memoryNumber->setValue(memoryAll / 3 / 1024);
ui->vncNumber->setValue(5);
ui->cpuNumber->setValue(get_nprocs());
ui->enableKvm->setChecked(true);
ui->enableRdp->setChecked(true);
ui->enableVnc->setChecked(true);
ui->enableSound->setChecked(true);
}
QemuSetting::~QemuSetting()
{
delete ui;
}
void QemuSetting::on_buttonBox_accepted()
{
QMessageBox::information(NULL, "", "");
acceptDrops();
}
void QemuSetting::on_save_clicked()
{
QJsonParseError error;
QJsonDocument document = QJsonDocument::fromJson("{}", &error);
if(error.error != QJsonParseError::NoError){
QMessageBox::critical(this, "错误", error.errorString());
return;
}
QJsonObject object = document.object();
//object.insert("1", QJsonValue("aa"));
object.insert("EnableKVM", ui->enableKvm->isChecked());
object.insert("EnableRDP", ui->enableRdp->isChecked());
object.insert("EnableVNC", ui->enableVnc->isChecked());
object.insert("EnableSound", ui->enableSound->isChecked());
object.insert("Memory", ui->memoryNumber->value());
object.insert("VNC", ui->vncNumber->value());
object.insert("CPU", ui->cpuNumber->value());
qDebug() << QJsonDocument(object).toJson();
// 读取配置文件
QDir dir(QDir::homePath() + "/.config/deepin-wine-runner/");
if(!dir.exists()){
dir.mkpath(QDir::homePath() + "/.config/deepin-wine-runner/");
}
QFile file(QDir::homePath() + "/.config/deepin-wine-runner/QemuSetting.json");
file.open(QIODevice::WriteOnly);
file.write(QJsonDocument(object).toJson());
file.close();
QMessageBox::information(this, "提示", "保存完成!");
}
void QemuSetting::on_cancel_clicked()
{
delete this;
}
void QemuSetting::on_getrunner_clicked()
{
QDesktopServices::openUrl(QUrl("https://gitee.com/gfdgd-xi/deep-wine-runner/"));
}
void QemuSetting::on_enableVnc_stateChanged(int arg1)
{
// 控件的开启/关闭
ui->vncNumber->setEnabled(ui->enableVnc->isChecked());
}
void QemuSetting::on_setDefault_clicked()
{
if(QMessageBox::question(this, "提示", "你确定要重置为默认?重置后将无法恢复") == QMessageBox::No){
return;
}
QFile::remove(QDir::homePath() + "/.config/deepin-wine-runner/QemuSetting.json");
this->SetDefaultValue();
QMessageBox::information(this, "提示", "设置完成!");
}

39
VM-source/qemusetting.h Normal file
View File

@@ -0,0 +1,39 @@
#ifndef QEMUSETTING_H
#define QEMUSETTING_H
#include <QWidget>
#include <QCheckBox>
#include <QSpinBox>
namespace Ui {
class QemuSetting;
}
class QemuSetting : public QWidget
{
Q_OBJECT
public:
explicit QemuSetting(QWidget *parent = nullptr);
~QemuSetting();
private slots:
void on_buttonBox_accepted();
void on_save_clicked();
void on_cancel_clicked();
void on_getrunner_clicked();
void on_enableVnc_stateChanged(int arg1);
void on_setDefault_clicked();
private:
void SetDefaultValue();
Ui::QemuSetting *ui;
};
#endif // QEMUSETTING_H

210
VM-source/qemusetting.ui Normal file
View File

@@ -0,0 +1,210 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QemuSetting</class>
<widget class="QWidget" name="QemuSetting">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>496</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>设置</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="9" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>&lt;h3&gt;远程服务&lt;/h3&gt;</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>VNC服务端口</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QCheckBox" name="enableRdp">
<property name="text">
<string>开启 rdp 服务映射</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>内存大小MB</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="memoryNumber">
<property name="maximum">
<number>999999999</number>
</property>
</widget>
</item>
<item row="8" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="vncNumber">
<property name="maximum">
<number>9999</number>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>&lt;h3&gt;基础设置&lt;/h3&gt;</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="enableVnc">
<property name="text">
<string>开启VNC服务</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="enableKvm">
<property name="text">
<string>开启 kvm 加速</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>CPU核心数</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="cpuNumber">
<property name="maximum">
<number>999999999</number>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QCheckBox" name="enableSound">
<property name="text">
<string>开启声音</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QPushButton" name="save">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>保存</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cancel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>取消</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="setDefault">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>重置
默认</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="getrunner">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>获取
Wine
运行器</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,3 +1,6 @@
/*
* gfdgd xi
*/
#include "vbox.h"
#include "command.h"
#include <QMessageBox>
@@ -10,9 +13,13 @@ vbox::vbox(QString name, QString managerPath) {
}
int vbox::Create(QString type){
return system(("\"" + managerPath + "\" createvm --name \""
system(("\"" + managerPath + "\" createvm --name \""
+ name + "\" --ostype \"" + type +
"\" --register").toLatin1());
return system(("\"" + managerPath + "\" modifyvm \""
+ name + "\" --ostype \"" + type +
"\" ").toLatin1());
//vboxmanage modifyvm testvm --ostype
}
int vbox::CreateDisk(QString path, int size){
return system(("\"" + managerPath + "\" createvdi --filename \"" + path + "\" --size \"" + QString::number(size) + "\"").toLatin1());

View File

@@ -1,3 +1,7 @@
/*
* gfdgd xi
* 依照 GPLV3 开源
*/
#ifndef VBOX_H
#define VBOX_H
#include <QString>

View File

@@ -1,24 +0,0 @@
QMAKE_CXX.QT_COMPILER_STDCXX = 201402L
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 8
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 3
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
QMAKE_CXX.COMPILER_MACROS = \
QT_COMPILER_STDCXX \
QMAKE_GCC_MAJOR_VERSION \
QMAKE_GCC_MINOR_VERSION \
QMAKE_GCC_PATCH_VERSION
QMAKE_CXX.INCDIRS = \
/usr/include/c++/8 \
/usr/include/x86_64-linux-gnu/c++/8 \
/usr/include/c++/8/backward \
/usr/lib/gcc/x86_64-linux-gnu/8/include \
/usr/local/include \
/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed \
/usr/include/x86_64-linux-gnu \
/usr/include
QMAKE_CXX.LIBDIRS = \
/usr/lib/gcc/x86_64-linux-gnu/8 \
/usr/lib/x86_64-linux-gnu \
/usr/lib \
/lib/x86_64-linux-gnu \
/lib

33
VM/StartQemu.py Normal file
View File

@@ -0,0 +1,33 @@
#!/usr/bin/env python3
import os
import sys
import json
import traceback
def ReadTXT(file: str):
with open(file, "r") as file:
things = file.read()
return things
# 运行
command = "qemu-system-x86_64"
#if "--kvm" in sys.argv:
# command = "kvm"
homePath = os.path.expanduser('~')
try:
setting = json.loads(ReadTXT(f"{homePath}/.config/deepin-wine-runner/QemuSetting.json"))
except:
print("无法读取配置")
traceback.print_exc()
sys.exit(1)
option = f"-nic model=rtl8139 --hda \"$HOME/Qemu/Windows/Windows.qcow2\" -usb -m {setting['Memory']}M -smp {setting['CPU']} "
if setting["EnableKVM"]:
command = "kvm"
if setting["EnableRDP"]:
option += "-net user,hostfwd=tcp::3389-:3389 "
if setting["EnableVNC"]:
option += f"-display gtk -display vnc=:{setting['VNC']} "
if setting["EnableSound"]:
option += "-soundhw all "
os.system(f"{command} {option}")

Binary file not shown.

BIN
VM/VirtualMachine-aarch64 Executable file

Binary file not shown.

BIN
VM/VirtualMachine-i686 Executable file

Binary file not shown.

BIN
VM/VirtualMachine-loongarch64 Executable file

Binary file not shown.

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