Существуют различные способы принудительного применения одного экземпляра приложения. Например, Firefox использует файл блокировки.
Один из самых распространенных способов, которые я видел, - запускать «менеджер» независимо, но при запуске попытайтесь открыть ServerSocket на каком-либо порту, прослушивая соединения.
Если вы не можете открыть сокет, вы знаете, что вы не одиночный экземпляр. Поэтому вместо запуска приложения подключите к сокету прослушивания и отправьте ему аргументы программы.
Если вам удастся открыть сокет, выполните то, что было запрошено для запуска app1, в то время как в другом потоке прослушивайте входящие соединения от тех менеджеров, которые были запущены как дублирующие экземпляры.
Редактировать: описывает процесс в не-ME среде. Не будучи разработчиком ME, я не могу комментировать его возможности по телефону.