думаю так - ты запускаеш какой-то процесс - скрипт ждет когда он запуститься(но не проверяеш закрылся ли он) и тут же запускаеш такойже процесс(но с другим параметром) хотя нужно дождаться завершения предыдущего. - это мой вариант. а вообще попробуй заменить runwait на ShellExecuteWait
скрипт проверяет запущен ли процесс, если нет то просит его запустить. потом находит папку откуда он запускается, стопает процесс и переименовывает папку где лежит ПО. я туда дописал строки которые выделил, код в них отрабатывает только на второй раз и мне не понятно почему. может туда дописать еще что то?