Skip to content
This repository was archived by the owner on Mar 28, 2026. It is now read-only.

Commit 7dad4e8

Browse files
committed
windows: harden setup.bat mpv extraction and tool fallbacks
1 parent 146c065 commit 7dad4e8

File tree

1 file changed

+58
-7
lines changed

1 file changed

+58
-7
lines changed

dev/windows/setup.bat

Lines changed: 58 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ setlocal EnableDelayedExpansion
66
call "%~dp0common.bat"
77

88
set "7ZIP=C:\Program Files\7-Zip\7z.exe"
9+
if not exist "%7ZIP%" (
10+
for /f "delims=" %%i in ('where 7z.exe 2^>nul') do (
11+
set "7ZIP=%%i"
12+
goto :found7zip
13+
)
14+
)
15+
:found7zip
916

1017
if not exist "%DEPS_DIR%" mkdir "%DEPS_DIR%"
1118

@@ -33,7 +40,11 @@ if errorlevel 1 echo Warning: VS Build Tools may already be installed
3340

3441
echo [6/13] Installing MinGW (for gendef)...
3542
winget install --id mingw.mingw-w64-ucrt --accept-package-agreements --accept-source-agreements --silent
36-
if errorlevel 1 echo Warning: MinGW may already be installed
43+
if errorlevel 1 (
44+
echo Warning: mingw.mingw-w64-ucrt not available, trying msys2.msys2...
45+
winget install --id MSYS2.MSYS2 --accept-package-agreements --accept-source-agreements --silent
46+
if errorlevel 1 echo Warning: MinGW/MSYS2 install skipped. gendef fallback may run during build.
47+
)
3748

3849
echo [7/13] Installing Inno Setup...
3950
winget install --id JRSoftware.InnoSetup --accept-package-agreements --accept-source-agreements --silent
@@ -52,35 +63,75 @@ echo [9/13] Downloading libmpv AVX2...
5263
if not exist "%DEPS_DIR%\mpv\libmpv-2.dll" (
5364
echo Downloading libmpv...
5465
if exist "%DEPS_DIR%\mpv" rmdir /s /q "%DEPS_DIR%\mpv"
66+
if exist "%DEPS_DIR%\mpv_tmp" rmdir /s /q "%DEPS_DIR%\mpv_tmp"
5567
curl -L "https://github.com/shinchiro/mpv-winbuild-cmake/releases/download/%MPV_RELEASE%/mpv-dev-x86_64-v3-%MPV_VERSION%.7z" -o "%DEPS_DIR%\mpv.7z"
5668
if errorlevel 1 (
5769
echo ERROR: Failed to download libmpv
5870
) else (
59-
%7ZIP% x "%DEPS_DIR%\mpv.7z" -o"%DEPS_DIR%\mpv_tmp" -y
71+
if not exist "%7ZIP%" (
72+
echo ERROR: 7-Zip not found. Please install 7-Zip and re-run setup.
73+
) else (
74+
"%7ZIP%" x "%DEPS_DIR%\mpv.7z" -o"%DEPS_DIR%\mpv_tmp" -y
75+
if errorlevel 1 (
76+
echo ERROR: Failed to extract libmpv archive
77+
) else (
78+
set "MPV_SRC=%DEPS_DIR%\mpv_tmp"
79+
if not exist "%MPV_SRC%\libmpv-2.dll" (
80+
for /d %%D in ("%DEPS_DIR%\mpv_tmp\*") do (
81+
if exist "%%~fD\libmpv-2.dll" set "MPV_SRC=%%~fD"
82+
)
83+
)
84+
if exist "%MPV_SRC%\libmpv-2.dll" (
6085
mkdir "%DEPS_DIR%\mpv"
61-
move "%DEPS_DIR%\mpv_tmp\include" "%DEPS_DIR%\mpv\"
62-
move "%DEPS_DIR%\mpv_tmp\libmpv-2.dll" "%DEPS_DIR%\mpv\"
63-
if exist "%DEPS_DIR%\mpv_tmp\libmpv.dll.a" move "%DEPS_DIR%\mpv_tmp\libmpv.dll.a" "%DEPS_DIR%\mpv\"
86+
if exist "%MPV_SRC%\include" xcopy /e /i /y "%MPV_SRC%\include" "%DEPS_DIR%\mpv\include\" >nul
87+
move /y "%MPV_SRC%\libmpv-2.dll" "%DEPS_DIR%\mpv\" >nul
88+
if exist "%MPV_SRC%\libmpv.dll.a" move /y "%MPV_SRC%\libmpv.dll.a" "%DEPS_DIR%\mpv\" >nul
89+
if exist "%MPV_SRC%\libmpv-2.dll.lib" move /y "%MPV_SRC%\libmpv-2.dll.lib" "%DEPS_DIR%\mpv\" >nul
90+
) else (
91+
echo ERROR: libmpv-2.dll not found in extracted archive
92+
)
6493
rmdir /s /q "%DEPS_DIR%\mpv_tmp"
6594
del "%DEPS_DIR%\mpv.7z"
6695
echo libmpv extracted to %DEPS_DIR%\mpv
96+
)
97+
)
6798
)
6899
) else (
69100
echo libmpv already installed, skipping
70101
)
71102

72103
echo [10/13] Downloading libmpv fallback (non-AVX2)...
73104
if not exist "%DEPS_DIR%\mpv-fallback\libmpv-2.dll" (
105+
if exist "%DEPS_DIR%\mpv-fallback-tmp" rmdir /s /q "%DEPS_DIR%\mpv-fallback-tmp"
74106
curl -L "https://github.com/shinchiro/mpv-winbuild-cmake/releases/download/%MPV_RELEASE%/mpv-dev-x86_64-%MPV_VERSION%.7z" -o "%DEPS_DIR%\mpv-fallback.7z"
75107
if errorlevel 1 (
76108
echo ERROR: Failed to download libmpv fallback
77109
) else (
78-
%7ZIP% x "%DEPS_DIR%\mpv-fallback.7z" -o"%DEPS_DIR%\mpv-fallback-tmp" -y
110+
if not exist "%7ZIP%" (
111+
echo ERROR: 7-Zip not found. Please install 7-Zip and re-run setup.
112+
) else (
113+
"%7ZIP%" x "%DEPS_DIR%\mpv-fallback.7z" -o"%DEPS_DIR%\mpv-fallback-tmp" -y
114+
if errorlevel 1 (
115+
echo ERROR: Failed to extract libmpv fallback archive
116+
) else (
117+
set "MPV_FALLBACK_SRC=%DEPS_DIR%\mpv-fallback-tmp"
118+
if not exist "%MPV_FALLBACK_SRC%\libmpv-2.dll" (
119+
for /d %%D in ("%DEPS_DIR%\mpv-fallback-tmp\*") do (
120+
if exist "%%~fD\libmpv-2.dll" set "MPV_FALLBACK_SRC=%%~fD"
121+
)
122+
)
79123
mkdir "%DEPS_DIR%\mpv-fallback"
80-
move "%DEPS_DIR%\mpv-fallback-tmp\libmpv-2.dll" "%DEPS_DIR%\mpv-fallback\"
124+
if exist "%MPV_FALLBACK_SRC%\libmpv-2.dll" (
125+
move /y "%MPV_FALLBACK_SRC%\libmpv-2.dll" "%DEPS_DIR%\mpv-fallback\" >nul
126+
if exist "%MPV_FALLBACK_SRC%\libmpv.dll.a" move /y "%MPV_FALLBACK_SRC%\libmpv.dll.a" "%DEPS_DIR%\mpv-fallback\" >nul
127+
) else (
128+
echo ERROR: libmpv-2.dll not found in fallback archive
129+
)
81130
rmdir /s /q "%DEPS_DIR%\mpv-fallback-tmp"
82131
del "%DEPS_DIR%\mpv-fallback.7z"
83132
echo libmpv fallback extracted to %DEPS_DIR%\mpv-fallback
133+
)
134+
)
84135
)
85136
) else (
86137
echo libmpv fallback already installed, skipping

0 commit comments

Comments
 (0)