Как добавить цифровой сертификат в программу установки SingleImage Install Shield

У меня есть программа установки, созданная с использованием ограниченной версии Install Shield в Visual Studio 2012.

У меня есть цифровой сертификат, который я хочу добавить в программу установки.

Я хотел бы использовать функцию SingleImage для Install Shield для создания и доставки одного установочного файла (например, setup.exe) моим клиентам. Однако кажется, что я должен приложить цифровой сертификат к файлу msi, который встроен в файл setup.exe с помощью Install Shield.

Я обнаружил, что размещение цифрового сертификата в файле setup.exe приводит к тому, что пользователь сообщает, что издатель неизвестен при запуске программы установки. Если другие слова, которые неправильно развертывают цифровой сертификат.

Можно ли получить доступ к файлу msi, чтобы добавить к нему цифровой сертификат? Если да, то как?

Ответ 1

Я собираюсь ответить на свой вопрос. После публикации моего вопроса я обнаружил, что ограниченный выпуск Install Shield в Visual Studio 2012 можно настроить для подписания программы установки (если у вас есть правильный цифровой сертификат).

Это можно найти в разделе: Builds/Express/SingleImage. Существует вкладка под названием "Подписание". Введите путь/имя файла для цифрового файла сертификата, пароль сертификата и укажите, какие выходные файлы вы хотите подписать. Затем Install Shield подписывает программу установки после сборки.

Мои извинения за задание этого вопроса слишком скоро. Сначала я должен был сделать больше исследований.

Ответ 2

версии InstallShield до IS 2015 не поддерживают сертификаты SHA-256. Итак, хотя ответ Майка верен, он больше не имеет ничего хорошего без нового IS, потому что Microsoft требует SHA-256 с 1 января 2016 года.

Но... Я немного в секрете расскажу об этом, прежде чем они, должно быть, узнали, что они делают. См. этот поток на форуме IS.

Если они берут это, здесь важная часть:

"Если вам нужна такая подпись сразу, вы можете либо подписать загрузите файлы позже или создайте обертку для signtool.exe который перехватывает аргументы командной строки, которые мы передаем \ System\signtool.exe и вместо этого делает что-то другое."

Так как Майк сказал, вы не можете просто подписать внешний exe, но, заменив их signtool.exe, вы также сможете подписать внутренний msi.

Сейчас я изучаю эту работу. Если кто-либо еще попробует это, сообщите нам свои результаты.