finished wrapper

This commit is contained in:
2025-02-27 23:19:51 +08:00
parent bff5b2848f
commit 93410c090d
4 changed files with 57 additions and 7 deletions

View File

@@ -0,0 +1,40 @@
#!/bin/bash
# 定义日志函数
log.warn() { echo -e "[\e[33mWARN\e[0m]: \e[1m$*\e[0m"; }
log.error() { echo -e "[\e[31mERROR\e[0m]: \e[1m$*\e[0m"; }
log.info() { echo -e "[\e[96mINFO\e[0m]: \e[1m$*\e[0m"; }
log.debug() { echo -e "[\e[32mDEBUG\e[0m]: \e[1m$*\e[0m"; }
desktop_dir="${HOME}/.local/share/applications/wine/Programs"
find "$desktop_dir" -type f -name "*.desktop" | while read -r desktop_file; do
log.debug "处理文件: $desktop_file"
exec_line=$(grep -i '^Exec=' "$desktop_file" | cut -d'=' -f2- | xargs)
wineprefix=$(echo "$exec_line" | grep -o 'WINEPREFIX=[^ ]*' | cut -d'=' -f2)
# 核心修复使用正则表达式提取完整Windows路径
exe_win_path=$(echo "$exec_line" | grep -o 'C:\\\\.*\.lnk' | head -1)
log.debug "WINEPREFIX: '$wineprefix'"
log.debug "原始 Windows 路径: '$exe_win_path'"
if [[ -z "$wineprefix" || -z "$exe_win_path" ]]; then
log.warn "参数不完整,跳过"
continue
fi
# 路径转换:处理转义字符和路径分隔符
exe_win_path_unix=$(printf "%b" "$exe_win_path" | sed -e 's/\\/\//g' -e 's/^[cC]://')
exe_path_unix="${wineprefix}/dosdevices/c:/${exe_win_path_unix}"
log.debug "转换后的 UNIX 路径: $exe_path_unix"
if [[ ! -f "$exe_path_unix" ]]; then
log.info "文件不存在: $exe_path_unix, 删除 $desktop_file"
rm "$desktop_file"
else
log.debug "文件存在: $exe_path_unix"
fi
done

View File

@@ -17,13 +17,13 @@ gui_dialog() {
# Check if no arguments were passed
if [[ $# -eq 0 ]]; then
gui_dialog --info --text="使用方法:\nUsage:\n\nspark-wine <application.exe>\n\n请提供要运行的 Windows 应用程序。\nPlease provide the Windows application to run."
gui_dialog --info --text="使用方法:\nUsage:\n\nspark-wine9 <application.exe>\n\n请提供要运行的 Windows 应用程序。\nPlease provide the Windows application to run."
exit 1
fi
# Check if spark-wine is installed
if ! command -v spark-wine &>/dev/null; then
gui_dialog --question --text="您尚未安装 spark-wine ,是否安装以运行 Windows 应用?\nYou haven't installed spark-wine yet. Would you like to install it to run Windows applications?"
gui_dialog --question --text="您尚未安装 spark-wine9 ,是否安装以运行 Windows 应用?\nYou haven't installed spark-wine yet. Would you like to install it to run Windows applications?"
if [[ $? -ne 0 ]]; then
log.error "User refused to install. Exiting."
exit 1
@@ -31,12 +31,12 @@ if ! command -v spark-wine &>/dev/null; then
# Install spark-wine with progress indicator
pkexec bash -c "aptss update && aptss install spark-wine spark-wine-mono -y" | gui_dialog --progress --pulsate --auto-close --no-cancel --text="正在安装,请保持网络畅通,耐心等待\nInstalling, please keep network connection and wait patiently"
pkexec bash -c "aptss update && aptss install spark-wine9 spark-wine9-mono -y" | gui_dialog --progress --pulsate --auto-close --no-cancel --text="正在安装,请保持网络畅通,耐心等待\nInstalling, please keep network connection and wait patiently"
INSTALL_STATUS=${PIPESTATUS[0]}
# Check the installation status correctly
if [[ $INSTALL_STATUS -ne 0 ]]; then
gui_dialog --error --text="安装出错,请手动执行以下指令查看错误并反馈:\nError occurred during installation. Please execute the command below to view the error log:\n\nsudo aptss install spark-wine spark-wine-mono -y"
gui_dialog --error --text="安装出错,请手动执行以下指令查看错误并反馈:\nError occurred during installation. Please execute the command below to view the error log:\n\nsudo aptss install spark-wine9 spark-wine9-mono -y"
exit 1
fi
@@ -44,15 +44,23 @@ fi
fi
# Run spark-wine with WINEPREFIX
export WINEPREFIX="$HOME/.wine"
export APPRUN_CMD="spark-wine"
export WINEPREFIX="${WINEPREFIX:=$HOME/.deepinwine/spark-wine9-custom}"
export APPRUN_CMD="/usr/bin/spark-wine9"
export SHELL_DIR="/opt/spark-dwine-helper"
if [[ "$WINEPREFIX" != $HOME/.deepinwine/spark-wine9-custom ]];then
${APPRUN_CMD} "$@"
exit
fi
(
mkdir -p ${WINEPREFIX}
${SHELL_DIR}/spark-dwine-helper/scale-set-helper/set-wine-scale.sh ${WINEPREFIX} &
# ${APPRUN_CMD} reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v winemenubuilder.exe /f &
wait
) | gui_dialog --progress --pulsate --auto-close --no-cancel --text="正在准备应用...\nPreparing Windows APP..."
${APPRUN_CMD} "$@"
/opt/spark-dwine-helper/spark-dwine-helper/spark-wine-desktop-auto-cleanner

View File

@@ -0,0 +1 @@
../../bin/spark-wine-launcher

View File

@@ -6,7 +6,8 @@ Icon=spark-dwine-helper
MimeType=
Name=Spark Wine App Settings
Name[zh_CN]=星火Wine应用设置
NoDisplay=false
StartupWMClass=spark-dwine-helper
Terminal=False
Type=Application
NoDisplay=false
X-Deepin-Vendor=user-custom