MSIX AppContainer-alkalmazások

Fontos

Az AppContainerben futó bármely folyamat esetében, ha a DeploymentManager.Initialize meghívását okozza, az alkalmazásnak deklarálnia kell a packageManagementkorlátozott képességet a csomagjegyzékben. További részletekért lásd : A Deployment Manager automatikus inicializálója.

Az örökölt alkalmazásokhoz készült AppContainer témakör az AppContainer környezetével és előnyeivel kapcsolatos összes szükséges háttérinformációt ismerteti; ez a témakör C# és C++ kód példákat is tartalmaz annak tesztelésére, hogy egy folyamat fut-e egy AppContaineren belül.

Az éppen elolvasott témakör bemutatja, hogyan vehet igénybe egy MSIX-lel csomagolt alkalmazást, és hogyan konfigurálhatja egyszerűen úgy, hogy az AppContainer környezetben (egy egyszerűsített alkalmazástárolóban) fusson. Univerzális Windows-platform (UWP) alkalmazások automatikusan AppContainer-alkalmazások. Az MSIX-sel csomagolt asztali alkalmazást azonban appContainer-alkalmazásként is konfigurálhatja.

Az AppContainer-alkalmazások folyamata és gyermekfolyamatai egy egyszerűsített alkalmazástárolóban futnak, ahol csak a számukra adott erőforrásokhoz férhetnek hozzá. A fájlrendszer és a beállításjegyzék virtualizálásával elkülönítve vannak. Ennek eredményeképpen az AppContainerben implementált alkalmazások nem törhetők fel, hogy a korlátozott hozzárendelt erőforrásokon kívüli rosszindulatú műveleteket engedélyezhessenek.

Jótanács

A csomagolatlan alkalmazások az AppContainerben is futtathatók. De az AppContainer használata különösen egyszerű, ha MSIX-et használsz. A jelen témakörben ismertetett forgatókönyvek tehát a csomagolt alkalmazásokról szólnak.

WinUI 3-projekt konfigurálása az AppContainerhez

Az új projekt létrehozása csomagolt C# vagy C++ WinUI 3 asztali alkalmazáshoz című szakasz lépései bemutatják az új WinUI 3-projekt létrehozásának alapértelmezett és ajánlott módját.

Alapértelmezés szerint a projekt fájlja egy teljes megbízhatósági (azaz közepes integritási szintű) csomag konfigurációját Package.appxmanifest tartalmazza. A vonatkozó szakaszok a következőképpen néznek ki:

...
<Applications>
  <Application ...
    EntryPoint="$targetentrypoint$">
    ...
  </Application>
</Applications>

<Capabilities>
  <rescap:Capability Name="runFullTrust" />
</Capabilities>
...

Ha a csomagot AppContainer-alkalmazásként szeretné konfigurálni, szerkesztheti az EntryPoint attribútumot, és eltávolíthatja a korlátozott képességdeklarációt (de megtarthatja a Képességek elemet). Tetszik:

...
<Applications>
  <Application ...
    EntryPoint="windows.partialTrustApplication">
    ...
  </Application>
</Applications>

<Capabilities/>
...

Ha a csomagja települ a Windows 10, 2004-es verzióra (10.0; Build 19041) és/vagy ennél újabb verziókra, akkor ahelyett hogy beállítaná az EntryPoint elemet, beállíthatja az uap10:TrustLevel és uap10:RuntimeBehavior értékeket (miután deklarálta az XML névtér előtagját, ahogyan ez látható). Tetszik:

<Package ...
  xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
  ...>
...
  <Applications>
    <Application ...
      EntryPoint="$targetentrypoint$"
      uap10:TrustLevel="appContainer"
      uap10:RuntimeBehavior="packagedClassicApp">
      ...
    </Application>
  </Applications>

  <Capabilities/>
...

További információkért tekintse meg az alábbi témaköröket:

WinUI 3 kétprojektes megoldás konfigurálása az AppContainerhez

Az előző szakasz az egyprojektes MSIX folyamatát ismertette; amelyet ajánlunk, és amely az új WinUI 3-projektek alapértelmezett értéke. Bővebb információért lásd: Az alkalmazás csomagolása egyprojektes MSIX használatával.

Előfordulhat azonban, hogy van egy WinUI 3-projektje, amely az egyprojektes MSIX szolgáltatás bevezetése előtt készült. Ebben az esetben két projekt áll majd a megoldásban – az alkalmazás project, valamint egy további Windows alkalmazáscsomagoló Project. Ha migrálhatja a projektet egyprojektes MSIX-be, akkor ez ideális. Az előző szakaszban található útmutatást is követheti. Bővebb információért lásd: Az alkalmazás csomagolása egyprojektes MSIX használatával.

Ha nem tudja migrálni a projektet egyprojektes MSIX-be, akkor ez a szakasz azt ismerteti, hogyan konfigurálhatja a csomagot AppContainer-alkalmazásként.

A Windows Application Packaging Project olyan alapértelmezett beállítást jelent, amely felülírja a Package.appxmanifest konfigurációját. A projekt úgy viselkedik, mintha a projektfájlban egy TrustLevel tulajdonság teljes értékűre lett volna állítva.

A vélelmezett tulajdonságérték orvoslásához bontsa ki a csomagolási projekt Függőségek>alkalmazás csomópontját, és válassza ki azt a csomópontot, amely a WinUI 3 projektre mutató hivatkozást jelöli. Ezután Visual Studio Properties ablakában (nem projekttulajdonságok), a Trust Level tulajdonságnál válassza ki a Partial Trust értékét.

A csomagolási projekt projektfájlja most a következő explicit tulajdonságot tartalmazza:

...
<ItemGroup>
  <ProjectReference Include="...">
    <TrustLevel>Partial</TrustLevel>
  </ProjectReference>
</ItemGroup>
...

Most pedig eltávolíthatja <rescap:Capability Name="runFullTrust" /> a csomagolási projekt fájljából Package.appxmanifest .

Windows alkalmazás projekt (C++ Win32 WndProc típusú alkalmazás) konfigurálása AppContainerhez

Ez a szakasz az Ön számára készült, ha rendelkezik egy C++ Win32 WndProc típusú projekttel, amely a Windows alkalmazás projekt sablonnal lett létrehozva. Az első lépés dióhéjban egy C++ Windows Application Packaging Project hozzáadása a megoldáshoz. A pontos lépések részletei a Visual Studio MSIX-csomagolásához az asztali alkalmazásokhoz megtalálhatók a következő cím alatt: Asztali alkalmazás beállítása MSIX-csomagoláshoz a Visual Studio-ban. Ez a témakör a C++ vagy C# nyelven írt asztali alkalmazásokra vonatkozik.

Ezután nyissa meg az új csomagolási projekt projektfájlját, és adjon hozzá egy TrustLevel tulajdonságot a meglévő ProjectReference tulajdonsághoz , például a következőhöz:

...
<ItemGroup>
  <ProjectReference Include="...">
    <TrustLevel>Partial</TrustLevel>
  </ProjectReference>
</ItemGroup>
...

A buildelés során a következő hibaüzenet jelenhet meg: "hiba APPX1673: Az alkalmazásjegyzék hiányzik a szükséges "PhoneIdentity" elemből. Ha ez történik, szerkessze a projekt fájlját Package.appxmanifest a következő módon:

<Package ...
  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
  ...>
...
  <mp:PhoneIdentity
      PhoneProductId="A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx."
      PhonePublisherId="A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.">
  </mp:PhoneIdentity>
...

WPF- vagy WinForms-projekt konfigurálása az AppContainerhez

Ez a szakasz az Ön számára készült, ha a következők valamelyike van:

  • Windows megjelenítési alaprendszer (WPF) alkalmazásprojekt, amelyet a C# WPF alkalmazás projektsablonnal hoztak létre. Ez egy .NET projektet biztosít, és eltér a WPF App (.NET Framework) nevű projektsablontól. Vagy
  • Windows Forms (WinForms) alkalmazásprojekt, amely a C# Windows Forms Alkalmazás projektsablonnal lett létrehozva. Ez egy .NET projektet biztosít, és eltér a Windows Forms App (.NET Framework) nevű projektsablontól.

Az első lépés dióhéjban egy C# Windows Application Packaging Project hozzáadása a megoldáshoz. További részletek találhatók a pontos lépésekről a Visual Studio MSIX csomagolásra való beállításával kapcsolatban az asztali alkalmazásainál.

Ezután bontsa ki a csomagolási projekt Dependencies>Applications csomópontját, és válassza ki azt a csomópontot, amely a WPF vagy WinForms-projektre mutató hivatkozást jelöli. Ezután Visual Studio Properties ablakában (nem projekttulajdonságok), a Trust Level tulajdonságnál válassza ki a Partial Trust értékét.