En realidad, cuando steam instala un juego, todavía hay un instalador. Hay bastantes paquetes de instalador, y para construir un instalador, usa uno de estos paquetes y luego escribe un script de instalación que le dice al software instalador que:
- Mover archivos a la PC local.
- Registre COM dlls.
- Agregue entradas de registro, posiblemente según un script complejo.
- Ejecute cualquier algoritmo de protección contra copia
- Registrar servicios.
- Establezca variables de entorno, posiblemente dependiendo de un script complejo.
- Ejecute instaladores de terceros adicionales (DirectX y .Net Frameworks son los ejemplos más conocidos)
- Instale accesos directos en el escritorio y el menú de inicio.
- Registre el procedimiento de desinstalación.
La decisión de qué hacer allí no la toma Steam, sino la secuencia de comandos de instalación, que debe escribir sin importar qué paquete de instalación use, ya sea WiX, NSIS o Steam.
Unix tiene pasos similares. Puede mover gran parte de esa lógica al primer inicio de la aplicación, pero la lógica aún existe, solo está dividiendo el instalador en varias piezas y colocando una pieza en su juego en lugar de un instalador. Hay ventajas y desventajas para hacerlo, que me encantaría analizar en otra pregunta.