[...] aber jedes Programm vorher testen?
Wie willst du es sonst machen? Nehmen wir an, ein von deiner Software ausgeführtes Setup führt einen Neustart durch. Woran willst du nach dem Neustart festmachen/erkennen, ob die Installation fertig ist (und ggf. einen weiteren Neustart ausführt), ohne das im Vorhinein zu analysieren? Denn die nach dem Neustart fortgesetzte Installation kann ja weitere Prozesse starten, die ihrerseits einen Neustart auslösen oder ähnliche Geschichten.
Diese Analyse müsstest du auf allen (aktuellen/benutzten) Windows-Versionen machen, in unterschiedlichen Konfigurationen (Software nicht vorhanden oder wird "nur" aktualisiert) und das auch noch mit jeder neuen Version des Setups und so weiter. Ich wüsste nicht, welche einfache Methode es für sowas Komplexes geben könnte.
Den Status des Gesamtsetups deiner eigenen Software kannst du ja problemlos (in einer Datei oder der Registry) hinterlegen, aber zuverlässig zu erkennen, ob ein fremdes, unbekanntes Setup fertig ist oder nicht, halte ich für viel zu fehleranfällig. Aber vielleicht habe ich dafür auch nicht genug Phantasie oder Vorstellungskraft, das will ich nicht ausschließen.
MfG Dalai