Reinicie o aplicativo Delphi programaticamente

Não deve ser possível executar várias instâncias do meu aplicativo. Portanto, a fonte do projeto contém:

CreateMutex (nil, False, PChar (ID));
if (GetLastError = ERROR_ALREADY_EXISTS) then
  Halt;

Agora eu quero reiniciar meu aplicativo programaticamente. A maneira usual seria:

AppName := PChar(Application.ExeName) ;
ShellExecute(Handle,'open', AppName, nil, nil, SW_SHOWNORMAL) ;
Application.Terminate;

Mas isso não vai funcionar no meu caso por causa do mutex. Mesmo que eu libere o mutex antes de iniciar o segundo instace, ele não funcionará porque o desligamento leva algum tempo e duas instâncias não podem ser executadas em paralelo (devido a recursos comuns e outros efeitos).

Existe uma maneira de reiniciar um aplicativo com essas características? (Se possível sem um executável adicional)

Desde já, obrigado.

questionAnswers(9)

yourAnswerToTheQuestion