[Setup]: SignTool

Допустимые значения:

Имя или перечень параметров, разделённых пробелами

Описание

Определяет имя и параметры инструмента цифровой подписи, который используется для подписи:


Когда инсталлятор содержит действительную цифровую подпись, тогда при его запуске пользователь не получит предупреждение о неизвестном издателе.

Имя и параметры инструмента цифровой подписи должны быть указаны в IDE компилятора (меню Инструменты | Настройка цифровой подписи...) или в командной строке компилятора (при помощи ключа "/S"), иначе произойдёт ошибка.

В параметра и командах инструмента цифровой подписи можно использовать следующие специальные указатели:

    $f (обязательный) — заменяется заключённым в кавычки файлом, который должен быть подписан.

    $p — заменяется параметрами инструмента цифровой подписи.

    $q — заменяется кавычкой; может использоваться для экранирования ключей командной строки, содержащих кавычки.

    $$ — заменяется на один символ $.

Пример:

Предположим, в IDE компилятора определены следующие параметры цифровой подписи:

mystandard=signtool.exe sign /a /n $qMy Common Name$q /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f
mycustom=signtool.exe $p
byparam=$p

тогда в сценарии может быть использован один следующих вариантов:

[Setup]
SignTool=mystandard

[Setup]
SignTool=mycustom sign /a /n $qMy Common Name$q /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f

[Setup]
SignTool=byparam signtool.exe sign /a /n $qMy Common Name$q /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f

В секции [Setup] может быть указано несколько параметров SignTool, которые буду выполнены в порядке их следования. Это можно использовать для двойной подписи (SHA1 & SHA256) инсталлятора и деинсталлятора:

[Setup]
SignTool=mycustom sign /a /n $qMy Common Name$q /fd sha1 /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f
; параметр /as в следующей строке SignTool необходим для последней версии signtool.exe и сертфиката SHA256 (SHA-2)
SignTool=mycustom sign /a /n $qMy Common Name$q /as /fd sha256 /td sha256 /tr http://timestamp.comodoca.com/rfc3161 /d $qMy Program$q $f   

Примечание: из соображений безопасности для любых параметров, передаваемых посредством $p, следует давать уникальное имя, а не копировать byparam из этого или других примеров. Подумайте, что произойдёт, если подключить к сценарию файл стороннего производителя, в котором сказано:

[Setup]
SignTool=byparam format c: 

Дальнейшая информация о создании цифровых сертификатов и использовании инструментов подписи выходит за рамки данной документации.

Примечание: если используется инструмент цифровой подписи и программа установки содержит большой объём данных, рекомендуется задействовать разделение на диски и указать для директивы DiskSliceSize значение max. Если этого не сделать, при запуске программы установки может возникнуть длительная задержка, вызванная проверкой цифровой подписи. На практике не должно быть снижения безопасности от разделения данных установки на диски: все файлы, извлечённые из неподписанных файлов .bin, проходят проверку хеша SHA-1 (при условии, что в сценарии не используется флаг dontverifychecksum). Хеши SHA-1 этих файлов (вместе со всеми другими метаданными) хранятся внутри исполняемого файла установки, который защищён цифровой подписью.

См. также:

SignToolMinimumTimeBetween
SignToolRetryCount
SignToolRunMinimized