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

更新时间: 2008年6月

应用到: Office Resource Kit

 

上一次修改主题: 2015-03-09

管理员可以使用 Office 自定义工具 (OCT) 自定义 2007 Microsoft Office system 的安装。自定义设置将保存在使用可扩展标记语言 (XML) 格式的安装程序自定义文件(MSP 文件)中。本文提供了 Microsoft Visual Basic 脚本示例,管理员可以使用它来查看存储在 OCT MSP 文件中的设置。

Windows 脚本宿主概述

若要运行脚本,请使用 Microsoft 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 2007 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 2007 OCT Metadata Extract utility" & _
        vbNewLine & " You must supply the location of the Office 2007 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。然后,XML 文件将传递到 Internet Explorer 以供查看。

运行脚本

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

  2. 将要查看的 MSP 文件的副本拖放到 Windows 资源管理器窗口中显示的 ExtractOctXml.vbs 中。

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

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

通过使用命令行运行脚本

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

  2. 在命令窗口中,键入以下内容:

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

    - 或 -

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

    XML 文件位于 Internet Explorer 以供查看。

查看 MSP 自定义文件的 XML 内容

OCT 使用设置 (OPA) 文件来填充 OCT 中的“修改用户设置”用户界面,并在安装过程中添加适当的注册表项和值。Office 2007 设置 OPA 文件存储在管理文件夹中,该文件夹位于 Office 2007 源文件位置或 CD 的根目录。

下表描述了 MSP metadata.xml 文件中包含的顶级部分。

部分 说明

<Customization 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 配置文件”自定义的信息。

下面的示例说明在运行带有 OCT MSP 自定义文件的 ExtractOctXml.vbs 脚本时,如何在生成的 XML 文件(在 Internet Explorer 中打开的)中找到设置。

示例

此示例使用 Microsoft Office Professional 2007 以及 MSP 自定义文件。只安装了 Microsoft Office Access 2007 和配置了 Access (Access 2007) 默认文件格式。Access 的“默认文件格式”用户设置位于 OCT 中“修改用户设置”屏幕的“Microsoft Office Access 2007\杂项”节点中。

使用文本编辑器(如记事本)打开 Access 2007 OPA 设置文件 access12.opa(位于管理文件夹中的 Office 2007 源文件位置的根目录下)。搜索在 OCT 中显示的“默认文件格式”用户设置字符串,即默认文件格式。执行这些操作后将显示 access12.opa 文件中的以下部分:

KEYNAME Software\Microsoft\Office\12.0\Access\Settings

PART !!L_Empty DROPDOWNLIST

VALUENAME "Default File Format"

ITEMLIST

NAME !!L_Access2007 VALUE NUMERIC 12 DEFAULT

NAME !!L_Access20022003 VALUE NUMERIC 10

END ITEMLIST

从此用户设置信息中,您可以确定设置的注册表项(在本例中为 Software\Microsoft\Office\12.0\Access\Settings)和可能的注册表值。当 Default File Format 的值为 12 时,会将默认文件格式设置为 Access 2007,当 Default File Format 值为 10 时,会将默认文件格式设置为 Access 2002-2003。

从 access12.opa 文件中获取此信息之后,您可以在自定义 metadata.xml 文件中搜索正在寻找的注册表项或值,如 Software\Microsoft\Office\12.0\Access\Settings。在此示例中执行操作后,您会看到 metadata.xml 文件中的以下部分:

<AddRegistries>

<AddRegistry root="HKCU" key="Software\Microsoft\Office\12.0\Access\Settings" name="Default File Format" emptykey="false" flags="0" type="0" value="12" guid="{2A044E97-7BB1-4644-BF84-A35A5B2E5D51}" />

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

XML 文件的 <Options> 部分类似于以下示例节选:

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

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

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

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

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

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

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

<Option id="EXCELFiles" installState="1" />

.

.

<Option id="OUTLOOKFiles" installState="1" />

.

.

<Option id="PPTFiles" installState="1" />

有关 OptionState ID 的详细信息,请参阅 2007 Office system 中的 Config.xml 文件文章中的OptionState 元素部分。