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