Назад | Перейти на главную страницу

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

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

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

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

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

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

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