Pregunta

Recientemente compré un certificado de autenticación de globalsign y tengo problemas para firmar mis archivos para su implementación. Hay un par de archivos .exe generados por un proyecto y luego colocados en un .msi. Cuando firmo los archivos .exe con signtool, el certificado es válido y funcionan bien. El problema es que cuando construyo el .msi (usando el proyecto de instalación de Visual Studio) los archivos .exe pierden sus firmas. Por lo tanto, puedo firmar el .msi después de que se haya creado, pero los archivos .exe instalados continúan con todo el "editor desconocido". negocio. ¿Cómo puedo conservar la firma en estos archivos para la instalación en la máquina del cliente?

¿Fue útil?

Solución

Visual Studio crea dos carpetas en tiempo de compilación: obj y bin. Resulta que, al menos en mi caso, la salida siempre se copiará de la carpeta obj a la carpeta bin. Estaba firmando los ejecutables en la carpeta bin solo para sobrescribirlos y luego empaquetarlos en el msi. Firmar los ejecutables en la carpeta obj resolvió el problema.

Otros consejos

Puede agregar el siguiente PostBuildEvent a su proyecto VS Setup (propiedades del proyecto):

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)

Ventana de propiedades del proyecto

Consulte esta documentación de MSDN para uso de signtool. Puede usar el indicador / f para especificar el certificado de firma, / p para especificar la contraseña del certificado, etc.

Además, tenga en cuenta que $ (BuildOuputPath) está mal escrito. Esto es a propósito. Gracias microsoft. ..

¿Está seguro de que el proyecto del instalador está mirando el binario firmado y no el no firmado?

No uso mucho el generador de msi, pero me sorprendería que modifique los archivos que empaqueta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top