9

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

ответ

11

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

+0

спасибо, это решило мои проблемы с этим! –

+0

Большое спасибо. Я видел, как люди пытались передать то же самое, где, хотя ваш ответ был очень кратким и легким для чтения. Вы спасли часы моей жизни:) – Dawson

0

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

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

+0

Спасибо, что указал мне в правильном направлении – Alex

11

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

для Windows 8.0:

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

Windows 10:

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

Project properties window

PS : Адаптировать аргументы signtools в соответствии с вашими потребностями, ссылаясь на до the documentation