@echo off
setlocal enabledelayedexpansion

:: 获取当前批处理所在目录（绝对路径）
set "CUR_DIR=%~dp0"
if "%CUR_DIR:~-1%"=="\" set "CUR_DIR=%CUR_DIR:~0,-1%"

:: 目标库目录（当前用户的 Local\LTspice）
set "DEST=%LOCALAPPDATA%\LTspice"
set "DESKTOP=%USERPROFILE%\Desktop"

:: 主程序路径（当前目录下的 LTspice.exe）
set "EXE_PATH=%CUR_DIR%\LTspice.exe"

:: 1. 创建目标目录（如果不存在）
if not exist "%DEST%" (
    mkdir "%DEST%"
    echo 已创建目录: %DEST%
) else (
    echo 目录已存在: %DEST%
)

:: 2. 解压 examples.zip
if exist "examples.zip" (
    echo 正在解压 examples.zip 到 %DEST% ...
    powershell -command "Expand-Archive -Path 'examples.zip' -DestinationPath '%DEST%' -Force"
    echo 解压完成。
) else (
    echo 警告: 未找到 examples.zip，请确保该文件与批处理在同一目录。
)

:: 3. 解压 lib.zip
if exist "lib.zip" (
    echo 正在解压 lib.zip 到 %DEST% ...
    powershell -command "Expand-Archive -Path 'lib.zip' -DestinationPath '%DEST%' -Force"
    echo 解压完成。
) else (
    echo 警告: 未找到 lib.zip，请确保该文件与批处理在同一目录。
)

:: 4. 检查 LTspice.exe 是否存在
if not exist "%EXE_PATH%" (
    echo 错误: 在当前目录下未找到 LTspice.exe！
    echo 请将 LTspice.exe 放在与本批处理相同的文件夹中。
    echo 将跳过快捷方式和文件关联。
    goto :end
)

:: 5. 创建桌面快捷方式（指向当前目录的 LTspice.exe）
echo 正在创建桌面快捷方式 ...
powershell -command "$WshShell = New-Object -comObject WScript.Shell; $Shortcut = $WshShell.CreateShortcut('%DESKTOP%\LTspice.lnk'); $Shortcut.TargetPath = '%EXE_PATH%'; $Shortcut.WorkingDirectory = '%CUR_DIR%'; $Shortcut.Save()"
echo 快捷方式已创建: %DESKTOP%\LTspice.lnk

:: 6. 关联文件类型到当前目录的 LTspice.exe（用户级，无需管理员）
echo 正在关联 LTspice 文件类型（当前用户）...
echo 将使用以下程序打开 .asc 等文件: %EXE_PATH%
powershell -command "
$exts = @('.asc', '.asy', '.net', '.plt');
$progId = 'LTspice.Document';
$cmd = '\"%EXE_PATH%\" \"%1\"';
foreach ($ext in $exts) {
    $key = New-Item -Path \"HKCU:\Software\Classes\$ext\" -Force;
    $key.SetValue('', $progId);
    $cmdKey = New-Item -Path \"HKCU:\Software\Classes\$progId\shell\open\command\" -Force;
    $cmdKey.SetValue('', $cmd);
}
$iconKey = New-Item -Path \"HKCU:\Software\Classes\$progId\DefaultIcon\" -Force;
$iconKey.SetValue('', '\"%EXE_PATH%\",0');
"
echo 文件关联完成。

:end
echo 操作完成。
pause