Как подписать установочные файлы Visual Studio .msi - PullRequest
12 голосов
/ 31 октября 2009

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

Ответы [ 3 ]

14 голосов
/ 02 ноября 2009

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

12 голосов
/ 07 марта 2013

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

Windows 8.0:

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

Windows 10:

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

Project properties window

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

Также обратите внимание, что $ (BuildOuputPath) написано с ошибкой. Это специально. Спасибо, Майкрософт ...

0 голосов
/ 31 октября 2009

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

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

...