[小结]VSTO addin 安装部署

19 篇文章 1 订阅
8 篇文章 0 订阅

VSTO addin刚接触,对于此类部署没有做过,好在找到一篇很全面的文章。

 http://www.cnblogs.com/brooks-dotnet/archive/2011/11/04/2236609.html

VSTO addin 部署大致归纳一下,主要有以下一些情况:

1、Office版本不同

目前主要有Office 2003、Office 2007、Office 2010。

2、32位与64位的Office

目前只有Office 2010提供64位版本。

3、64位操作系统安装32位的Office

目前多出现在新上市的笔记本,很多都是Win7 64位,安装了Office 2007、2010 32位。

此外,不同VSTO项目的部署方式也不相同。主要有如下一些VSTO项目类型:

1、文档类型

如Word Document、Excel Workbook

2、AddIn类型

如Word AddIn、Excel AddIn

3、Shared AddIn类型

4、Excel自定义公式类型

下面我们就来逐个探讨一下相应的部署方案。

注意VS2010 只支持Office 2007、Office 2010,若要开发基于Office 2003的VSTO项目,请使用VS2005、VS2008。

一、待部署的项目是文档类型

1.1、使用VS 2010创建一个Excel Workbook项目:

1.2、选择Office 2007格式.xlsx:

1.3、在一个工作表中放置一个按钮:

1.4、在其单击事件中弹出一个对话框:

1.5、F5运行,会打开Excel,点击按钮弹出我们希望看到的信息:

1.6、在Debug目录下会发现生成了如下这些文件:

由于是文档类型,因此生成一个Excel工作簿很正常。有一个.vsto格式的文件很少见,它就是VSTO项目部署时的安装文件。

.vsto文件其实是一个XML文件,用文本编辑器打开可以看到具体内容:

包含了VSTO项目的具体信息,如.NET运行时版本,依赖的程序集,数字签名等信息,不要手动修改这个文件。

.NET运行时为4.0,所以客户端首先要安装.NET Framework 4.0。

.vsto的默认打开方式是Visual Studio Tools For Office Execution Engine:

该组件包含于Visual Studio Tools For Office 运行时,因此客户端若要运行VSTO程序,还需要安装Visual Studio Tools For Office 运行时。

Visual Studio 2010 Tools for Office Runtime 可以在这里下载。

1.7、我用了一个虚拟机模拟客户端,安装了.NET 4.0和Office 2010后就可以打开.vsto了:

1.8、安装成功后就可以打开Debug中的Excel文件了:

注意文档类型的VSTO项目安装后只对发布的一个文档有效(只对Debug中的Excel有效),不影响用户其他的Office文件,即文档类型项目不是全局性的。

1.9、在控制面板中可以将该VSTO项目卸载:

二、待部署的项目是Add In类型

2.1、新建一个Word Add In项目:

2.2、添加一个可视化Ribbon:

2.3、Ribbon中添加一个按钮:

2.4、单击弹出对话框:

2.5、F5运行后会打开Word:

2.6、在Debug目录中会生成一些文件:

2.7、客户端依旧需要安装.NET 4.0、Visual Studio 2010 Tools For Office Runtime才能运行该VSTO项目:

注意Add In 类型是全局性的,只要安装,用户随便打开一个Office文档都会包含该Add In。

三、Shared AddIn类型

所谓Shared AddIn,就是该插件可以被多种Office文档共用,但是一般都是针对一种Office文档开发。

3.1、创建一个Shared AddIn项目:

3.2、这里我选择只针对Excel:

3.3、设置加载属性:

3.4、默认有两个项目,一个是插件,另一个是MSI安装项目:

这里我们只谈部署,关于如何开发相关的项目请参考其他资料。

添加System.Windows.Forms的引用,然后在Connect.cs中的OnStartupComplete事件中弹出一个对话框:

3.5、设置安装项目属性:

注意TargetPlatform没有AnyCPU,故需要针对x86、x64分别编译一份MSI安装文件。

3.6、设置安装项目运行依赖组件:

这里可以设置需要.NET Framework 4.0:

在安装项目属性页中的【Prerequisites】中可以设置更多的运行依赖组件:

3.7、设置完成后编译安装项目,会生成相应的MSI安装包:

3.8、直接在安装项目右击àInstall即可以安装:

安装完后打开一个Excel就会看到我们的对话框:

四、Excel自定义公式类型

之所以把Excel自定义公式类型单独拿出来说,是因为Excel自定义公式的注册有些特殊,尤其是Excel 2010 x64。

4.1、创建一个类库项目:

4.2、写加减乘除四个函数和COM注册、反注册函数:

View Code

using System;
using System.Runtime.InteropServices;
using Microsoft.Win32;

namespace ExcelUDF
{
    [Guid("E72F44C7-DD4A-4FA2-BC32-4EA9925749DB")]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    [ComVisible(true)]
    public class ExcelUDF
    {
        public int Add(int a,int b)
        {
            return a + b;
        }

        public int Subtract(int a,int b)
        {
            return a - b;
        }

        public int Multiply(int a,int b)
        {
            return a * b;
        }

        public int Divide(int a,int b)
        {
            return a / b;
        }

        #region COM Related

        [ComRegisterFunction]
        public static void RegisterFunction(Type type)
        {
            Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type, "Programmable"));
            var key = Registry.ClassesRoot.OpenSubKey(GetSubKeyName(type, "InprocServer32"), true);
            key.SetValue("", Environment.SystemDirectory +@"\mscoree.dll", RegistryValueKind.String);
        }

        [ComUnregisterFunction]
        public static void UnregisterFunction(Type type)
        {
            Registry.ClassesRoot.DeleteSubKey(GetSubKeyName(type, "Programmable"), false);
        }

        private static string GetSubKeyName(Type type,string subKeyName)
        {
            var s = new System.Text.StringBuilder();
            s.Append(@"CLSID\{");
            s.Append(type.GUID.ToString().ToUpper());
            s.Append(@"}\");
            s.Append(subKeyName);
            return s.ToString();
        }
        #endregion
    }

4.3、我安装的是Excel x64,需要手动注册自定义公式的程序集,为此在项目属性中的Build Events中写入批处理脚本来自动注册:

%windir%\Microsoft.NET\Framework64\v4.0.30319\regasm /codebase "$(TargetPath)"

如果是Excel x86,这样注册:

%windir%\Microsoft.NET\Framework\v4.0.30319\regasm /codebase "$(TargetPath)"

部署到客户端时需要执行这个批处理脚本。

这样在每次编译成功后就会自动注册该自定义公式。

4.4、在生成管理器中配置为 x64

4.5、在Ribbon项目中添加调用自定义公式的代码:

using Microsoft.Office.Tools.Ribbon;

namespace ExcelAddIn
{
    public partial class RibbonDemo
    {
        private void RibbonDemo_Load(object sender, RibbonUIEventArgs e)
        {

        }

        private void btnAdd_Click(object sender, RibbonControlEventArgs e)
        {
            Globals.ThisAddIn.Application.ActiveCell.Formula = "=Add()";
        }

        private void btnSubtract_Click(object sender, RibbonControlEventArgs e)
        {
            Globals.ThisAddIn.Application.ActiveCell.Formula = "=Subtract()";
        }

        private void btnMultiply_Click(object sender, RibbonControlEventArgs e)
        {
            Globals.ThisAddIn.Application.ActiveCell.Formula = "=Multiply()";
        }

        private void btnDivide_Click(object sender, RibbonControlEventArgs e)
        {
            Globals.ThisAddIn.Application.ActiveCell.Formula = "=Divide()";
        }
    }

4.6、修改Ribbon项目属性,将 Excel设置为启动的扩展程序:

4.7、编译、运行,会调用Excel来打开,自动加载我们的插件ExcelAddIn

4.8、激活自定义公式:

在【Developer】选项卡中点击【Add-Ins】,再点击【Automation】找到我们编写的自定义公式,【OK】。

4.9、此时在Excel中就可以使用我们的公式了;

  

小结:

1、若客户使用的主要是Office 2003,则使用VS2008开发(.NET 3.5);若客户使用Office 2007或更新版本,则使用VS2010来开发。(.NET 4.0)

2、一般的安装顺序为:

.NET Framework –> Visual Studio Tools For Office Runtime à MSI或.vsto

3、安装之前最好将原来版本卸载,若.vsto出现无法安装的情况,则可以使用Mage.exe清理一下缓存再尝试安装。

命令行下执行:mage -cc

Mage.exe是Windows SDK中的一个小工具,安装完Windows SDK后默认位于:

C:\Program Files (x86)\Microsoft SDKs\Windows\xx\Bin     àWindows x64

C:\Program Files\Microsoft SDKs\Windows\xx\Bin     àWindows x86

其中xx是Windows SDK的版本号,如v6.0A、v7.0A、v7.1等。


******************** 

这个Mage命令真的很有用,忽略了这点需要花很多时间去折腾!!!

**********************

使用VSTO开发建议客户端安装Office 2007或更新版本,因为VSTO本身就是对Office 2007或更新版本量身定制的。Office 2003由于历史遗留问题,难以适应新架构。

对此需要引导客户,虽然客户是上帝,但是如果能说服客户升级Office,则对用户体验和项目后期的升级维护有显著的好处。

 

--------------------------------------------------------------------------------------------------------------------------------------------------

看着这篇十全大补文章,收获颇丰,准备打包完毕收工,无意间又看到另外一篇文章:

http://www.cnblogs.com/allenlooplee/archive/2007/10/07/915821.html

使用ClickOnce发布插件部署包

        我不知道你是如何看待VSTO/VSTO 2005 SE项目的部署过程,我个人觉得很繁琐复杂,每当想到这个令人厌烦的过程,使用VSTO/VSTO 2005 SE进行开发的兴致就大为减弱了。现在好了,VSTO Orcas支持使用ClickOnce进行部署,整个过程就像你部署其它应用程序那么简单。

        首先,右键点击项目图标,选择Publish菜单项:

Figure 1

        接着,指定插件的发布位置:

Figure 2

        然后,指定插件的默认安装路径:

Figure 3

        最后,点击完成生成部署包:

Figure 4

        此外,通过项目的属性窗口,你可以对部署包的生成进行更多的设置:

Figure 5

        你可以在Prerequisites对话框中指定运行该插件所需的软件/组件:

Figure 6

        从上图可以看出,运行这个插件需要:

Prerequisites components
Windows Installer 3.1
.NET Framework 3.5 (Beta 2)
Microsoft Visual Studio Tools for Office Runtime 3.0 (VSTO Orcas)

        值得提醒的是,VSTO Runtime 3.0的安装文件也随部署包一起发布了:

Figure 7

 

安装/卸载插件

        运行setup.exe,你会看到如下所示的对话框:

Figure 8

        如果你不希望你的用户看到这个对话框,可以为项目进行强签名。点击Install按钮,安装程序将继续:

Figure 9

        安装完毕后点击Close按钮退出:

Figure 10

        如果你想卸载这个插件,可以在添加/删除程序对话框里找到它的卸载程序:

Figure 11

-------------------------------------------------------------------------------------------------------------------------------

参考文章3:


对于程序依赖的文件,例如库文件,非托管dll,clickonce发布后,并不能自动打包。

解决办法:

http://blog.csdn.net/isyxp/article/details/4988095

1、在项目上右键—>添加—>添加现在项 将自已需要的文件添加进来。

2、选中刚添加进来的文件,在属性窗口将“复制到输出目录”的值选为“始终复制”;将“生成操作”的值选为“内容”。

3、在“发布”页面,“应用程序文件”窗口中就可以看到刚加入的文件了。  // vs2010中找不到“应用程序文件”,但不影响使用

4、重新“发布”问题解决。

 ------------------------------------------------------------------------------------------------------------------------------------

后续问题:

经测试及查找文档发现,Excel Addin的部署卸载存在一定缺陷,在很多情况下会出现“僵尸”程序,无法卸载干净。暂没有好的办法。

 clickonce部署简单,但是clickonce也不是没有问题,因为clickonce的安装目录无法指定,一般是放在系统指定的目录下,对于有定制目录要求的

就没有办法了。

 

Windows Installer 部署 VSTO (Visual Studio Tools for Office) 是一种在 Windows 平台上部署 Office 插件的方法。下面我将详细解释 VSTO 部署的过程和步骤。 首先,创建一个 VSTO 项目并编写所需的代码和功能。接下来,我们需要创建一个 Windows Installer 项目,将 VSTO 插件打包到一个安装程序中。 使用 Visual Studio 创建 Windows Installer 项目后,我们需要添加 VSTO 插件的文件。这些文件通常包括 VSTO 项目生成的 .dll 文件、插件所需的其他附加文件以及 VSTO 运行时文件。确保将这些文件组织在适当的文件夹结构中。 在 Windows Installer 项目中,我们需要通过创建自定义操作来配置安装程序。这些自定义操作可以控制安装程序在安装和卸载期间执行的操作。其中,两个最常用的自定义操作是 Install 和 Uninstall。 在 Install 自定义操作中,我们需要配置安装程序的行为。这包括向 Office 注册 VSTO 插件,将插件添加到 Office 的加载项列表,确保用户可以在 Office 中看到并使用插件。 在 Uninstall 自定义操作中,我们需要配置卸载程序的行为。这可能包括从 Office 注销 VSTO 插件并从 Office 的加载项列表中移除插件。 完成后,我们需要构建 Windows Installer 项目并生成安装程序。然后,我们可以将生成的安装程序分发给用户进行安装。 在用户运行安装程序并完成安装后,VSTO 插件将在用户的 Office 中可用。用户可以根据自己的需求启用或禁用插件,从而在 Office 中使用插件的功能。 总结而言,Windows Installer 部署 VSTO 插件涉及创建一个 Windows Installer 项目,将 VSTO 插件的文件添加到项目中,并配置安装和卸载的自定义操作。完成后,生成安装程序并将其分发给用户进行安装。用户可以在 Office 中启用插件并使用其功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值