07-11-2013 11:30 AM - edited 07-11-2013 11:37 AM
Is there any way I can configure an installer build specification to install my application to the current user's folder? This does not seem possible at first glance due to the limited "destinations" available.
Ideally I'd want the application to be placed in "C:\Users\[USERNAME]\AppData", or some equivilent where it'd be protected from being run by other users without administrative access.
Has anyone been able to do this? Thanks!
07-11-2013 11:39 AM
What do you mean by install an application to the current user's folder. Applications get installed to the Program Files directory.
07-11-2013 11:43 AM - edited 07-11-2013 11:45 AM
Not always...you can really install an application wherever you want. Typically, one would use the Program Files folder, yes. Many applications allow installation for only the current user or for all users. If you only want to install the application for the current user, you cannot install it in a publicly accessible place such as Program Files. NI has several "Destinations" that can be utilized when installing an application and its supporting files, however, as far as I can determine none of these are adequate as a single-user application destination.
07-11-2013 12:10 PM
There is a destination called [Personal] that goes to the user's MyDocuments folder. Whether program files should be mixed with a documents folder could be debated.
I see the [Public App Data] choice, but I don't see a [User App Data] option.
Another possibility would be to allow it to go to Public App Data, but after the installation, run a VI that then moves the program folder to the User's Application Data directory. However, that probably means updating shortcuts as well. And I don't know whether that VI would essentially step on itself in trying to do that move.
Maybe another choice would be to allow it to install to the program file directory, but use CACLS to prevent users from accessing that directory except for explicit permissions to the one or more users you want to allow to execute it. An advantage is it would allow one user to install a program for another user to use. The disadvantage is the person doing the installing would almost certainly have to be an administrator.
A disadvantage of the method you desire is that a user has to be the person logged in and install it for themselves (assuming that group policies allow non-admin users to install their own programs). Another disadvantage is if you want to have more than one permitted user, it would need to be installed multiple times, one for each.
Perhaps you could install security at the front end of your applicaiton. Anyone can run it, but the application determines if the currently logged in user is permitted to run it when comparing against some sort of encrypted file that lists valid users. If the user is permitted, the program moves onto normal operation. If not on the list, the program tells them so and never advances onto normal operation.
Perhaps someone else can determine if there is a path tagged within the installer builder that goes to the User App Data that I am missing.
07-11-2013 04:30 PM
There does not appear to be a way to do this through LabVIEW's installer build specification. I ended up adding my own authentication feature.
It would be nice to have more capability in the installer configuration. I could've used a nice script-based installer creator, but I already had existing code for a simple password authentication.