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

полностью автоматизированная установка инструментов виртуального бокса в Windows 7

Я устанавливаю окна без участия оператора. Частично это установка гостевых дополнений виртуального бокса, запускаемых установщиком из-за следующей записи в Autounattend.xml:

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
  ...
  <settings pass="oobeSystem">
    ...
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="NonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      ...
      <FirstLogonCommands>
        <SynchronousCommand>
          <Order>30</Order>
          <Description>VirtualBox Additions</Description>
          <CommandLine>F:\VBoxWindowsAdditions-x86.exe /S</CommandLine>
        </SynchronousCommand>
        ...

Он работает нормально, установка без графического интерфейса. Однако появляются два окна с вопросом, нужно ли устанавливать два драйвера устройств. Это не сулит ничего хорошего для автоматической установки. Есть ли способ заставить win7 принимать драйверы или ключ реестра, который я могу установить, чтобы он им доверял?

Лучший способ избежать этих запросов - получить необходимые сертификаты, которыми подписаны драйверы устройств, и установить их на гостевой машине до установки. Вы можете найти сертификат для Sun и один для Oracle в Local Computer -> Trusted Publisher certificate store. Вы можете легко экспортировать их оттуда, а затем импортировать в гостевую систему перед установкой дополнений.

Чтобы извлечь сертификат из машины, на которой уже установлены сертификаты, которым доверяют сертификаты, используемые для подписи драйверов устройств с помощью PowerShell:

cd cert:\LocalMachine\TrustedPublisher
$cert = dir | where { $_.Subject -like "*Oracle*" }
$type = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert
$bytes = $cert.Export($type)
[System.IO.File]::WriteAllBytes("C:\Oracle.cer", $bytes)

Вы можете запустить указанную выше команду и заменить *Oracle* с участием *Sun Microsystems* и захватите оба сертификата, чтобы они оба могли присутствовать, чтобы вы могли быть немного более независимыми от версии с VirtualBox. Просто убедитесь, что эти сертификаты установлены до автоматической установки гостевых дополнений.

Чтобы добавить к ответу @ Goyuix, этот скрипт экспортирует все Oracle .cers в текущем каталоге с началом отпечатка пальца в имени файла:

$type = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert
dir cert:\LocalMachine\TrustedPublisher | where { $_.Subject -like "*Oracle*" } | ForEach { [System.IO.File]::WriteAllBytes("vbox_Oracle_" + $_.Thumbprint.Substring(0, 10) + ".cer", $_.Export($type))  }

Затем их можно импортировать с помощью этого cmd фрагмент:

for %%i in (%~dp0\vbox_*.cer) do certutil -addstore -f "TrustedPublisher" %%i

Поскольку ответы были написаны, Oracle добавила более чистый механизм для решения этой проблемы. Необходимые сертификаты находятся на самом компакт-диске вместе с утилитой для импорта сертификатов в правильное хранилище сертификатов.

Предполагая, что ISO смонтирован как диск с буквой E: вам просто нужно добавить эту команду в свой автоматический сценарий перед запуском установщика:

E:\cert\VBoxCertUtil add-trusted-publisher E:\cert\vbox*.cer --root E:\cert\vbox*.cer