views:

1586

answers:

5

Hi,

When creating a setup/MSI with Visual Studio is it possible to make a setup for a simple application that doesn't require administrator permissions to install? If its not possible under Windows XP is it possible under Vista?

For example a simple image maniputlation application that allows you to paste photos on top of backgrounds. I believe installing to the Program Files folder requires administrator permissions? Can we install in the \AppData folder instead?

The objective is to create an application which will install for users who are not members of the administrators group on the local machine and will not show the UAC prompt on Vista.

I believe a limitation this method would be that if it installs under the app data folder for the current user other users couldn't run it.

Thanks,

Pete

A: 

Vista is more restrictive about this kind of thing, so if you can't do it for XP you can bet Vista won't let you either.

You are right that installing to the program files folder using windows installer requires administrative permissions. In fact, all write access to that folder requires admin permsissions, which is why you should no longer store your data in the same folder as your executable.

Fortunately, if you're using .Net you can use ClickOnce deployment instead of an msi, which should allow you to install to a folder in each user's profile without requiring admin permissions.

Joel Coehoorn
A: 

The only way that I know of to do this is to build a ClickOnce application in .NET 2.0+

If the user of your application has the correct pre-requsits installed then the application can just be "launched".

Check out:

MrHinsh
A: 

IF UAC is enabled, you couldn't write to Program Files. Installing to \AppData will indeed only install the program for one user.

However, you must note that any configuration changes that require changes to the registry probably(I'd have to double check on that) administrator privilege. Off the top of my head modifications to the desktop background are ultimately stored in HKEY_CURRENT_USER.

junkforce
+1  A: 

ClickOnce is a good solution to this problem. If you go to Project Properties > Publish, you can setup settings for this. In particular, "Install Mode and Settings" is good to look at:

  • The application is available online only -- this is effectively a "run once" application
  • The application is avaiable offline as well (launchable from Start Menu) -- this installs the app on the PC

You don't actually have to use the ClickOnce web deployment stuff. If you do a Build > Publish, and then zip up the contents of the publish\ folder, you can effectively distribute that as an installer. To make it even smoother, create a self-extracting archive from the folder that automatically runs the setup.exe file.

Even if you install this way, if you opt to use it, the online update will still work for the application. All you have to do is put the ClickOnce files online, and put the URL in the project's Publish properties page.

gregmac
A: 

Can you package a click once install in a normal setup.exe type installer? You may ask why we want this - the reason is we have an installer that does a prereq check and installs anything required (such as .NET) and we then downloads and executes the MSI. We would like to display a normal installer start screen too even if that's the only thing displayed. We don't mind if the app can only be seen by one user (the user it's installed for).

Pete