共用方式為


Visual Studio 如何產生應用程式套件資訊清單

當您使用 Visual Studio 建立專案時,Visual Studio 會 (AppxManifest.xml) 產生套件資訊清單,其中包含系統部署、顯示或更新通用 Windows 平臺 (UWP) 應用程式所需的資訊。

當您使用 Visual Studio 開發應用程式時,有兩種應用程式套件資訊清單檔案會出現:

  • 「Package.appxmanifest」
    這是一種 XML 樣式檔案,可供開發人員用來設定應用程式的詳細資料,例如發行者資訊、標誌、處理器架構等。這是在應用程式開發期間使用的應用程式套件資訊清單可輕易設定的暫存版本。
  • AppxManifest.xml
    這個檔案是由 Visual Studio build 進程產生的,而且是以 package.appxmanifest 檔案中的資訊為基礎。 這是與已發佈和側載的應用程式搭配使用的應用程式套件資訊清單最終版本。 如果對 package.appxmanifest 檔案進行了任何更新,您必須重建專案,才能在 AppxManifest.xml 檔中查看更新。

如需封裝流程的總覽,請參閱使用 Visual Studio 封裝 UWP 應用程式

驗證應用程式資訊清單

您必須先修正任何造成 Visual Studio 驗證檢查失敗的錯誤,才能發佈應用程式。 當 Visual Studio 產生資訊清單時,Visual Studio 會以下列方式驗證您的應用程式:

  • 語法驗證
    Visual Studio 確認應用程式資訊清單中的所有資料是否符合應用程式資訊清單結構描述。
  • 語意驗證
    Visual Studio 根據資訊的內容來提供預期資料的指引。

注意

如果這些區段沒有提及您要尋找的欄位,則會從可能已個別設定的資料,或從資訊清單架構的預設值產生。

產生資訊清單內容

Visual Studio 在產生應用程式套件的 AppxManifest.xml 檔案時,填入下表中的欄位。

身分識別

Identity應用程式資訊清單的區段包含下欄欄位。

欄位 描述
Name 封裝的名稱,在下列案例中會以不同方式填入:
  • 根據預設,這個欄位的值是產生的 GUID。
  • 如果您將應用程式與 Microsoft Store 建立關聯,或叫用 [儲存- > 建立應用程式套件 ... ] 命令,然後以開發人員帳戶登入,則會從 Microsoft Store 或合作夥伴中心中的相關聯應用程式取出此欄位的值。
  • 如果您叫用 [ 儲存- > 建立應用程式封裝 ] 命令,但未以開發人員帳戶登入,則會從來源資訊清單中取得這個欄位的值。
Publisher 發行者的名稱。 此名稱依下列情況而填入不同的值:
  • 根據預設,這個欄位的值是您的使用者名稱。
  • 如果您將應用程式與 Microsoft Store 建立關聯,或叫用 [儲存- > 建立應用程式封裝] 命令,然後以開發人員帳戶登入,則這個欄位的值是與帳戶相關聯的發行者。
  • 如果您叫用 [ 儲存- > 建立應用程式封裝 ] 命令,但未以開發人員帳戶登入,則此欄位的值會符合您用來簽署應用程式套件之測試憑證的主旨欄位。
Visual Studio 僅支援發行者 (CN) 形式的一般名稱,並且會在資訊清單中新增前置詞 "cn =" 至發行者欄位。
版本 所建立之應用程式的版本。 這通常會在每次應用程式已修改並封裝時遞增。 若要確定 Version 已正確遞增,請使用您叫用 存放區- > 建立應用程式套件 時所提供的對話方塊 ... 以進行更新。
ProcessorArchitecture 根據您為專案指定的組建設定所產生的值。 如果專案參考或專案中的檔案參考以與應用程式封裝不同的特定架構為目標,則會擲回組建錯誤,而且您必須變更應用程式封裝的目標架構,才能使用所有的參考。

以下是輸出 XML 的範例 Identity

<Identity Name="Microsoft.UWPAppExample"
          Publisher="CN=Microsoft Corporation"
          Version="1.0.0.0"
          ProcessorArchitecture="x86" />

屬性

Properties應用程式資訊清單的區段包含下表中的欄位。

欄位 描述
PublisherDisplayName 在下列案例中,此字串會以不同方式填入:
  • 根據預設,這個欄位的值是您的使用者名稱。
  • 如果您將應用程式與 Microsoft Store 建立關聯,或叫用 [儲存- > 建立應用程式套件 ... ] 命令,然後以開發人員帳戶登入,則這個欄位的值會符合與您的開發人員帳戶相關聯的 PublisherDisplayName 字串。
  • 如果您叫用 [ 儲存- > 建立應用程式封裝 ] 命令,但未以開發人員帳戶登入,則這個欄位的值是您的使用者名稱,除非您在 package.appxmanifest 檔案中指定其他值。
DisplayName 此字串依下列情況而填入不同的值:
  • 根據預設,這個欄位的值是專案的名稱。
  • 如果您將應用程式與 Microsoft Store 建立關聯,或叫用 [儲存- > 建立應用程式封裝] 命令,然後以開發人員帳戶登入,則會根據下列規則來填入這個欄位的值:
    • 如果您在來源資訊清單中指定這個值,且值開頭為 @ (,表示您要將此值當地語系化) ,此欄位的值會符合您指定的值。
    • 如果選取的應用程式只有一個名稱,則以該名稱為值。
    • 如果選取的應用程式有多個名稱,但來源資訊清單未當地語系化,則值會設定為來源資訊清單中的顯示名稱。 否則,值會設為第一個保留名稱。
  • 如果您叫用 [ 儲存- > 建立應用程式封裝 ] 命令,但未以開發人員帳戶登入,則會從來源資訊清單中取得這個欄位的值。
標誌 預設會使用 Assets\StoreLogo.png Visual Studio 範本。 此值應由開發人員在 package.appxmanifest 檔案中自訂。

以下是輸出 XML 的範例 Properties

<Properties>
    <DisplayName>UWP App Example</DisplayName>
    <PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
</Properties>

應用程式

應用程式資訊清單可以包含多個 Application 元素,每個元素的顯示名稱會出現在用戶端的磚上。 Application應用程式資訊清單的區段包含下表中的欄位。

欄位 描述
識別碼 此字串依下列情況而填入不同的值:
  • 根據預設,這個欄位的值是專案的名稱。
  • 如果您將應用程式與 Microsoft Store 建立關聯,或叫用 [儲存- > 建立應用程式封裝] 命令,然後以開發人員帳戶登入,則這個欄位的值就是所選應用程式的應用程式名稱(如果 /Properties[@DisplayName] 來源資訊清單中的和 /Applications/Application[@DisplayName] 相符)。 否則,該值會維持與來源資訊清單中相同。
  • 如果您叫用 [ 儲存- > 建立應用程式封裝 ] 命令,但未以開發人員帳戶登入,則這個欄位的值與來源資訊清單中的值相同。
可執行檔 這個欄位的值是專案組件的輸出名稱。 $Targetnametoken $.exe 的可執行標記會用於來源資訊清單檔案 (Package. package.appxmanifest) 會在建立資訊清單時,取代為實際的檔案名。
EntryPoint 這個值是以產生 Executable 的和 Id 值為基礎。

範例 Application 輸出:

<Applications>
    <Application Id="App" Executable="UWPAppExample.exe" EntryPoint="UWPAppExample.App">
        <!-- Other elements configured within the Application, such as Extensions, VisualElements, etc. -->
</Applications>

PackageDependency

PackageDependency區段包含此套件的所有 Windows 元件程式庫相依性。 例如,如果您的專案具有 WinJS 的參考,則在產生資訊清單時 Visual Studio 會抓取相依性的套件身分識別資訊。 Visual Studio 接著將每個相依套件的 NameMinVersion 欄位填入此區段。

在原生 c + + 專案中,Visual Studio 會新增 Visual C/c + + 執行時間的參考:

<Dependencies>
    <PackageDependency Name="Microsoft.VCLibs.140.00.Debug" MinVersion="14.0.30035.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
</Dependencies>

Windows 執行階段的註冊延伸模組

您可以為您的應用程式執行 Windows 執行階段元件,但您必須向作業系統註冊這些元件,才能讓它們正常執行。 若要註冊 Windows 執行階段元件,您必須將註冊資訊放在 WinMD 檔案和應用程式資訊清單中。 如果專案實 Windows 執行階段元件,則專案的組建輸出會包含 WinMD 檔案。 Visual Studio 從 WinMD 檔案中解壓縮 Windows 執行階段的註冊資訊,並在應用程式資訊清單中產生適當 Extension 的元素。

系統支援兩種伺服器:.dll 伺服器 (同處理序) 和 .exe 伺服器 (跨處理序)。 這些伺服器需要類似但不同的註冊資訊,而此資訊必須複製到應用程式資訊清單。 Visual Studio 僅支援為 .dll 伺服器產生資訊清單,而註冊 .dll 伺服器需要 DLLServer 擴充功能。 系統會從 WinMD 檔案取得下列應用程式資訊清單中的值,以建構 DLLServer 擴充功能:

  • DllPath
  • ActivatableClassId
  • ThreadingModel
  • ActivatableClass (ActivatableClassId 屬性)

下列是輸出 XML 的範例:

<extension category="Microsoft.Windows.ActivatableClass">
    <dllServer>
        <dllPath>Fabrikam.dll</dllPath>
        <activatableClass activatableClassId="Fabrikam.MyClass" threadingModel="sta" />
    </dllServer>
</extension>

如需本主題的詳細資訊,請參閱Windows 執行階段元件

資源

Resources區段包含應用程式所支援之每種語言的專案。 您至少必須在應用程式資訊清單中指定一種資來源語言。 Visual Studio 會自動根據專案中的當地語系化資訊,產生支援的語言清單。 來源資訊清單檔案中使用的資來源語言權杖 "x-產生" (Package. package.appxmanifest) 會在建立資訊清單時,取代為實際的語言代碼。 下列是輸出 XML 的範例:

<Resources>
    <Resource Language="en-us">
    <Resource Language="fr-fr">
</Resources>

清單中的第一個項目是應用程式的預設語言。

TargetDeviceFamily

TargetDeviceFamily 區段包含下欄欄位:

  • Name
  • MinVersion
  • MaxVersionTested
<Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.22000.0" />
</Dependencies>

這些專案會從 MSBuild 屬性填入。

另請參閱

使用 Visual Studio 封裝 UWP 應用程式
應用程式套件架構
Windows 10 套件資訊清單的結構描述參考