Ese es el comportamiento normal. El programa esta pensado para que busque actualizaciones cada 15 minutos, en un bucle que nunca termina. Si no es ese el comportamiento que buscas, elimina el bucle y punto, entonces se ejecutara y terminara.
Es decir, donde tienes esto:
Código Delphi
[-]
procedure Loop;
var
Mutex: Cardinal;
begin
Mutex:= CreateMutex(nil,TRUE,'{C1DEF361-AA1F-4F8F-A35E-29FA672A7E7A}');
if GetLastError = 0 then
begin
Environment:= TEnvironment.Create;
try
StartHook;
Terminar:= FALSE;
Espera:= StrToIntDef(ParamStr(1),900000);
repeat
Sleep(Espera);
Vamos;
until Terminar or (Espera < 5000);
finally
StopHook;
Environment.Free;
end;
CloseHandle(Mutex);
end;
end;
Y puede que tengas que hacer algún ajuste mas. Dentro del IDE te funcionaba porque en los parámetros de ejecución esta puesto 0, es decir le indico un tiempo de espera 0 lo que equivale a que no queremos el bucle.
Hay que revisar el código antes de decir que algo no funciona.