Mixing ProgramFiles and user files in the same installer is not recommended.
The Microsoft guidelines say that you should install to ProgramFiles. When a user runs your application for the first time, the application itself should copy your template files from a shared location (%programfiles% or %programdata%) to the users profile.
If you don't want to follow the rules, you can use a hack like
GetUserShellFolderFromRegistry
See also:
-
NSIS best practices