Развертывание видеокодека VC-1 для проигрывателя Windows Media 10 (wvc1dmo.cab)

Как развернуть из командной строки видеокодек VC-1 для Windows Media Player 10?

Обычно он устанавливается при посещении страницы, содержащей видео, закодированное в VC-1, как этот (видео Евровидение 2009, не для слабонервных, будьте осторожны). Но это требует административных привилегий и является интерактивным, поэтому нецелесообразным на многих рабочих станциях.

IE скачивает файл wvc1dmo.cab содержащий wvc1dmo.inf а также wvc1dmod.dll и устанавливает его как-то. Но как это сделать из командной строки, без присмотра?

1 ответ

Решение

Быстрый и грязный способ - распакуйте файлы и запустите:

rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 wvc1dmo.inf

Я, вероятно, упакую DLL в MSI и разверну ее таким образом.

Редактировать:

Кажется, что Rundll32 не хочет работать, если путь к INF не указан как ".\ Wvc1dmo.inf". Даже в этом случае установщик INF (запускаемый из командной строки или из щелчка правой кнопкой мыши / Install) фактически не регистрирует DLL! Вот сценарий развертывания, который можно поместить в общий ресурс на сервере и вызвать как сценарий запуска. (Я думаю, что для моих сетей я бы все еще развернул эту штуку в MSI, но у меня нет времени на создание MSI сегодня утром).

@echo off
SET SRC=\\test-pc01\foo
SET DEST=%TEMP%\%RANDOM%.TMP

rem Query for installation
reg query "HKCR\Software\Microsoft\Multimedia\Components\Installed\codec_wvc1dmo\Uninstall"> NUL 2>NUL
if errorlevel 1 goto do_install
goto end

:do_install
rem Make temporary directory and copy down files
mkdir "%DEST%"
xcopy "%SRC%" "%DEST%" /y

rem Change directory and drive to destination location (as setupapi has to be called with
rem current directory .\ specified on command line. Dumb, dumb, dumb...)
pushd %DEST%
%DEST:~0,2%

rem Call setupapi to perform installation
start /wait rundll32.exe setupapi,InstallHinfSection DefaultInstall.Nt 132 .\wvc1dmo.inf

rem Dumb thing doesn't seem to register itself
regsvr32 /s %SystemRoot%\System32\wvc1dmod.dll

popd

rem Remove temporary files
rmdir /s /q "%DEST%"

:end

Это работает, и моя совесть несколько яснее. В следующий раз я протестирую немного больше, прежде чем отправлять "ответ". Мои извенения.

Другие вопросы по тегам