@@ -6,6 +6,13 @@ setlocal EnableDelayedExpansion
66call " %~dp0 common.bat"
77
88set " 7ZIP = C:\Program Files\7-Zip\7z.exe"
9+ if not exist " %7 ZIP%" (
10+ for /f " delims=" %%i in ('where 7z.exe 2^ > nul ') do (
11+ set " 7ZIP = %%i "
12+ goto :found7zip
13+ )
14+ )
15+ :found7zip
916
1017if 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
3441echo [6/13] Installing MinGW (for gendef)...
3542winget 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
3849echo [7/13] Installing Inno Setup...
3950winget install --id JRSoftware.InnoSetup --accept-package-agreements --accept-source-agreements --silent
@@ -52,35 +63,75 @@ echo [9/13] Downloading libmpv AVX2...
5263if 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- %7 ZIP% x "% DEPS_DIR%\mpv.7z" -o"% DEPS_DIR%\mpv_tmp" -y
71+ if not exist " %7 ZIP%" (
72+ echo ERROR: 7-Zip not found. Please install 7-Zip and re-run setup.
73+ ) else (
74+ " %7 ZIP%" 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
72103echo [10/13] Downloading libmpv fallback (non-AVX2)...
73104if 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- %7 ZIP% x "% DEPS_DIR%\mpv-fallback.7z" -o"% DEPS_DIR%\mpv-fallback-tmp" -y
110+ if not exist " %7 ZIP%" (
111+ echo ERROR: 7-Zip not found. Please install 7-Zip and re-run setup.
112+ ) else (
113+ " %7 ZIP%" 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