Безопасно ли вызывать 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
И это завершается намного быстрее.