Как подписать установочные файлы 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)
посмотреть эта документация MSDN для использования программы signtool. Вы можете использовать флаг /f для указания сертификата подписи, /p для указания пароля сертификата и т. д.
также обратите внимание, что $(BuildOuputPath) пишется с ошибкой. это нарочно. спасибо Microsoft...
вы уверены, что проект установщика смотрит на подписанный двоичный файл, а не на неподписанный ?
Я не использую MSI builder много, но я бы удивился, что он изменяет файлы, которые он упаковывает вообще.