Reinicie la aplicación Delphi mediante programación

No debería ser posible ejecutar varias instancias de mi aplicación. Por lo tanto, la fuente del proyecto contiene:

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

Ahora quiero reiniciar mi aplicación mediante programación. La forma habitual sería:

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

Pero esto no funcionará en mi caso debido al mutex. Incluso si libero el mutex antes de comenzar la segunda instancia, no funcionará porque el apagado lleva algún tiempo y dos instancias no pueden ejecutarse en paralelo (debido a recursos comunes y otros efectos).

¿Hay alguna manera de reiniciar una aplicación con tales características? (Si es posible sin un ejecutable adicional)

Gracias por adelantado.

Respuestas a la pregunta(9)

Su respuesta a la pregunta