我有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
答案 0 :(得分:0)
使用标准Visual Studio引导程序可以做的最多就是检查AdminUser属性值。预定义的.NET Framework 4.0 Client Profile先决条件使用类似的条件。您可以在此文件夹中找到它的清单:
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40Client
引导程序清单生成器也应该支持这一点。
但是,这是一个很大的问题,在较新的Windows版本中,所有用户都可以通过提升获得管理员权限。因此,从安装程序的角度来看,任何用户都被视为管理员,即使他不是。
所以这种方法在Vista或更高版本上几乎没用。
您可以尝试创建自己的自定义EXE引导程序,它可以处理先决条件并检查用户权限。但你很可能遇到同样的问题。
根据我的经验,最好的方法是让每个安装程序在必要时自行升级。他们中的大多数都有内置的机制,尤其是微软的机制。
如果您遇到此方法的问题,我很确定它们不是由特权引起的。很可能您的先决条件未正确配置(例如,命令行不正确)。