One of the benefits of installing to Program Files is that is exactly where the user expects it to go. Usually users go here first to look where the program is installed. The biggest downside is that the user needs administrative privileges, which isn't always required by the program. You are correct in assuming installing to AppData will let restricted users install and use the application.
Common command line parameters for installers built using the NSIS are: /S runs the installer or uninstaller silently. /D sets the default installation directory. It must be the last parameter used in the command line and must not contain any quotes, even if the path contains spaces. Only absolute paths are supported. More information about. Nullsoft Scriptable Install System (NSIS) is a script-driven installer authoring tool for Microsoft Windows with minimal overhead backed by Nullsoft, the creators of Winamp. NSIS is released under a combination of free software licenses, primarily the zlib license. It has become a widely used alternative to commercial. NSIS is released under a combination of free software licenses, primarily the zlib license. It has become a widely used alternative to commercial proprietary products like InstallShield, with users including Amazon.com, Dropbox, Google, Ubisoft, FL Studio, BitTorrent, and McAfee. 1 History 2 Script examples.
It also will follow the user around on network systems, allowing them to have access to the program from any machine they log into with the same account. This is also a downside however since it means 2 or 3 users on a machine will have 2 or 3 versions of it installed. Google installs its products to AppData, which is great since it can then be installed by any user (including at schools where the computers are stuck with IE6 or something).
You should use AppData for any configuration, or program files that will change with the program. I personally prefer installing programs to Program Files, because that's where users assume it will be installed, and it requires admin permissions, which is usually set for a reason, and abiding by those permissions is just nice for an app to do. Ultimately it's up to you, but the default should probably just be Program Files.