El propio Visual C++ trae un instalador propio.
Simplemente añade un nuevo proyecto de tipo instalación dentro de los tipos de proyectos que tienes.
Y respecto a lo de proteger una aplicación, ten en cuenta lo siguiente:
A) Si quieren te lo van a piratear con menos esfuerzo que el que tu hayas hecho para crear la protección.
B ) Las protecciones siempre terminan dando serios problemas de estabilidad en los programas, cuanto más profunda y seria sea, más problemas dará.
C) Si tu programa tiene éxito, hagas lo que hagas te lo van a piratear. Si no tiene éxito o es algo vertical para algún cliente, sólo vas a generarle problemas a ese cliente por el punto B ).
D) La protección más segura es el control de ejecución remoto, es decir, que el usuario tenga que validarse contra un servidor remoto bajo algún tipo de protocolo encriptado, y que el servidor le envíe un blob (un bloque binario) que el programa necesite sí o sí para funcionar (por ejemplo una serie de partes binarias que insertes en tu propio código ejecutable), pero todo eso son palabras mayores, aparte de que el día que tu servidor esté caído, o tenga lentitud de conexión el usuario se va a acordar de ti, y ten seguro que si lo que quiera que hagas tiene éxito, te lo piratearán.