Только что попробовал. Программы нормально запускаются по порядку, проверь скрипт.
По поводу скрипта.
Код:

Dim setup_dic
Set setup_dic = CreateObject("Scripting.Dictionary")
Call setup_dic.Add("Хранитель паролей", """C:\Program Files\KeePass-1.08\KeePass.exe""")
Call setup_dic.Add("RegShot", """C:\Program Files\regshot181_src_bin\regshot.exe""")
Scripting.Dictionary – объект, позволяющий хранить коллекцию данных в виде ключ-значение. Ключ должен быть уникальным. В качестве ключа здесь выступает название программы, в качестве значения – путь к ней. Сначала мы заполняем словарь известными программами.
Код:

Dim prog, progs
progs = setup_dic.Keys
Получаем массив, содержащий все значения ключей.
Код:

For Each prog In progs
Call setup_prog(prog, setup_dic(prog))
Next
Теперь перебираем все значения ключей (имя программы), и для каждого значения вызываем функцию запуска, в которую передаем название программы, и путь ее запуска (значение словаря, соответствующее имени программы – setup_dic(prog))