1.7.1内容初步完成

This commit is contained in:
2022-07-27 22:40:05 +08:00
parent adcd46997b
commit 28257e2af1
52 changed files with 2316 additions and 2585 deletions

View File

@@ -50,6 +50,9 @@ while True:
if 0 <= choose and choose < len(netList): if 0 <= choose and choose < len(netList):
break break
print(f"您选择了 .net framework {netList[choose][0]}") print(f"您选择了 .net framework {netList[choose][0]}")
print(f"如果是 Offline Installer 版本,提示需要连接互联网,其实是不需要的,断网也可以安装")
print(f"如果 Offline Installer 版本连接网络时安装失败,提示无法连接服务器或连接超时,可以尝试下载完安装包加载过程中断网以便断网安装")
print(f"一般建议 Offline Installer 版本在下载完 exe 安装程序后在加载过程中断网以便提高安装速度")
print("开始下载") print("开始下载")
os.system("rm -rf /tmp/wineinstallnetframework") os.system("rm -rf /tmp/wineinstallnetframework")
os.system("mkdir -p /tmp/wineinstallnetframework") os.system("mkdir -p /tmp/wineinstallnetframework")

0
InstallOther.py Normal file → Executable file
View File

53
Makefile Normal file
View File

@@ -0,0 +1,53 @@
build:
cd VM-source && qmake
cd VM-source && make
cp -rv VM-source/VirtualMachine VM
cp -rv VM-source/deepin-wine-runner.svg VM
cp -rv VM-source/api VM
cp -rv VM-source/Windows7X64Auto.iso VM
cp -rv VM-source/Windows7X86Auto.iso VM
cp -rv VM-source/run.py VM
zip -v -q -r package-script.zip package-script
cp -rv VM deb/opt/apps/deepin-wine-runner
cp -rv AllInstall.py deb/opt/apps/deepin-wine-runner
cp -rv BeCyIconGrabber.exe deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-packager-with-script.py deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-packager.py deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-runner-update-bug deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-runner.svg deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-venturi-setter.py deb/opt/apps/deepin-wine-runner
cp -rv DisabledOpengl.reg deb/opt/apps/deepin-wine-runner
cp -rv EnabledOpengl.reg deb/opt/apps/deepin-wine-runner
cp -rv geek.exe deb/opt/apps/deepin-wine-runner
cp -rv information.json deb/opt/apps/deepin-wine-runner
cp -rv InstallMono.py deb/opt/apps/deepin-wine-runner
cp -rv InstallMsxml.py deb/opt/apps/deepin-wine-runner
cp -rv InstallNetFramework.py deb/opt/apps/deepin-wine-runner
cp -rv InstallOther.py deb/opt/apps/deepin-wine-runner
cp -rv InstallVisualCPlusPlus.py deb/opt/apps/deepin-wine-runner
cp -rv launch.sh deb/opt/apps/deepin-wine-runner
cp -rv LICENSE deb/opt/apps/deepin-wine-runner
cp -rv mainwindow.py deb/opt/apps/deepin-wine-runner/deepin-wine-runner
cp -rv package-script.zip deb/opt/apps/deepin-wine-runner
cp -rv Run.bat deb/opt/apps/deepin-wine-runner
cp -rv RunVM.sh deb/opt/apps/deepin-wine-runner
cp -rv "wine install" deb/opt/apps/deepin-wine-runner
cp -rv 窗体透明度设置工具.exe deb/opt/apps/deepin-wine-runner
cp -rv dlls deb/opt/apps/deepin-wine-runner
dpkg -b deb spark-deepin-wine-runner.deb
install:
make build
sudo dpkg -i spark-deepin-wine-runner.deb
sudo apt install -f
remove:
sudo apt purge spark-deepin-wine-runner
depend:
sudo apt install python3 python3-pil python3-pil.imagetk\
python3-pyquery deepin-terminal aria2 curl unrar unzip\
python3-requests fakeroot bash python3-pyqt5
run:
python3 mainwindow.py

View File

@@ -1,4 +1,4 @@
# wine 运行器 1.7.0 # wine 运行器 1.7.1
## 介绍 ## 介绍
一个图形化了以下命令的程序 一个图形化了以下命令的程序
@@ -190,6 +190,26 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
### 1.0.02021年01月29日 ### 1.0.02021年01月29日
1. 实现内容 1. 实现内容
## 源码安装教程
1. 安装需要的依赖
```bash
sudo apt install git make
```
2. 下载仓库
```bash
git clone https://gitee.com/gfdgd-xi/deep-wine-runner.git
cd deep-wine-runner
```
3. 从源码运行程序(如果是从源码安装请跳过这一步)
```bash
make depend
make run
```
4. 从源码安装程序
```bash
make install
```
## 更多 ## 更多
+ https://gitee.com/gfdgd-xi/deep-wine-runner + https://gitee.com/gfdgd-xi/deep-wine-runner
+ https://github.com/gfdgd-xi/deep-wine-runner + https://github.com/gfdgd-xi/deep-wine-runner

View File

@@ -1,6 +1,6 @@
############################################################################# #############################################################################
# Makefile for building: VirtualMachine # Makefile for building: VirtualMachine
# Generated by qmake (3.1) (Qt 5.11.3) # Generated by qmake (3.1) (Qt 5.15.3)
# Project: VirtualMachine.pro # Project: VirtualMachine.pro
# Template: app # Template: app
# Command: /usr/lib/qt5/bin/qmake -o Makefile VirtualMachine.pro # Command: /usr/lib/qt5/bin/qmake -o Makefile VirtualMachine.pro
@@ -8,14 +8,16 @@
MAKEFILE = Makefile MAKEFILE = Makefile
EQ = =
####### Compiler, tools and options ####### Compiler, tools and options
CC = gcc CC = gcc
CXX = g++ CXX = g++
DEFINES = -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB DEFINES = -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB
CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) CFLAGS = -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
CXXFLAGS = -pipe -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC $(DEFINES) CXXFLAGS = -pipe -O2 -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -isystem /usr/include/libdrm -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ INCPATH = -I. -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. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++
QMAKE = /usr/lib/qt5/bin/qmake QMAKE = /usr/lib/qt5/bin/qmake
DEL_FILE = rm -f DEL_FILE = rm -f
CHK_DIR_EXISTS= test -d CHK_DIR_EXISTS= test -d
@@ -38,7 +40,7 @@ DISTNAME = VirtualMachine1.0.0
DISTDIR = /home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/.tmp/VirtualMachine1.0.0 DISTDIR = /home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/.tmp/VirtualMachine1.0.0
LINK = g++ LINK = g++
LFLAGS = -Wl,-O1 LFLAGS = -Wl,-O1
LIBS = $(SUBLIBS) -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Core -lGL -lpthread LIBS = $(SUBLIBS) /usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5Network.so /usr/lib/x86_64-linux-gnu/libQt5Core.so -lGL -lpthread
AR = ar cqs AR = ar cqs
RANLIB = RANLIB =
SED = sed SED = sed
@@ -75,6 +77,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_dbus.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/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_dbus_private.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_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_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_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
@@ -88,25 +94,45 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickcontrols2.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quicktemplates2.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.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_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
@@ -123,6 +149,7 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
@@ -144,7 +171,7 @@ TARGET = VirtualMachine
first: all first: all
####### Build rules ####### Build rules
$(TARGET): ui_mainwindow.h $(OBJECTS) VirtualMachine: ui_mainwindow.h $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) $(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 \ 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 \
@@ -165,6 +192,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_dbus.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/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_dbus_private.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_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_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_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
@@ -178,25 +209,45 @@ 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_input_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickcontrols2.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quicktemplates2.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.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_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
@@ -213,6 +264,7 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
@@ -225,11 +277,7 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
VirtualMachine.pro \ VirtualMachine.pro \
图标.qrc \ 图标.qrc
/usr/lib/x86_64-linux-gnu/libQt5Widgets.prl \
/usr/lib/x86_64-linux-gnu/libQt5Gui.prl \
/usr/lib/x86_64-linux-gnu/libQt5Network.prl \
/usr/lib/x86_64-linux-gnu/libQt5Core.prl
$(QMAKE) -o Makefile VirtualMachine.pro $(QMAKE) -o Makefile VirtualMachine.pro
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf: /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/unix.conf:
@@ -249,6 +297,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_dbus.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri:
/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_dbus_private.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_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_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_egl_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
@@ -262,25 +314,45 @@ 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_input_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickcontrols2.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quicktemplates2.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.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_vulkan_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri:
@@ -297,6 +369,7 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources_functions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf:
@@ -310,17 +383,13 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf:
VirtualMachine.pro: VirtualMachine.pro:
图标.qrc: 图标.qrc:
/usr/lib/x86_64-linux-gnu/libQt5Widgets.prl:
/usr/lib/x86_64-linux-gnu/libQt5Gui.prl:
/usr/lib/x86_64-linux-gnu/libQt5Network.prl:
/usr/lib/x86_64-linux-gnu/libQt5Core.prl:
qmake: FORCE qmake: FORCE
@$(QMAKE) -o Makefile VirtualMachine.pro @$(QMAKE) -o Makefile VirtualMachine.pro
qmake_all: FORCE qmake_all: FORCE
all: Makefile $(TARGET) all: Makefile VirtualMachine
dist: distdir FORCE dist: distdir FORCE
(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR) (cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
@@ -361,14 +430,28 @@ compiler_rcc_clean:
-$(DEL_FILE) qrc_图标.cpp -$(DEL_FILE) qrc_图标.cpp
qrc_图标.cpp: 图标.qrc \ qrc_图标.cpp: 图标.qrc \
/usr/lib/qt5/bin/rcc \ /usr/lib/qt5/bin/rcc \
icon.png deepin-wine-runner.png \
deepin-wine-runner.svg \
截图_VirtualBox\ Machine_20220712142929.png \
截图/截图_VirtualBox\ Machine_20220712143018.png \
截图/截图_VirtualBox\ Machine_20220712192850.png \
截图/截图_VirtualBox\ Machine_20220712143044.png \
截图/截图_VirtualBox\ Manager_20220712223602.png \
截图/截图_VirtualBox\ Machine_20220712143103.png \
截图/截图_VirtualBox\ Machine_20220712143029.png \
截图/截图_选择区域_20220712224639.png \
截图/截图_VirtualBox\ Machine_20220712193527.png \
截图/截图_VirtualBox\ Machine_20220712143037.png \
截图/截图_VirtualBox_20220712223705.png \
截图/截图_VirtualBox\ Machine_20220712143006.png \
截图/截图_VirtualBox\ Machine_20220712191756.png
/usr/lib/qt5/bin/rcc -name 图标 图标.qrc -o qrc_图标.cpp /usr/lib/qt5/bin/rcc -name 图标 图标.qrc -o qrc_图标.cpp
compiler_moc_predefs_make_all: moc_predefs.h compiler_moc_predefs_make_all: moc_predefs.h
compiler_moc_predefs_clean: compiler_moc_predefs_clean:
-$(DEL_FILE) moc_predefs.h -$(DEL_FILE) moc_predefs.h
moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
g++ -pipe -O2 -std=gnu++11 -Wall -W -dM -E -o 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 compiler_moc_header_make_all: moc_mainwindow.cpp
compiler_moc_header_clean: compiler_moc_header_clean:
@@ -416,7 +499,7 @@ moc_mainwindow.o: moc_mainwindow.cpp
install_target: first FORCE install_target: first FORCE
@test -d $(INSTALL_ROOT)/opt/VirtualMachine/bin || mkdir -p $(INSTALL_ROOT)/opt/VirtualMachine/bin @test -d $(INSTALL_ROOT)/opt/VirtualMachine/bin || mkdir -p $(INSTALL_ROOT)/opt/VirtualMachine/bin
-$(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/opt/VirtualMachine/bin/$(QMAKE_TARGET) $(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/opt/VirtualMachine/bin/$(QMAKE_TARGET)
-$(STRIP) $(INSTALL_ROOT)/opt/VirtualMachine/bin/$(QMAKE_TARGET) -$(STRIP) $(INSTALL_ROOT)/opt/VirtualMachine/bin/$(QMAKE_TARGET)
uninstall_target: FORCE uninstall_target: FORCE

Binary file not shown.

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.2, 2022-07-13T14:26:12. --> <!-- Written by QtCreator 4.8.2, 2022-07-27T22:35:09. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>
@@ -294,8 +294,8 @@
<value type="int" key="PE.EnvironmentAspect.Base">2</value> <value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">VirtualMachine</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">VirtualMachine</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">VirtualMachine2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/gfdgd_xi/Desktop/deep-wine-runner/VM/VirtualMachine.pro</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="Qt4ProjectManager.Qt4RunConfiguration.ProFile">VirtualMachine.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value> <value type="QString" key="RunConfiguration.Arguments"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value> <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
@@ -305,7 +305,6 @@
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value> <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value> <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value> <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseTerminal">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value> <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/build-VirtualMachine-unknown-Debug</value> <value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/build-VirtualMachine-unknown-Debug</value>
</valuemap> </valuemap>

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

View File

@@ -14,7 +14,7 @@
<string>Windows 应用适配工具</string> <string>Windows 应用适配工具</string>
</property> </property>
<property name="windowIcon"> <property name="windowIcon">
<iconset resource="图标.qrc"> <iconset>
<normaloff>:/icon.png</normaloff>:/icon.png</iconset> <normaloff>:/icon.png</normaloff>:/icon.png</iconset>
</property> </property>
<widget class="QWidget" name="centralWidget"> <widget class="QWidget" name="centralWidget">
@@ -25,7 +25,7 @@
<enum>QTabWidget::Rounded</enum> <enum>QTabWidget::Rounded</enum>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>2</number>
</property> </property>
<widget class="QWidget" name="tab"> <widget class="QWidget" name="tab">
<attribute name="title"> <attribute name="title">
@@ -237,17 +237,17 @@ p, li { white-space: pre-wrap; }
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>200</width> <width>200</width>
<height>313</height> <height>200</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>200</width> <width>200</width>
<height>313</height> <height>200</height>
</size> </size>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">border-image: url(:/icon.png);</string> <string notr="true">border-image: url(:/deepin-wine-runner.png);</string>
</property> </property>
<property name="text"> <property name="text">
<string/> <string/>
@@ -315,8 +315,6 @@ p, li { white-space: pre-wrap; }
</action> </action>
</widget> </widget>
<layoutdefault spacing="6" margin="11"/> <layoutdefault spacing="6" margin="11"/>
<resources> <resources/>
<include location="图标.qrc"/>
</resources>
<connections/> <connections/>
</ui> </ui>

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,7 +1,7 @@
/******************************************************************************** /********************************************************************************
** Form generated from reading UI file 'mainwindow.ui' ** Form generated from reading UI file 'mainwindow.ui'
** **
** Created by: Qt User Interface Compiler version 5.11.3 ** Created by: Qt User Interface Compiler version 5.15.3
** **
** WARNING! All changes made in this file will be lost when recompiling UI file! ** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/ ********************************************************************************/
@@ -61,45 +61,45 @@ public:
void setupUi(QMainWindow *MainWindow) void setupUi(QMainWindow *MainWindow)
{ {
if (MainWindow->objectName().isEmpty()) if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QStringLiteral("MainWindow")); MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(807, 429); MainWindow->resize(807, 429);
QIcon icon; QIcon icon;
icon.addFile(QStringLiteral(":/icon.png"), QSize(), QIcon::Normal, QIcon::Off); icon.addFile(QString::fromUtf8(":/icon.png"), QSize(), QIcon::Normal, QIcon::Off);
MainWindow->setWindowIcon(icon); MainWindow->setWindowIcon(icon);
action = new QAction(MainWindow); action = new QAction(MainWindow);
action->setObjectName(QStringLiteral("action")); action->setObjectName(QString::fromUtf8("action"));
action_2 = new QAction(MainWindow); action_2 = new QAction(MainWindow);
action_2->setObjectName(QStringLiteral("action_2")); action_2->setObjectName(QString::fromUtf8("action_2"));
centralWidget = new QWidget(MainWindow); centralWidget = new QWidget(MainWindow);
centralWidget->setObjectName(QStringLiteral("centralWidget")); centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
horizontalLayout = new QHBoxLayout(centralWidget); horizontalLayout = new QHBoxLayout(centralWidget);
horizontalLayout->setSpacing(6); horizontalLayout->setSpacing(6);
horizontalLayout->setContentsMargins(11, 11, 11, 11); horizontalLayout->setContentsMargins(11, 11, 11, 11);
horizontalLayout->setObjectName(QStringLiteral("horizontalLayout")); horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
tabWidget = new QTabWidget(centralWidget); tabWidget = new QTabWidget(centralWidget);
tabWidget->setObjectName(QStringLiteral("tabWidget")); tabWidget->setObjectName(QString::fromUtf8("tabWidget"));
tabWidget->setTabShape(QTabWidget::Rounded); tabWidget->setTabShape(QTabWidget::Rounded);
tab = new QWidget(); tab = new QWidget();
tab->setObjectName(QStringLiteral("tab")); tab->setObjectName(QString::fromUtf8("tab"));
verticalLayout = new QVBoxLayout(tab); verticalLayout = new QVBoxLayout(tab);
verticalLayout->setSpacing(6); verticalLayout->setSpacing(6);
verticalLayout->setContentsMargins(11, 11, 11, 11); verticalLayout->setContentsMargins(11, 11, 11, 11);
verticalLayout->setObjectName(QStringLiteral("verticalLayout")); verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
horizontalLayout_2 = new QHBoxLayout(); horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setSpacing(6); horizontalLayout_2->setSpacing(6);
horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2")); horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
label = new QLabel(tab); label = new QLabel(tab);
label->setObjectName(QStringLiteral("label")); label->setObjectName(QString::fromUtf8("label"));
horizontalLayout_2->addWidget(label); horizontalLayout_2->addWidget(label);
isoPath = new QLineEdit(tab); isoPath = new QLineEdit(tab);
isoPath->setObjectName(QStringLiteral("isoPath")); isoPath->setObjectName(QString::fromUtf8("isoPath"));
horizontalLayout_2->addWidget(isoPath); horizontalLayout_2->addWidget(isoPath);
browser = new QPushButton(tab); browser = new QPushButton(tab);
browser->setObjectName(QStringLiteral("browser")); browser->setObjectName(QString::fromUtf8("browser"));
horizontalLayout_2->addWidget(browser); horizontalLayout_2->addWidget(browser);
@@ -108,9 +108,9 @@ public:
horizontalLayout_3 = new QHBoxLayout(); horizontalLayout_3 = new QHBoxLayout();
horizontalLayout_3->setSpacing(6); horizontalLayout_3->setSpacing(6);
horizontalLayout_3->setObjectName(QStringLiteral("horizontalLayout_3")); horizontalLayout_3->setObjectName(QString::fromUtf8("horizontalLayout_3"));
label_2 = new QLabel(tab); label_2 = new QLabel(tab);
label_2->setObjectName(QStringLiteral("label_2")); label_2->setObjectName(QString::fromUtf8("label_2"));
horizontalLayout_3->addWidget(label_2); horizontalLayout_3->addWidget(label_2);
@@ -118,7 +118,7 @@ public:
systemVersion->addItem(QString()); systemVersion->addItem(QString());
systemVersion->addItem(QString()); systemVersion->addItem(QString());
systemVersion->addItem(QString()); systemVersion->addItem(QString());
systemVersion->setObjectName(QStringLiteral("systemVersion")); systemVersion->setObjectName(QString::fromUtf8("systemVersion"));
horizontalLayout_3->addWidget(systemVersion); horizontalLayout_3->addWidget(systemVersion);
@@ -128,13 +128,13 @@ public:
horizontalLayout_4 = new QHBoxLayout(); horizontalLayout_4 = new QHBoxLayout();
horizontalLayout_4->setSpacing(6); horizontalLayout_4->setSpacing(6);
horizontalLayout_4->setObjectName(QStringLiteral("horizontalLayout_4")); horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4"));
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
horizontalLayout_4->addItem(horizontalSpacer); horizontalLayout_4->addItem(horizontalSpacer);
install = new QPushButton(tab); install = new QPushButton(tab);
install->setObjectName(QStringLiteral("install")); install->setObjectName(QString::fromUtf8("install"));
horizontalLayout_4->addWidget(install); horizontalLayout_4->addWidget(install);
@@ -142,26 +142,26 @@ public:
verticalLayout->addLayout(horizontalLayout_4); verticalLayout->addLayout(horizontalLayout_4);
textBrowser_3 = new QTextBrowser(tab); textBrowser_3 = new QTextBrowser(tab);
textBrowser_3->setObjectName(QStringLiteral("textBrowser_3")); textBrowser_3->setObjectName(QString::fromUtf8("textBrowser_3"));
verticalLayout->addWidget(textBrowser_3); verticalLayout->addWidget(textBrowser_3);
tabWidget->addTab(tab, QString()); tabWidget->addTab(tab, QString());
tab_3 = new QWidget(); tab_3 = new QWidget();
tab_3->setObjectName(QStringLiteral("tab_3")); tab_3->setObjectName(QString::fromUtf8("tab_3"));
horizontalLayout_5 = new QHBoxLayout(tab_3); horizontalLayout_5 = new QHBoxLayout(tab_3);
horizontalLayout_5->setSpacing(6); horizontalLayout_5->setSpacing(6);
horizontalLayout_5->setContentsMargins(11, 11, 11, 11); horizontalLayout_5->setContentsMargins(11, 11, 11, 11);
horizontalLayout_5->setObjectName(QStringLiteral("horizontalLayout_5")); horizontalLayout_5->setObjectName(QString::fromUtf8("horizontalLayout_5"));
textBrowser = new QTextBrowser(tab_3); textBrowser = new QTextBrowser(tab_3);
textBrowser->setObjectName(QStringLiteral("textBrowser")); textBrowser->setObjectName(QString::fromUtf8("textBrowser"));
textBrowser->setUndoRedoEnabled(false); textBrowser->setUndoRedoEnabled(false);
horizontalLayout_5->addWidget(textBrowser); horizontalLayout_5->addWidget(textBrowser);
tabWidget->addTab(tab_3, QString()); tabWidget->addTab(tab_3, QString());
tab_2 = new QWidget(); tab_2 = new QWidget();
tab_2->setObjectName(QStringLiteral("tab_2")); tab_2->setObjectName(QString::fromUtf8("tab_2"));
QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0); sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0); sizePolicy.setVerticalStretch(0);
@@ -170,20 +170,20 @@ public:
horizontalLayout_6 = new QHBoxLayout(tab_2); horizontalLayout_6 = new QHBoxLayout(tab_2);
horizontalLayout_6->setSpacing(6); horizontalLayout_6->setSpacing(6);
horizontalLayout_6->setContentsMargins(11, 11, 11, 11); horizontalLayout_6->setContentsMargins(11, 11, 11, 11);
horizontalLayout_6->setObjectName(QStringLiteral("horizontalLayout_6")); horizontalLayout_6->setObjectName(QString::fromUtf8("horizontalLayout_6"));
verticalLayout_3 = new QVBoxLayout(); verticalLayout_3 = new QVBoxLayout();
verticalLayout_3->setSpacing(6); verticalLayout_3->setSpacing(6);
verticalLayout_3->setObjectName(QStringLiteral("verticalLayout_3")); verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3"));
label_3 = new QLabel(tab_2); label_3 = new QLabel(tab_2);
label_3->setObjectName(QStringLiteral("label_3")); label_3->setObjectName(QString::fromUtf8("label_3"));
QSizePolicy sizePolicy1(QSizePolicy::Maximum, QSizePolicy::Maximum); QSizePolicy sizePolicy1(QSizePolicy::Maximum, QSizePolicy::Maximum);
sizePolicy1.setHorizontalStretch(0); sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0); sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(label_3->sizePolicy().hasHeightForWidth()); sizePolicy1.setHeightForWidth(label_3->sizePolicy().hasHeightForWidth());
label_3->setSizePolicy(sizePolicy1); label_3->setSizePolicy(sizePolicy1);
label_3->setMinimumSize(QSize(200, 313)); label_3->setMinimumSize(QSize(200, 200));
label_3->setMaximumSize(QSize(200, 313)); label_3->setMaximumSize(QSize(200, 200));
label_3->setStyleSheet(QStringLiteral("border-image: url(:/icon.png);")); label_3->setStyleSheet(QString::fromUtf8("border-image: url(:/deepin-wine-runner.png);"));
verticalLayout_3->addWidget(label_3); verticalLayout_3->addWidget(label_3);
@@ -195,7 +195,7 @@ public:
horizontalLayout_6->addLayout(verticalLayout_3); horizontalLayout_6->addLayout(verticalLayout_3);
textBrowser_2 = new QTextBrowser(tab_2); textBrowser_2 = new QTextBrowser(tab_2);
textBrowser_2->setObjectName(QStringLiteral("textBrowser_2")); textBrowser_2->setObjectName(QString::fromUtf8("textBrowser_2"));
QSizePolicy sizePolicy2(QSizePolicy::Minimum, QSizePolicy::Expanding); QSizePolicy sizePolicy2(QSizePolicy::Minimum, QSizePolicy::Expanding);
sizePolicy2.setHorizontalStretch(0); sizePolicy2.setHorizontalStretch(0);
sizePolicy2.setVerticalStretch(0); sizePolicy2.setVerticalStretch(0);
@@ -212,7 +212,7 @@ public:
retranslateUi(MainWindow); retranslateUi(MainWindow);
tabWidget->setCurrentIndex(0); tabWidget->setCurrentIndex(2);
QMetaObject::connectSlotsByName(MainWindow); QMetaObject::connectSlotsByName(MainWindow);
@@ -220,21 +220,21 @@ public:
void retranslateUi(QMainWindow *MainWindow) void retranslateUi(QMainWindow *MainWindow)
{ {
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "Windows \345\272\224\347\224\250\351\200\202\351\205\215\345\267\245\345\205\267", nullptr)); MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "Windows \345\272\224\347\224\250\351\200\202\351\205\215\345\267\245\345\205\267", nullptr));
action->setText(QApplication::translate("MainWindow", "\351\200\200\345\207\272", nullptr)); action->setText(QCoreApplication::translate("MainWindow", "\351\200\200\345\207\272", nullptr));
action_2->setText(QApplication::translate("MainWindow", "\345\205\263\344\272\216", nullptr)); action_2->setText(QCoreApplication::translate("MainWindow", "\345\205\263\344\272\216", nullptr));
label->setText(QApplication::translate("MainWindow", "\351\225\234\345\203\217\350\267\257\345\276\204\357\274\232", nullptr)); label->setText(QCoreApplication::translate("MainWindow", "\351\225\234\345\203\217\350\267\257\345\276\204\357\274\232", nullptr));
isoPath->setPlaceholderText(QApplication::translate("MainWindow", "\350\257\267\351\200\211\346\213\251\347\263\273\347\273\237\351\225\234\345\203\217", nullptr)); isoPath->setPlaceholderText(QCoreApplication::translate("MainWindow", "\350\257\267\351\200\211\346\213\251\347\263\273\347\273\237\351\225\234\345\203\217", nullptr));
browser->setText(QApplication::translate("MainWindow", "\346\265\217\350\247\210\342\200\246\342\200\246", nullptr)); browser->setText(QCoreApplication::translate("MainWindow", "\346\265\217\350\247\210\342\200\246\342\200\246", nullptr));
label_2->setText(QApplication::translate("MainWindow", "\347\263\273\347\273\237\347\211\210\346\234\254\357\274\232", nullptr)); label_2->setText(QCoreApplication::translate("MainWindow", "\347\263\273\347\273\237\347\211\210\346\234\254\357\274\232", nullptr));
systemVersion->setItemText(0, QApplication::translate("MainWindow", "Windows 7 32 \344\275\215\357\274\210\346\224\257\346\214\201\350\207\252\345\212\250\345\256\211\350\243\205\357\274\211", nullptr)); systemVersion->setItemText(0, QCoreApplication::translate("MainWindow", "Windows 7 32 \344\275\215\357\274\210\346\224\257\346\214\201\350\207\252\345\212\250\345\256\211\350\243\205\357\274\211", nullptr));
systemVersion->setItemText(1, QApplication::translate("MainWindow", "Windows 7 64 \344\275\215\357\274\210\346\224\257\346\214\201\350\207\252\345\212\250\345\256\211\350\243\205\357\274\211", nullptr)); systemVersion->setItemText(1, QCoreApplication::translate("MainWindow", "Windows 7 64 \344\275\215\357\274\210\346\224\257\346\214\201\350\207\252\345\212\250\345\256\211\350\243\205\357\274\211", nullptr));
systemVersion->setItemText(2, QApplication::translate("MainWindow", "\345\205\266\345\256\203 Windows \347\263\273\347\273\237\357\274\210\344\270\215\346\224\257\346\214\201\350\207\252\345\212\250\345\256\211\350\243\205\357\274\211", nullptr)); systemVersion->setItemText(2, QCoreApplication::translate("MainWindow", "\345\205\266\345\256\203 Windows \347\263\273\347\273\237\357\274\210\344\270\215\346\224\257\346\214\201\350\207\252\345\212\250\345\256\211\350\243\205\357\274\211", nullptr));
systemVersion->setCurrentText(QString()); systemVersion->setCurrentText(QString());
//systemVersion->setPlaceholderText(QApplication::translate("MainWindow", "\350\257\267\351\200\211\346\213\251\347\263\273\347\273\237\347\261\273\345\236\213\357\274\210\345\246\202\346\236\234\350\257\206\345\210\253\344\270\215\344\272\206\350\257\267\350\207\252\350\241\214\351\200\211\346\213\251\357\274\214\345\246\202\346\236\234\351\200\211\346\213\251\351\224\231\350\257\257\346\210\226\344\270\215\346\224\257\346\214\201\345\260\206\346\227\240\346\263\225\350\277\233\350\241\214\350\207\252\345\212\250\345\256\211\350\243\205\357\274\211", nullptr)); systemVersion->setPlaceholderText(QCoreApplication::translate("MainWindow", "\350\257\267\351\200\211\346\213\251\347\263\273\347\273\237\347\261\273\345\236\213\357\274\210\345\246\202\346\236\234\350\257\206\345\210\253\344\270\215\344\272\206\350\257\267\350\207\252\350\241\214\351\200\211\346\213\251\357\274\214\345\246\202\346\236\234\351\200\211\346\213\251\351\224\231\350\257\257\346\210\226\344\270\215\346\224\257\346\214\201\345\260\206\346\227\240\346\263\225\350\277\233\350\241\214\350\207\252\345\212\250\345\256\211\350\243\205\357\274\211", nullptr));
install->setText(QApplication::translate("MainWindow", "\345\256\211\350\243\205", nullptr)); install->setText(QCoreApplication::translate("MainWindow", "\345\256\211\350\243\205", nullptr));
textBrowser_3->setHtml(QApplication::translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" textBrowser_3->setHtml(QCoreApplication::translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n" "p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;\">\n" "</style></head><body style=\" font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;\">\n"
@@ -243,9 +243,11 @@ public:
"\246\202\346\236\234\344\270\213\350\275\275\350\277\231\344\270\252\357\274\214\347\263\273\347\273\237\347\211\210\346\234\254\351\200\211\347\254\254\344\270\200\351\241\271\357\274\214\344\270\200\350\210\254\346\216\250\350\215\220\350\277\231\344\270\252\357\274\211ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/</span></p>\n" "\246\202\346\236\234\344\270\213\350\275\275\350\277\231\344\270\252\357\274\214\347\263\273\347\273\237\347\211\210\346\234\254\351\200\211\347\254\254\344\270\200\351\241\271\357\274\214\344\270\200\350\210\254\346\216\250\350\215\220\350\277\231\344\270\252\357\274\211ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">\357\274\210\345\246\202\346\236\234\344\270\213\350\275\275\350\277\231\344\270\252\357\274\214\347\263\273\347\273\237\347\211\210\346\234\254\351\200\211\347\254\254\344\272\214\351\241\271\357\274\211ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/</span></p>\n" "<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">\357\274\210\345\246\202\346\236\234\344\270\213\350\275\275\350\277\231\344\270\252\357\274\214\347\263\273\347\273\237\347\211\210\346\234\254\351\200\211\347\254\254\344\272\214\351\241\271\357\274\211ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/</span></p>\n"
"<hr /></body></html>", nullptr)); "<hr /></body></html>", nullptr));
tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate("MainWindow", "\350\256\276\347\275\256", nullptr)); tabWidget->setTabText(tabWidget->indexOf(tab), QCoreApplication::translate("MainWindow", "\350\256\276\347\275\256", nullptr));
tabWidget->setTabToolTip(tabWidget->indexOf(tab), QApplication::translate("MainWindow", "\350\256\276\347\275\256", nullptr)); #if QT_CONFIG(tooltip)
textBrowser->setHtml(QApplication::translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" tabWidget->setTabToolTip(tabWidget->indexOf(tab), QCoreApplication::translate("MainWindow", "\350\256\276\347\275\256", nullptr));
#endif // QT_CONFIG(tooltip)
textBrowser->setHtml(QCoreApplication::translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n" "p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;\">\n" "</style></head><body style=\" font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;\">\n"
@@ -323,9 +325,9 @@ public:
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">6\343\200\201\347\255\211\345\276\205\345\256\211\350\243\205\345\256\214\346\257\225\345\220\216\357\274\214\351\200\211\346\213\251\342\200\234Reboot now\342\200\235\347\204\266\345\220\216\347\202\271\345\207\273\342\200\234Finish\342\200\235\351\207\215\345\220\257\346\255\244\350\231\232\346\213\237\346\234\272\345\215\263\345\217\257\345\256\211\350\243\205\346\210\220\345\212\237\357\274\210\351\200\211\346\213\251\342\200\234Reboot now\342\200\235\345\271\266\347\202\271\342\200\234Finish\342\200\235\344\274\232\350\207\252\345\212\250\351\207\215\346\226\260\345\220\257\345\212\250\357\274\211</span></p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">6\343\200\201\347\255\211\345\276\205\345\256\211\350\243\205\345\256\214\346\257\225\345\220\216\357\274\214\351\200\211\346\213\251\342\200\234Reboot now\342\200\235\347\204\266\345\220\216\347\202\271\345\207\273\342\200\234Finish\342\200\235\351\207\215\345\220\257\346\255\244\350\231\232\346\213\237\346\234\272\345\215\263\345\217\257\345\256\211\350\243\205\346\210\220\345\212\237\357\274\210\351\200\211\346\213\251\342\200\234Reboot now\342\200\235\345\271\266\347\202\271\342\200\234Finish\342\200\235\344\274\232\350\207\252\345\212\250\351\207\215\346\226\260\345\220\257\345\212\250\357\274\211</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/\346\210\252\345\233\276/\346\210\252\345\233\276_VirtualBox Machi" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/\346\210\252\345\233\276/\346\210\252\345\233\276_VirtualBox Machi"
"ne_20220712143103.png\" /></p></body></html>", nullptr)); "ne_20220712143103.png\" /></p></body></html>", nullptr));
tabWidget->setTabText(tabWidget->indexOf(tab_3), QApplication::translate("MainWindow", "\345\256\211\350\243\205/\344\275\277\347\224\250\345\270\256\345\212\251", nullptr)); tabWidget->setTabText(tabWidget->indexOf(tab_3), QCoreApplication::translate("MainWindow", "\345\256\211\350\243\205/\344\275\277\347\224\250\345\270\256\345\212\251", nullptr));
label_3->setText(QString()); label_3->setText(QString());
textBrowser_2->setHtml(QApplication::translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" textBrowser_2->setHtml(QCoreApplication::translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n" "p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;\">\n" "</style></head><body style=\" font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;\">\n"
@@ -346,7 +348,7 @@ public:
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">\345\217\202\350\200\203\346\226\207\347\214\256\357\274\232</p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">\345\217\202\350\200\203\346\226\207\347\214\256\357\274\232</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-b" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-b"
"lock-indent:0; text-indent:0px;\"><span style=\" font-family:'Droid Sans Mono','monospace','monospace'; font-size:11pt; color:#6a9955;\">https://juejin.cn/post/7080484519328874510</span></p></body></html>", nullptr)); "lock-indent:0; text-indent:0px;\"><span style=\" font-family:'Droid Sans Mono','monospace','monospace'; font-size:11pt; color:#6a9955;\">https://juejin.cn/post/7080484519328874510</span></p></body></html>", nullptr));
tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate("MainWindow", "\345\205\263\344\272\216", nullptr)); tabWidget->setTabText(tabWidget->indexOf(tab_2), QCoreApplication::translate("MainWindow", "\345\205\263\344\272\216", nullptr));
} // retranslateUi } // retranslateUi
}; };

View File

@@ -1,6 +1,7 @@
<RCC> <RCC>
<qresource prefix="/"> <qresource prefix="/">
<file>icon.png</file> <file>deepin-wine-runner.svg</file>
<file>deepin-wine-runner.png</file>
</qresource> </qresource>
<qresource prefix="/picture"> <qresource prefix="/picture">
<file>截图_VirtualBox Machine_20220712142929.png</file> <file>截图_VirtualBox Machine_20220712142929.png</file>

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -1,5 +1,5 @@
Package: spark-deepin-wine-runner Package: spark-deepin-wine-runner
Version: 1.7.0 Version: 1.7.1
Maintainer: gfdgd xi <3025613752@qq.com>, 为什么您不喜欢熊出没和阿布呢 Maintainer: gfdgd xi <3025613752@qq.com>, 为什么您不喜欢熊出没和阿布呢
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
Architecture: all Architecture: all

View File

@@ -1,3 +1,3 @@
# !/bin/sh # !/bin/sh
# 向服务器返回安装数加1不显示内容且忽略错误 # 向服务器返回安装数加1不显示内容且忽略错误
curl http://120.25.153.144/spark-deepin-wine-runner/Install.php?Version=1.7.0 -s > /dev/null | true curl http://120.25.153.144/spark-deepin-wine-runner/Install.php?Version=1.7.1 -s > /dev/null | true

View File

@@ -50,6 +50,9 @@ while True:
if 0 <= choose and choose < len(netList): if 0 <= choose and choose < len(netList):
break break
print(f"您选择了 .net framework {netList[choose][0]}") print(f"您选择了 .net framework {netList[choose][0]}")
print(f"如果是 Offline Installer 版本,提示需要连接互联网,其实是不需要的,断网也可以安装")
print(f"如果 Offline Installer 版本连接网络时安装失败,提示无法连接服务器或连接超时,可以尝试下载完安装包加载过程中断网以便断网安装")
print(f"一般建议 Offline Installer 版本在下载完 exe 安装程序后在加载过程中断网以便提高安装速度")
print("开始下载") print("开始下载")
os.system("rm -rf /tmp/wineinstallnetframework") os.system("rm -rf /tmp/wineinstallnetframework")
os.system("mkdir -p /tmp/wineinstallnetframework") os.system("mkdir -p /tmp/wineinstallnetframework")

0
deb/opt/apps/deepin-wine-runner/InstallOther.py Normal file → Executable file
View File

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
######################################################################### #########################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布 # 作者gfdgd xi、为什么您不喜欢熊出没和阿布
# 版本1.7.0 # 版本1.8.0
# 感谢:感谢 deepin-wine 团队,提供了 deepin-wine 给大家使用,让我能做这个程序 # 感谢:感谢 deepin-wine 团队,提供了 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 tkinter 构建 # 基于 Python3 的 tkinter 构建
######################################################################### #########################################################################
@@ -150,12 +150,12 @@ class make_deb_threading(QtCore.QThread):
if not os.path.exists(e9_text.text()): if not os.path.exists(e9_text.text()):
QtWidgets.QMessageBox.critical(widget, "错误", "图标的路径填写错误,无法进行构建 deb 包") QtWidgets.QMessageBox.critical(widget, "错误", "图标的路径填写错误,无法进行构建 deb 包")
disabled_or_NORMAL_all(True) disabled_or_NORMAL_all(True)
label13_text_change("图标的路径填写错误,无法进行构建 deb 包") self.label.emit("图标的路径填写错误,无法进行构建 deb 包")
return return
if not os.path.exists(e6_text.text()): if not os.path.exists(e6_text.text()):
QtWidgets.QMessageBox.critical(widget, "错误", "路径填写错误,无法继续构建 deb 包") QtWidgets.QMessageBox.critical(widget, "错误", "路径填写错误,无法继续构建 deb 包")
disabled_or_NORMAL_all(True) disabled_or_NORMAL_all(True)
label13_text_change("图标的路径填写错误,无法进行构建 deb 包") self.label.emit("图标的路径填写错误,无法进行构建 deb 包")
return return
############# #############
# 删除文件 # 删除文件
@@ -452,7 +452,7 @@ def get_home():
wine = {"deepin-wine": "deepin-wine", "deepin-wine5": "deepin-wine5", "wine": "wine", "wine64": "wine64", "deepin-wine5 stable": "deepin-wine5-stable", "deepin-wine6 stable": "deepin-wine6-stable", "spark-wine7-devel": "spark-wine7-devel", "ukylin-wine": "ukylin-wine"} wine = {"deepin-wine": "deepin-wine", "deepin-wine5": "deepin-wine5", "wine": "wine", "wine64": "wine64", "deepin-wine5 stable": "deepin-wine5-stable", "deepin-wine6 stable": "deepin-wine6-stable", "spark-wine7-devel": "spark-wine7-devel", "ukylin-wine": "ukylin-wine"}
os.chdir("/") os.chdir("/")
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
iconPath = "{}/icon.png".format(programPath) iconPath = "{}/deepin-wine-runner.svg".format(programPath)
information = json.loads(readtxt(f"{programPath}/information.json")) information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"] version = information["Version"]
tips = """提示: tips = """提示:
@@ -495,7 +495,7 @@ button4 = QtWidgets.QPushButton("浏览……")
button5 = QtWidgets.QPushButton("打包……") button5 = QtWidgets.QPushButton("打包……")
rmBash = QtWidgets.QCheckBox("设置卸载该 deb 后自动删除该容器") rmBash = QtWidgets.QCheckBox("设置卸载该 deb 后自动删除该容器")
textbox1 = QtWidgets.QTextBrowser() textbox1 = QtWidgets.QTextBrowser()
option1_text.addItems(["Network", "Chat", "Audio", "Video", "Graphics", "Office", "Translation", "Development", "Utility", "System"]) option1_text.addItems(["Network", "Chat", "Audio", "Video", "Graphics", "Office", "Translation", "Development", "Utility"])
option1_text.setCurrentText("Network") option1_text.setCurrentText("Network")
wineFrame = QtWidgets.QHBoxLayout() wineFrame = QtWidgets.QHBoxLayout()
chooseWineHelperValue = QtWidgets.QCheckBox("使用星火wine helper如不勾选默认为deepin-wine-helper") chooseWineHelperValue = QtWidgets.QCheckBox("使用星火wine helper如不勾选默认为deepin-wine-helper")

View File

@@ -3,7 +3,7 @@
########################################################################################### ###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢 # 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本1.7.0 # 版本1.7.0
# 更新时间2022年07月16 # 更新时间2022年07月19
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序 # 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 tkinter 构建 # 基于 Python3 的 tkinter 构建
########################################################################################### ###########################################################################################
@@ -23,8 +23,6 @@ import subprocess
import PyQt5.QtGui as QtGui import PyQt5.QtGui as QtGui
import PyQt5.QtCore as QtCore import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets import PyQt5.QtWidgets as QtWidgets
import PIL.Image as Image
import PIL.ImageTk as ImageTk
################### ###################
# 程序所需事件 # 程序所需事件
@@ -170,10 +168,11 @@ def about_this_program()->"显示“关于这个程序”窗口":
global title global title
global iconPath global iconPath
QT.message = QtWidgets.QMainWindow() QT.message = QtWidgets.QMainWindow()
QT.message.setWindowIcon(QtGui.QIcon(iconPath))
messageWidget = QtWidgets.QWidget() messageWidget = QtWidgets.QWidget()
QT.message.setWindowTitle(f"关于 {title}") QT.message.setWindowTitle(f"关于 {title}")
messageLayout = QtWidgets.QGridLayout() messageLayout = QtWidgets.QGridLayout()
messageLayout.addWidget(QtWidgets.QLabel(f"<img src='{iconPath}'>"), 0, 0, 1, 1, QtCore.Qt.AlignTop) messageLayout.addWidget(QtWidgets.QLabel(f"<img width=256 src='{iconPath}'>"), 0, 0, 1, 1, QtCore.Qt.AlignTop)
aboutInfo = QtWidgets.QTextBrowser(messageWidget) aboutInfo = QtWidgets.QTextBrowser(messageWidget)
aboutInfo.setHtml(about) aboutInfo.setHtml(about)
messageLayout.addWidget(aboutInfo, 0, 1, 1, 1) messageLayout.addWidget(aboutInfo, 0, 1, 1, 1)
@@ -196,79 +195,89 @@ def UpdateThings():
# 生成 desktop 文件在启动器 # 生成 desktop 文件在启动器
def make_desktop_on_launcher(): def make_desktop_on_launcher():
if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容 try:
QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名") if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容
return QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名")
if not CheckProgramIsInstall(wine[o1.currentText()]):
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
DisableButton(False)
return return
else: # 如果都有 if not CheckProgramIsInstall(wine[o1.currentText()]):
if os.path.exists(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop"): # 判断目录是否有该文件,如果有 if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
choose = QtWidgets.QMessageBox.question(widget, "提示", "文件已经存在,是否覆盖?") == QtWidgets.QMessageBox.Yes DisableButton(False)
if choose: # 如要覆盖 return
os.remove(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop") # 删除该文件 else: # 如果都有
else: # 如不覆盖 if os.path.exists(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop"): # 判断目录是否有该文件,如果有
return # 结束 choose = QtWidgets.QMessageBox.question(widget, "提示", "文件已经存在,是否覆盖?") == QtWidgets.QMessageBox.Yes
if e1.currentText() == "": if choose: # 如要覆盖
wineBottonPath = setting["DefultBotton"] os.remove(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop") # 删除该文件
else: else: # 如不覆盖
wineBottonPath = e1.currentText() return # 结束
option = "" if e1.currentText() == "":
if setting["Architecture"] != "Auto": wineBottonPath = setting["DefultBotton"]
option += f"WINEARCH={setting['Architecture']} " else:
if not setting["Debug"]: wineBottonPath = e1.currentText()
option += "WINEDEBUG=-all " option = ""
write_txt(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop", f'''[Desktop Entry] if setting["Architecture"] != "Auto":
option += f"WINEARCH={setting['Architecture']} "
if not setting["Debug"]:
option += "WINEDEBUG=-all "
write_txt(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop", f'''[Desktop Entry]
Name={combobox1.currentText()} Name={combobox1.currentText()}
Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.currentText()}' {setting["WineOption"]} Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.currentText()}' {setting["WineOption"]}
Icon={iconPath} Icon={iconPath}
Type=Application Type=Application
StartupNotify=true''') # 写入文本文档 StartupNotify=true''') # 写入文本文档
shellHistory.append(combobox1.currentText()) # 将记录写进数组 shellHistory.append(combobox1.currentText()) # 将记录写进数组
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入 write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
combobox1.clear() combobox1.clear()
combobox1.addItems(shellHistory) combobox1.addItems(shellHistory)
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框 QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(widget, "错误", f"快捷方式创建失败,错误如下:\n{traceback.format_exc()}")
# 生成 desktop 文件在桌面 # 生成 desktop 文件在桌面
# (第四个按钮的事件) # (第四个按钮的事件)
def make_desktop_on_desktop(): def make_desktop_on_desktop():
if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容 try:
QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名") if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容
return QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名")
if not CheckProgramIsInstall(wine[o1.currentText()]):
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
DisableButton(False)
return return
else: # 如果都有 if not CheckProgramIsInstall(wine[o1.currentText()]):
if os.path.exists(get_desktop_path() + "/" + combobox1.currentText() + ".desktop"): # 判断目录是否有该文件,如果有 if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
choose = QtWidgets.QMessageBox.question(widget, "提示", "文件已经存在,是否覆盖?") == QtWidgets.QMessageBox.Yes DisableButton(False)
if choose: # 如要覆盖 return
os.remove(get_desktop_path() + "/" + combobox1.currentText() + ".desktop") # 删除该文件 else: # 如果都有
else: # 如不覆盖 if os.path.exists(get_desktop_path() + "/" + combobox1.currentText() + ".desktop"): # 判断目录是否有该文件,如果有
return # 结束 choose = QtWidgets.QMessageBox.question(widget, "提示", "文件已经存在,是否覆盖?") == QtWidgets.QMessageBox.Yes
if e1.currentText() == "": if choose: # 如要覆盖
wineBottonPath = setting["DefultBotton"] os.remove(get_desktop_path() + "/" + combobox1.currentText() + ".desktop") # 删除该文件
else: else: # 如不覆盖
wineBottonPath = e1.currentText() return # 结束
os.mknod(get_desktop_path() + "/" + combobox1.currentText() + ".desktop") if e1.currentText() == "":
option = "" wineBottonPath = setting["DefultBotton"]
if setting["Architecture"] != "Auto": else:
option += f"WINEARCH={setting['Architecture']} " wineBottonPath = e1.currentText()
if not setting["Debug"]: if not os.path.exists(get_desktop_path()):
option += "WINEDEBUG=-all " os.makedirs(get_home())
write_txt(get_desktop_path() + "/" + combobox1.currentText() + ".desktop", f'''[Desktop Entry] os.mknod(get_desktop_path() + "/" + combobox1.currentText() + ".desktop")
option = ""
if setting["Architecture"] != "Auto":
option += f"WINEARCH={setting['Architecture']} "
if not setting["Debug"]:
option += "WINEDEBUG=-all "
write_txt(get_desktop_path() + "/" + combobox1.currentText() + ".desktop", f'''[Desktop Entry]
Name={combobox1.currentText()} Name={combobox1.currentText()}
Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.currentText()}' {setting["WineOption"]} Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.currentText()}' {setting["WineOption"]}
Icon={iconPath} Icon={iconPath}
Type=Application Type=Application
StartupNotify=true''') # 写入文本文档 StartupNotify=true''') # 写入文本文档
shellHistory.append(combobox1.currentText()) # 将记录写进数组 shellHistory.append(combobox1.currentText()) # 将记录写进数组
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入 write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
combobox1.clear() combobox1.clear()
combobox1.addItems(shellHistory) combobox1.addItems(shellHistory)
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框 QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(widget, "错误", f"快捷方式创建失败,错误如下:\n{traceback.format_exc()}")
# 数组转字典 # 数组转字典
def ListToDictionary(list): def ListToDictionary(list):
@@ -278,7 +287,7 @@ def ListToDictionary(list):
return dictionary return dictionary
def CleanProgramHistory(): def CleanProgramHistory():
if QtWidgets.QMessageBox.question(title="警告", message="删除后将无法恢复,你确定吗?\n删除后软件将会自动重启。") == QtWidgets.QMessageBox.Yes: if QtWidgets.QMessageBox.question(widget, "警告", "删除后将无法恢复,你确定吗?\n删除后软件将会自动重启。") == QtWidgets.QMessageBox.Yes:
shutil.rmtree(get_home() + "/.config/deepin-wine-runner") shutil.rmtree(get_home() + "/.config/deepin-wine-runner")
ReStartProgram() ReStartProgram()
@@ -357,7 +366,7 @@ def RunWineProgram(wineProgram, history = False, Disbled = True):
global runProgram global runProgram
DisableButton(True) DisableButton(True)
if not CheckProgramIsInstall(wine[o1.currentText()]): if not CheckProgramIsInstall(wine[o1.currentText()]):
if QtWidgets.QMessageBox.question(title="提示", message="检查到您未安装这个 wine是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No: if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
DisableButton(False) DisableButton(False)
return return
returnText.setText("") returnText.setText("")
@@ -779,7 +788,7 @@ class GetDllFromWindowsISO:
def CopyDll(): def CopyDll():
choose = GetDllFromWindowsISO.dllList.selectionModel().selectedIndexes()[0].data() choose = GetDllFromWindowsISO.dllList.selectionModel().selectedIndexes()[0].data()
if os.path.exists(f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}"): if os.path.exists(f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}"):
if QtWidgets.QMessageBox.question(title="提示", message=f"DLL {choose} 已经存在,是否覆盖?") == QtWidgets.QMessageBox.No: if QtWidgets.QMessageBox.question(widget, "提示", f"DLL {choose} 已经存在,是否覆盖?") == QtWidgets.QMessageBox.No:
return return
try: try:
shutil.copy(f"/tmp/wine-runner-getdll/i386/{choose[:-1]}_", f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}") shutil.copy(f"/tmp/wine-runner-getdll/i386/{choose[:-1]}_", f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}")
@@ -925,7 +934,7 @@ except:
# 程序信息 # 程序信息
########################### ###########################
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
iconPath = "{}/icon.png".format(programPath) iconPath = "{}/deepin-wine-runner.svg".format(programPath)
programUrl = "https://gitee.com/gfdgd-xi/deep-wine-runner\nhttps://github.com/gfdgd-xi/deep-wine-runner\nhttps://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner" programUrl = "https://gitee.com/gfdgd-xi/deep-wine-runner\nhttps://github.com/gfdgd-xi/deep-wine-runner\nhttps://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner"
information = json.loads(readtxt(f"{programPath}/information.json")) information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"] version = information["Version"]
@@ -939,20 +948,16 @@ tips = '''提示:
exe路径\' 参数 \' exe路径\' 参数 \'
即可(单引号需要输入) 即可(单引号需要输入)
5、wine 容器如果没有指定,则会默认为 ~/.wine''' 5、wine 容器如果没有指定,则会默认为 ~/.wine'''
updateThingsString = '''※1、界面大改造,从使用 Tkinter 改为 Qt参考了 @134******28 和 @sgb76 提供的设计方案和代码 updateThingsString = '''※1、更换为 @PossibleVing 提供的程序图标
※2、添加了基于 UOS 生态适配活动打包脚本的打包器,以及基于 Virtualbox 的简易 Windows 镜像安装工具 ※2、修改了统信 Wine 生态适配活动的脚本,支持在非 UOS 系统打包
※3、将 pip 由阿里源改为华为源,提升下载安装速度,并删除使用 pip 下载库的功能(已不需要,废弃) ※3、修复了打包器在打包应用未指定图标的情况下显示对话框后强制退出的问题
4、添加 @delsin 和 @神末shenmo 建议的 postrm 脚本 4、修改 .net framework 3.5 的安装包,从在线版改为本地版
5、优化多屏窗口居中问题
6、修复 1.6.0 程序无法保存设置的问题
7、修复 1.6.0 的更新程序无法正常更新的问题
8、升级 Geek Uninstaller 版本
''' '''
for i in information["Thank"]: for i in information["Thank"]:
thankText += f"{i}\n" thankText += f"{i}\n"
updateTime = "2022年07月18日" updateTime = "2022年07月20日"
about = f'''<h1>关于</h1> about = f'''<h1>关于</h1>
<pre>一个基于 Python3 的 tkinter 制作的 wine 运行器 <pre>一个基于 Python3 的 Qt 制作的 wine 运行器
版本:{version} 版本:{version}
适用平台:{goodRunSystem} 适用平台:{goodRunSystem}
@@ -978,7 +983,6 @@ updateThings = "{} 更新内容:\n{}\n更新时间{}".format(version, updat
########################### ###########################
# 窗口创建 # 窗口创建
########################### ###########################
# 因为没有完全改完,所以需要这些东西来兼容 tkinter 的主题
# 读取主题 # 读取主题
# Qt 窗口 # Qt 窗口
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
@@ -1133,7 +1137,7 @@ w2 = QtWidgets.QAction("安装常见字体")
w3 = QtWidgets.QAction("安装自定义字体") w3 = QtWidgets.QAction("安装自定义字体")
w4 = QtWidgets.QAction("删除选择的 Wine 容器") w4 = QtWidgets.QAction("删除选择的 Wine 容器")
w5 = QtWidgets.QAction("打包 wine 应用") w5 = QtWidgets.QAction("打包 wine 应用")
w6 = QtWidgets.QAction("使用官方 Wine 适配活动的脚本进行打包测试只支持UOS") w6 = QtWidgets.QAction("使用官方 Wine 适配活动的脚本进行打包")
w7 = QtWidgets.QAction("从镜像获取DLL只支持Windows XP、Windows Server 2003官方安装镜像") w7 = QtWidgets.QAction("从镜像获取DLL只支持Windows XP、Windows Server 2003官方安装镜像")
wineOption.addAction(w1) wineOption.addAction(w1)
wineOption.addAction(w2) wineOption.addAction(w2)
@@ -1272,7 +1276,7 @@ hm1_1.triggered.connect(lambda: webbrowser.open_new_tab("https://gitee.com/gfdgd
window.resize(widget.frameGeometry().width() * 2, widget.frameGeometry().height()) window.resize(widget.frameGeometry().width() * 2, widget.frameGeometry().height())
widget.setLayout(mainLayout) widget.setLayout(mainLayout)
window.setWindowTitle(title) window.setWindowTitle(title)
window.setWindowIcon(QtGui.QIcon(f"{programPath}/icon.png")) window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg"))
widget.show() widget.show()
window.show() window.show()

View File

@@ -55,7 +55,7 @@ def get_home()->"获取用户主目录":
########################### ###########################
# 程序信息 # 程序信息
########################### ###########################
iconPath = "{}/icon.png".format(os.path.split(os.path.realpath(__file__))[0]) iconPath = "{}/deepin-wine-runner.svg".format(os.path.split(os.path.realpath(__file__))[0])
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(programPath + "/information.json")) information = json.loads(readtxt(programPath + "/information.json"))
version = information["Version"] version = information["Version"]

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -1,5 +1,5 @@
{ {
"Version": "1.7.0", "Version": "1.7.1",
"Thank": [ "Thank": [
"感谢 @a2035274 @虚幻的早晨 https://bbs.deepin.org/post/238301", "感谢 @a2035274 @虚幻的早晨 https://bbs.deepin.org/post/238301",
"感谢 @zhangs https://bbs.deepin.org/post/227948", "感谢 @zhangs https://bbs.deepin.org/post/227948",
@@ -9,6 +9,7 @@
"感谢 @delsin 和 @神末shenmo 在 deepin 论坛提供打包器打包的 deb 包自动删除容器的建议", "感谢 @delsin 和 @神末shenmo 在 deepin 论坛提供打包器打包的 deb 包自动删除容器的建议",
"感谢 @GershonWang 在 https://github.com/gfdgd-xi/deep-wine-runner/issues/1 提供窗口居中的建议", "感谢 @GershonWang 在 https://github.com/gfdgd-xi/deep-wine-runner/issues/1 提供窗口居中的建议",
"感谢 @134******28 和 @sgb76 提供的新程序 GUI 布局和实现代码", "感谢 @134******28 和 @sgb76 提供的新程序 GUI 布局和实现代码",
"感谢 @PossibleVing 提供的新版应用图标",
"感谢统信在 Wine 生态适配活动中提供的打包脚本", "感谢统信在 Wine 生态适配活动中提供的打包脚本",
"", "",
"可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!", "可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -4,7 +4,7 @@ Encoding=UTF-8
Categories=System;Wine; Categories=System;Wine;
Version=1.7.0 Version=1.7.0
Exec=/usr/bin/deepin-wine-package-builder "~/.wine" %F Exec=/usr/bin/deepin-wine-package-builder "~/.wine" %F
Icon=/opt/apps/deepin-wine-runner/icon.png Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
Name=Wine Package Builder Name=Wine Package Builder
Name[zh]=Wine 打包器 Name[zh]=Wine 打包器
Comment=Wine Package Builder Comment=Wine Package Builder

View File

@@ -4,7 +4,7 @@ Encoding=UTF-8
Categories=System;Wine; Categories=System;Wine;
Version=1.7.0 Version=1.7.0
Exec=/usr/bin/deepin-wine-packager-with-script Exec=/usr/bin/deepin-wine-packager-with-script
Icon=/opt/apps/deepin-wine-runner/icon.png Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
Name=Wine Package Builder For UOS Name=Wine Package Builder For UOS
Name[zh]=Wine 打包器(基于活动脚本) Name[zh]=Wine 打包器(基于活动脚本)
Comment=Wine Package Builder For UOS Comment=Wine Package Builder For UOS

View File

@@ -4,9 +4,9 @@ Encoding=UTF-8
Categories=System;Wine; Categories=System;Wine;
Version=1.7.0 Version=1.7.0
Exec=/opt/apps/deepin-wine-runner/RunVM.sh %F Exec=/opt/apps/deepin-wine-runner/RunVM.sh %F
Icon=/opt/apps/deepin-wine-runner/icon.png Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
Name=Setting VirtualMachine Name=Setting VirtualMachine
Name[zh]=设置虚拟机 Name[zh]=设置 Windows 虚拟机
Comment=Setting VirtualMachine Comment=Setting VirtualMachine
Comment[zh]=设置虚拟机 Comment[zh]=设置虚拟机
Terminal=false Terminal=false

View File

@@ -4,7 +4,7 @@ Encoding=UTF-8
Categories=System; Categories=System;
Version=1.7.0 Version=1.7.0
Exec=/opt/apps/deepin-wine-runner/StartVM.sh %F Exec=/opt/apps/deepin-wine-runner/StartVM.sh %F
Icon=/opt/apps/deepin-wine-runner/icon.png Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
Name=Start Windows VirtualMachine Name=Start Windows VirtualMachine
Name[zh]=开启 Windows 虚拟机 Name[zh]=开启 Windows 虚拟机
Comment=Start Windows VirtualMachine Comment=Start Windows VirtualMachine

View File

@@ -4,7 +4,7 @@ Encoding=UTF-8
Categories=System;Wine; Categories=System;Wine;
Version=1.7.0 Version=1.7.0
Exec=/usr/bin/deepin-wine-runner %F Exec=/usr/bin/deepin-wine-runner %F
Icon=/opt/apps/deepin-wine-runner/icon.png Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
Name=Wine Runner Name=Wine Runner
Name[zh]=Wine 运行器 Name[zh]=Wine 运行器
Comment=Wine Runner Comment=Wine Runner

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
######################################################################### #########################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布 # 作者gfdgd xi、为什么您不喜欢熊出没和阿布
# 版本1.7.0 # 版本1.8.0
# 感谢:感谢 deepin-wine 团队,提供了 deepin-wine 给大家使用,让我能做这个程序 # 感谢:感谢 deepin-wine 团队,提供了 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 tkinter 构建 # 基于 Python3 的 tkinter 构建
######################################################################### #########################################################################
@@ -150,12 +150,12 @@ class make_deb_threading(QtCore.QThread):
if not os.path.exists(e9_text.text()): if not os.path.exists(e9_text.text()):
QtWidgets.QMessageBox.critical(widget, "错误", "图标的路径填写错误,无法进行构建 deb 包") QtWidgets.QMessageBox.critical(widget, "错误", "图标的路径填写错误,无法进行构建 deb 包")
disabled_or_NORMAL_all(True) disabled_or_NORMAL_all(True)
label13_text_change("图标的路径填写错误,无法进行构建 deb 包") self.label.emit("图标的路径填写错误,无法进行构建 deb 包")
return return
if not os.path.exists(e6_text.text()): if not os.path.exists(e6_text.text()):
QtWidgets.QMessageBox.critical(widget, "错误", "路径填写错误,无法继续构建 deb 包") QtWidgets.QMessageBox.critical(widget, "错误", "路径填写错误,无法继续构建 deb 包")
disabled_or_NORMAL_all(True) disabled_or_NORMAL_all(True)
label13_text_change("图标的路径填写错误,无法进行构建 deb 包") self.label.emit("图标的路径填写错误,无法进行构建 deb 包")
return return
############# #############
# 删除文件 # 删除文件
@@ -452,7 +452,7 @@ def get_home():
wine = {"deepin-wine": "deepin-wine", "deepin-wine5": "deepin-wine5", "wine": "wine", "wine64": "wine64", "deepin-wine5 stable": "deepin-wine5-stable", "deepin-wine6 stable": "deepin-wine6-stable", "spark-wine7-devel": "spark-wine7-devel", "ukylin-wine": "ukylin-wine"} wine = {"deepin-wine": "deepin-wine", "deepin-wine5": "deepin-wine5", "wine": "wine", "wine64": "wine64", "deepin-wine5 stable": "deepin-wine5-stable", "deepin-wine6 stable": "deepin-wine6-stable", "spark-wine7-devel": "spark-wine7-devel", "ukylin-wine": "ukylin-wine"}
os.chdir("/") os.chdir("/")
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
iconPath = "{}/icon.png".format(programPath) iconPath = "{}/deepin-wine-runner.svg".format(programPath)
information = json.loads(readtxt(f"{programPath}/information.json")) information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"] version = information["Version"]
tips = """提示: tips = """提示:
@@ -495,7 +495,7 @@ button4 = QtWidgets.QPushButton("浏览……")
button5 = QtWidgets.QPushButton("打包……") button5 = QtWidgets.QPushButton("打包……")
rmBash = QtWidgets.QCheckBox("设置卸载该 deb 后自动删除该容器") rmBash = QtWidgets.QCheckBox("设置卸载该 deb 后自动删除该容器")
textbox1 = QtWidgets.QTextBrowser() textbox1 = QtWidgets.QTextBrowser()
option1_text.addItems(["Network", "Chat", "Audio", "Video", "Graphics", "Office", "Translation", "Development", "Utility", "System"]) option1_text.addItems(["Network", "Chat", "Audio", "Video", "Graphics", "Office", "Translation", "Development", "Utility"])
option1_text.setCurrentText("Network") option1_text.setCurrentText("Network")
wineFrame = QtWidgets.QHBoxLayout() wineFrame = QtWidgets.QHBoxLayout()
chooseWineHelperValue = QtWidgets.QCheckBox("使用星火wine helper如不勾选默认为deepin-wine-helper") chooseWineHelperValue = QtWidgets.QCheckBox("使用星火wine helper如不勾选默认为deepin-wine-helper")

View File

@@ -55,7 +55,7 @@ def get_home()->"获取用户主目录":
########################### ###########################
# 程序信息 # 程序信息
########################### ###########################
iconPath = "{}/icon.png".format(os.path.split(os.path.realpath(__file__))[0]) iconPath = "{}/deepin-wine-runner.svg".format(os.path.split(os.path.realpath(__file__))[0])
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(programPath + "/information.json")) information = json.loads(readtxt(programPath + "/information.json"))
version = information["Version"] version = information["Version"]

1
deepin-wine-runner.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

0
demo1.py Normal file → Executable file
View File

View File

@@ -1,5 +1,5 @@
{ {
"Version": "1.7.0", "Version": "1.7.1",
"Thank": [ "Thank": [
"感谢 @a2035274 @虚幻的早晨 https://bbs.deepin.org/post/238301", "感谢 @a2035274 @虚幻的早晨 https://bbs.deepin.org/post/238301",
"感谢 @zhangs https://bbs.deepin.org/post/227948", "感谢 @zhangs https://bbs.deepin.org/post/227948",
@@ -9,6 +9,7 @@
"感谢 @delsin 和 @神末shenmo 在 deepin 论坛提供打包器打包的 deb 包自动删除容器的建议", "感谢 @delsin 和 @神末shenmo 在 deepin 论坛提供打包器打包的 deb 包自动删除容器的建议",
"感谢 @GershonWang 在 https://github.com/gfdgd-xi/deep-wine-runner/issues/1 提供窗口居中的建议", "感谢 @GershonWang 在 https://github.com/gfdgd-xi/deep-wine-runner/issues/1 提供窗口居中的建议",
"感谢 @134******28 和 @sgb76 提供的新程序 GUI 布局和实现代码", "感谢 @134******28 和 @sgb76 提供的新程序 GUI 布局和实现代码",
"感谢 @PossibleVing 提供的新版应用图标",
"感谢统信在 Wine 生态适配活动中提供的打包脚本", "感谢统信在 Wine 生态适配活动中提供的打包脚本",
"", "",
"可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!", "可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!",

View File

@@ -3,7 +3,7 @@
########################################################################################### ###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢 # 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本1.7.0 # 版本1.7.0
# 更新时间2022年07月16 # 更新时间2022年07月19
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序 # 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 tkinter 构建 # 基于 Python3 的 tkinter 构建
########################################################################################### ###########################################################################################
@@ -23,8 +23,6 @@ import subprocess
import PyQt5.QtGui as QtGui import PyQt5.QtGui as QtGui
import PyQt5.QtCore as QtCore import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets import PyQt5.QtWidgets as QtWidgets
import PIL.Image as Image
import PIL.ImageTk as ImageTk
################### ###################
# 程序所需事件 # 程序所需事件
@@ -170,10 +168,11 @@ def about_this_program()->"显示“关于这个程序”窗口":
global title global title
global iconPath global iconPath
QT.message = QtWidgets.QMainWindow() QT.message = QtWidgets.QMainWindow()
QT.message.setWindowIcon(QtGui.QIcon(iconPath))
messageWidget = QtWidgets.QWidget() messageWidget = QtWidgets.QWidget()
QT.message.setWindowTitle(f"关于 {title}") QT.message.setWindowTitle(f"关于 {title}")
messageLayout = QtWidgets.QGridLayout() messageLayout = QtWidgets.QGridLayout()
messageLayout.addWidget(QtWidgets.QLabel(f"<img src='{iconPath}'>"), 0, 0, 1, 1, QtCore.Qt.AlignTop) messageLayout.addWidget(QtWidgets.QLabel(f"<img width=256 src='{iconPath}'>"), 0, 0, 1, 1, QtCore.Qt.AlignTop)
aboutInfo = QtWidgets.QTextBrowser(messageWidget) aboutInfo = QtWidgets.QTextBrowser(messageWidget)
aboutInfo.setHtml(about) aboutInfo.setHtml(about)
messageLayout.addWidget(aboutInfo, 0, 1, 1, 1) messageLayout.addWidget(aboutInfo, 0, 1, 1, 1)
@@ -196,79 +195,89 @@ def UpdateThings():
# 生成 desktop 文件在启动器 # 生成 desktop 文件在启动器
def make_desktop_on_launcher(): def make_desktop_on_launcher():
if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容 try:
QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名") if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容
return QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名")
if not CheckProgramIsInstall(wine[o1.currentText()]):
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
DisableButton(False)
return return
else: # 如果都有 if not CheckProgramIsInstall(wine[o1.currentText()]):
if os.path.exists(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop"): # 判断目录是否有该文件,如果有 if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
choose = QtWidgets.QMessageBox.question(widget, "提示", "文件已经存在,是否覆盖?") == QtWidgets.QMessageBox.Yes DisableButton(False)
if choose: # 如要覆盖 return
os.remove(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop") # 删除该文件 else: # 如果都有
else: # 如不覆盖 if os.path.exists(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop"): # 判断目录是否有该文件,如果有
return # 结束 choose = QtWidgets.QMessageBox.question(widget, "提示", "文件已经存在,是否覆盖?") == QtWidgets.QMessageBox.Yes
if e1.currentText() == "": if choose: # 如要覆盖
wineBottonPath = setting["DefultBotton"] os.remove(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop") # 删除该文件
else: else: # 如不覆盖
wineBottonPath = e1.currentText() return # 结束
option = "" if e1.currentText() == "":
if setting["Architecture"] != "Auto": wineBottonPath = setting["DefultBotton"]
option += f"WINEARCH={setting['Architecture']} " else:
if not setting["Debug"]: wineBottonPath = e1.currentText()
option += "WINEDEBUG=-all " option = ""
write_txt(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop", f'''[Desktop Entry] if setting["Architecture"] != "Auto":
option += f"WINEARCH={setting['Architecture']} "
if not setting["Debug"]:
option += "WINEDEBUG=-all "
write_txt(get_home() + "/.local/share/applications/" + combobox1.currentText() + ".desktop", f'''[Desktop Entry]
Name={combobox1.currentText()} Name={combobox1.currentText()}
Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.currentText()}' {setting["WineOption"]} Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.currentText()}' {setting["WineOption"]}
Icon={iconPath} Icon={iconPath}
Type=Application Type=Application
StartupNotify=true''') # 写入文本文档 StartupNotify=true''') # 写入文本文档
shellHistory.append(combobox1.currentText()) # 将记录写进数组 shellHistory.append(combobox1.currentText()) # 将记录写进数组
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入 write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
combobox1.clear() combobox1.clear()
combobox1.addItems(shellHistory) combobox1.addItems(shellHistory)
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框 QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(widget, "错误", f"快捷方式创建失败,错误如下:\n{traceback.format_exc()}")
# 生成 desktop 文件在桌面 # 生成 desktop 文件在桌面
# (第四个按钮的事件) # (第四个按钮的事件)
def make_desktop_on_desktop(): def make_desktop_on_desktop():
if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容 try:
QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名") if combobox1.currentText() == "" or e2.currentText() == "": # 判断文本框是否有内容
return QtWidgets.QMessageBox.information(widget, "提示", "没有填写需要使用 exe 应用或保存的文件名")
if not CheckProgramIsInstall(wine[o1.currentText()]):
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
DisableButton(False)
return return
else: # 如果都有 if not CheckProgramIsInstall(wine[o1.currentText()]):
if os.path.exists(get_desktop_path() + "/" + combobox1.currentText() + ".desktop"): # 判断目录是否有该文件,如果有 if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine是否继续使用这个 wine 写入?") == QtWidgets.QMessageBox.No:
choose = QtWidgets.QMessageBox.question(widget, "提示", "文件已经存在,是否覆盖?") == QtWidgets.QMessageBox.Yes DisableButton(False)
if choose: # 如要覆盖 return
os.remove(get_desktop_path() + "/" + combobox1.currentText() + ".desktop") # 删除该文件 else: # 如果都有
else: # 如不覆盖 if os.path.exists(get_desktop_path() + "/" + combobox1.currentText() + ".desktop"): # 判断目录是否有该文件,如果有
return # 结束 choose = QtWidgets.QMessageBox.question(widget, "提示", "文件已经存在,是否覆盖?") == QtWidgets.QMessageBox.Yes
if e1.currentText() == "": if choose: # 如要覆盖
wineBottonPath = setting["DefultBotton"] os.remove(get_desktop_path() + "/" + combobox1.currentText() + ".desktop") # 删除该文件
else: else: # 如不覆盖
wineBottonPath = e1.currentText() return # 结束
os.mknod(get_desktop_path() + "/" + combobox1.currentText() + ".desktop") if e1.currentText() == "":
option = "" wineBottonPath = setting["DefultBotton"]
if setting["Architecture"] != "Auto": else:
option += f"WINEARCH={setting['Architecture']} " wineBottonPath = e1.currentText()
if not setting["Debug"]: if not os.path.exists(get_desktop_path()):
option += "WINEDEBUG=-all " os.makedirs(get_home())
write_txt(get_desktop_path() + "/" + combobox1.currentText() + ".desktop", f'''[Desktop Entry] os.mknod(get_desktop_path() + "/" + combobox1.currentText() + ".desktop")
option = ""
if setting["Architecture"] != "Auto":
option += f"WINEARCH={setting['Architecture']} "
if not setting["Debug"]:
option += "WINEDEBUG=-all "
write_txt(get_desktop_path() + "/" + combobox1.currentText() + ".desktop", f'''[Desktop Entry]
Name={combobox1.currentText()} Name={combobox1.currentText()}
Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.currentText()}' {setting["WineOption"]} Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.currentText()}' {setting["WineOption"]}
Icon={iconPath} Icon={iconPath}
Type=Application Type=Application
StartupNotify=true''') # 写入文本文档 StartupNotify=true''') # 写入文本文档
shellHistory.append(combobox1.currentText()) # 将记录写进数组 shellHistory.append(combobox1.currentText()) # 将记录写进数组
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入 write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
combobox1.clear() combobox1.clear()
combobox1.addItems(shellHistory) combobox1.addItems(shellHistory)
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框 QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(widget, "错误", f"快捷方式创建失败,错误如下:\n{traceback.format_exc()}")
# 数组转字典 # 数组转字典
def ListToDictionary(list): def ListToDictionary(list):
@@ -278,7 +287,7 @@ def ListToDictionary(list):
return dictionary return dictionary
def CleanProgramHistory(): def CleanProgramHistory():
if QtWidgets.QMessageBox.question(title="警告", message="删除后将无法恢复,你确定吗?\n删除后软件将会自动重启。") == QtWidgets.QMessageBox.Yes: if QtWidgets.QMessageBox.question(widget, "警告", "删除后将无法恢复,你确定吗?\n删除后软件将会自动重启。") == QtWidgets.QMessageBox.Yes:
shutil.rmtree(get_home() + "/.config/deepin-wine-runner") shutil.rmtree(get_home() + "/.config/deepin-wine-runner")
ReStartProgram() ReStartProgram()
@@ -357,7 +366,7 @@ def RunWineProgram(wineProgram, history = False, Disbled = True):
global runProgram global runProgram
DisableButton(True) DisableButton(True)
if not CheckProgramIsInstall(wine[o1.currentText()]): if not CheckProgramIsInstall(wine[o1.currentText()]):
if QtWidgets.QMessageBox.question(title="提示", message="检查到您未安装这个 wine是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No: if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
DisableButton(False) DisableButton(False)
return return
returnText.setText("") returnText.setText("")
@@ -779,7 +788,7 @@ class GetDllFromWindowsISO:
def CopyDll(): def CopyDll():
choose = GetDllFromWindowsISO.dllList.selectionModel().selectedIndexes()[0].data() choose = GetDllFromWindowsISO.dllList.selectionModel().selectedIndexes()[0].data()
if os.path.exists(f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}"): if os.path.exists(f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}"):
if QtWidgets.QMessageBox.question(title="提示", message=f"DLL {choose} 已经存在,是否覆盖?") == QtWidgets.QMessageBox.No: if QtWidgets.QMessageBox.question(widget, "提示", f"DLL {choose} 已经存在,是否覆盖?") == QtWidgets.QMessageBox.No:
return return
try: try:
shutil.copy(f"/tmp/wine-runner-getdll/i386/{choose[:-1]}_", f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}") shutil.copy(f"/tmp/wine-runner-getdll/i386/{choose[:-1]}_", f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}")
@@ -925,7 +934,7 @@ except:
# 程序信息 # 程序信息
########################### ###########################
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
iconPath = "{}/icon.png".format(programPath) iconPath = "{}/deepin-wine-runner.svg".format(programPath)
programUrl = "https://gitee.com/gfdgd-xi/deep-wine-runner\nhttps://github.com/gfdgd-xi/deep-wine-runner\nhttps://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner" programUrl = "https://gitee.com/gfdgd-xi/deep-wine-runner\nhttps://github.com/gfdgd-xi/deep-wine-runner\nhttps://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner"
information = json.loads(readtxt(f"{programPath}/information.json")) information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"] version = information["Version"]
@@ -939,20 +948,16 @@ tips = '''提示:
exe路径\' 参数 \' exe路径\' 参数 \'
即可(单引号需要输入) 即可(单引号需要输入)
5、wine 容器如果没有指定,则会默认为 ~/.wine''' 5、wine 容器如果没有指定,则会默认为 ~/.wine'''
updateThingsString = '''※1、界面大改造,从使用 Tkinter 改为 Qt参考了 @134******28 和 @sgb76 提供的设计方案和代码 updateThingsString = '''※1、更换为 @PossibleVing 提供的程序图标
※2、添加了基于 UOS 生态适配活动打包脚本的打包器,以及基于 Virtualbox 的简易 Windows 镜像安装工具 ※2、修改了统信 Wine 生态适配活动的脚本,支持在非 UOS 系统打包
※3、将 pip 由阿里源改为华为源,提升下载安装速度,并删除使用 pip 下载库的功能(已不需要,废弃) ※3、修复了打包器在打包应用未指定图标的情况下显示对话框后强制退出的问题
4、添加 @delsin 和 @神末shenmo 建议的 postrm 脚本 4、修改 .net framework 3.5 的安装包,从在线版改为本地版
5、优化多屏窗口居中问题
6、修复 1.6.0 程序无法保存设置的问题
7、修复 1.6.0 的更新程序无法正常更新的问题
8、升级 Geek Uninstaller 版本
''' '''
for i in information["Thank"]: for i in information["Thank"]:
thankText += f"{i}\n" thankText += f"{i}\n"
updateTime = "2022年07月18" updateTime = "2022年07月20"
about = f'''<h1>关于</h1> about = f'''<h1>关于</h1>
<pre>一个基于 Python3 的 tkinter 制作的 wine 运行器 <pre>一个基于 Python3 的 Qt 制作的 wine 运行器
版本:{version} 版本:{version}
适用平台:{goodRunSystem} 适用平台:{goodRunSystem}
@@ -978,7 +983,6 @@ updateThings = "{} 更新内容:\n{}\n更新时间{}".format(version, updat
########################### ###########################
# 窗口创建 # 窗口创建
########################### ###########################
# 因为没有完全改完,所以需要这些东西来兼容 tkinter 的主题
# 读取主题 # 读取主题
# Qt 窗口 # Qt 窗口
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
@@ -1133,7 +1137,7 @@ w2 = QtWidgets.QAction("安装常见字体")
w3 = QtWidgets.QAction("安装自定义字体") w3 = QtWidgets.QAction("安装自定义字体")
w4 = QtWidgets.QAction("删除选择的 Wine 容器") w4 = QtWidgets.QAction("删除选择的 Wine 容器")
w5 = QtWidgets.QAction("打包 wine 应用") w5 = QtWidgets.QAction("打包 wine 应用")
w6 = QtWidgets.QAction("使用官方 Wine 适配活动的脚本进行打包测试只支持UOS") w6 = QtWidgets.QAction("使用官方 Wine 适配活动的脚本进行打包")
w7 = QtWidgets.QAction("从镜像获取DLL只支持Windows XP、Windows Server 2003官方安装镜像") w7 = QtWidgets.QAction("从镜像获取DLL只支持Windows XP、Windows Server 2003官方安装镜像")
wineOption.addAction(w1) wineOption.addAction(w1)
wineOption.addAction(w2) wineOption.addAction(w2)
@@ -1272,7 +1276,7 @@ hm1_1.triggered.connect(lambda: webbrowser.open_new_tab("https://gitee.com/gfdgd
window.resize(widget.frameGeometry().width() * 2, widget.frameGeometry().height()) window.resize(widget.frameGeometry().width() * 2, widget.frameGeometry().height())
widget.setLayout(mainLayout) widget.setLayout(mainLayout)
window.setWindowTitle(title) window.setWindowTitle(title)
window.setWindowIcon(QtGui.QIcon(f"{programPath}/icon.png")) window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg"))
widget.show() widget.show()
window.show() window.show()

Binary file not shown.

View File

@@ -4,13 +4,13 @@ Priority: optional
Maintainer: @deb_packager@ Maintainer: @deb_packager@
Build-Depends: debhelper (>= 3.0), fakeroot Build-Depends: debhelper (>= 3.0), fakeroot
Standards-Version: 3.7.3.0 Standards-Version: 3.7.3.0
Package: @deb_package_name@ Package: @deb_package_name@
Depends: @package_depends@ Depends: @package_depends@
Recommends: libcapi20-3, libcups2, libdbus-1-3, libfontconfig1, libfreetype6, libglu1-mesa | libglu1, libgnutls30 | libgnutls28 | libgnutls26, libgsm1, libgssapi-krb5-2, libjpeg62-turbo | libjpeg8, libkrb5-3, libodbc1, libosmesa6, libpng16-16 | libpng12-0, libsane | libsane1, libsdl2-2.0-0, libtiff5, libv4l-0, libxcomposite1, libxcursor1, libxfixes3, libxi6, libxinerama1, libxrandr2, libxrender1, libxslt1.1, libxxf86vm1 Recommends: libcapi20-3, libcups2, libdbus-1-3, libfontconfig1, libfreetype6, libglu1-mesa | libglu1, libgnutls30 | libgnutls28 | libgnutls26, libgsm1, libgssapi-krb5-2, libjpeg62-turbo | libjpeg8, libkrb5-3, libodbc1, libosmesa6, libpng16-16 | libpng12-0, libsane | libsane1, libsdl2-2.0-0, libtiff5, libv4l-0, libxcomposite1, libxcursor1, libxfixes3, libxi6, libxinerama1, libxrandr2, libxrender1, libxslt1.1, libxxf86vm1
Replaces: @old_package@ Replaces: @old_package@
Provides: @old_package@ Provides: @old_package@
Conflicts: @old_package@ Conflicts: @old_package@
Architecture: i386 Architecture: @Arch@
Multi-Arch: foreign Multi-Arch: foreign
Description: @app_description@ Description: @app_description@
Version:@deb_version_string@

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -1,3 +1,3 @@
{ {
"Version": "1.7.0" "Version": "1.7.1"
} }

View File

@@ -2,8 +2,8 @@
# 使用系统默认的 python3 运行 # 使用系统默认的 python3 运行
########################################################################################### ###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢 # 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本1.7.0 # 版本1.7.1
# 更新时间2022年07月18 # 更新时间2022年07月19
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序 # 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 tkinter 构建 # 基于 Python3 的 tkinter 构建
########################################################################################### ###########################################################################################
@@ -46,6 +46,7 @@ def DisbledOrEnabled(choose: bool):
exePath.setDisabled(choose) exePath.setDisabled(choose)
packageName.setDisabled(choose) packageName.setDisabled(choose)
versionName.setDisabled(choose) versionName.setDisabled(choose)
buildDeb.setDisabled(choose)
class PackageDebThread(QtCore.QThread): class PackageDebThread(QtCore.QThread):
@@ -128,7 +129,7 @@ def OpenPackageFolder():
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(f"{programPath}/information.json")) information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"] version = information["Version"]
iconPath = "{}/icon.png".format(programPath) iconPath = "{}/deepin-wine-runner.svg".format(programPath)
tips = """第一个文本框是应用程序中文名 tips = """第一个文本框是应用程序中文名
第二个文本框是应用程序英文名 第二个文本框是应用程序英文名
第三个文本框是最终生成的包的描述 第三个文本框是最终生成的包的描述

View File

@@ -314,22 +314,54 @@ if [ -n "$desktop_file_categories" ]; then
find -iname "$desktop_file_icon" -exec cp "{}" "$outentries/icons/{}" \; find -iname "$desktop_file_icon" -exec cp "{}" "$outentries/icons/{}" \;
fi fi
systemVersion=`cat /etc/os-version`
systemVersion=${systemVersion,,} # 获取系统版本
# 判断系统是否为 UOS
if [[ "uos" == *"$systemVersion"* ]]; then
# 如果系统是 UOS使用默认的打包方式
cd "$dstdir"
echo "$outdir/* /opt/apps/$deb_package_name" &>> "debian/install"
echo "<=====done."
echo "=====>Creating deb package..."
fakeroot "debian/build" "$dstdir"
echo "<=====done."
echo "=====> Removing temporary files..."
mv "$dstdir/$PKG_FILE" "$uos_package_save"
#rm -rf "$stgdir"
#rm -rf "$dstdir"
echo "<=====done."
echo -e "\n\nDeb file generated: $PKG_FILE\n"
echo "+++++ all done. +++++"
exit 0
fi
# 非 UOS 操作系统,使用修改后的 dpkg-deb -b 打包方式
# 参考 @虚幻的早晨 在 https://bbs.deepin.org/post/240570 和 https://wwd.lanzouy.com/ipwOt082k9qb 的建议和代码进行修改
# 这里有个小坑坑,记录一下,如果想要使用 dpkg-deb -b 打包,需要修改 debian/control修改为如下内容才能正常被 dpkg-deb 打包(删除空行和添加 Version
# Source: @deb_package_name@
# Section: non-free/otherosfs
# Priority: optional
# Maintainer: @deb_packager@
# Build-Depends: debhelper (>= 3.0), fakeroot
# Standards-Version: 3.7.3.0
# Package: @deb_package_name@
# Depends: @package_depends@
# Recommends: libcapi20-3, libcups2, libdbus-1-3, libfontconfig1, libfreetype6, libglu1-mesa | libglu1, libgnutls30 | libgnutls28 | libgnutls26, libgsm1, libgssapi-krb5-2, libjpeg62-turbo | libjpeg8, libkrb5-3, libodbc1, libosmesa6, libpng16-16 | libpng12-0, libsane | libsane1, libsdl2-2.0-0, libtiff5, libv4l-0, libxcomposite1, libxcursor1, libxfixes3, libxi6, libxinerama1, libxrandr2, libxrender1, libxslt1.1, libxxf86vm1
# Replaces: @old_package@
# Provides: @old_package@
# Conflicts: @old_package@
# Architecture: @Arch@
# Multi-Arch: foreign
# Description: @app_description@
# Version:@deb_version_string@
cd "$dstdir" cd "$dstdir"
echo "$outdir/* /opt/apps/$deb_package_name" &>> "debian/install"
echo "<=====done." echo "<=====done."
echo "=====>Creating deb package..." echo "=====>Creating deb package..."
fakeroot "debian/build" "$dstdir" mv debian DEBIAN
dpkg-deb -b ./ ../package_save/uos
echo "<=====done." echo "<=====done."
exit 0
echo "=====> Removing temporary files..."
mv "$dstdir/$PKG_FILE" "$uos_package_save"
#rm -rf "$stgdir"
#rm -rf "$dstdir"
echo "<=====done."
echo -e "\n\nDeb file generated: $PKG_FILE\n"
echo "+++++ all done. +++++"
exit 0

View File

@@ -0,0 +1,3 @@
下面将会详细标注违反本程序 GPLV3 开源协议的应用以及其违反代码和来源
# 超级 Wine