我们如何创建不需要管理员权限的安装程序?

Posted

技术标签:

【中文标题】我们如何创建不需要管理员权限的安装程序?【英文标题】:How do we create an installer than doesn't require administrator permissions? 【发布时间】:2010-09-09 13:17:43 【问题描述】:

使用 Visual Studio 创建设置/MSI 时,是否可以为不需要管理员权限安装的简单应用程序进行设置? Windows XP下不行,Vista下可以吗?

例如一个简单的图像处理应用程序,可让您将照片粘贴到背景之上。我相信安装到 Program Files 文件夹需要管理员权限?我们可以安装在 \AppData 文件夹中吗?

目标是创建一个应用程序,该应用程序将为本地计算机上非管理员组成员的用户安装,并且不会在 Vista 上显示 UAC 提示。

我相信这种方法的一个限制是,如果它安装在当前用户的应用数据文件夹下,其他用户将无法运行它。

更新:

你能在普通的 setup.exe 类型的安装程序中打包一次安装吗?您可能会问我们为什么要这样做 - 原因是我们有一个安装程序,它会进行先决条件检查并安装所需的任何内容(例如 .NET),然后我们会下载并执行 MSI。我们也想显示一个正常的安装程序启动屏幕,即使这是唯一显示的内容。我们不介意该应用是否只能由一位用户(为其安装该应用的用户)查看。

【问题讨论】:

【参考方案1】:

ClickOnce 是解决这个问题的好方法。如果您转到项目属性 > 发布,您可以为此设置设置。特别是“安装模式和设置”很好看:

该应用程序仅在线提供 - 这实际上是一个“运行一次”应用程序 该应用程序也可以离线使用(可从“开始”菜单启动)——这会将应用程序安装到 PC 上

您实际上不必使用 ClickOnce 网络部署的东西。如果您执行 Build > Publish,然后压缩 publish\ 文件夹的内容,您可以有效地将其作为安装程序分发。为了使其更加流畅,请从自动运行 setup.exe 文件的文件夹中创建一个自解压存档。

即使您以这种方式安装,如果您选择使用它,在线更新仍然适用于该应用程序。您所要做的就是将 ClickOnce 文件放到网上,并将 URL 放到项目的发布属性页面中。

【讨论】:

【参考方案2】:

Vista 对这种事情更多限制,所以如果你不能为 XP 做到这一点,你可以打赌 Vista 不会让你这样做。

您是对的,使用 Windows 安装程序安装到程序文件文件夹需要管理权限。事实上,对该文件夹的所有写入权限都需要管理员权限,这就是为什么您不应再将数据存储在与可执行文件相同的文件夹中的原因。

幸运的是,如果您使用的是 .Net,则可以使用 ClickOnce 部署而不是 msi,这应该允许您安装到每个用户配置文件中的文件夹,而无需管理员权限。

【讨论】:

【参考方案3】:

我知道的唯一方法是在 .NET 2.0+ 中构建 ClickOnce 应用程序

如果您的应用程序的用户安装了正确的先决条件,那么该应用程序就可以“启动”。

签出:

Microsoft Family.Show

【讨论】:

【参考方案4】:

如果启用了 UAC,则无法写入 Program Files。安装到 \AppData 确实只会为一个用户安装程序。

但是,您必须注意,任何需要更改注册表的配置更改都可能(我必须仔细检查)管理员权限。我对桌面背景的修改最终存储在 HKEY_CURRENT_USER 中。

【讨论】:

以上是关于我们如何创建不需要管理员权限的安装程序?的主要内容,如果未能解决你的问题,请参考以下文章

安装更改不要求 UAC 权限

如何让 WiX 安装程序请求管理权限?

安装软件“没有进行此操作的权限”怎么办

Android6.0权限管理

已经用管理员账户登录WIN7在安装oracle 10g xe时提示权限不够,需要用管理员账户进行安装?如何解决

如何获得对特定 Facebook 页面或应用程序的管理页面权限?