Как добавить цифровой сертификат в программу установки SingleImage Install Shield
У меня есть программа установки, созданная с использованием ограниченной версии Install Shield в Visual Studio 2012.
У меня есть цифровой сертификат, который я хочу добавить в программу установки.
Я хотел бы использовать функцию SingleImage Install Shield для создания и доставки одного установочного файла (например, setup.exe) моим клиентам. Кажется, однако, что я должен прикрепить цифровой сертификат к MSI-файлу, который встроен в setup.exe, с помощью Install Shield.
Я обнаружил, что размещение цифрового сертификата на setup.exe приводит к тому, что при запуске программы установки пользователю сообщается, что издатель неизвестен. Если другими словами, это не правильно развернуть цифровой сертификат.
Могу ли я получить доступ к MSI-файлу, чтобы добавить к нему цифровой сертификат? Если так, то как?
2 ответа
Я собираюсь ответить на свой вопрос. После публикации моего вопроса я обнаружил, что ограниченная версия Install Shield в Visual Studio 2012 может быть настроена для подписи программы установки (если у вас есть соответствующий цифровой сертификат).
Это находится в: Builds/Express/SingleImage. Есть вкладка под названием "Подписание". Введите путь / имя файла для файла цифрового сертификата, пароль сертификата и укажите, какие выходные файлы вы хотите подписать. Install Shield затем подписывает программу установки после сборки.
Мои извинения за то, что задали этот вопрос слишком рано. Я должен был сделать больше исследований в первую очередь.
Версии InstallShield до IS 2015 не поддерживают сертификаты SHA-256. Таким образом, хотя ответ Майка верен, он не приносит никакой пользы без нового IS, поскольку Microsoft требует SHA-256 с 1 января 2016 года.
Но... Я раскрыл немного секрета об этом, прежде чем они должны были знать, что они делали. Смотрите эту тему на форуме IS.
В случае, если они снимают это, вот важная часть:
"Если вам нужна такая подпись немедленно, вы можете либо подписать файлы самостоятельно позже, либо создать оболочку для signtool.exe, которая перехватывает аргументы командной строки, которые мы передаем в \System\signtool.exe, и вместо этого делает что-то другое."
Итак, как сказал Майк, вы не можете просто подписать внешний exe-файл, но, заменив их signtool.exe, вы также сможете подписать внутренний msi.
Я сейчас пытаюсь реализовать эту работу. Если кто-то попробует это, дайте нам знать ваши результаты.