使用 Multivariant 設定建立佈建套件
在您的組織中,您管理的裝置可能會有不同的設定需求。 您可以為組織中每個有不同需求的裝置群組分別建立不同的佈建套件。 或者,您可以建立 Multivariant 佈建套件,此單一佈建套件可在多種條件下運作。 例如,在單一布建套件中,您可以定義一組適用於為法文設定的裝置的自定義設定,以及一組針對日文設定的裝置所設定的不同自定義設定。
若要佈建 Multivariant 設定,請使用 Windows 映像處理與設定設計工具建立佈建套件,其中包含所有您要套用到您任何裝置上的自訂設定。 接下來,手動針對該專案編輯 .XML 檔,以定義每一組裝置 (Target)。 針對每個 Target,指定至少一個 Condition,其中包含一個可識別要接收設定之裝置的值。 最後,針對每個 Target 提供要套用到這些裝置的自訂設定。
讓我們從了解如何定義 Target 開始。
Target
在 XML 檔案中,提供每個 Target 的 ID,或是易記的名稱。 每個 Target 皆由至少一個 TargetState 定義,其中包含至少一個 Condition。 Condition 元素定義條件和指定值之間的相符類型。
Target 可以有多個 TargetState,TargetState 可以有多個 Condition。
下列資訊描述目標定義的邏輯:
當所有 Condition 元素都是 TRUE 時, TargetState 為 TRUE:
如果任何 TargetState 元素為 TRUE, 則 Target 為 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 的兩位數 Alpha ISO 代碼。 |
Lang | P1 | 支援 | 列舉 | 使用 以語言代碼為基礎的目標設定,使用兩位數 ISO 639 alpha-2 程式代碼。 |
Windows 用戶端中支援的相符類型如下:
相符類型 | 語法 | 範例 |
---|---|---|
直接相符 | 符合類型指定為保持原狀 | <Condition Name="ProcessorName" Value="Barton" /> |
Regex () 相符的正則表示式 | 比對類型前面加上 Pattern: |
<Condition Name="ProcessorName" Value="Pattern:.*Celeron.*" /> |
數字範圍相符 | 比對類型前面加上 !Range: |
<Condition Name="MNC" Value="!Range:400, 550" /> |
TargetState 優先順序
您可以在佈建套件內定義一個以上的 TargetState,將設定套用至符合裝置條件的裝置上。 當布建引擎評估每個 TargetState 時,可能會有一個以上的 TargetState 符合目前的裝置條件。 若要判斷設定的套用順序,系統會指定每個 TargetState 的優先順序。
先套用符合 TargetState 但優先順序較低的設定,再套用符合 TargetState 且優先順序較高的設定。 這表示優先順序高的 TargetState 其設定會覆寫低優先順序的 TargetState 設定。
若設定符合多個優先順序相同的 TargetState,系統會根據佈建套件中所定義每個 TargetState 的順序套用設定。
系統會根據條件的優先順序指派 TargetState 優先順序 (請參閱條件表中的優先順序)。 優先順序評估規則如下所示:
- 含 P0 條件的 TargetState 其優先順序高於不含 P0條件的 TargetState。
- 同時含 P0 與 P1 條件的 TargetState 其優先順序高於僅含 P0 條件的 TargetState。
- 符合 P0 條件數目較多的 TargetState 高於符合 P0 條件數目較少的 TargetState,無論符合的 P1條件數目多少。
- 如果符合的 P0 條件數目相等,則具有最相符 P1 條件的 TargetState 具有較高的優先順序。
- 如果符合 P0 與 P1 條件的數目相同,則符合條件總數最高的 TargetState 其優先順序最高。
使用 Multivariant 設定建立佈建套件
請依照下列步驟來建立具 Multivariant 功能的佈建套件。
建立佈建套件,並設定您想要在某些條件期間套用的自訂項目。 如需詳細資訊,請參閱建立佈建套件。
設定設定 之後,請儲存專案。
開啟專案資料夾,然後將 customizations.xml 檔複製到任何本機位置。
使用 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>
編輯 customizations.xml 檔案以建立 Targets 區段,以描述處理 Multivariant 設定的條件。
下列範例顯示 customizations.xml,其已修改為包含數個條件,包括 ProcessorName、 ProcessorType、 MCC 和 MNC。
<?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>
在 Customizations.xml 檔案中,針對您需要自訂的設定建立 Variant 區段。 請這樣做:
a. 定義 TargetRefs 子元素。 b. 在 TargetRefs 元素內,定義 TargetRef 元素。 您可以針對您需要套用至已自訂之設定的每個 ID,定義多個 TargetRef 元素。 c. 將相容設定從 Common 區段移至 Variant 區段。
如果任何 TargetRef 元素符合 Target,則 Variant 中的所有設定都會套用。
注意
您可以定義多個 Variant 區段。 Common 區段中的設定會無條件套用在每個觸發事件上。
下列範例顯示已更新 customizations.xml,以包含 Variant 區 段,以及符合 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>
儲存更新後的 customizations.xml 檔案,並記下本更新檔案的路徑。 在下一個步驟中,您將需要路徑作為其中一個值。
使用 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 卡更新 | 支援 |
執行階段的套件安裝 | 支援 |
偵測到漫遊 | 不支援 |