Как подписать установочные файлы Visual Studio.компания MSI

недавно я приобрел сертификат authenticode от globalsign и у меня возникли проблемы с подписанием моих файлов для развертывания. Есть парочка .exe-файлы, которые генерируются проектом, а затем помещаются в a .компания MSI. Когда я подпишу .exe-файлы с signtool сертификат действителен, и они работают нормально. Проблема в том, что когда я строю .msi (с помощью проекта установки visual studio).EXE файлы теряют свои подписи. Так что я могу подписать .msi после того, как он построен, но установлен .исполняемый файлы продолжают весь бизнес "неизвестного издателя". Как сохранить подпись на этих файлах для установки на клиентском компьютере?

3 ответов


Visual Studio создает две папки во время компиляции: obj и bin. Оказывается, по крайней мере, в моем случае вывод всегда будет скопирован из папки obj в папку bin. Я подписывал исполняемые файлы в папке bin только для их перезаписи, а затем упаковывал в msi. Подписание исполняемых файлов в папке obj решило проблему.


в проект VS Setup (свойства проекта) можно добавить следующий PostBuildEvent:

Windows 8.0:

"C:\Program Files (x86)\Windows Kits.0\bin\x86\signtool.exe" sign /a  $(BuiltOuputPath)

Windows 10:

"C:\Program Files (x86)\Windows Kits\bin\x86\signtool.exe" sign /a  $(BuiltOuputPath)

Project properties window

посмотреть эта документация MSDN для использования программы signtool. Вы можете использовать флаг /f для указания сертификата подписи, /p для указания пароля сертификата и т. д.

также обратите внимание, что $(BuildOuputPath) пишется с ошибкой. это нарочно. спасибо Microsoft...


вы уверены, что проект установщика смотрит на подписанный двоичный файл, а не на неподписанный ?

Я не использую MSI builder много, но я бы удивился, что он изменяет файлы, которые он упаковывает вообще.