解决安装程序在win7/vista安装时出现2869的错误

 

vs2005生成安装程序时,想要加入一些动作,比如在安装完成之后弹出一个窗口,或者在结束安装后运行程序,这时需要使用CustomAction,具体操作参见
 Vs2005安装程序完成后,自动启动程序  http://blog.hjenglish.com/optop/articles/1208387.html 
 How can I customize an MSI in the Visual Studio setup/deployment project? http://blogs.msdn.com/astebner/archive/2006/08/12/696833.aspx

最后生成了一个msi文件,在xp下面下使用这个msi文件安装程序一切都正常,但是在win7下时,会报错误2869,<The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2869>
网上找了资料后,发现是 win7/vista的 UAC造成的,具体原因不再探究,下面是查到的解决方案,

Post-Build script to fix MSI issues in Vista for VS 2005 Setup and Deployment Projects
http://blog.csdn.net/sfz_roger/archive/2009/09/02/4508540.aspx

Solution for MSI Error 2869 on Windows Vista
http://blogs.x2line.com/al/archive/2007/07/20/3210.aspx

Windows installer error, Error Code : 2869. msidbCustomActionTypeNoImpersonate
http://social.msdn.microsoft.com/Forums/en-US/windowsgeneraldevelopmentissues/thread/c1326233-3f10-4d98-96a7-4a22e5eeaa2d/

都说需要向 CustomActions添加属性 msidbCustomActionTypeNoImpersonate,不过我没找到直接添加的方式,
后来用了第三个方案就可以了

需要注意的是, 那个需要保存的代码最好保存到 msi生成的目录下,然后cscript NoImpersonate.vbs <msi-file>放到安装项目的 PostBuildEvent事件中

BTW:下面这篇文章讲了下关于与UAC有关的内容,觉得还不错
让您的应用程序更好地适应 Windows Vista 的用户帐户控制
http://msdn.microsoft.com/zh-cn/magazine/cc163486.aspx

 

 

 

你可能感兴趣的:(windows,XP,Deployment,installer)