Sprich, wenn du die lose herumliegenden Funktionen in eine Klasse verpackst, klappt es.
Und wenn du dann noch den direkten Zugriff auf das Formular aus einer solchen
Unit korrigierst, hast du auch keine Kreuzbeziehung mehr zwischen den Units (die ich aktuell vermute). Du könntest z.B. an deine Entpackroutine eine Referenz auf UpdateZipProgressPosition mitgeben, ein Interface verwenden oder ähnliches.