Visual Studio 安装项目 - 使用 Windows 标准用户帐户安装当前用户

Posted

技术标签:

【中文标题】Visual Studio 安装项目 - 使用 Windows 标准用户帐户安装当前用户【英文标题】:Visual Studio Setup Project - Install Current User with Windows Standard User Account 【发布时间】:2011-07-18 23:59:35 【问题描述】:

我在运行 Windows 7 Starter 的上网本上测试了我的安装程序,并使用标准用户帐户登录,发现了一些我以前没有遇到过的问题。

由于用户以标准用户身份运行,因此系统会提示他们输入管理员帐户详细信息。这很好,并允许安装程序启动。现在,当用户选择是否要为当前用户/所有用户安装软件并选择当前用户时,会发生以下情况:

快捷方式(桌面和应用程序菜单)不是为标准用户创建的,而是为管理员帐户创建的。我注销了标准用户帐户并以管理员帐户身份登录,并且快捷方式正确显示。这不是我所期望的。

在这台机器上卸载还会留下一个由安装程序创建的注册表项。在我试用的桌面上没有出现这种行为。

需要注意的一点(但不应该真正影响这种情况)是我使用 dotNetInstaller 在引导程序本身调用 Visual Studio 2010 安装程序之前引导我的应用程序需要运行的一些先决条件(Sql Compact DB 3.5)可执行文件(我的应用程序)。

如果标准用户已登录并尝试安装我的产品,请输入管理员凭据并选择当前用户安装,我如何让它为标准用户帐户而不是管理员帐户安装快捷方式?

另外,当用户在这台电脑上删除程序(通过添加/删除程序)时,为什么作为安装项目的一部分创建的注册表项不会自行删除?这台上网本上的 Windows 安装是否以某种方式损坏?

【问题讨论】:

【参考方案1】:

如果标准用户已登录并尝试安装我的产品, 输入管理员凭据并选择当前用户安装,怎么做 我得到它来安装标准用户帐户的快捷方式,而不是 比管理员帐户?

你不能。标准用户的每用户安装需要在没有提升的情况下运行。这意味着它只能使用每个用户的位置,例如应用程序数据文件夹和 HKEY_CURRENT_USER 配置单元。如果您提升每用户安装,它将针对您提升的帐户执行。

还有为什么不作为设置的一部分创建注册表项 项目在用户删除程序时自行删除(通过 在这台电脑上添加/删除程序)?

这个注册表项到底在哪里?如果它位于 HKEY_CURRENT_USER 中,则卸载过程可能无权访问它(例如,它是为另一个用户帐户安装的)。您是否尝试创建卸载日志以查看会发生什么?

【讨论】:

标准用户的每用户安装需要在没有提升的情况下运行 - 感谢告知。我不确定如何让程序在没有提升的情况下运行。这对于可执行文件是否可行。 注册表项在 HKEY_LOCAL_MACHINE\Software[Product Name] 中创建。它是一个标志,表明程序已安装并由引导程序使用。 要在没有提升的情况下运行每用户安装,您需要确保它不使用每台计算机的位置,如 Program Files 和 HKEY_LOCAL_MACHINE。注册表项是使用 Windows Installer 支持还是通过自定义操作创建的?由自定义操作或您的应用程序创建的资源不会被卸载删除。 这是个好信息。我将看看如何将注册表项放在不同的位置并尝试将应用程序安装到不同的位置。我的注册表项是由 Windows Installer 支持创建的。

以上是关于Visual Studio 安装项目 - 使用 Windows 标准用户帐户安装当前用户的主要内容,如果未能解决你的问题,请参考以下文章

Visual Stdio 2015打包安装项目的方法(使用Visual Studio Installer)

Visual Studio安装程序项目扩展 - 安装服务

Visual Studio C++ 社区 2017 中的构建错误

Visual Studio安装程序项目中的其他安装程序

将 Visual Studio 安装项目转换为 WIX

如何只用visual c++编译器而不安装visual studio