Honestamente, yo sugeriría que no crear su propio instalador. Hay muchos problemas para crear instaladores. Incluso los grandes instaladores ya no crean sus propios instaladores, sino que crean paquetes personalizados de MSI.
Utilice el instalador de Mirosoft (MSI). Es la cosa justa que hacer. Haga su propio front-end personalizado, pero no recree la ya compleja rueda que existe.
ACTUALIZACIÓN: Si solo hace esto para aprender, entonces rehuiría pensar en él como "un instalador". Es posible que tenga la tentación de realizar su "investigación" y utilizarla algún día, y francamente, así es como terminamos con tantos problemas cuando salen nuevas versiones de Windows. La gente crea sus propias ruedas con suposiciones que no son válidas.
Lo que realmente está tratando de hacer se llama "empaquetado", y realmente tiene que familiarizarse íntimamente con el formato PE ejecutable, porque está hablando de cambiar la estructura de la imagen PE en el disco.
Puede simularlo, hasta cierto punto, con poner archivos en recursos, pero eso no es lo que realmente hacen los instaladores o los autoextractores.
Aquí hay un enlace al tutorial Self-Extractor, pero no está en C#.
No sé lo suficiente sobre los requisitos de .NET PE para saber si puede hacer esto con un ejecutable de código administrado o no.
ACTUALIZACIÓN2: Esto es probablemente más de lo que está buscando, inserta archivos en el recurso, pero como dije, no es realmente la forma en que lo hacen los instaladores profesionales o autoextractores. Creo que hay varias limitaciones sobre lo que puedes incorporar como recursos. Pero aquí hay algo similar a un Self-Extractor Demo escrito en C#.
por curiosidad, ¿por qué está programando su propio instalador? –
Para ver si podría, en realidad. – S3THST4
La gente siempre te dice "Código de código si quieres aprender un idioma" hasta que realmente codifique algo, entonces todos son NO REINVENTAR A TENER CUIDADO – Rayne