@echo off
:: 强制设置控制台为 UTF-8 编码
chcp 65001 >nul
title LabelNova 文件关联与快捷方式工具

:: ==========================================
:: 1. 自动申请管理员权限 (PowerShell 无乱码方案)
:: ==========================================
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
    echo 正在请求管理员权限，请在弹出的窗口中选择“是”...
    powershell -NoProfile -Command "Start-Process -FilePath \"%~f0\" -Verb RunAs"
    exit /B
)

:: 切换到脚本当前所在目录 (支持包含中文或空格的路径)
cd /d "%~dp0"

:: ==========================================
:: 2. 全局变量配置
:: ==========================================
set "APP_NAME=LabelNova"
set "EXE_NAME=LabelNova.exe"
set "FILE_EXT=.lblt"
set "PROG_ID=LabelNova.Project"
set "EXE_PATH=%~dp0%EXE_NAME%"

:: ==========================================
:: 3. 主菜单
:: ==========================================
:Menu
cls
color 0B
echo ===================================================
echo               %APP_NAME% 部署辅助工具
echo ===================================================
echo.
echo   当前程序路径: %EXE_PATH%
echo.
echo   [1] 绑定 %FILE_EXT% 文件关联 (可附加创建桌面快捷方式)
echo   [2] 卸载 %FILE_EXT% 文件关联 (清理注册表)
echo   [0] 退出
echo.
echo ===================================================
set /p choice=请输入对应数字 (1/2/0) 并按回车: 

if "%choice%"=="1" goto Install
if "%choice%"=="2" goto Uninstall
if "%choice%"=="0" exit
goto Menu

:: ==========================================
:: 4. 安装/绑定 逻辑
:: ==========================================
:Install
cls
echo 正在检查主程序...
if not exist "%EXE_PATH%" (
    color 0C
    echo [错误] 找不到 "%EXE_NAME%"！
    echo 请确保本脚本与 "%EXE_NAME%" 放在同一个文件夹内。
    echo.
    pause
    goto Menu
)

echo.
echo 正在写入注册表关联文件...
reg add "HKCR\%FILE_EXT%" /ve /d "%PROG_ID%" /f >nul 2>&1
reg add "HKCR\%PROG_ID%" /ve /d "LabelNova 标签工程文件" /f >nul 2>&1
reg add "HKCR\%PROG_ID%\DefaultIcon" /ve /d "\"%EXE_PATH%\",0" /f >nul 2>&1
reg add "HKCR\%PROG_ID%\shell\open\command" /ve /d "\"%EXE_PATH%\" \"%%1\"" /f >nul 2>&1

echo 文件关联绑定成功！
echo.

set /p make_shortcut=是否要在桌面创建快捷方式？(Y/N，直接回车默认为 Y): 
if /I "%make_shortcut%"=="N" goto RefreshIcon

echo 正在创建桌面快捷方式...
:: 使用 PowerShell 创建快捷方式，彻底杜绝中文路径导致的 VBS 乱码错误
powershell -NoProfile -Command "$wshell = New-Object -ComObject WScript.Shell; $desktop = [Environment]::GetFolderPath('Desktop'); $shortcut = $wshell.CreateShortcut($desktop + '\%APP_NAME%.lnk'); $shortcut.TargetPath = '%EXE_PATH%'; $shortcut.WorkingDirectory = '%~dp0'; $shortcut.Description = 'LabelNova 标签设计软件'; $shortcut.Save()"

echo 桌面快捷方式已生成！

goto RefreshIcon


:: ==========================================
:: 5. 卸载/解绑 逻辑
:: ==========================================
:Uninstall
cls
echo 正在清除注册表关联...
reg delete "HKCR\%FILE_EXT%" /f >nul 2>&1
reg delete "HKCR\%PROG_ID%" /f >nul 2>&1

echo 文件关联清理完毕！

echo 正在清理桌面快捷方式...
powershell -NoProfile -Command "$desktop = [Environment]::GetFolderPath('Desktop'); $lnk = $desktop + '\%APP_NAME%.lnk'; if (Test-Path $lnk) { Remove-Item -Force $lnk }"
echo 已移除桌面快捷方式。

goto RefreshIcon

:: ==========================================
:: 6. 刷新资源管理器图标缓存
:: ==========================================
:RefreshIcon
echo.
echo 正在刷新系统图标缓存...
ie4uinit.exe -show >nul 2>&1
echo.
color 0A
echo ===================================================
echo               操作已全部执行完毕！
echo ===================================================
echo.
pause
goto Menu