2011-08-18 121 views
0

我正在为客户端创建C#.Net 4.0桌面应用程序。当我向他发送.msi文件时,它在尝试安装时需要管理权限。我意识到为什么是因为我正在将应用程序安装到“Program Files”目录中。.net桌面应用程序安装

有没有办法将应用程序安装到用户计算机上的某个区域,而不需要它们以管理员身份进行安装?

我使用.NET 4.0

+1

看到这个http://serverfault.com/questions/19341/how-do-i-run-a-msi-installer-with-elevated-priviledges-on-windows – Adeel

+0

我想我问的是什么时候我正在构建我的项目。我可以构建它,以便MSI文件并不需要管理员来安装它 – webdad3

+0

是否有您喜欢使用MSI的原因吗?您可以使用xcopy方法进行部署。只需将整个文件夹复制到当前用户有权限的位置即可。 –

回答

1

不知道这是否会解决“需要管理员”的问题,但你可以在“文件系统”更改目标文件夹安装查看您的安装项目:

  • 上的安装项目右键单击解决方案资源管理器并选择查看/文件系
  • 选择“应用程序文件夹”。
  • 在属性中,更改DefaultLocation。

此外,将setup.exe与* .msi一起分发通常是一个好主意,因此可以自动安装任何缺失的先决条件。

+0

在我的答案的链接我没有看到该选项。我不确定这是否能解决我的问题。我想我可以尝试。 – webdad3

+0

您也可以尝试关闭安装项目属性窗格中的“InstallAllUsers”(而不是右键单击属性,您需要选择安装项目,然后切换到“常用”属性)。 –

1

取决于哪些依赖的应用程序已经可以尝试的XCOPY部署 - 尽管似乎只记录了VS2005 + VS2008 ...

我们通常嵌入所有的依赖到应用程序中(在我们的例子中是EXE文件),这样它就可以通过复制它来“安装”......只要框架需要(即我们的例子中的.NET4)已经存在...

请参阅http://msdn.microsoft.com/en-us/library/ms235291%28VS.90%29.aspx

1

如果您添加清单文件并分配给应用程序,那么您需要设置执行级别。

以下是您可以设置执行级别的行。

< requestedExecutionLevel水平= “asInvoker” uiAccess = “假”/ >

如果你想,那么你需要改变上述声明如下

< requestedExecutionLevel水平的exe文件运行始终为administator运行= “requireAdministrator”uiAccess =“false”/ >

请参阅以下链接如何创建清单文件。

http://mahesg.wordpress.com/2007/07/30/adding-manifest-to-net-application/

+0

这看起来很有希望,但在VS2010中我无法实现它的工作。我在其中一个步骤中遇到错误。 – webdad3

0

我已经用鼠标右键点击“目标计算机上文件系统”增加了“用户的应用程序数据文件夹”,围绕管理权限,得到了从“应用程序文件夹”感动了所有文件到它。安装程序仍会提示安装目录,但会被忽略。快捷键仍然可以正常设置。

它安装到Win7上的以下目录C:\ Users \ username \ AppData \ Roaming 在xp下,它在一些位置位于文档和设置文件夹下。

我问的问题为什么谷歌浏览器并不需要获得许可,并发现它安装在一个稍微不同的文件夹C:\ Users \用户名\ AppData \本地\谷歌\镀铬\应用。

相关问题