演练:使用 Windows Installer 文件部署文档级自定义项 (2003 System)

更新:2007 年 11 月

适用对象

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

项目类型

  • 文档级项目

Microsoft Office 版本

  • Microsoft Office 2003

有关更多信息,请参见按应用程序和项目类型提供的功能

此演练演示如何创建可用于部署文档级自定义项的 Microsoft Windows Installer (.msi) 文件。有关文档级自定义项的更多信息,请参见 文档级自定义项的体系结构

本演练阐释以下任务:

  • 创建可用于生成 Windows Installer 文件的安装项目。

  • 修改安装项目,以便 Windows Installer 文件安装您的 Visual Studio Tools for Office 解决方案。

  • 向安装项目添加一个步骤,以便 Windows Installer 文件编辑 Visual Studio Tools for Office 解决方案文档中嵌入的应用程序清单。

此演练假定目标计算机已经安装了用于运行 Visual Studio Tools for Office 解决方案的必备组件。您生成的 Windows Installer 不会检查或安装这些系统必备。有关如何安装必备组件的信息,请参见 Deploying Visual Studio 2005 Tools for Office Second Edition Solutions Using Windows Installer(使用 Windows Installer 部署 Visual Studio 2005 Tools for Office Second Edition 解决方案)。有关运行 Visual Studio Tools for Office 解决方案的系统必备的信息,请参见如何:准备最终用户计算机以运行 Office 解决方案 (2003 System)。 

ms268758.alert_note(zh-cn,VS.90).gif说明:

运行解决方案前,必须在最终用户的安全策略中向 Visual Studio Tools for Office 解决方案中的程序集授予完全信任。此演练中生成的 Windows Installer 文件不会部署运行解决方案所需的安全策略。有关如何添加自定义操作以便向自定义程序集授予信任的信息,请参见 Deploying Visual Studio 2005 Tools for Office Second Edition Solutions Using Windows Installer(使用 Windows Installer 部署 Visual Studio 2005 Tools for Office Second Edition 解决方案)。有关 Visual Studio Tools for Office 解决方案中安全性的信息,请参见运行 Office 解决方案的安全要求 (2003 System)Office 解决方案的安全性最佳做法 (2003 System)。有关在最终用户计算机上设置安全策略的信息,请参见 部署安全策略

先决条件

您需要以下组件来完成本演练:

  • Visual Studio Tools for Office(Visual Studio 2008 专业版和 Visual Studio Team System 的可选组件)。

  • Microsoft Office Word 2003 或 Microsoft Office Excel 2003。

创建项目

在此步骤中,创建一个 Excel 工作簿项目。若要使用现有的 Word 或 Excel 解决方案执行演练,请从“创建安装项目”标题处开始该演练,并在所有代码示例和说明中将项目名称 ExcelDeployment 替换为您的项目名称。

创建新项目

Visual Studio 在设计器中打开新的 Excel 工作簿,并将 ExcelDeployment 项目添加到“解决方案资源管理器”中。

添加工作簿后的代码

项目需要一些代码,以便您能够在打开文档时验证解决方案是否在工作。对于此演练,向工作簿的 Startup 事件处理程序中添加一个消息框。

将消息框添加到初始化事件

  1. 在“解决方案资源管理器”中,右击“ThisWorkbook.vb”或“ThisWorkbook.cs”,然后单击快捷菜单上的“查看代码”。

  2. 将以下代码添加到 ThisWorkbook 类中的 Startup 事件处理程序,以在初始化期间显示消息框。

    Private Sub ThisWorkbook_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles Me.Startup
    
        MessageBox.Show("The workbook is deployed successfully.")
    End Sub
    
    private void ThisWorkbook_Startup(object sender, System.EventArgs e)
    {
        MessageBox.Show("The workbook is deployed successfully.");
    }
    
  3. 按 F5 运行项目。

    Excel 启动并出现消息框。

  4. 关闭消息框。

  5. 退出 Excel。

创建安装项目

安装项目提供了文件和代码,您可以进行编译来为解决方案创建 Windows Installer 文件。有关更多信息,请参见 安装项目

为解决方案创建安装项目

  1. 右击“解决方案资源管理器”中的解决方案节点。

  2. 在快捷菜单上指向“添加”,再单击“新建项目”。

    出现“添加新项目”对话框。

  3. 在“项目类型”窗格中,展开“其他项目类型”并选择“安装和部署”。

  4. 在“模板”窗格中选择“安装项目”。

  5. 将项目命名为 ExcelSetup。

  6. 单击“确定”。

    安装项目出现在“解决方案资源管理器”中。默认情况下,您将使用此安装项目生成的 Windows Installer 文件会包括一个对话框,该对话框让最终用户可以指定解决方案的安装位置。有关更多信息,请参见 “安装文件夹”用户界面对话框

将工作簿和解决方案程序集添加到安装项目

ExcelDeployment 项目的主输出由工作簿和解决方案程序集组成。将这些组件添加到安装项目。

将文档和程序集添加到安装项目

  1. 右击“解决方案资源管理器”中的“ExcelSetup 项目”节点。

  2. 在快捷菜单上指向“视图”,然后单击“文件系统”。

  3. 在左窗格中右击“应用程序文件夹”。

  4. 在快捷菜单上指向“添加”,然后单击“项目输出”。

  5. 在“项目”框中选择 ExcelDeployment。

  6. 在输出类型列表中选择“主输出”。

  7. 单击“确定”。

    项目输出和依赖项出现在右窗格中。

  8. 在“解决方案资源管理器”中,展开 ExcelSetup 项目节点之下的“检测到的依赖项”。

  9. 右击除 Microsoft .NET Framework 之外的每一个依赖项,然后在快捷菜单中单击“排除”。

创建自定义操作项目

自定义操作是 Windows Installer 的一项功能。您可以使用自定义操作在安装过程结束时运行代码,以便执行不能在安装期间执行的操作。有关更多信息,请参见 自定义操作

创建自定义操作项目

  1. 右击“解决方案资源管理器”中的解决方案节点。

  2. 在快捷菜单上指向“添加”,再单击“新建项目”。

    出现“添加新项目”对话框。

  3. 在“项目类型”窗格中展开您的编程语言的节点,并选择 Windows。

  4. 在“模板”窗格中,选择“类库”。

  5. 将项目命名为 ExcelCustomAction。

  6. 单击“确定”。

    新项目出现在“解决方案资源管理器”中。

  7. 在“解决方案资源管理器”中,右击 ExcelCustomAction 项目之下的 Class1.vb 或 Class1.cs,然后单击“删除”。此演练不需要此文件。

创建编辑应用程序清单的自定义操作

当您在此演练的早些时候通过按 F5 运行项目时,生成进程编辑了工作簿中嵌入的应用程序清单以指向程序集的相对路径。如果安装后将工作簿和程序集保存在相同的文件夹中,则您不必修改嵌入的应用程序清单,您可以忽略这部分。然而,如果您确实要让用户在安装解决方案后将工作簿移动到其他文件夹,则必须编辑应用程序清单以指向程序集的完整路径。

在安装过程完成后必须通过运行自定义操作来更新 Visual Studio Tools for Office 解决方案中嵌入的应用程序清单,因为直到用户在安装期间指定解决方案程序集的位置时才能知道该位置。通过使用 ServerDocument 类来编辑嵌入的应用程序清单。若要在您的安装项目中使用 ServerDocument 类,请将代码添加到自定义操作项目内的 Installer 类。

创建编辑应用程序清单的自定义操作

  1. 右击“解决方案资源管理器”中的 ExcelCustomAction 项目。

  2. 在快捷菜单上指向“添加”,然后单击“新建项”。

    即会出现“添加新项”对话框。

  3. 选择“安装程序类”,并将该类命名为 ManifestEditor。

  4. 将对 Microsoft.VisualStudio.Tools.Applications.Runtime 程序集的引用添加到 ExcelCustomAction 项目。

  5. 在“解决方案资源管理器”中,右击 ManifestEditor.cs 或 ManifestEditor.vb 文件,然后单击“查看代码”。

  6. 将以下 Imports 或 using 语句添加到代码文件顶部。

    Imports Microsoft.VisualStudio.Tools.Applications.Runtime
    
    using Microsoft.VisualStudio.Tools.Applications.Runtime;
    
  7. 将下列代码复制到 ManifestEditor 类中。

    此代码重写用于执行自定义安装操作的 Install 方法。该代码将用户指定的安装位置设置为 AssemblyPath 属性。从 Parameters 属性获得用户指定的安装路径以及文档和程序集的名称。

    Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
        UpdateApplicationManifest()
        MyBase.Install(stateSaver)
    End Sub
    
    Private Sub UpdateApplicationManifest()
    
        ' Get the parameters passed to the task.
        Dim targetDir As String = Me.Context.Parameters("targetdir")
        Dim documentName As String = Me.Context.Parameters("documentname")
        Dim assemblyName As String = Me.Context.Parameters("assemblyname")
    
        ' Get the application manifest from the document.
        Dim documentPath As String = System.IO.Path.Combine(targetDir, documentname)
        Dim serverDocument1 As ServerDocument = New ServerDocument(documentPath, _
                System.IO.FileAccess.ReadWrite)
    
        Try
            Dim appManifest1 As AppManifest = serverDocument1.AppManifest
            Dim assemblyPath As String = System.IO.Path.Combine(targetDir, assemblyName)
            appManifest1.Dependency.AssemblyPath = assemblyPath
            serverDocument1.Save()
    
        Finally
            If Not serverDocument1 Is Nothing Then
                serverDocument1.Close()
            End If
        End Try
    End Sub
    
    // Override the Install method to update the customization location
    // in the application manifest.
    public override void Install(System.Collections.IDictionary stateSaver)
    {
        UpdateApplicationManifest();
        base.Install(stateSaver);
    }
    
    // Update the application manifest according to the the install location.
    private void UpdateApplicationManifest()
    {
        // Get the parameters passed to the task.
        string targetDir = this.Context.Parameters["targetdir"];
        string documentName = this.Context.Parameters["documentname"];
        string assemblyName = this.Context.Parameters["assemblyname"];
    
        // Get the application manifest from the document.
        string documentPath = System.IO.Path.Combine(targetDir, documentName);
        ServerDocument serverDocument1 = new ServerDocument(documentPath,
            System.IO.FileAccess.ReadWrite);
    
        try
        {
            AppManifest appManifest1 = serverDocument1.AppManifest;
            string assemblyPath = System.IO.Path.Combine(targetDir, assemblyName);
            appManifest1.Dependency.AssemblyPath = assemblyPath;
            serverDocument1.Save();
        }
        finally
        {
            if (serverDocument1 != null)
            {
                serverDocument1.Close();
            }
        }
    }
    
  8. 在“解决方案资源管理器”中右击 ExcelCustomAction 项目,然后单击“生成”。

将自定义操作添加到安装项目

现在,您能够让 Windows Installer 文件运行编辑应用程序清单的自定义操作。为此,请将 ExcelCustomAction 项目的主输出添加到安装项目。

将自定义操作项目的主输出添加到安装项目

  1. 右击“解决方案资源管理器”中的“ExcelSetup 项目”节点。

  2. 在快捷菜单上指向“查看”,然后单击“自定义操作”。

  3. 在“自定义操作编辑器”中右击“安装”节点,然后单击“添加自定义操作”。

  4. 在“查找”框中选择“应用程序文件夹”,然后单击“添加输出”。

  5. 在“项目”框中选择“ExcelCustomAction”。

  6. 在输出类型列表中选择“主输出”,然后单击“确定”。

  7. 验证“ExcelCustomAction 的主输出(活动)”是否已添加到安装项目的主输出列表,然后单击“确定”。

  8. 在“自定义操作编辑器”中展开“安装”。

  9. 右击“ExcelCustomAction 的主输出(活动)”,然后单击“属性窗口”。

  10. 在“属性”窗口中,将 CustomActionData 属性设置为以下字符串。

    /targetdir="[TARGETDIR]\" /documentname="ExcelDeployment.xls" /assemblyname="ExcelDeployment.dll"
    

    有关 CustomActionData 属性的信息,请参见 CustomActionData 属性

  11. 在“解决方案资源管理器”中右击“ExcelSetup 项目”,然后单击“生成”。

测试项目

现在您可以测试项目,以确保当您在开发计算机上运行 Windows Installer 文件时您的解决方案已安装。

测试项目

  1. 在“解决方案资源管理器”中右击“ExcelSetup 项目”,然后单击“运行”。

  2. 按照安装向导中的说明进行操作,并在您的开发计算机上指定安装文件夹。

  3. 从安装文件夹中打开 Excel 工作簿。

  4. 确认出现消息框。

请参见

任务

演练:使用部署清单部署文档级自定义项 (2003 System)

概念

部署 Office 解决方案 (2003 System)

部署文档级自定义项 (2003 System)

部署模型 (2003 System)

自定义操作

其他资源

Windows Installer 部署概念