¿Cuál es la mejor práctica de crear un setup.exe para mi proyecto de Windows?

Hay NSIS. Es un sistema instalador desarrollado por el mismo desarrollador de Winamp (que lo hizo famoso hace días) para instalarlo. No encontraron ningún instalador que satisfaga sus necesidades. Entonces, ¿la solución obvia? Haz uno nuevo. ¿Quién nunca? 😛
Si su aplicación es comercial, le recomiendo usar Windows Installer. Utiliza paquetes MSI que se pueden personalizar con un MST. Un paquete MSI es una base de datos (como SQL) + archivos necesarios para ejecutar el programa. La base de datos tiene el conjunto de acciones que se ejecutarán para instalar el programa. Establece la ubicación de instalación, si habrá un acceso directo en el escritorio o no, las características instaladas (puede configurar diferentes perfiles para la instalación. Por ejemplo: Completo, Lite, etc. Cada uno de ellos define qué archivos y características se instalarán). MSI también ha incorporado la capacidad de actualización. Si instala un paquete MSI en una máquina que ya tiene el programa instalado, solo implementará archivos modificados. Puede liberar archivos MSP para actualizaciones menores y MSI para una versión principal. (Adobe lo hace para Adobe Reader y Creative Suite). Adobe Update Manager también usa este método: implemente el archivo MSP e instálelo. MSP es pequeño y solo trae archivos y configuraciones modificadas del paquete MSI.
MSI evita muchos problemas de UAC y permisos en el entorno de red (la instalación desatendida usando NSIS es mucho más fácil que MSI). Yo, como administrador de red, amo los paquetes de MSI. Son fáciles de personalizar (usando MST) e implementar. Las principales empresas (Ahead [Nero], Adobe, Google [Chrome for Work]) lo utilizan. Tiene soporte para centros de implementación avanzados, por ejemplo. Puede instalar controladores, que en NSIS requieren llamadas externas (a devcon y otras herramientas de línea de comandos).

NSIS no es tan poderoso, pero es mucho más simple construir un instalador. Utiliza un lenguaje de script como Javascript y VBScript. No tiene capacidades de actualización incorporadas. (Por lo tanto, si actualiza el software, debe lanzar un nuevo instalador con todas las funciones, como CCleaner y K-Lite Mega Codec). Tiene capacidades de instalación desatendida, pero tiene problemas de permisos (la instalación de K-Lite desatendida en un dominio es un desastre. Es parte de la razón porque la mayoría de las empresas solo han instalado software importante en todas sus máquinas (Adobe Reader, Chrome). otro instalador, la mayoría de las veces, se implementan manualmente).

También hay un instalador de Click Once. Está integrado en proyectos de Visual Studio y se puede construir en la interfaz de Visual Studio. GitHub lo usa. Representa todas las dependencias del proyecto, crea el código y realiza un instalador que se ejecuta en la máquina del cliente. Un clic en el instalador e instala el software, mostrando solo el progreso al usuario. Lejos de ser más fácil que NSI y MSI. Pero se construye automáticamente y no hay ninguna costumbre en absoluto. Tiene una buena capacidad incorporada: instalador en línea. Puede descargar los archivos de instalación necesarios e implementarlos desde la Web. Puede enviar un pequeño archivo al cliente y descargará los archivos de instalación de su servidor web.

Todo depende de tus necesidades. Recomiendo MSI Su proyecto crecerá y es un instalador que también crecerá con su software. NSIS puede requerir hacks (como devcon) para que funcionen correctamente y con el tiempo estará mucho más lidiando con él en lugar de su programa. Si una red quiere implementar su software en masa NSIS lo hace un poco más difícil y con errores. CCleaner gratis utiliza el instalador NSIS. El comercial usa MSI. Todos sabemos la respuesta.
Hacer clic una vez está lejos de ser más fácil, pero no tiene personalización, instalación desatendida ni soporte de actualización. Es una solución temporal. Su software crecerá y tendrá que reemplazarlo.

Para que Microsoft certifique su aplicación, debe ser un MSI. Hay muchas aplicaciones disponibles para ayudarlo a crear instaladores basados ​​en MSI.

Hay un proyecto de código abierto llamado WIX para crear instaladores MSI que usan XML. http://wixtoolset.org/ WIX es bueno si desea integrarse en CI.

Si no le importa la complejidad de MSI y no está tratando de obtener la certificación, NSIS es una buena opción. http://sourceforge.net/projects/

Escribí un código c ++ de procesamiento de imágenes con bibliotecas opencv y utilicé el instalador avanzado para crear el instalador MSI. funciona, es decir, el código después de la instalación en mi computadora, pero en otra computadora, cuando instalo donde no tiene bibliotecas de Visual Studio y OpenCV, muestra la falta de opencv_world310d.dll. Cómo resolver el problema Ayuda por favor. pls pls