A relevant SO answer: How do I create a shortcut (.lnk) with a relative target?
It seems the LNK file format itself supports relative path with SLDF_HAS_RELPATH set, but