使用 Visual Studio 创建安装程序/MSI 时,是否可以为不需要管理员权限即可安装的简单应用程序进行安装?如果在 Windows XP 下不能,那么在 Vista 下也可以吗?

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

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

我认为此方法的一个限制是,如果它安装在当前用户的应用程序数据文件夹下,其他用户将无法运行它。

更新:

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

有帮助吗?

解决方案

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

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

您实际上不必使用 ClickOnce Web 部署内容。如果您执行“构建”>“发布”,然后压缩“publish\”文件夹的内容,则可以将其作为安装程序有效地分发。为了使其更加顺利,请从自动运行 setup.exe 文件的文件夹中创建自解压存档。

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

其他提示

维斯塔是 更多的 对于这种事情有限制,所以如果你不能在 XP 上这样做,你可以打赌 Vista 也不会让你这样做。

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

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

据我所知,执行此操作的唯一方法是在 .NET 2.0+ 中构建 ClickOnce 应用程序

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

查看:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top