查看 Office 自定义工具自定义文件中的 XML 内容

 

适用于: Office 2010

上一次修改主题: 2016-11-29

管理员可使用 Office 自定义工具 (OCT) 自定义 Microsoft Office 2010 安装。自定义项保存在使用可扩展标记语言 (XML) 格式的安装程序自定义文件(.msp 文件)中。本文包含管理员可用于查看安装程序自定义 .msp 文件中存储的设置的 Microsoft Visual Basic 脚本示例。

本文内容:

  • Windows 脚本宿主概述

  • ExtractOctXml.vbs 脚本示例

  • 运行脚本

  • 查看 .msp 自定义文件中的 XML 内容

Windows 脚本宿主概述

若要运行脚本,请使用 Windows 脚本宿主 (WSH),它是一个不依赖于语言的脚本宿主,适用于与 Windows 脚本兼容的脚本引擎。WSH 允许您从 Windows 桌面和命令提示符运行脚本。

若要从 Windows 运行脚本,WScript.exe 提供了用于设置脚本属性的基于 Windows 的对话框。若要从命令提示符运行脚本,CScript.exe 提供了用于设置脚本属性的命令行开关。

WSH 为脚本提供了拖放支持。这意味着您可以将文件拖动到 WSH 脚本上。文件名将转换为命令行中的参数。

有关 WSH 的详细信息,请参阅 MSDN 网站上的以下资源:

ExtractOctXml.vbs 脚本示例

以下各节提供了 Visual Basic 脚本示例 ExtractOctXml.vbs 以及使用脚本从 OCT .msp 自定义文件提取 XML 元数据的说明。

若要保存该脚本示例,请打开文本编辑器(如记事本),然后将本节中的脚本代码复制并粘贴到某文件中。将脚本文件另存为 ExtractOctXml.vbs。

' Utility to extract the metadata from an Office 2010 customization patch 
' For use with Windows Scripting Host, CScript.exe or WScript.exe
' Copyright (c) Microsoft Corporation. All rights reserved.
'
Option Explicit

Const msiOpenDatabaseModePatchFile = 32
Const msiOpenDatabaseModeReadOnly     = 0
Const msiReadStreamBytes = 1

Const ForWriting = 2
Const TristateTrue = -1

Dim pathOCT_Patch 'As String
Dim pathMetadataXml 'As String
Dim sMetadata 'As String
Dim wshShell 'As Wscript.Shell
Dim fso 'As FileSystemObject
Dim fileOutput 'As File
Dim sErrSection ' As String


sErrSection = "ArgCheck"
' Check arg count, and display help if argument not present or contains ?
Dim argCount:argCount = Wscript.Arguments.Count
If argCount > 0 Then If InStr(1, Wscript.Arguments(0), "?", vbTextCompare) > 0 Then argCount = 0
If (argCount = 0) Then
    Wscript.Echo "Office 2010 OCT Metadata Extract utility" & _
        vbNewLine & " You must supply the location of the Office 2010 customization patch " & _
        vbNewLine & _
        vbNewLine & "Copyright (C) Microsoft Corporation.  All rights reserved."
    Wscript.Quit 1
Else
    pathOCT_Patch = Trim(Wscript.Arguments(0))
End If


sErrSection = "FSO"
' Create FileSystemObject and verify file exists
Set fso = CreateObject("Scripting.FileSystemObject") : CheckError
If Not fso.FileExists(pathOCT_Patch) Then Err = 2 : CheckError


sErrSection = "WI"
' Connect to Windows Installer object
On Error Resume Next
Dim wi : Set wi = Nothing
Set wi = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError


sErrSection = "Read Metadata"
' Open OCT patch and read the metadata stream
Dim wiStorage, vw, rec
Set wiStorage = wi.OpenDatabase(pathOCT_Patch, msiOpenDatabaseModePatchFile) : CheckError
Set vw = wiStorage.OpenView("SELECT * FROM _Streams WHERE `Name`='metadata' ") : CheckError
vw.Execute
Set rec = vw.Fetch
If Not rec Is Nothing Then
    sMetadata = rec.ReadStream(2, rec.DataSize(2), msiReadStreamBytes)
Else
    Wscript.Echo "No Metadata stream was found in this file: " & pathOCT_Patch
    Wscript.Quit 2
End If

Set wiStorage = Nothing
Set rec = Nothing: Set vw = Nothing
Set wi = Nothing


sErrSection = "Write Metadata"
' Write the metadata stream to a temp file
Set wshShell = CreateObject("WScript.Shell") : CheckError
pathMetadataXml = wshShell.ExpandEnvironmentStrings("%temp%") & "\" & fso.GetFileName(pathOCT_Patch) & ".xml"
Set fileOutput = fso.OpenTextFile(pathMetadataXml, ForWriting, True, -1) : CheckError
fileOutput.WriteLine sMetadata 
fileOutput.Close

Set fileOutput = Nothing: Set fso = Nothing

sErrSection = "Show Metadata"
' Launch Metadata in IE
wshShell.Run "iexplore.exe " & pathMetadataXml 

    
    
Sub CheckError
Dim sMsg, errRec
    If Err = 0 Then Exit Sub
    sMsg = sErrSection & vbNewLine & Err.Source & " " & Hex(Err) & ": " & Err.Description
    If Not wi Is Nothing Then
    Set errRec = wi.LastErrorRecord
        If Not errRec Is Nothing Then sMsg = sMsg & vbNewLine & errRec.FormatText
    End If
    Wscript.Echo sMsg
    Wscript.Quit 2
End Sub

Sub NoMetadata
End Sub

运行脚本

可以将 ExtractOctXml.vbs 文件存储到计算机上的任意位置。若要使用 ExtractOctXml.vbs 脚本,可以拖动您希望查看其配置设置的 OCT .msp 自定义文件并将它放置在脚本上。脚本将元数据 XML 作为 <OCT 更新的名称>.xml(例如,Access.MSP.xml)提取到用户的 Temp 文件夹中。XML 文件然后会传递到 Internet Explorer 以供查看。

运行脚本

  1. 使用 Windows 资源管理器打开包含 ExtractOctXml.vbs 文件的文件夹。

  2. 将要查看的安装程序自定义 .msp 文件的副本拖放到显示在 Windows 资源管理器窗口中的 ExtractOctXml.vbs 上。

  3. XML 文件打开后,您可以展开和折叠各个部分以查看 .msp 自定义文件中包含的设置。

    Access.MSP.xml 元数据 .xml 文件的 <UserSettings> 元素包含在 .msp 自定义文件中配置的用户设置,Access.MSP.xml 元数据 .xml 文件的 <Options> 元素包含与功能状态相关的设置。

使用命令行运行脚本

  1. 依次单击“开始”、“运行”,然后键入 cmd

  2. 在命令提示符窗口中,键入:

    cscript <脚本路径> \ExtractOCTXml.vbs <OCT MSP 路径和文件名>

    - 或 -

    wscript <脚本路径> \ExtractOCTXml.vbs <OCT MSP 路径和文件名>

    将在 Internet Explorer 中加载 XML 文件以供查看。

查看 .msp 自定义文件中的 XML 内容

OCT 使用设置 (.opax) 文件填充 OCT 中的“修改用户设置”用户界面并在安装期间添加相应注册表项和值。Office 2010 设置 .opax 文件存储在位于 Office 2010 源文件位置或 CD 的根目录下的 Admin 文件夹中。

下表介绍了 .msp 元数据 .xml 文件中包含的重要部分。

部分 说明

<Customization platform - baseFolder>

提供 .msp 自定义文件的名称和路径信息。这些元素供代码在内部使用,它们不代表实际的自定义项。

<Product id>

提供有关本地安装源程序包、安装状态(如“始终安装”)、语言 MUI 程序包、产品 ID、功能和 ID、快捷方式和可升级应用程序的信息。

这些元素供代码在内部使用,它们不代表实际的自定义项。

<SecurityApps>

列出可以具有特定安全位置的应用程序,OCT 中“安装程序”\“Office 安全设置”\“将下列路径添加到‘受信任位置’列表中”区域中提供的下拉列表中指明了这些位置。

这些元素供代码在内部使用,它们不代表实际的自定义项。

<SecurityAppSettings>

列出 OCT 的“安装程序”\“Office 安全设置”区域中显示的安全设置。此列表的自定义项显示在后面的 <SecuritySettings> 元素中。

这些元素供代码在内部使用,它们不代表实际的自定义项。

<SecurityPossibleSettingValues>

列出 <SecurityAppSettings> 可用的安全选项。

这些元素供代码在内部使用,它们不代表实际的自定义项。

<GlobalSettings>

提供有关在 OCT 的“安装程序”\“修改安装程序属性”部分提供的安装程序属性的信息。

<UserSettings>

提供有关在 OCT 的“功能”\“修改用户设置”部分配置的所有设置的信息和注册表项数据。

<File>

提供有关使用 OCT 中的“其他内容”\“添加文件”或“删除文件”选项添加或删除的所有文件的信息。

<Registry>

提供有关使用 OCT 中的“其他内容”\“添加注册表项”或“删除注册表项”选项添加或删除的所有注册表项的信息。

<Shortcuts>

提供有关使用 OCT 中的“其他内容”\“配置快捷方式”选项添加的快捷方式的信息。

<Install>

提供有关在 OCT 的“安装程序”\“安装位置和单位名称”、“安装程序”\“其他网络资源”和“安装程序”\“授权和用户界面”选项中提供的安装设置的信息。

<ChildInstalls>

提供有关在 OCT 的“安装程序”/“添加安装并运行程序”选项中提供的其他安装后操作的信息。

<Options>

包含有关应用程序功能状态的设置。

<SecuritySettings>

提供有关使用 OCT 的“安装程序”\“Office 安全设置”\“默认安全设置”部分对默认安全设置所做的更改的信息。

<SecurityTrustedLocations>

提供有关在 OCT 的“安装程序”\“Office 安全设置”选项中添加的“受信任位置”(通过“将下列路径添加到‘受信任位置’列表中”)的信息。

<SecurityCertificates>

提供有关在 OCT 的“安装程序”\“Office 安全设置”选项中添加的证书(通过“将下列数字证书添加到‘受信任的发布者’列表中”)的信息。

<Outlook>

提供有关在 OCT 的“Outlook”选项中所做的“Outlook 配置文件”自定义的信息。

以下示例演示如何在生成的 XML 文件(在本示例中为 Access.MSP.xml)中查找设置,该文件将在您对 OCT .msp 自定义文件运行 ExtractOctXml.vbs 脚本时在 Internet Explorer 中打开。

示例

此示例使用 Office 2010 .msp 自定义文件。仅安装了 Microsoft Access 2010 和启用了 Microsoft Office Access 2007 文件格式。Access 的“默认文件格式”用户设置位于 OCT 的“修改用户设置”部分的“Microsoft Office Access 2010”\“杂项”节点中。

可以在自定义元数据 .xml 文件(Access.MSP.xml)中搜索注册表项或值,如 Default file format。在此示例中搜索“default file format”将转到 Access.MSP.xml 元数据 .xml 文件的以下部分:

<AddRegistries>

<AddRegistry root="HKCU" key="software\microsoft\office\14.0\access\settings" name="default file format" emptykey="false" flags="0" type="2" value="12" guid="{39478C45-8DBA-403C-B4BB-1F1D07CE85D7}" />

使用文本编辑器(如记事本)打开 Access 2010 .opax 设置文件 access14.opax(位于 Office 2010 源文件位置的根目录下的 Admin 文件夹中)。搜索 DefaultFileFormat 字符串(对应于“默认文件格式”用户设置)。这样做将显示 access14.opax 文件的以下部分:

<policy name="L_DefaultFileFormat" class="User" displayName="$(string.L_DefaultFileFormat)" explainText="$(string.L_DefaultFileFormatExplain)" presentation="$(presentation.L_DefaultFileFormat)" key="software\policies\microsoft\office\14.0\access\settings">

<parentCategory ref="L_Miscellaneous" />

<supportedOn ref="windows:SUPPORTED_WindowsVista" />

<elements>

<enum id="L_empty87" valueName="Default File Format">

<item displayName="$(string.L_Access2007)">

<value>

<decimal value="12" />

</value>

</item>

<item displayName="$(string.L_Access20022003)">

<value>

<decimal value="10" />

</value>

</item>

<item displayName="$(string.L_Access2000)">

<value>

<decimal value="9" />

</value>

</item>

</enum>

</elements>

</policy>

在此用户设置信息中,可以确定设置的注册表项(在此示例中为 software\policies\microsoft\office\14.0\access\settings)以及可能的注册表值。Default File Format 值 12 将默认文件格式设置为 Access 2007,而 Default File Format 10 将默认文件格式设置为 Access 2002-2003。

使用 .opax 文件中的信息,您可以看到 Default File Format 项的值为 12,该值将默认文件格式设置为 Access 2007。

以下节选内容显示此示例中 Access.MSP.xml 文件的 <Options> 部分列出的一些 Access Option id 值:

<Option id="ACCESSFiles" installState="3" />

<Option id="Access_PIA" installState="3" />

<Option id="AccessWizards" installState="3" />

<Option id="DeveloperWizards" installState="3" />

<Option id="AccessHelpFiles" installState="3" />

<Option id="AccessTemplatesIntl" installState="3" />

有关 OptionState ID 的详细信息,请参阅 Office 2010 中的 Config.xml 文件中的 OptionState 元素