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) を使用します。WSH は、Windows スクリプト互換のスクリプト エンジンに対応する、言語に依存しないスクリプト ホストです。WSH を使用すると、Windows デスクトップとコマンド プロンプトの両方からスクリプトを実行できます。

Windows からスクリプトを実行できるように、WScript.exe には、スクリプトのプロパティを設定するための Windows ベースのダイアログ ボックスが用意されています。コマンド プロンプトからスクリプトを実行できるように、CScript.exe には、スクリプトのプロパティを設定するためのコマンド ライン スイッチが用意されています。

WSH では、スクリプトのドラッグ アンド ドロップがサポートされます。つまり、WSH スクリプトの上にファイルをドラッグできます。ドラッグしたファイルの名前が、コマンド ラインの引数に変換されます。

WSH の詳細については、MSDN Web サイトの次のリソースを参照してください。

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 metadata.xml ファイルの <UserSettings> 要素には, .msp カスタマイズ ファイルに構成されているユーザー設定が含まれます。また、Access.MSP.xml metadata.xml ファイルの <Options> 要素には、機能の状態に関する設定が含まれます。

コマンド ラインを使用してスクリプトを実行するには

  1. [スタート] をクリックし、[ファイル名を指定して実行] をクリックして、「cmd」と入力します。

  2. コマンド プロンプト ウィンドウで、次のように入力します。

    cscript <スクリプトのパス> \ExtractOCTXml.vbs <OCT MSP のパスおよびファイル名>

    または

    wscript <スクリプトのパス> \ExtractOCTXml.vbs <OCT MSP パスおよびファイル名>

    XML ファイルが Internet Explorer に読み込まれ、表示されます。

.msp カスタマイズ ファイルの XML コンテンツを表示する

OCT では、設定 (.opax) ファイルを使用して OCT の [ユーザー設定の変更] ユーザー インターフェイスの項目を設定し、さらにインストール時に適切なレジストリ キーとレジストリ値を追加します。Office 2010 の設定 .opax ファイルは、Office 2010 ソース ファイルの場所または CD のルートにある Admin フォルダーに格納されます。

次の表に, .msp の metadata.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) 内で設定を見つける方法を示しています。この XML ファイルは、OCT の .msp カスタマイズ ファイルに対して ExtractOctXml.vbs スクリプトを実行すると Internet Explorer で開きます。

この例では Office 2010 の .msp カスタマイズ ファイルを使用します。Microsoft Access 2010 だけがインストールされており、Microsoft Office Access 2007 ファイル形式が有効になっています。Access の [既定のファイル形式] ユーザー設定は、OCT の [ユーザー設定の変更] セクションの [Microsoft Office Access 2010\その他] ノードにあります。

カスタマイズ metadata.xml ファイルの Access.MSP.xml で、Default file format など、目的のレジストリ キーやレジストリ値を検索できます。この例で “default file format” を検索すると、Access.MSP.xml metadata.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 要素」を参照してください。