Как развернуть из командной строки 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
Это работает, и моя совесть немного яснее. В следующий раз я протестирую еще немного, прежде чем отправлю «ответ». Мои извинения.