6

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

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

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

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

更新:

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

4

4 回答 4

4

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

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

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

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

于 2008-09-16T15:13:01.963 回答
0

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

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

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

于 2008-09-16T15:05:03.433 回答
0

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

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

查看:

于 2008-09-16T15:07:03.257 回答
0

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

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

于 2008-09-16T15:11:12.263 回答