No need for installer API really. All is need is a bit of PKG scripting and the good old (public and reliable DocumentHandler API). And of course a signed sis file, to allow a little utility to be run.
Now, this installer having the same old pUID will trigger the uninstall of the old package, allowing the new content to be copied. The inst.exe will then be started and will wait nicely in memory for the installer process to exit. At which point will open the "!:\temp\newsis.sisx" using the document handler API and the new installation will proceed.
; Startup-List management
"$(EPOCROOT)Epoc32\release\gcce\urel\inst.exe"-"!:\sys\bin\inst.exe", FR, RI
Once the new installer running it can optionally take care of uninstalling the 0xOLD_PUID package which at that time is no longer needed.
Should work. Which means that I haven't tested it but ...