@echo off
rem ======================================================================
rem  shengjifms.bat  -  find the desktop icon of FMS.EXE* /
rem  Homag.iShare.Client.exe*, read its "Start in" folder (the folder set
rem  in the icon's Properties), then run iShare.Updater.exe there to
rem  upgrade the FMS client.
rem
rem  Style follows xiufuerp.bat. Pure ASCII inside, safe on any code page.
rem ======================================================================
setlocal enabledelayedexpansion
chcp 936 >nul

set "LOG=%~dp0run_ishare_update_log.txt"
break > "%LOG%"

echo ========================================================= >> "%LOG%"
echo  RUN ISHARE UPDATER  %date% %time% >> "%LOG%"
echo ========================================================= >> "%LOG%"

set "TARGET_EXE="
set "START_IN="
set "WORK_DIR="

REM =========================================================
REM  STEP 1: current user desktop
REM =========================================================
echo. >> "%LOG%"
echo [STEP 1] Current user desktop >> "%LOG%"

set "DESKTOP=%USERPROFILE%\Desktop"
echo [STEP 1] DESKTOP = %DESKTOP% >> "%LOG%"

if not exist "%DESKTOP%" (
    echo [STEP 1] ERROR: desktop not found >> "%LOG%"
    goto :END
)
echo [STEP 1] OK >> "%LOG%"

REM =========================================================
REM  STEP 2: scan desktop shortcuts, resolve target + "Start in"
REM  (icon matches when its target name OR the icon name itself
REM   starts with FMS.EXE or Homag.iShare.Client.exe)
REM =========================================================
echo. >> "%LOG%"
echo [STEP 2] Scan shortcuts >> "%LOG%"

for %%F in ("%DESKTOP%\*.lnk") do (
    set "TP="
    set "WD="
    for /f "usebackq tokens=1,2 delims=|" %%A in (`powershell -NoProfile -Command ^
        "$s=(New-Object -ComObject WScript.Shell).CreateShortcut('%%~F'); $t=$s.TargetPath; $w=$s.WorkingDirectory; if($t){$t+'|'+$w}" 2^>^&1`) do (
        if exist "%%A" (
            set "TP=%%A"
            set "WD=%%B"
            for %%X in ("!TP!") do set "FN=%%~nxX"
            call :match "%%~nF"
        )
    )
)

if not defined TARGET_EXE (
    echo [STEP 2] ERROR: no FMS.EXE* / Homag.iShare.Client.exe* icon found >> "%LOG%"
    goto :END
)
echo [STEP 2] TARGET_EXE = %TARGET_EXE% >> "%LOG%"
echo [STEP 2] START_IN   = %START_IN% >> "%LOG%"

REM =========================================================
REM  STEP 3: work dir = shortcut "Start in" (Properties),
REM          fallback = the folder of the target exe itself
REM =========================================================
echo. >> "%LOG%"
echo [STEP 3] Get start-in folder >> "%LOG%"

if defined START_IN if exist "!START_IN!\" set "WORK_DIR=!START_IN!"
if not defined WORK_DIR for %%I in ("%TARGET_EXE%") do set "WORK_DIR=%%~dpI"
if not "!WORK_DIR:~-1!"=="\" set "WORK_DIR=!WORK_DIR!\"

echo [STEP 3] WORK_DIR = %WORK_DIR% >> "%LOG%"

if not exist "%WORK_DIR%" (
    echo [STEP 3] ERROR: folder not found >> "%LOG%"
    goto :END
)
echo [STEP 3] OK >> "%LOG%"

REM =========================================================
REM  STEP 4: run iShare.Updater.exe in WORK_DIR
REM =========================================================
echo. >> "%LOG%"
echo [STEP 4] Run updater >> "%LOG%"

set "UPDATER=%WORK_DIR%iShare.Updater.exe"
echo [STEP 4] UPDATER = %UPDATER% >> "%LOG%"

if not exist "%UPDATER%" (
    echo [STEP 4] ERROR: iShare.Updater.exe not found in work dir >> "%LOG%"
    goto :END
)

echo [STEP 4] Starting: %UPDATER% >> "%LOG%"
start "" /d "%WORK_DIR%" "%UPDATER%"

if errorlevel 1 (
    echo [STEP 4] ERROR: failed to start >> "%LOG%"
) else (
    echo [STEP 4] OK: started >> "%LOG%"
)

:END
echo. >> "%LOG%"
echo ========================================================= >> "%LOG%"
echo  END  %date% %time% >> "%LOG%"
echo  TARGET_EXE = %TARGET_EXE% >> "%LOG%"
echo  START_IN   = %START_IN% >> "%LOG%"
echo  WORK_DIR   = %WORK_DIR% >> "%LOG%"
echo ========================================================= >> "%LOG%"

echo.
echo Log file: %LOG%
pause
endlocal
exit /b 0


REM ---------------------------------------------------------
REM  match: does this icon look like FMS / iShare client?
REM  %~1 = shortcut file name without .lnk
REM  uses FN (target file name), TP (target), WD (start in)
REM ---------------------------------------------------------
:match
set "HIT="
if /i "!FN:~0,7!"=="FMS.EXE" set "HIT=1"
if /i "!FN:~0,23!"=="Homag.iShare.Client.exe" set "HIT=1"
if not defined HIT (
    set "LN=%~1"
    if /i "!LN:~0,7!"=="FMS.EXE" set "HIT=1"
    if /i "!LN:~0,23!"=="Homag.iShare.Client.exe" set "HIT=1"
)
if defined HIT (
    set "TARGET_EXE=!TP!"
    set "START_IN=!WD!"
    echo [STEP 2] MATCH icon : %~1 >> "%LOG%"
    echo [STEP 2]   target   = !TP! >> "%LOG%"
    echo [STEP 2]   start in = !WD! >> "%LOG%"
)
exit /b 0
