4

我有用于 SQL Server 2008 R2、.NET Framework 3.5、.NET Framework 4 等的自定义引导程序。我正在使用 Visual STudio 2010 的部署项目来部署 .NET 4 应用程序。我知道这些正在消失。

如果用户没有特定的 Windows 权限,有没有办法可以指定引导程序失败?SQL Server 的安装程序似乎可以自行解决这个问题,但会提供非常隐秘的错误代码和用户难以追踪的文本。我知道我可以为 Windows 版本设置 Bypasses,并且 SqlCheck.exe 会执行某种版本检查。我是否必须创建自己的应用程序来检查用户的权限,并且引导程序可以检查其返回码,类似于 SqlCheck.exe?

这可以使用 Bootstrapper Manifest Generator 来完成吗?Visual Studio 2010 甚至支持 BMG 吗?似乎不再受支持,但我不确定是否有任何特定于 VS 2010 / Windows Installer 4.5 http://archive.msdn.microsoft.com/bmg

4

1 回答 1

0

使用标准 Visual Studio 引导程序最多可以检查AdminUser属性值。预定义的 .NET Framework 4.0 客户端配置文件先决条件使用类似的条件。您可以在此文件夹中找到它的清单:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40Client

引导程序清单生成器也应该支持这一点。

但是,这是一个很大的问题,在较新的 Windows 版本上,所有用户都可以通过提升获得管理员权限。因此,从安装程序的角度来看,任何用户都被视为管理员,即使他不是。

所以这种方法在 Vista 或更高版本上几乎没用。

您可以尝试创建自己的自定义 EXE 引导程序来处理先决条件并检查用户权限。但是你很可能会遇到同样的问题。

根据我的经验,最好的方法是让每个安装程序在必要时提升自己。他们中的大多数都为此内置了机制,尤其是来自 Microsoft 的机制。

如果您遇到这种方法的问题,我很确定它们不是由特权引起的。很可能您的先决条件配置不正确(例如,命令行不正确)。

于 2011-10-25T18:02:56.267 回答