Безопасно ли вызывать Regsvr32 одновременно?

У меня есть около 100 DLL, я должен зарегистрироваться в regsvr32 /s some.dllмне нужно ждать каждого звонка regsvr32 чтобы закончить, прежде чем я сделаю следующий звонок или я могу просто запустить их все одновременно.

В основном у меня есть скрипт Powershell

if([System.Environment]::Is64BitOperatingSystem)
{
    $regsvr = [System.Environment]::ExpandEnvironmentVariables('%windir%\SysWOW64\regsvr32.exe')
}
else
{
    $regsvr = [System.Environment]::ExpandEnvironmentVariables('%windir%\System32\regsvr32.exe')
}

foreach( $file in $filesToRegister)
{   
    Write-Verbose "$regsvr /s ""$file"""
    Start-Process $regsvr -ArgumentList '/s', """$file""" -Wait
}

Все регистрируемые файлы являются dll-файлами vb6, которые создаются большим проектом. Мне нужно иметь -Wait на моем Start-Process или это безопасно снимать?

1 ответ

Решение

Немного поиграв, я обнаружил, что regsvr32 позволяет передавать более одного файла одновременно. Переключение $filesToRegister использовать относительные пути, чтобы получить общую длину списка аргументов, и теперь я делаю

if([System.Environment]::Is64BitOperatingSystem)
{
    $regsvr = [System.Environment]::ExpandEnvironmentVariables('%windir%\SysWOW64\regsvr32.exe')
}
else
{
    $regsvr = [System.Environment]::ExpandEnvironmentVariables('%windir%\System32\regsvr32.exe')
}

Set-Location $currentBuildFolder
$arguments = @('/s') + $filesToRegister
Write-Verbose "$regsvr $arguments"
Start-Process $regsvr -ArgumentList $arguments -Wait

И это завершается намного быстрее.

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