@echo off
setlocal EnableExtensions EnableDelayedExpansion
chcp 65001 >nul
title NanzhiDSP Setup

echo ========================================================
echo               NanzhiDSP 一键安装脚本
echo ========================================================
echo.

:: ---------- 1. 检测管理员权限 ----------
net session >nul 2>&1
if errorlevel 1 (
    echo [!] 需要管理员权限。请右键此文件，选择 "以管理员身份运行"。
    pause
    exit /b 1
)

:: ---------- 2. 参数与目标 ----------
set "SCRIPT_DIR=%~dp0"
set "INSTALL_DIR=%ProgramFiles%\NanzhiDSP"
set "EXE_NAME=NanzhiDSP.exe"
set "SHORTCUT_NAME=NanzhiDSP"
set "PORTABLE_MODE=0"

:: /PORTABLE 参数：不解压到 Program Files，而是就地运行（开发/便携）
if /i "%~1"=="/PORTABLE" set "PORTABLE_MODE=1"

if "%PORTABLE_MODE%"=="1" (
    set "INSTALL_DIR=%~dp0"
    set "INSTALL_DIR=%INSTALL_DIR:~0,-1%"
)

echo 安装目标：%INSTALL_DIR%
echo 模式：%PORTABLE_MODE% （1=便携，0=系统）
echo.

:: ---------- 3. 拷贝文件 ----------
if "%PORTABLE_MODE%"=="0" (
    if not exist "%INSTALL_DIR%" mkdir "%INSTALL_DIR%" >nul
)

copy /y "%SCRIPT_DIR%%EXE_NAME%"    "%INSTALL_DIR%\" >nul && echo 已复制: %EXE_NAME%
copy /y "%SCRIPT_DIR%Install-VbCable.ps1" "%INSTALL_DIR%\" >nul 2>&1
copy /y "%SCRIPT_DIR%README.txt"   "%INSTALL_DIR%\" >nul 2>&1

if exist "%SCRIPT_DIR%Assets" (
    xcopy /y /e /i /q "%SCRIPT_DIR%Assets" "%INSTALL_DIR%\Assets" >nul && echo 已复制: Assets\
)

if "%PORTABLE_MODE%"=="0" (
    :: ---------- 4. 创建桌面 + 开始菜单快捷方式 ----------
    powershell -NoProfile -ExecutionPolicy Bypass -Command ^
      "$ErrorActionPreference='SilentlyContinue';" ^
      "$ws = New-Object -ComObject WScript.Shell;" ^
      "$desk = [Environment]::GetFolderPath('Desktop');" ^
      "$sc = $ws.CreateShortcut((Join-Path $desk '%SHORTCUT_NAME%.lnk'));" ^
      "$sc.TargetPath = '%INSTALL_DIR%\%EXE_NAME%';" ^
      "$sc.WorkingDirectory = '%INSTALL_DIR%';" ^
      "$sc.IconLocation = '%INSTALL_DIR%\%EXE_NAME%,0';" ^
      "$sc.Save();" ^
      "$prog = [Environment]::GetFolderPath('Programs');" ^
      "$sc2 = $ws.CreateShortcut((Join-Path $prog '%SHORTCUT_NAME%.lnk'));" ^
      "$sc2.TargetPath = '%INSTALL_DIR%\%EXE_NAME%';" ^
      "$sc2.WorkingDirectory = '%INSTALL_DIR%';" ^
      "$sc2.IconLocation = '%INSTALL_DIR%\%EXE_NAME%,0';" ^
      "$sc2.Save();" ^
      "Write-Output '已创建桌面/开始菜单快捷方式'"
)

echo.
echo ========================================================
echo                 安装完成 ✓
echo ========================================================
echo.

:: ---------- 5. 询问是否安装 VB-Cable 虚拟声卡 ----------
echo VB-Cable 是来自 VB-Audio Software 的虚拟声卡驱动，可在系统里
echo 创建一个 "CABLE Input" 设备，把音频路由给 NanzhiDSP 处理。
echo.
echo 是否现在安装 VB-Cable？
echo   Y = 从 vb-audio.com 官网下载并静默安装（需联网）
echo   N = 跳过；之后可双击 "%INSTALL_DIR%\Install-VbCable.ps1" 安装
echo   LOCAL = 如果你已把 VBCABLE 安装包放到 "%SCRIPT_DIR%redist\"，
echo           可选 LOCAL 离线安装。
echo.
set /p CHOICE=选择 [Y/N/LOCAL]:
if /i "%CHOICE%"=="Y" (
    powershell -NoProfile -ExecutionPolicy Bypass -File "%INSTALL_DIR%\Install-VbCable.ps1"
)
if /i "%CHOICE%"=="LOCAL" (
    if exist "%SCRIPT_DIR%redist\*.exe" (
        echo 使用本地 VB-Cable 安装包进行静默安装 ...
        for %%F in ("%SCRIPT_DIR%redist\*.exe") do (
            "%%F" /S
        )
    ) else (
        echo 未在 "%SCRIPT_DIR%redist\" 中找到 .exe 安装包，已跳过。
    )
)

echo.
pause
endlocal