Na verdade, quando o steam instala um jogo, ainda existe um instalador. Existem muitos pacotes de instaladores disponíveis e, para construir um instalador, você usa um desses pacotes e depois escreve um script de instalação que informa ao instalador para:
- Mova os arquivos para o PC local.
- Registre dlls COM.
- Adicione entradas do registro, possivelmente dependendo de um script complexo.
- Execute qualquer algoritmo de proteção contra cópia
- Serviços de Registro.
- Defina variáveis de ambiente, possivelmente dependendo de um script complexo.
- Execute instaladores adicionais de terceiros (o DirectX e o .Net Frameworks são os exemplos mais conhecidos)
- Instale atalhos na área de trabalho e no menu Iniciar.
- Registre o procedimento de desinstalação.
A decisão do que fazer lá não é tomada pelo Steam, é tomada pelo script de instalação, que você precisa escrever, independentemente do pacote de instalação usado, seja WiX, NSIS ou Steam.
O Unix tem etapas semelhantes. Você pode mover grande parte dessa lógica para o primeiro início do aplicativo, mas a lógica ainda existe, você está apenas dividindo o instalador em várias partes e colocando uma no seu jogo em vez de em um instalador. Existem prós e contras em fazê-lo, que eu ficaria feliz em discutir em outra pergunta.