在一个程序包中部署多个 Office 2010 项目

Office 可视操作方法

**摘要:**了解如何使用 ClickOnce 部署来部署 Office 解决方案。您在发布解决方案时创建 ClickOnce 文件,包括安装程序例程。通过使用多个解决方案,您拥有了多个安装程序例程。本文介绍如何组合多个安装程序例程,使用户能够同时安装所有解决方案。

上次修改时间: 2015年3月9日

适用范围: Excel 2010 | Office 2010 | Open XML | PowerPoint 2010 | VBA | Word 2010

**发布时间:**2010 年 8 月

**供稿人:**Robert Green,MVP,MCW Technologies(该链接可能指向英文页面)

概述

方案:您使用 Microsoft Visual Studio 2010 创建了两个或两个以上的 Microsoft Office 2010 解决方案。您已在计算机上测试这些解决方案,现在您希望将它们部署到用户。虽然您可以使用 ClickOnce 部署解决方案,但您必须单独发布这些解决方案。这要求用户单独安装它们。您希望将解决方案作为一个程序包进行部署,以使用户只需运行一个安装程序例程。Visual Studio Tools for Office 运行时可在单个 ClickOnce 安装中部署多个 Office 解决方案。

ClickOnce 使用应用程序清单来确定要安装的项及其安装方式。您发布的每个解决方案都包含一个应用程序清单。Visual Studio 无法创建多解决方案应用程序清单。您可以手动执行此操作。本文介绍如何使用一个安装程序例程来创建多解决方案应用程序清单和安装多个 Office 解决方案。有关如何使用 ClickOnce 部署 Office 解决方案的详细信息,请参阅"浏览"一节中的链接。

编码

按照这些步骤进行操作可创建多解决方案应用程序清单。

  1. 在 Visual Studio 2010 中,加载原始示例项目 DeployMultipleOfficeSolutions.sln。

    图 1. 示例解决方案包含三个项目


    包含三个项目的示例解决方案

  2. ExcelSmartTagAddIn 项目是一个 Microsoft Excel 2010 应用程序级加载项,它提供了一个识别华氏温度或摄氏温度的自定义智能标记,并提供了用于转换到其他刻度的选项,如图 2 所示。利用图 3 中所示的功能区自定义项,用户可输入一个温度值,设置其度数,然后将该温度插入工作簿中。您可能会觉得加载项的内部代码很有趣,但这并不是本文的重点。相反,本文侧重于通过使用单个安装程序包来部署多个 Office 解决方案。

    图 2. 智能标记有助于将温度从一个度数转换为另一个度数


    Excel 中的智能标记转换器

    图 3. 功能区自定义项允许用户插入格式化的温度值


    Word 中的智能标记转换器

  3. WordSmartTagAddIn 项目是一个 Word 应用程序级加载项,它提供了与 Excel 加载项相同的功能。

  4. MultiSolutionAddInInstaller 项目是一个 Excel 应用程序级加载项,它不包含代码。在发布此项目后,您修改应用程序清单,使其包含有关如何安装其他两个项目的说明。当用户针对此项目运行安装程序例程时,将安装 Excel 和 Word SmartTag 加载项。

发布解决方案

在本节中,您发布了三个项目。出于某些原因(您很快将获知),您必须最后发布 MultiSolutionAddInInstaller 项目。

  1. 在"解决方案资源管理器"窗口中,选择 ExcelSmartTagAddIn 项目。

  2. 在"生成"菜单上,选择"发布 ExcelSmartTagAddIn"。将显示发布向导。

    图 4. 使用发布向导来发布 Office 解决方案


    发布向导

  3. 键入要发布应用程序的位置。

  4. 单击"完成"以发布解决方案并关闭发布向导。

  5. 在"解决方案资源管理器"窗口中,选择 WordSmartTagAddIn 项目。

  6. 在"生成"菜单上,选择"发布 WordSmartTagAddIn"。将显示发布向导。

  7. 键入要将应用程序发布到的同一位置。

  8. 单击"完成"以发布解决方案并关闭发布向导。

  9. 在"解决方案资源管理器"窗口中,选择 MultiSolutionAddInInstaller 项目。

  10. 在"生成"菜单上,选择"发布 MultiSolutionAddInInstaller"。将显示发布向导。

  11. 键入要将应用程序发布到的同一位置。

  12. 单击"完成"以发布解决方案并关闭发布向导。

  13. 在 Windows 资源管理器中,导航到发布文件夹。

    图 5. 发布文件夹的内容


    发布文件夹内容

    发布文件夹包含三个加载项解决方案和一个安装程序的部署清单文件(.vsto 文件)。部署清单介绍了每个应用程序的部署方式。其包含应用程序清单文件的位置以及客户端应运行的应用程序的版本。每当您发布项目时,Visual Studio 都会在此文件夹中创建一个 Setup.exe 文件。由于您最后发布 MultiSolutionAddInInstaller 项目,因此,Setup.exe 是该加载项的安装程序。

  14. 双击 Application Files 文件夹。其中包含三个文件夹:ExcelSmartTagAddIn_1_0_0_0、MultiSolutionAddInInstaller_1_0_0_0 和 WordSmartTagAddIn_1_0_0_0。所有这三个文件夹都包含您安装每个解决方案的 1.0.0.0 版所需的文件。

  15. 双击 ExcelSmartTagAddIn_1_0_0_0 文件夹。

    图 6. ExcelSmartTagAddIn_1_0_0_0 文件夹的内容


    Excel 加载项文件夹的内容

    此文件夹包含自定义项程序集 (ExcelSmartTagAddIn.dll.deploy)、部署清单 (ExcelSmartTagAddIn.vsto)、应用程序清单 (ExcelSmartTagAddIn.dll.manifest) 和依赖程序集 (Microsoft.Office.Tools.Common.v4.0.Utilities.dll.deploy)。

  16. 导航到 Application Files\WordSmartTagAddIn_1_0_0_0 文件夹。

    图 7. WordSmartTagAddIn_1_0_0_0 文件夹的内容


    Word 加载项文件夹的内容

    此文件夹包含自定义项程序集、部署清单文件、应用程序清单文件和两个依赖程序集(Microsoft.Office.Tools.Common.v4.0.Utilities.dll.deploy 和 Microsoft.Office.Tools.Word.v4.0.Utilities.dll.deploy)。

  17. 导航到 Application Files\MultiSolutionAddInInstaller_1_0_0_0 文件夹。

    图 8. MultiSolutionAddInInstaller_1_0_0_0 文件夹的内容


    多解决方案安装文件夹的内容

    此文件夹包含自定义项程序集、部署清单文件、应用程序清单文件和一个依赖程序集。将所需的文件从其他两个应用程序文件文件夹复制到此文件夹中,因为安装程序例程将在此文件夹中查找要安装的文件。

  18. 返回到 Application Files\ExcelSmartTagAddIn_1_0_0_0 文件夹。

  19. 选择并复制以 ExcelSmartTagAddIn 开头的三个文件。

  20. 将这些文件粘贴到 Application Files\MultiSolutionAddInInstaller_1_0_0_0 文件夹中。

  21. 返回到 Application Files\WordSmartTagAddIn_1_0_0_0 文件夹。

  22. 选择并复制以 WordSmartTagAddIn 开头的三个文件和 Microsoft.Office.Tools.Word.v4.0.Utilities.dll.deploy 文件。

  23. 将这三个文件复制到 Application Files\MultiSolutionAddInInstaller_1_0_0_0 文件夹中,此时该文件夹包含自定义项程序集和依赖程序集以及所有三个解决方案的清单。

    图 9. MultiSolutionAddInInstaller_1_0_0_0 文件夹的内容


    多解决方案安装文件夹的内容

修改应用程序清单

应用程序清单文件包含您运行 Office 解决方案所需的必备组件和依赖程序集。它还列出了特定的文档级别自定义项或应用程序级别自定义项所需的程序集。您必须修改 MultiSolutionAddInInstaller 解决方案的应用程序清单,并将其程序集列表替换为其他两个项目的应用程序清单中的列表。在修改应用程序清单后,您必须对其进行重新签名。之后,您必须更新部署清单并对其进行重新签名。

  1. 在 Visual Studio 中,在"文件"菜单上选择"打开文件"。

  2. 在"打开文件"对话框中,导航到发布文件夹中的 Application Files\MultiSolutionAddInInstaller_1_0_0_0 文件夹。

  3. 选择三个 .manifest 文件,然后单击"打开"以打开这些文件。

  4. 在 MultiSolutionAddInInstaller 清单中,向下滚动到必备组件部分,您会发现 Excel 是一个必备组件,而 Word 不是。这是因为 MultiSolutionAddInInstaller 是一个 Excel 加载项项目。紧接着,您添加指定 Word 为必备组件的 XML。

    图 10. Excel 是必备组件,而 Word 不是


    必备组件部分

  5. 在 WordSmartTagAddIn 清单中,向下滚动到必备组件部分,并复制将指定 Word 为必备组件的 XML。

    图 11. 将指定 Word 为必备组件的 XML 代码


    指定 Word 的 XML

  6. 在 MultiSolutionAddInInstaller 清单中,在将指定 Excel 为必备组件的 XML 后面粘贴此 XML。

  7. 在 MultiSolutionAddInInstaller 清单中,向下滚动到安装部分,您会发现它指定安装程序将安装 MultiSolutionAddInInstaller 程序集。接下来,您将其替换为其他两个清单中的适当部分。

    图 12. 安装 MultiSolutionAddInInstaller 程序集


    安装多解决方案程序集

  8. 在 ExcelSmartTagAddIn 清单中,向下滚动到安装部分,并复制将指示安装程序安装 Excel 加载项的 XML。

    图 13. 指示安装程序安装 Excel 加载项的 XML 代码


    安装 Excel 加载项

  9. 在 MultiSolutionAddInInstaller 清单中,将指定安装 MultiSolutionAddInInstaller 程序集的 XML 替换为您刚复制的 XML。

  10. 在 WordSmartTagAddIn 清单中,向下滚动到安装部分,并复制指示安装程序同时安装 Microsoft.Office.Tools.Word.v4.0.Utilities 程序集和 Word 加载项的 XML。

    图 14. 指示安装程序安装依赖程序集和 Word 加载项的 XML 代码


    安装依赖的程序集和 Word 加载项

  11. 在 MultiSolutionAddInInstaller 清单中,将刚复制的 XML 添加到刚粘贴的 XML 之后。

  12. 在 MultiSolutionAddInInstaller 清单中,向下滚动到入口点部分,您会发现,它将定义 MultiSolutionAddInInstaller 程序集的入口点。将其替换为其他两个清单中的适当部分。

    图 15. 定义 MultiSolutionAddInInstaller 程序集的入口点的 XML 代码


    程序集的入口点

  13. 在 ExcelSmartTagAddIn 清单中,向下滚动到入口点部分,并复制指定 Excel 加载项的入口点的 XML。

    图 16. 定义 Excel 加载项程序集的入口点的 XML 代码


    Excel 加载项程序集的入口点

  14. 在 MultiSolutionAddInInstaller 清单中,将指定 MultiSolutionAddInInstaller 程序集的入口点的 XML 替换为您刚复制的 XML。

  15. 在 WordSmartTagAddIn 清单中,向下滚动到入口点部分,并复制将指定 Word 加载项的入口点的 XML。

    图 17. 定义 Word 加载项程序集的入口点的 XML 代码


    Word 加载项程序集的入口点

  16. 在 MultiSolutionAddInInstaller 清单中,将刚复制的 XML 添加到刚粘贴的 XML 之后。

  17. 现在,您已有两个 entryPoints 元素。以粗体形式添加以下 XML 以便对其进行唯一标识:

    <vstav3:entryPoints id="MultiExcel">
    
    <vstav3:entryPoints id="MultiWord">
  18. 在 MultiSolutionAddInInstaller 清单中,向下滚动到自定义项部分,您会发现,它将定义 MultiSolutionAddInInstaller 程序集的自定义项。将其替换为其他两个清单中的适当部分。

    图 18. 定义 MultiSolutionAddInInstaller 程序集的自定义项的 XML 代码


    多解决方案程序集的自定义

  19. 在 ExcelSmartTagAddIn 清单中,向下滚动到自定义项部分,并复制将定义 Excel 加载项自定义项的 XML。

    图 19. 定义 Excel 加载项程序集的自定义项的 XML 代码


    Excel 加载项程序集的自定义

  20. 在 MultiSolutionAddInInstaller 清单中,将指定 MultiSolutionAddInInstaller 程序集的自定义项的 XML 替换为您刚复制的 XML。

  21. 在 WordSmartTagAddIn 清单中,向下滚动到自定义项部分,并复制将定义 Word 加载项自定义项的 XML。

    图 20. 定义 Word 加载项程序集的自定义项的 XML 代码


    Word 加载项程序集的自定义

  22. 在 MultiSolutionAddInInstaller 清单中,将刚复制的 XML 添加到刚粘贴的 XML 之后。

  23. 现在,您已有两个自定义项元素。以粗体形式添加以下 XML 以便对其进行唯一标识:

    <vstav4:customization id="MultiExcel">
    
    < vstav4:customization id="MultiWord">
  24. 保存您对 MultiSolutionAddInInstaller 应用程序清单所做的更改,并关闭应用程序清单文件。

  25. 在 Windows 资源管理器中,导航到包含 MultiSolutionAddInInstaller 项目的文件夹。

  26. 将 MultiSolutionAddInInstaller_TemporaryKey.pfx 文件复制到发布文件夹中的 Application Files\MultiSolutionAddInInstaller_1_0_0_0 文件夹中。此文件是由 Visual Studio 创建的临时证书。在将解决方案部署到生产环境中时,您应使用从证书颁发机构处获得的证书。

  27. 打开 Visual Studio 命令提示符。

  28. 更改为 Application Files\MultiSolutionAddInInstaller_1_0_0_0 文件夹。

  29. 在一个行上键入以下命令以重新签署应用程序清单:mage -sign MultiSolutionAddInInstaller.dll.manifest -certfile MultiSolutionAddInInstaller_TemporaryKey.pfx

  30. 将显示以下消息:"已成功签署 MultiSolutionAddInInstaller.dll.manifest"。

  31. 更改为发布文件夹。

  32. 在一个行上键入以下命令以更新并重新签名部署清单:mage -update MultiSolutionAddInInstaller.vsto -appmanifest "Application Files\MultiSolutionAddInInstaller_1_0_0_0\MultiSolutionAddInInstaller.dll.manifest" -certfile "Application Files\MultiSolutionAddInInstaller_1_0_0_0\MultiSolutionAddInInstaller_TemporaryKey.pfx"

  33. 将显示以下消息:"已成功签署 MultiSolutionAddInInstaller.vsto"。

  34. 在 Windows 资源管理器中,将 MultiSolutionAddInInstaller.vsto 文件从发布文件夹复制到 Application Files\MultiSolutionAddInInstaller_1_0_0_0 文件夹。

安装加载项

当您生成或发布 Office 加载项项目时,Visual Studio 将安装加载项。这将便于进行测试。此时,如果您打开 Excel,则会发现已安装 ExcelSmartTagAddIn 和 MultiSolutionAddInInstaller。如果您打开 Word,则会发现已安装 WordSmartTagAddIn。但是,如果您此时在开发计算机上运行安装程序例程,则将失败,因为安装了加载项。因此,您必须先卸载这些加载项。还可使用 mage 实用程序来清除 ClickOnce 缓存。

请注意,您无需在用户计算机上执行这些步骤。只需在开发计算机上执行以下两个步骤。

  1. 在 Visual Studio 的"生成"菜单上,选择"清理解决方案"。在清理 Office 加载项项目时,Visual Studio 将卸载加载项。

  2. 在 Visual Studio 命令提示符处,输入以下命令以清除 ClickOnce 缓存:mage -cc

  3. 在 Windows 资源管理器中,导航到发布文件夹。

  4. 双击 Setup.exe。将显示"Microsoft Office 自定义安装程序"对话框。

  5. 如果您收到"无法验证发行者"警告,请单击"安装"以继续。

    图 21. 安装自定义项


    安装自定义项

  6. 在该对话框告知您已成功安装自定义项时单击"关闭"。

    图 22. 成功的自定义项安装


    成功安装

  7. 打开 Excel。您应看到已安装加载项。

  8. 打开 Word。您应看到已安装加载项。

  9. 关闭 Excel 和 Word。

  10. 从 Windows"开始"菜单,打开"控制面板"并选择"程序和功能"。

  11. 选择 MultiSolutionAddInInstaller 图标,然后单击"卸载"。

  12. 打开 Excel。您应看到将不再安装加载项。

  13. 打开 Word。您应看到将不再安装加载项。

  14. 关闭 Excel 和 Word。

读取

同时安装多个 Office 解决方案这一功能非常有用,用户绝对会喜欢它。通过运行一个安装程序例程而不是多个安装程序例程,不仅可以节省时间,还可确保用户安装加载项。假定一个解决方案将使用三个加载项并需要安装所有这三个加载项。如果您依赖用户安装所有三个加载项,则某些用户可能只会安装其中的一些加载项。将多个安装合并为一个安装可确保安装解决方案的用户安装完整的解决方案。

卸载时也可获得此保证。卸载该解决方案的用户将卸载完整的解决方案。如果用户尝试以后安装解决方案,这将避免可能存在的问题。如果用户因仅卸载这三个加载项中的两个加载项而部分卸载解决方案,则尝试重新安装将失败。

您会发现,创建一个安装/卸载可节省时间并减少问题。

观看

观看视频

观看视频(该链接可能指向英文页面)

视频时长:20:29

文件大小:12.2 MB WMV

单击以获取代码

获取代码(该链接可能指向英文页面)

浏览

关于作者

Robert Green 是一名开发人员、作者和培训师。他是 MCW Technologies(该链接可能指向英文页面) 的高级顾问。Robert 既是 Visual Studio Tools for the Office system MVP,又是面向 Microsoft Visual Basic、Microsoft Visual C#、LINQ 和 Microsoft Windows Workflow Foundation 的 AppDev 课件的共同制作者。在加入 MCW 之前,Robert 是 Microsoft 的产品经理和程序经理。