我们如何创建不需要管理员权限的安装程序?
-
09-06-2019 - |
题
使用 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,这应该允许您安装到每个用户配置文件中的文件夹,而无需管理员权限。
如果启用了 UAC,则无法写入程序文件。安装到 \AppData 确实只会为一个用户安装该程序。
但是,您必须注意,任何需要更改注册表的配置更改可能(我必须仔细检查)管理员权限。我突然想到对桌面背景的修改最终存储在 HKEY_CURRENT_USER 中。