Saturday, March 03, 2007

VSTO Excel addin deploy 问题.

自从微软推出VSTO后,Office插件的开发变的简单了许多。但是要发布的时候,需要做的事情却太多了 :(
如果直接使用创建出来的setup工程啥都不改,基本上这个addin装到别的机器上是用不了的。。

下面是一些问题和参考解决方案
1.可以参考微软的msdn文档
http://msdn2.microsoft.com/en-us/library/aa537173(office.11).aspx
2.如果VSTO的addin没有load进来,可以这样做:
a.开一个cmd窗口
b.输入 set VSTO_SUPPRESSDISPLAYALERTS=0
c. 再启动office程序,如excel等。
这样的话,VSTO如果出错,它就会有个对话框跳出来。

3.如果错误信息是Failed to grant permission to execute. (Exception from HRESULT: 0x80131418). 这就是因为VSTO的addin要求系统给它FullTrust的权限,如果权限不够的话,是运行不了的。在前面的链接中,它有个download,里面是一些VSTO 发布时常用的东西,如设置安全限制,更新manifest文件等。
4. 设置安全限制的类是一个Installer,这个需要设置Setup工程的Custom Action。 设置好后在Custom Date处填上参数。

5.在Vsita下,如果使用了前面下载的SetSecurity,可能会出现下面的错误Windows Installer MSI packages error code 2869。点了确认以后会出现一个空白的对话框,然后安装就失败了。
这是因为Vsita的安全控制问题,在SetSecurtiy类里面,它会调用一个exe来设置安全限制,所以在Vista下会因为没有权限运行exe而失败,一个解决办法是创建一个bat文件,然后输入 msiexec /i "you_msi_package.msi" 保存后,右键点击bat,然后选择"Run as administrator"。这个问题一般可以解决掉。 但是有的时候,这样做的时候,还是同样的错误,这个时候最好把设置权限的部分修改一下,直接调用Framework的类库来赋给安全权限。
可以参考http://msdn2.microsoft.com/en-us/library/system.security.securitymanager.aspx
里的创建codegroup的示例代码,记住,要创建的权限是"FullTrust".

Update:
如果Vista启动了UAC,那么运行安装程序时还是会出现2869错误,还是因为Vista的权限控制问题-_-
这个时候可以参考http://blogs.msdn.com/astebner/archive/2006/10/23/mailbag-how-to-set-the-noimpersonate-flag-for-a-custom-action-in-visual-studio-2005.aspx
的做法:
1。 下载这个文件 sample script 并解压到你的setup project 目录下
2。在VS2005中打开这个project
3。按F4显示属性列表
4。在解决方案里单击你的setup project
5。点PostBuildEvent项,会出现一个"..."的按钮
6。点这个按钮会出来Post-Build-Event对话框
7。把下面的命令行加进去。
:cscript.exe "$(ProjectDir)CustomAction_NoImpersonate.js" "$(BuiltOuputPath)"
8。重新编译整个solution


Reference:
http://xldennis.wordpress.com/2007/03/10/creating-and-deploying-managed-com-add-ins-with-vsto-2005-se-part-vii/

No comments: