使用 Multivariant 設定建立佈建套件

在您的組織中,您管理的裝置可能會有不同的設定需求。 您可以為組織中每個有不同需求的裝置群組分別建立不同的佈建套件。 或者,您可以建立 Multivariant 佈建套件,此單一佈建套件可在多種條件下運作。 例如,在單一佈建套件中,您可以定義一組自訂設定並套用到針對法文設定的裝置,然後再定義一組不同的自訂設定,套用到針對日文設定的裝置。

若要佈建 Multivariant 設定,請使用 Windows 映像處理與設定設計工具建立佈建套件,其中包含所有您要套用到您任何裝置上的自訂設定。 接下來,手動針對該專案編輯 .XML 檔,以定義每一組裝置 (Target)。 針對每個 Target,指定至少一個 Condition,其中包含一個可識別要接收設定之裝置的值。 最後,針對每個 Target 提供要套用到這些裝置的自訂設定。

讓我們從了解如何定義 Target 開始。

定義目標

在 XML 檔案中,提供每個 TargetID,或是易記的名稱。 每個 Target 皆由至少一個 TargetState 定義,其中包含至少一個 ConditionCondition 元素定義條件和指定值之間的相符類型。

Target 可以有多個 TargetStateTargetState 可以有多個 Condition

具有多個目標狀態和條件的目標。

下列資訊描述目標定義的邏輯:

  • 當所有 Condition 元素都是 TRUE 時, TargetState 為 TRUE:

    當所有條件都成立時,目標狀態為 true。

  • 如果任何 TargetState 元素為 TRUE, 則 Target 為 TRUE, 且識別碼 可用於設定自定義:

    如果任何目標狀態為 true,則目標為 true

條件

下表顯示 TargetState 的 Windows 用戶端佈建中支援的條件:

條件名稱 條件優先順序 傳統型版本的 Windows 用戶端 值類型 值描述
MNC P0 支援 數字字串 使用行動裝置網路代碼 (MNC) 值進行目標設定。
MCC P0 支援 數字字串 使用行動裝置國家/地區代碼 (MCC) 值進行目標設定。
SPN P0 支援 字串 使用服務提供者名稱 (SPN) 值進行目標設定。
PNN P0 支援 字串 使用公眾行動電話網路 (PLMN) 網路名稱值進行目標設定。
GID1 P0 支援 數字字串 使用群組識別碼 (層級 1) 值進行目標設定。
ICCID P0 支援 數字字串 使用積體電路卡識別碼 (ICCID) 值為基礎進行目標設定。
漫遊 P0 不適用 布林值 用於指定漫遊。 值設為 1 (漫遊) 或 0 (非漫遊)。
UICC P0 不適用 列舉 用於指定通用積體電路卡 (UICC) 狀態。 將值設定為下列其中一項:


- 0 - 空白
- 1 - 就緒
- 2 - 已鎖定
UICCSLOT P0 不適用 數字字串 用於指定 UICC 卡插槽。 設定下列其中一個值:


- 0 - 位置 0
- 1 - 位置 1
ProcessorType P1 支援 字串 使用處理器類型為基礎進行目標設定。
ProcessorName P1 支援 字串 使用處理器名稱為基礎進行目標設定。
AoAc ("Always On, Always Connected",永遠開啟、自動連線) P1 支援 布林值 將值設為 0 (false) 或 1 (true)。 如果這個條件為 TRUE,則系統支援 S0 低電力閒置模式。
PowerPlatformRole P1 支援 列舉 表示慣用的電源管理設定檔。 根據 POWER_PLATFORM_ROLE 列舉 設定值。
SocIdentifier P1 支援 字串 使用 以 Soc 識別碼作為目標設定。 自 25301 操作系統組建版本起提供。
Architecture P1 支援 字串 符合 PROCESSOR_ARCHITECTURE 環境變數。
Server P1 支援 布林值 將設定為 0 (false),或 1 (true) 以識別伺服器。
Region P1 支援 列舉 用於依照 ISO 3166-1 alpha-2 使用 2 位數字母 ISO 碼,以根據國家/地區設定目標設定。
Lang P1 支援 列舉 用於使用 2 位數 ISO 639 alpha-2 碼 根據語言代碼設定目標設定。

Windows 用戶端中支援的相符類型如下:

相符類型 語法 範例
直接相符 符合類型指定為保持原狀 <條件名稱="ProcessorName" 值="Barton" />
規則運算式 (Regex) 不符合 相符類型以「Pattern:」為前置詞。 <條件名稱=“ProcessorName” Value=“Pattern:。Celeron.”/>
數字範圍相符 相符類型以「!Range:」為前置詞 <Condition Name="MNC" Value="!Range:400, 550" />

TargetState 優先順序

您可以在佈建套件內定義一個以上的 TargetState,將設定套用至符合裝置條件的裝置上。 當布建引擎評估每個 TargetState 時,可能會有一個以上的 TargetState 符合目前的裝置條件。 若要判斷設定的套用順序,系統會指定每個 TargetState 的優先順序。

先套用符合 TargetState 但優先順序較低的設定,再套用符合 TargetState 且優先順序較高的設定。 這表示優先順序高的 TargetState 其設定會覆寫低優先順序的 TargetState 設定。

若設定符合多個優先順序相同的 TargetState,系統會根據佈建套件中所定義每個 TargetState 的順序套用設定。

系統會根據條件的優先順序指派 TargetState 優先順序 (請參閱條件表中的優先順序)。 優先順序評估規則如下所示:

  1. 含 P0 條件的 TargetState 其優先順序高於不含 P0條件的 TargetState

  2. 同時含 P0 與 P1 條件的 TargetState 其優先順序高於僅含 P0 條件的 TargetState

  3. 符合 P0 條件數目較多的 TargetState 高於符合 P0 條件數目較少的 TargetState,無論符合的 P1條件數目多少。

  4. 如果符合 P0 條件的數目相同,則符合 P1 條件數目較多的 TargetState 其優先順序較高。

  5. 如果符合 P0 與 P1 條件的數目相同,則符合條件總數最高的 TargetState 其優先順序最高。

使用 Multivariant 設定建立佈建套件

請依照下列步驟來建立具 Multivariant 功能的佈建套件。

  1. 建立佈建套件,並設定您想要在某些條件期間套用的自訂項目。 如需詳細資訊,請參閱建立佈建套件

  2. 在您進行設定之後,請儲存專案。

  3. 開啟專案資料夾,然後將 customizations.xml 檔複製到任何本機位置。

  4. 使用 XML 或文字編輯器開啟 customizations.xml 檔案。

    Customizations.xml 檔案會保留套件中繼資料 (包括套件擁有者和排名),以及您在建立佈建套件時所進行的設定。 檔案的 \[自訂項目\] 節點包含 \[通用\] 區段,其中包含自訂設定。

    下列範例顯示範例 customizations.xml 檔案的內容。

    <?xml version="1.0" encoding="utf-8"?>
    <WindowsCustomizations>
     <PackageConfig xmlns="urn:schemas-Microsoft-com:Windows-ICD-Package-Config.v1.0">
       <ID>{6aaa4dfa-00d7-4aaa-8adf-73c6a7e2501e}</ID>
       <Name>My Provisioning Package</Name>
       <Version>1.0</Version>
       <OwnerType>OEM</OwnerType>
       <Rank>50</Rank>
     </PackageConfig>
     <Settings xmlns="urn:schemas-microsoft-com:windows-provisioning">
       <Customizations>
         <Common>
           <Policies>
             <AllowBrowser>0</AllowBrowser>
             <AllowCamera>0</AllowCamera>
             <AllowBluetooth>0</AllowBluetooth>
           </Policies>
           <HotSpot>
             <Enabled>0</Enabled>
           </HotSpot>
         </Common>
       </Customizations>
     </Settings>
    </WindowsCustomizations>
    
    
  5. 編輯 customizations.xml 檔案以建立 Targets 區段,描述處理您的 Multivariant 設定的條件。

    下列範例顯示 customizations.xml,其已經修改為包含數個條件,包括 ProcessorNameProcessorTypeMCCMNC

    <?xml version="1.0" encoding="utf-8"?>
    <WindowsCustomizations>
     <PackageConfig xmlns="urn:schemas-Microsoft-com:Windows-ICD-Package-Config.v1.0">
       <ID>{6aaa4dfa-00d7-4aaa-8adf-73c6a7e2501e}</ID>
       <Name>My Provisioning Package</Name>
       <Version>1.0</Version>
       <OwnerType>OEM</OwnerType>
       <Rank>50</Rank>
     </PackageConfig>
     <Settings xmlns="urn:schemas-microsoft-com:windows-provisioning">
       <Customizations>
         <Common>
           <Policies>
             <AllowBrowser>0</AllowBrowser>
             <AllowCamera>0</AllowCamera>
             <AllowBluetooth>0</AllowBluetooth>
           </Policies>
           <HotSpot>
             <Enabled>0</Enabled>
           </HotSpot>
         </Common>
         <Targets>
           <Target Id="Unique target identifier for desktop">
             <TargetState>
               <Condition Name="ProcessorName" Value="Pattern:.*Celeron.*" />
               <Condition Name="ProcessorType" Value="Pattern:.*(I|i)ntel.*" />
             </TargetState>
             <TargetState>
               <Condition Name="ProcessorName" Value="Barton" />
               <Condition Name="ProcessorType" Value="Athlon MP" />
             </TargetState>
           </Target>
           <Target Id="Mobile target">
             <TargetState>
               <Condition Name="MCC" Value="Range:310, 320" />
               <Condition Name="MNC" Value="!Range:400, 550" />
             </TargetState>
           </Target>
         </Targets>
       </Customizations>
     </Settings>
    </WindowsCustomizations>
    
    
  6. 在 Customizations.xml 檔案中,針對您需要自訂的設定建立 Variant 區段。 請這樣做:

    a. 定義 TargetRefs 子元素。

    b. 在 TargetRefs 元素內,定義 TargetRef 元素。 您可以針對您需要套用至已自訂之設定的每個 ID,定義多個 TargetRef 元素。

    c. 將相容設定從 Common 區段移至 Variant 區段。

    如果任何 TargetRef 元素符合 Target,則 Variant 中的所有設定都會套用。

    注意

    您可以定義多個 Variant 區段。 Common 區段中的設定會無條件套用在每個觸發事件上。

    下列範例顯示更新後包含 Variant 區段的 customizations.xml,以及已移動、將在符合 Variant 條件下套用的設定。

    <?xml version="1.0" encoding="utf-8"?>
    <WindowsCustomizations>
     <PackageConfig xmlns="urn:schemas-Microsoft-com:Windows-ICD-Package-Config.v1.0">
       <ID>{6aaa4dfa-00d7-4aaa-8adf-73c6a7e2501e}</ID>
       <Name>My Provisioning Package</Name>
       <Version>1.0</Version>
       <OwnerType>OEM</OwnerType>
       <Rank>50</Rank>
     </PackageConfig>
     <Settings xmlns="urn:schemas-microsoft-com:windows-provisioning">
       <Customizations>
         <Common>
         </Common>
         <Targets>
           <Target Id="Unique target identifier for desktop">
             <TargetState>
               <Condition Name="ProcessorName" Value="Pattern:.*Celeron.*" />
               <Condition Name="ProcessorType" Value="Pattern:.*(I|i)ntel.*" />
             </TargetState>
             <TargetState>
               <Condition Name="ProcessorName" Value="Barton" />
               <Condition Name="ProcessorType" Value="Athlon MP" />
             </TargetState>
           </Target>
           <Target Id="Mobile target">
             <TargetState>
               <Condition Name="MCC" Value="Range:310, 320" />
               <Condition Name="MNC" Value="!Range:400, 550" />
             </TargetState>
           </Target>
         </Targets>
         <Variant>
           <TargetRefs>
             <TargetRef Id="Unique target identifier for desktop" />
             <TargetRef Id="Mobile target" />
           </TargetRefs>
           <Settings>
             <Policies>
               <AllowBrowser>1</AllowBrowser>
               <AllowCamera>1</AllowCamera>
               <AllowBluetooth>1</AllowBluetooth>
             </Policies>
             <HotSpot>
               <Enabled>1</Enabled>
             </HotSpot>
           </Settings>
         </Variant>
       </Customizations>
     </Settings>
    </WindowsCustomizations>
    
    
  7. 儲存更新後的 customizations.xml 檔案,並記下本更新檔案的路徑。 您需要將該路徑當做下一個步驟的其中一個值。

  8. 使用 Windows ICD 命令列介面利用已更新的 customizations.xml 建立佈建套件。

    例如:

    icd.exe /Build-ProvisioningPackage /CustomizationXML:"C:\CustomProject\customizations.xml" /PackagePath:"C:\CustomProject\output.ppkg" /StoreFile:C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Imaging and Configuration Designer\x86\Microsoft-Common-Provisioning.dat"
    

在此範例中,StoreFile 對應至設定存放區的位置,其將用來建立所需 Windows 版本適用的套件。

注意

在此步驟期間所建立的佈建套件將包含 Multivariant 設定。 您可以使用此套件做為可套用至 Windows 裝置的獨立套件,或是在開始另一個專案時使用它做為基礎。

觸發佈建的事件

當您在 Windows 用戶端裝置上安裝多變異布建套件時,布建引擎會在每個事件套用相符的條件設定,並觸發佈建。

下列事件會在 Windows 用戶端裝置上觸發佈建:

事件 傳統型版本的 Windows 用戶端
系統開機 支援
作業系統更新 計劃中
裝置初次執行體驗期間的套件安裝 支援
偵測到 SIM 卡或 SIM 卡更新 支援
執行階段的套件安裝 支援
偵測到漫遊 不支援