diff --git a/Model/__pycache__/__init__.cpython-36.pyc b/Model/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000..8a3c7f4 Binary files /dev/null and b/Model/__pycache__/__init__.cpython-36.pyc differ diff --git a/Mount.sh b/Mount.sh index 05adac9..b637a2e 100644 --- a/Mount.sh +++ b/Mount.sh @@ -7,12 +7,10 @@ if [ ! -d "$1" ]; then echo "路径不存在!" exit 1 fi -# 挂载用户目录 -mkdir -p "$1/home/$USER" -mount -o bind ~ "$1/home/$USER" -# 挂载 Wine 运行器目录 -#mount -o bind `dirname $0` "$1/opt/apps/deepin-wine-runner/wine" -mount -o bind `dirname $0` "$1/opt/apps/deepin-wine-runner/" +echo $0 +echo $1 +echo $2 +echo $3 # 挂载必备目录 cd "$1" mount --bind /dev ./dev @@ -21,5 +19,23 @@ mount -t proc /proc ./proc mount --bind /etc/resolv.conf ./etc/resolv.conf mount -t sysfs /sys ./sys mount --bind /dev/shm ./dev/shm -# 如果参数 2 存在 -chroot . "${@:2}" \ No newline at end of file +chmod 777 -R root +xhost + +# 挂载 Wine 运行器目录 +mount -o bind `dirname $0` ./opt/apps/deepin-wine-runner/ +# 挂载字体 +mount -o bind /usr/share/fonts ./usr/share/fonts +# 配置用户 +if [ ! -d "home/$2" ]; then + # 新建用户,且密码为 123456,以便读写 + chroot . echo -e "123456\n123456\n\n\n\n\n\n\n\n\n" | adduser "$2" +fi +# 挂载用户目录到 /root(默认 $HOME 路径) +if [[ $2 == "root" ]]; then + mount --bind root "$1/root/" +else + mount --bind "/home/$2" "$1/root/" +fi + +# 如果参数 3 存在 +chroot . "${@:3}" \ No newline at end of file diff --git a/QemuRun.py b/QemuRun.py index 30bd61d..41a2f26 100644 --- a/QemuRun.py +++ b/QemuRun.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import os import sys +import getpass import PyQt5.QtWidgets as QtWidgets if __name__ == "__main__": @@ -12,13 +13,15 @@ if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) # 判断是否已下载镜像 if not os.path.exists(f"{homePath}/.deepin-wine-runner-ubuntu-images/{sys.argv[1]}"): - if QtWidgets.QMessageBox.information(None, "提示", "此镜像未下载解压,无法继续"): - pass + QtWidgets.QMessageBox.information(None, "提示", "此镜像未下载解压,无法继续") + exit() commandList = "" + userName = getpass.getuser() for i in sys.argv[2:]: - commandList += f"'{i}'" + commandList += f"'{i}' " # 判断是否挂载 if not os.path.ismount(f"{homePath}/.deepin-wine-runner-ubuntu-images/{sys.argv[1]}/proc"): print("文件暂未挂载,开始挂载") - sys.exit(os.system(f"pkexec '{programPath}/Mount.sh' '{homePath}/.deepin-wine-runner-ubuntu-images/{sys.argv[1]}/proc' {commandList}")) - sys.exit(os.system(f"pkexec chroot '{homePath}/.deepin-wine-runner-ubuntu-images/{sys.argv[1]}/proc' {commandList}")) \ No newline at end of file + sys.exit(os.system(f"pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY bash '{programPath}/Mount.sh' '{homePath}/.deepin-wine-runner-ubuntu-images/{sys.argv[1]}' '{userName}' {commandList}")) + #print(f"pkexec chroot '{homePath}/.deepin-wine-runner-ubuntu-images/{sys.argv[1]}/' {commandList}") + sys.exit(os.system(f"pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY chroot '--userspec={userName}:{userName}' '{homePath}/.deepin-wine-runner-ubuntu-images/{sys.argv[1]}/' env DISPLAY=:0.0 {commandList}")) \ No newline at end of file diff --git a/UnMount.sh b/UnMount.sh new file mode 100644 index 0000000..ac9b385 --- /dev/null +++ b/UnMount.sh @@ -0,0 +1,27 @@ +#!/bin/bash +if [ ` whoami ` != "root" ]; then + echo "Only root can run me" + exit 1 +fi +if [ ! -d "$1" ]; then + echo "路径不存在!" + exit 1 +fi +echo $0 +echo $1 +echo $2 +#echo $3 +# 挂载必备目录 +cd "$1" +umount ./dev +umount ./dev/pts +umount ./proc +umount ./etc/resolv.conf +umount ./sys +umount ./dev/shm +# 挂载 Wine 运行器目录 +umount ./opt/apps/deepin-wine-runner/ +# 挂载字体 +umount ./usr/share/fonts +# 挂载用户目录到 /root(默认 $HOME 路径) +umount ./root \ No newline at end of file diff --git a/demo/APICheck/main.cpp b/demo/APICheck/main.cpp new file mode 100644 index 0000000..0b4e41f --- /dev/null +++ b/demo/APICheck/main.cpp @@ -0,0 +1,7 @@ +#include <iostream> +#include <Windows.h> +using namespace std; +int main(){ + MessageBox(NULL, TEXT("a"), TEXT("A"), 32); + return 0; +} diff --git a/demo/APICheck/main.exe b/demo/APICheck/main.exe new file mode 100755 index 0000000..e91300a Binary files /dev/null and b/demo/APICheck/main.exe differ diff --git a/req/__pycache__/__init__.cpython-36.pyc b/req/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000..b9c480a Binary files /dev/null and b/req/__pycache__/__init__.cpython-36.pyc differ