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

Как сбросить файл сертификата из установщика через командную строку?

Я создаю сценарий, который загрузит и установит кучу программ. Одна из этих программ зависит от виртуального драйвера, которому необходимо импортировать сертификат для работы. Обычно установщик делает это за вас в графическом интерфейсе и просто открывает диалоговое окно подтверждения, спрашивающее, доверяете ли вы этому драйверу. Однако для сценария, который я пишу, такое прерывание недопустимо.

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

Весь процесс можно выполнить в PowerShell, используя X509Certificate класс, доступный в платформе .Net.

Первое, что вам нужно сделать, это получить файл сертификата из подписанного файла. Это делается с помощью функции CreateFromCertFile. Обратите внимание, что функция может принимать только полные пути, а не относительные.

Затем вы можете открыть хранилище сертификатов на локальном компьютере и импортировать сертификат. Для записи в хранилище локального компьютера это необходимо выполнить от имени администратора.

Add-Type -AssemblyName System.Security

# Create a new certificate extracted from the signed file.
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate]::CreateFromCertFile('c:\temp\SetupVirtualCloneDrive5450.exe')

# Open the Trusted Publishers cert store and add the certificate in.
$cert_store = New-Object System.Security.Cryptography.X509Certificates.X509Store -ArgumentList 'TrustedPublisher', 'LocalMachine' | ForEach-Object {

    $_.Open('ReadWrite')
    $_.Add($certificate)
    $_.Close()
}

FYI, я использовал этот метод для установки гостевых дополнений VirtualBox, которые также имели подсказки драйверов.