The reason you expect this is because Windows has a file lock behaviour that won’t let you delete a file when it’s in use, in Linux this limitation doesn’t exist.
Raymond Chan, arguably one of the best software engineers in the world, and a Microsoft employee, has repeatedly lamented the near malware like work arounds developers have had to invent to overcome this limitation with uninstallers.
Think about uninstalling a game. You need to run “uninstall.exe” but you don’t want uninstall.exe to exist after you’ve run it… but you can’t delete a file that’s in use. Uninstall.exe will always be in use when you run it….so how do you make it remove itself?
Schedule a task? Side load a process? Inject a process? Many ways…. But most look like malware.
Linux has never suffered this flaw.
Pseudo-malware is pretty much the way to go as a developer in my experience.
I believe his suggestion of a javascript file that deletes itself works only works because javascript gets sandboxed and doesn't suffer from Windows "flaw" with file locks.
https://devblogs.microsoft.com/oldnewthing/20230911-00/?p=108749
While Raymond does offer a solution he's also completely side stepping any responsibility on Microsoft's part in creating and perpetuating this problem without offering their own native solution.