Currently I am participating in development of a NSIS installer. This installer uses the UAC plugin for elevation to be able to install to a directory inside Program Files. Now, the installer elevates in .onInit, in the very beginning. The user may later choose a path, and even if this path is outside Program Files, the installer is already run as elevated. Is it possible to elevate only after user has chosen a path, if this path requires admin rights? Or is it not recommended?
Personally, I would not recommend it, but it has been done, this post has all the links you need.