1. Das silent_event heißt so, weil es (wie mein Kollege Niko schon sagte), dass der User davon nichts mitbekommt. Dieses Event hat aber noch eine besonderheit, er führt nämlich swaudit und hwaudit aus, egal ob diese Pakete auf setup stehen oder nicht und sonst macht dieses Event nichts, auch nicht wenn weitere Produkte auf setup stehen. Dass muss man Wissen. Die Motivation dieses Events war es, dem Helpdesk die Möglichkeit zu geben, während eines Calls sich aktuelle Infos zu hardware und Software des Callrequesters zu holen, ohne das der etwas beenden muss oder etwas sieht.
2. Es gibt pre_processor_action_command und das selbe auch noch mal als post_ Variante. Wie der Name schon sagt, läuft das eine vor dem opsiscript und der andere nach dem opsiscript. Der Vorschlag von Niko ist in diesem Fall wieder die richtige, weil das so funktionieren würde. Wenn du das im post machst, ist der opsiscript schon durch und hat alles abgearbeitet. Dass würde das swaudit erst beim nächsten Durchlauf aktiv abarbeiten.
3. Aus einem laufenden Event, kann man keine weiteren Events abfeuern, weil die Eventsteuerung im opsiclientd das verhindert. Ansonsten würden wir Gefahr laufen, dass eine laufende Installation von einem anderen Event torpediert wird.
So, dass ist erst mal vielleicht eine hilfe zu verstehen, was das eine oder andere macht.
Nun zu einer weiteren Tatsache: Das swaudit hat von Haus aus eine sehr niedrige Prio (-90). Das ist extra so festgelegt, da man in der Regel das Softwareaudit auch nach der Softwareverteilung frisch ziehen will.
Wie immer gibt es auch an diesem Punkt wieder mehrere Möglichkeiten. Man könnte das über eine Abhängigkeit lösen, aber dann müsste man in jedes Paket diese Abhängigkeit reinschreiben. Dann würde das Paket immer auf setup gesetzt werden, wenn irgendwas anderes auf setup gesetzt wird. Das über pre_... zu lösen hat den Charme, dass dieser Teil immer nur dann ausgeführt wird, wenn der opsiscript gestartet werden soll und das passiert immer nur dann, wenn Aktionen anstehen und in dem aktuellen Event auch aktionen ausgeführt werden sollen (gibt natürlich auch Events, wo bewusst keine Aktionen ausgeführt werden sollen.)
Ich habe diverse Ideen, wie ich es machen würde, aber die meisten davon sind zu kompliziert und ich wollte mit der Antwort auch Fragen klären und nicht neue schaffen.

Eine andere Alternative wäre, dass Ihr InstallationByShutdown verwendet. Dann könntest du auch das Paket in irgendeinem Event auf setup setzen und es passiert erst mal nichts. Wenn der User aber seinen Rechner Rebootet oder Runterfährt, wird vor dem Shutdown dein swaudit abgearbeitet.