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

时间:2020-03-05 18:56:13  来源:igfitidea点击:

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

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

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

我认为这种方法的局限性在于,如果它为当前用户安装在app数据文件夹下,其他用户将无法运行它。

更新:

我们可以在常规setup.exe类型的安装程序中将点击安装打包吗?我们可能会问为什么我们要这样做,原因是我们有一个安装程序,该安装程序会进行准备工作检查并安装所需的任何内容(例如.NET),然后下载并执行MSI。即使这是唯一显示的内容,我们也想显示一个正常的安装程序启动屏幕。我们不介意该应用程序只能由一个用户(安装该应用程序的用户)查看。

解决方案

回答

Vista对这种事情的限制更大,因此,如果我们不能在XP中做到这一点,则可以肯定Vista也不会允许我们这样做。

没错,使用Windows Installer安装到Program Files文件夹需要管理权限。实际上,对该文件夹的所有写访问都需要管理员权限,这就是为什么我们不再应该将数据与可执行文件存储在同一文件夹中的原因。

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

回答

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

如果应用程序用户已经安装了正确的预配置,则可以"启动"该应用程序。

退房:

  • 微软家族

回答

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

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

回答

ClickOnce是解决此问题的好方法。如果转到项目属性>发布,则可以为此设置设置。特别是,"安装模式和设置"很不错:

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

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

即使以这种方式安装,如果我们选择使用它,则在线更新仍将适用于该应用程序。我们所要做的就是将ClickOnce文件置于联机状态,并将URL置于项目的"发布属性"页面中。