4

У меня есть около 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
}

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

1 ответ1

3

Немного поиграв, я обнаружил, что 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .