Windows 應用程式認證套件測試

Windows 應用程式認證套件包含一些測試,協助確認您的應用程式已準備好可以在 Microsoft Store 上發佈。 以下列出測試及其準則、詳細資料,以及失敗時的建議措施。

部署和啟動測試

在認證測試期間監視應用程式,記錄該應用程式何時發生當機或停止回應情形。

背景

停止回應或當機的應用程式會導致使用者遺失資料並產生不良的使用經驗。

我們希望應用程式即使不使用 Windows 相容模式、AppHelp 訊息和/或相容性修正程式,也可以完全正常運作。

應用程式不得列出預定載入 HKEY-LOCAL-MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit-DLL 登錄機碼中的 DLL。

測試詳細資料

我們會透過認證測試來測試應用程式的復原能力和穩定性。

Windows 應用程式認證封裝會呼叫 IApplicationActivationManager::ActivateApplication 以啟動應用程式。 為了讓 ActivateApplication 啟動應用程式,必須啟用使用者帳戶控制 (UAC),而且螢幕解析度至少必須為 1024 x 768 或 768 x 1024。 如果任一條件不符合,您的應用程式就無法通過此測試。

修正動作

請確定測試電腦上的 UAC 已啟用。

請確定您在螢幕夠大的電腦上執行測試。

如果您的應用程式無法啟動,但測試平台符合 ActivateApplication 的先決條件,則可以檢閱啟用事件記錄檔以疑難排解問題。 如需在事件記錄檔中找到這些項目,請按照以下步驟:

  1. 開啟 eventvwr.exe,並瀏覽至 [應用程式及服務記錄檔]\Microsoft\Windows\Immersive-Shell 資料夾。
  2. 篩選檢視,以顯示事件識別碼:5900-6000。
  3. 查閱記錄項目,尋找說明為什麼應用程式無法啟動的資訊。

針對有問題的檔案進行疑難排解,找出並修正問題。 或是重建並重新測試應用程式。 您也可以檢查 Windows 應用程式認證封裝記錄檔資料夾中是否已產生傾印檔案,可用來對應用程式進行偵錯。

平台版本啟動測試

檢查 Windows 應用程式是否能在未來版本的作業系統執行。 此測試過去只適用於傳統型應用程式工作流程,但現在也適用於 Microsoft Store 和通用 Windows 平台 (UWP) 工作流程。

背景

作業系統版本資訊的用途限於 Microsoft Store。 應用程式經常誤用此功能來檢查作業系統版本,致使應用程式無法提供使用者特定作業系統版本專屬的功能。

測試詳細資料

Windows 應用程式認證封裝會使用 HighVersionLie 偵測應用程式如何檢查作業系統版本。 如果應用程式當機,就無法通過這項測試。

更正措施

應用程式應使用版本 API 協助程式函式進行檢查。 如需詳細資訊,請參閱作業系統版本

背景工作取消處理常式驗證

這會驗證應用程式是否有已宣告背景工作的取消處理常式, 並必須有工作取消時會進行呼叫的專用函式才可進行。 這項測試只適用於已部署的應用程式。

背景

Microsoft Store應用程式可以登錄一個在背景執行的處理程序。 例如,電子郵件應用程式可能會不時對伺服器進行 Ping。 但如果作業系統需要這些資源,此程序將取消背景工作,且應用程式應順利處理這項取消作業。 若應用程式沒有取消處理常式,當使用者嘗試關閉應用程式時,應用程式可能會當機或無法關閉。

測試詳細資料

應用程式會啟動、暫停,然後非背景部分會終止。 接著,與應用程式關聯的背景工作將會取消。 最後會檢查作業系統的狀態,如果應用程式仍在執行,將無法通過此測試。

更正措施

新增取消處理常式到應用程式。 如需詳細資訊,請參閱使用背景工作支援應用程式

應用程式計數

這會驗證應用程式套件 (.msix、.appx 或應用程式套件組合) 包含一個應用程式。 這在封裝中變更為獨立的測試。

背景

這項測試是根據 Microsoft Store 原則操作。

測試詳細資料

針對 Windows Phone 8.1 App,測試會確認封裝組合中的 appx 封裝總數為 < 512、封裝組合中只有一個主封裝,以及封裝組合中的主封裝架構已標示為 ARM 或中性。

針對 Windows 10 App,測試會驗證封裝組合版本中的版本號碼已設定為 0。

更正措施

請確定應用程式封裝和搭售方案符合上述「測試詳細資料」中的需求。

應用程式資訊清單規範測試

測試應用程式資訊清單的內容,確定內容正確無誤。

背景

應用程式必須包含格式正確的應用程式資訊清單。

測試詳細資料

檢查應用程式資訊清單,確認內容符合應用程式封裝需求

  • 副檔名與通訊協定

    您的應用程式可以宣告所要產生關聯的副檔名。 如使用不當,應用程式可能會宣告大量的副檔名,而其中的大多數可能甚至不會用到,因而造成使用者體驗不佳。 這個測試將新增一項檢查,以限制應用程式可以產生關聯的副檔名數目。

  • 架構相依性規則

    這個測試會強制要求應用程式與 UWP 有適當的相依性。 如果有不適當的相依性,將無法通過此測試。

    如果應用程式套用的作業系統版本與建立架構相依性的作業系統版本不符,則測試將會失敗。 如果應用程式參照任何預覽版本的架構 DLL,測試也將失敗。

  • 處理序間通訊 (IPC) 驗證

    這個測試強制要求 UWP 應用程式不會在應用程式容器外部與桌面元件進行通訊。 處理程序間通訊僅適用於側載應用程式。 將 ActivatableClassAttribute 的名稱指定為「DesktopApplicationPath」的應用程式將無法通過此測試。

更正措施

請按照應用程式封裝需求中所述的需求來檢閱應用程式資訊清單。

Windows 安全性功能測試

背景

變更預設的 Windows 安全性保護會讓客戶面臨較高的風險。

測試詳細資料

執行 BinScope 二進制分析器以測試應用程式的安全性。

BinScope 二進制分析器測試會檢驗應用程式的二進位檔,以檢查是否有編碼和建置做法能使應用程式較不易受攻擊或成為攻擊媒介。

BinScope 二進制分析器測試會檢查是否正確使用下列安全性相關的功能:

  • BinScope 二進制分析器測試
  • 私用程式碼簽署

BinScope 二進制分析器測試

BinScope 二進制分析器測試會檢驗應用程式的二進位檔,檢查是否有編碼和建置做法能使應用程式較不易受攻擊或成為攻擊媒介。

BinScope 二進制分析器測試會檢查是否正確使用下列安全性相關的功能:

AllowPartiallyTrustedCallersAttribute

Windows 應用程式認證封裝錯誤訊息:APTCACheck 測試失敗

AllowPartiallyTrustedCallersAttribute (APTCA) 屬性可從已簽署組件中部分信任的程式碼,存取可完全信任的程式碼。 當您對組件套用 APTCA 屬性時,部分信任的呼叫者可以在該組件存留期內存取組件,進一步危害安全性。

如果您的應用程式未通過這個測試,應該怎麼辦

除非專案需要,而且您已充分瞭解風險,請勿在強式名稱的組件上使用 APTCA 屬性。 若有必要,請務必使用適當的程式碼存取安全性要求來保護所有 API。 當組件屬於通用 Windows 平台 (UWP)應用程式時,APTCA 沒有任何作用。

備註

此測試僅執行於 Managed 程式碼 (C#、.NET 等)。

/SafeSEH 例外狀況處理保護

Windows 應用程式認證封裝錯誤訊息:SafeSEHCheck 測試失敗

當應用程式發生像是除以零錯誤的例外狀況時,例外處理常式就會執行。 因為呼叫函式時,例外處理常式的位址會儲存於堆疊,如果有些惡意軟體意圖覆寫該堆疊,就會讓緩衝區溢位攻擊者有機可趁。

如果您的應用程式未通過這個測試,應該怎麼辦

建置您的應用程式時,請在連結器命令中啟用 /SAFESEH 選項。 在 Visual Studio 的發行組態中,此選項依預設處於開啟狀態。 針對您應用程式中的所有可執行檔模組,請確認已在建置指示中啟用此選項。

備註

因為 64 位元的二進位檔或 ARM 晶片組二進位檔不會將例外處理常式位址儲存於堆疊,測試不會在此兩者上執行。

資料執行防止

Windows 應用程式認證封裝錯誤訊息:NXCheck 測試失敗

這個測試會確認應用程式不會執行儲存在資料區段中的程式碼。

如果您的應用程式未通過這個測試,應該怎麼辦

建置您的應用程式時,請在連結器命令中啟用 /NXCOMPAT 選項。 在支援資料執行防止 (DEP) 的連結器版本中,此選項依預設處於開啟狀態。

備註

建議您在支援 DEP 的 CPU 上測試應用程式,並修正由 DEP 所導致的任何失敗。

位址空間配置隨機載入

Windows 應用程式認證封裝錯誤訊息:NXCheck 測試失敗

位址空間配置隨機載入 (ASLR) 會將可執行檔映像載入記憶體中無法預期的位置,使惡意軟體較難預測程式會載入哪個特定虛擬位址以可預期的方式運作。 您的應用程式與其所使用的所有元件都必須支援 ASLR。

如果您的應用程式未通過這個測試,應該怎麼辦

建置您的應用程式時,請在連結器命令中啟用 /DYNAMICBASE 選項。 請確認您應用程式使用的所有模組也都使用這個連結器選項。

備註

通常 ASLR 不會影響效能, 但在某些情況下,可稍微改善 32 位元系統上的效能。 系統若將許多影像載入多個不同的記憶體位置而發生嚴重壅塞,可能會使效能降低。

此測試僅執行於 Unmanaged 語言 (如 C 或 C++) 撰寫的應用程式。

讀取/寫入共用的 PE 區段

Windows 應用程式認證封裝錯誤訊息:SharedSectionsCheck 測試失敗。

含有標示為共用可寫入區段的二進位檔便是一個安全性威脅。 除非必要,請勿建置含有共用可寫入區段的應用程式。 請使用 CreateFileMappingMapViewOfFile 建立有適當安全保護的共用記憶體物件。

如果您的應用程式未通過這個測試,應該怎麼辦

請從應用程式中移除任何共用的區段,然後搭配適當的安全性屬性來呼叫 CreateFileMappingMapViewOfFile 以建立共用的記憶體物件,然後重新建置您的應用程式。

備註

此測試僅執行於 Unmanaged 語言 (如 C 或 C++) 撰寫的應用程式。

AppContainerCheck

Windows 應用程式認證封裝錯誤訊息:AppContainerCheck 測試失敗。

AppContainerCheck 會確認可執行二進位檔的可攜式執行檔 (PE) 標頭中的 appcontainer 位元已設定。 應用程式必須在所有 .exe 檔案和所有 Unmanaged DLL 上設定 appcontainer 位元才能正確執行。

如果您的應用程式未通過這個測試,應該怎麼辦

如果原始可執行檔未通過這個測試,請確定您使用了最新的編譯器和連結器來建立檔案,並在連結器上使用 /appcontainer 旗標。

如果受控可執行檔未通過測試,請確定您使用最新的編譯器和連結器 (例如 Microsoft Visual Studio) 來建置 UWP 應用程式。

備註

此測試執行於所有 .exe 檔案和 Unmanaged DLL。

ExecutableImportsCheck

Windows 應用程式認證封裝錯誤訊息:ExecutableImportsCheck 測試失敗。

如果可攜式執行檔 (PE) 映像的匯入表格被放置到可執行程式碼區段中,就無法通過這個測試。 如果您將 Visual C++ 連結器的 /merge 旗標設成 /merge:.rdata=.text 以對 PE 映像啟用 .rdata 合併,就會發生這種情形。

如果您的應用程式未通過這個測試,應該怎麼辦

請勿將匯入表格合併到可執行程式碼區段中。 請確定 Visual C++ 連結器的 /merge 旗標沒有設定為將「.rdata」區段合併到程式碼區段中。

備註

此測試執行於完全 Managed 組件以外的所有二進位程式碼。

WXCheck

Windows 應用程式認證封裝錯誤訊息:WXCheck 測試失敗。

這個檢查有助於確保二進位檔沒有任何對應為可寫入或可執行的頁面。 如果二進位檔有可寫入和可執行的區段,或如果二進位檔的 SectionAlignment 小於 PAGE-SIZE,就會發生此情況。

如果您的應用程式未通過這個測試,應該怎麼辦

請確認二進位檔沒有可寫入或可執行的區段,而且二進位檔的 SectionAlignment 值至少等於其 PAGE-SIZE

備註

此測試執行於所有 .exe 檔案和原生的 Unmanaged DLL。

如果可執行檔在建置時啟用了 [編輯後繼續](/ZI),則可執行檔便可能有可寫入和可執行的區段。 停用 [編輯後繼續] 即可不顯示無效的區段。

可執行檔的 PAGE-SIZE 預設為 SectionAlignment

私用程式碼簽署

測試私用程式碼簽署二進位檔是否存在於應用程式封裝。

背景

私用程式碼簽署檔案應該保持私用,因為若遭到洩露,可能會被用於惡意用途。

測試詳細資料

測試應用程式封裝內的檔案是否存在 .pfx 或.snk,以指出已包含私用簽署金鑰。

修正動作

從套件中移除任何私用程式碼簽署金鑰 (例如,.pfx 和 .snk 檔案)。

支援的 API 測試

測試應用程式是否使用不相容的 API。

背景

應用程式必須使用適用於 UWP 應用程式的 API (Windows 執行階段或受支援的 Win32 API) 進行 Microsoft Store 認證。 這個測試也會識別 Managed 二進位檔案相依於核准的設定檔外部函式的狀況。

測試詳細資料

  • 檢查二進位檔案的匯入位址表,確認 App 套件內的每個二進位檔案都相依於 UWP 應用程式開發所支援的 Win32 API。
  • 請確認應用程式封裝內的每個 Managed 二進位檔案不會相依於核准的設定檔外部的函式。

修正動作

請確定應用程式是編譯為發行組建而不是偵錯組建。

注意應用程式的偵錯組建即使僅使用適用於 UWP 應用程式的 API,還是無法通過這個測試。

檢閱錯誤訊息,以識別應用程式使用的 API 有哪些不屬於適用於 UWP 應用程式的 API

注意 即使偵錯組態只使用來自適用於 UWP 應用程式之 Windows SDK 的 API,該設定內建的 C++ 應用程式也無法通過這個測試。 如需詳細資訊,請參閱 UWP 應用程式中 Windows API 的替代方法

效能測試

應用程式必須快速回應使用者的互動及系統命令,才能提供快速且流暢的使用者體驗。

執行測試之電腦的特性會影響測試結果。 請設定應用程式認證的效能測試閾值,讓低功率電腦能夠符合客戶預期的快速和流暢使用經驗。 若要判斷應用程式的效能,建議您在低功率電腦上進行測試,例如採用 Intel Atom 處理器且具備 1366x768 (或更高) 螢幕解析度與旋轉式硬碟 (而非固態硬碟) 的電腦。

位元組程式碼產生

當效能經過最佳化而加快 JavaScript 執行階段時,結尾為 .js 副檔名的 JavaScript 檔案會在部署應用程式時產生位元組程式碼。 此最佳化作業可大幅改善 JavaScript 操作的啟動和持續執行階段。

測試詳細資料

請檢查應用程式部署,確認所有 .js 檔案都已轉換成位元組程式碼。

更正動作

如果此測試失敗,解決問題時確認以下內容:

  • 確認是否啟用事件記錄。
  • 確認所有 JavaScript 檔案的語法是否有效。
  • 確認已解除安裝應用程式的所有先前版本。
  • 從應用程式封裝中排除已識別的檔案。

最佳化的繫結參考

使用繫結時,WinJS.Binding.optimizeBindingReferences 應設定為 true 以最佳化記憶體使用量。

測試詳細資料

確認 WinJS.Binding.optimizeBindingReferences 的值。

更正動作

將應用程式 JavaScript 中的 WinJS.Binding.optimizeBindingReferences 設為 true

應用程式資訊清單資源測試

應用程式資源驗證

如果應用程式資訊清單中宣告的字串或影像不正確,就無法安裝應用程式。 如果應用程式安裝時包含這些錯誤,就無法正確顯示應用程式的標誌或所使用的其他影像。

測試詳細資料

請檢查應用程式資訊清單中定義的資源,確定它們存在並且有效。

更正動作

請使用下表做為指引。

錯誤訊息註解

影像 {image name} 同時定義 Scale 和 TargetSize 限定詞二者;一次只能定義一個限定詞。

您可以針對不同的解析度自訂影像。

在實際訊息中,{image name} 包含有錯誤的影像名稱。

請確定每個影像都將 Scale 或 TargetSize 定義為限定詞。

影像 {image name} 不符合大小限制。

請確定所有應用程式影像都遵守適當的大小限制。

在實際訊息中,{image name} 包含有錯誤的影像名稱。

封裝中沒有影像 {image name}。

缺少必要的影像。

在實際訊息中,{image name} 包含缺少的影像名稱。

影像 {image name} 不是有效的影像檔。

請確定所有應用程式影像都遵守適當的檔案格式類型限制。

在實際訊息中,{image name} 包含無效的影像名稱。

影像「BadgeLogo」在位置 (x, y) 的 ABGR 值 {value} 無效。 像素必須是白色 (##FFFFFF) 或透明 (00######)

徽章標誌是出現在徽章通知旁邊的影像,用以在鎖定畫面識別應用程式。 這個影像必須為單色 (只能包含白色和透明像素)。

在實際訊息中,{value} 包含影像中無效的色彩值。

影像「BadgeLogo」在位置 (x, y) 的 ABGR 值 {value} 對於高對比白色影像無效。 像素必須是 (##2A2A2A) 或較深,或透明 (00######)。

徽章標誌是出現在徽章通知旁邊的影像,用以在鎖定畫面識別應用程式。 因為在高對比白色中,徽章標誌會出現在白色背景上,所以它必須是正常徽章標誌的深色版本。 在高對比白色中,徽章標誌只能包含比 (##2A2A2A) 深的像素或透明。

在實際訊息中,{value} 包含影像中無效的色彩值。

影像至少必須定義一個不含 TargetSize 限定詞的變數。 它必須定義 Scale 限定詞,或不指定 Scale 和 TargetSize,預設值為 Scale-100。

如需詳細資訊,請參閱 UWP 應用程式回應設計 101應用程式資源的指導方針

封裝缺少 「resources.pri」檔案。

如果您的應用程式資訊清單中有可當地語系化的內容,應用程式封裝中請務必包含有效的 resources.pri 檔案。

"resources.pri" 檔案必須包含資源對應,且名稱符合套件名稱 {package full name}

如果資訊清單已變更,而 resources.pri 中的資源對應名稱不再符合資訊清單中的套件名稱,就會發生這個錯誤。

在實際訊息中,{package full name} 包含 resources.pri 必須包含的封裝名稱。

若要修正此問題,您需要重建 resources.pri,最簡單的方式就是重建應用程式的套件。

「resources.pri」檔案不能啟用 AutoMerge。

MakePRI.exe 支援一個稱為 AutoMerge 的選項。 AutoMerge 的預設值為 off。 啟用時,AutoMerge 會在執行階段將應用程式的語言套件資源合併至單一 resources.pri 中。 對於您在想要透過 Microsoft Store 發佈的應用程式,我們不建議使用這個選項。 透過 Microsoft Store 發佈的應用程式,其 resources.pri 必須位於應用程式套件的根目錄,而且包含應用程式支援的所有語言參考。

字串 {string} 不符合 {number} 個字元的長度上限限制。

請參閱應用程式封裝需求

在實際訊息中,{string} 會以發生錯誤的字串取代,而 {number} 包含長度上限。

字串 {string} 的開頭/結尾不得具有空白字元。

應用程式資訊清單中的元素結構描述不允許前後有空白字元。

在實際訊息中,{string} 會以有錯誤的字串取代。

請確定 resources.pri 中資訊清單欄位的當地語系化值沒有任何前置或空白字元。

字串必須為非空白 (長度大於零)

如需詳細資訊,請參閱應用程式封裝需求

「resources.pri」檔案中沒有指定預設資源。

如需詳細資訊,請參閱應用程式資源的指導方針

在預設建置組態中,當產生套件組合、將其他資源放在資源套件中時,Visual Studio 只會在應用程式套件中包含縮放 200 的影像資源。 請確定您包含縮放 200 影像資源,或將您的專案設定為包含您所擁有的資源。

「resources.pri」檔案中沒有指定資源值。

請確定應用程式資訊清單在 resource.pri 中定義有效的資源。

影像檔 {filename} 必須小於 204800 個位元組。\*\*

請降低所指示之影像的大小。

{filename} 檔案不應包含反向對應區段。\*\*

在 Visual Studio「F5 偵錯」期間呼叫 makepri.exe 時會產生反向對應,而在產生 pri 檔案時不使用 /m 參數執行 makepri.exe,即可移除此反向對應。

\*\* 指出已在適用於 Windows 8.1 的 Windows 應用程式認證封裝 3.3 中新增測試,而且只有在使用該封裝版本或更新版本時才適用。

 

商標驗證

UWP 應用程式應該要完整且功能正常。 使用預設影像 (來自範本或 SDK 範例) 的應用程式有損使用者體驗,而且在 Microsoft Store 目錄中也不易識別。

測試詳細資料

這個測試會驗證應用程式所使用的影像不是來自 SDK 範例或 Visual Studio 的預設影像。

修正動作

以更特別且更能代表您應用程式的影像取代預設影像。

偵錯設定測試

請測試應用程式,確定不是偵錯組建。

背景

若要通過 Microsoft Store 的認證,應用程式不可以針對偵錯進行編譯,而且不可以參照可執行檔案的偵錯版本。 此外,您必須針對您的應用程式建置最佳化的程式碼以便通過此測試。

測試詳細資料

請測試應用程式,確定不是偵錯組建,而且並未連結到任何偵錯架構。

修正動作

  • 將應用程式提交至 Microsoft Store 之前,將其建置為版本組建。
  • 請確定您已安裝正確的 .NET Framework 版本。
  • 請確認應用程式並未連結到偵錯版本的架構,且是利用發行版本所建置。 如果這個應用程式包含 .NET 元件,請確認您已安裝正確的 .NET Framework 版本。

檔案編碼測試

UTF-8 檔案編碼

背景

請務必使用對應的位元順序標記 (BOM),以 UTF-8 格式為 HTML、CSS 和 JavaScript 檔案編碼,藉此從位元組程式碼快取中獲益,並避免其他執行階段錯誤情況。

測試詳細資料

請測試應用程式封裝的內容,確定應用程式封裝使用正確的檔案編碼。

更正動作

開啟受影響的檔案,然後從 Visual Studio 的 [檔案] 功能表中選取 [另存新檔]。 選取 [儲存] 按鈕旁的下拉式控制項,然後選取 [以編碼方式儲存]。 從 [進階] 儲存選項對話方塊中選擇 [Unicode (UTF-8 有簽章)] 選項,然後按一下 [確定]。

Direct3D 功能層級測試

Direct3D 功能層級支援

請測試 Microsoft Direct3D 應用程式,以確定應用程式不會在具有較舊圖形硬體的裝置上當機。

背景

Microsoft Store 要求所有使用 Direct3D 的應用程式,在搭配功能層級 9-1 的顯示卡時均可正常轉譯,或能以可控方式處理不支援的情況。

因為使用者可以在安裝應用程式之後變更裝置中的圖形硬體,如果您選擇高於 9-1 的最低功能層級,您的應用程式必須在啟動時偵測目前的硬體是否符合最低需求。 若不符合最低需求,應用程式必須向使用者顯示訊息,以詳細說明 Direct3D 的需求。 此外,如果客戶在不相容的裝置上下載應用程式,該應用程式必須在啟動時偵測執行環境,並顯示訊息給客戶,以詳細說明需求。

測試詳細資料

此測試將驗證應用程式是否在功能層級 9-1 上正確運作。

更正動作

即使您希望應用程式可在更高層級上執行,也確認您的應用程式正確顯示為 Direct3D 功能層級 9-1。 如需詳細資訊,請參閱針對不同的 Direct3D 功能層級進行開發

暫停之後的 Direct3D Trim 測試

注意 這個測試僅適用於針對 Windows 8.1 和更新版本開發的 UWP 應用程式。

背景

如果應用程式未在本身的 Direct3D 裝置上呼叫 Trim,應用程式就不會釋放為先前 3D 工作所配置的記憶體。 這會增加應用程式因系統記憶體壓力而終止的風險。

測試詳細資料

請檢查應用程式是否符合 d3d 需求,確保應用程式在暫停回呼時,呼叫新的 Trim API。

更正動作

每當應用程式即將暫停時,都應該在它的 IDXGIDevice3 介面上呼叫 Trim API。

應用程式功能測試

特殊用途功能

背景

特殊用途功能適用於非常特殊的情況, 僅限公司帳戶使用這些功能。

測試詳細資料

驗證應用程式是否宣告下列任一功能:

  • EnterpriseAuthentication
  • SharedUserCertificates
  • DocumentsLibrary

如果宣告了任何上述功能,測試就會向使用者顯示警告。

修正動作

請考慮移除應用程式不需要的特殊用途功能。 此外,這類功能的使用方式需接受其他上架原則審查。

Windows 執行階段中繼資料驗證

背景

請確認應用程式隨附的元件符合 Windows 執行階段類型系統。

測試詳細資料

請確認封裝中的 .winmd 檔案符合 Windows 執行階段規則。

修正動作

  • ExclusiveTo 屬性測試:請確定 Windows 執行階段類型不會執行已標示為 ExclusiveTo 其他類別的介面。
  • 類型位置測試:請確定所有 Windows 執行階段類型的中繼資料,都位於應用程式封裝中命名空間相符名稱最長的 .winmd 檔案中。
  • 類型名稱區分大小寫測試:請確定所有 Windows 執行階段類型在應用程式封裝內,都有唯一且不區分大小寫的名稱。 同時也確保應用程式封裝內的命名空間名稱均未使用 UWP 類型名稱。
  • 類型名稱正確性測試:請確保全域命名空間或 Windows 最上層命名空間中,不存在任何 Windows 執行階段類型。
  • 一般中繼資料正確性測試:請確保您用來產生類型的編譯器符合最新的 Windows 執行階段規格。
  • 屬性測試:請確保 Windows 執行階段類別的所有屬性都有 get 方法 (set 方法為選用)。 針對 Windows 執行階段類型的所有屬性,確保 get 方法傳回值的類型與 set 方法輸入參數的類型相符。

封裝例行性測試

平台適用檔案測試

視使用者的處理器架構而定,安裝混合二進位檔案的應用程式可能會損毀或無法正確執行。

背景

這個測試驗證應用程式封裝中的二進位檔案是否會發生架構衝突。 應用程式封裝不應包含無法在資訊清單中所指定的處理器架構上使用的二進位檔案。 包含不支援的二進位檔案會導致應用程式毀損,或是增加多餘的應用程式封裝大小。

測試詳細資料

驗證每個檔案的 PE 標頭中的「位元」都適合與應用程式封裝處理器架構宣告交叉參考

更正動作

請遵循這些指導方針,以確保您的應用程式封裝只包含應用程式資訊清單中指定之架構所支援的檔案:

  • 如果應用程式的目標處理器架構是 Neutral 處理器類型,則應用程式封裝不得包含 x86、x64 或 ARM 二進位檔案或映像類型檔案。

  • 如果應用程式的目標處理器架構是 x86 處理器類型,則應用程式封裝必須只能包含 x86 二進位檔案或映像類型檔案。 如果封裝包含 x64 或 ARM 二進位檔案或映像類型檔案,這個測試將會失敗。

  • 如果應用程式的目標處理器架構是 x64 處理器類型,則應用程式封裝必須能包含 x64 二進位檔案或映像類型檔案。 請注意,在這個情況下,封裝也可以包含 x86 檔案,但是主要的應用程式經驗應該運用 x64 二進位檔案。

    不過,如果封裝包含 ARM 二進位檔案或映像類型檔案,或者只包含 x86 二進位檔案或映像類型檔案,則這個測試將會失敗。

  • 如果應用程式的目標處理器架構是 ARM 處理器類型,則應用程式封裝必須只能包含 ARM 二進位檔案或映像類型檔案。 如果封裝包含 x64 或 x86 二進位檔案或映像類型檔案,這個測試將會失敗。

支援的目錄結構測試

驗證應用程式在安裝期間建立的子目錄長度不超過 MAX-PATH。

背景

OS 元件 (包括 Trident、WWAHost 等) 的檔案系統路徑在內部限制為 MAX-PATH,若路徑較長,將無法正確運作。

測試詳細資料

確認應用程式安裝目錄內的路徑不超過 MAX-PATH。

更正動作

使用較短的目錄結構或檔案名稱。

資源使用狀況測試

WinJS 背景工作測試

WinJS 背景工作測試可確保 JavaScript 應用程式具備適當的 close 陳述式,以免應用程式耗用電池電力。

背景

具備 JavaScript 背景工作的應用程式必須呼叫 Close() 做為其背景工作的最後一個陳述式。 不執行此動作的應用程式可能會使系統無法返回連線待命模式,導致電池電力耗盡。

測試詳細資料

如果應用程式沒有資訊清單中指定的背景工作檔案,將會通過測試。 否則,測試將會剖析應用程式封裝中指定的 JavaScript 背景工作檔案,並尋找 Close() 陳述式。 如果找到,將會通過測試;否則測試就會失敗。

更正動作

更新背景 JavaScript 程式碼以正確呼叫 Close()。