Megosztás:


MSIX AppContainer-alkalmazások

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. Az 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 csomag a Windows 10 2004-es verziójára (10.0; Build 19041) és/vagy újabb verzióra települ, akkor ahelyett, hogy beállítaná a EntryPoint értéket, állítsa be az uap10:TrustLevel és uap10:RuntimeBehavior értékeket (miután deklarálta az XML névtér előtagját, ahogy 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 lesz a megoldásban – az alkalmazásprojektben, valamint egy további Windows-alkalmazáscsomagoló projektben. 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 egy alapértelmezett beállítást jelent, amely felülírja a konfigurációt a következőben Package.appxmanifest: . 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 a Visual Studio Tulajdonságok ablakában (nem a projekttulajdonságok) válassza ki a Részleges megbízhatóság értékét az Megbízhatósági szint tulajdonságnál.

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ásprojekt (C++ Win32 WndProc típusú alkalmazás) konfigurálása az AppContainerhez

Ez a szakasz az Ön számára készült, ha a Windows Application Project projektsablonnal létrehozott C++ Win32 WndProc típusú projekttel rendelkezik. Az első lépés dióhéjban egy C++ Windows-alkalmazáscsomagoló projekt hozzáadása a megoldáshoz. A Visual Studio MSIX csomagolás beállítása az asztali alkalmazás számára című részben további részletek találhatók a pontos lépésekről. 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:

  • egy Windows Presentation Foundation (WPF) alkalmazásprojekt, amely a C# WPF-alkalmazás projektsablonjával lett létrehozva. Ez egy .NET-projektet eredményez; és eltér a WPF-alkalmazás (.NET-keretrendszer) nevű projektsablontól. Vagy
  • Egy Windows Forms (WinForms) alkalmazásprojekt, amely a C# Windows Forms Alkalmazás projektsablonnal lett létrehozva. Ez egy .NET-projektet eredményez; és eltér a Windows Forms App (.NET Framework) nevű projektsablontól.

Az első lépés dióhéjban egy C# Windows-alkalmazáscsomagoló projekt hozzáadása a megoldáshoz. A Visual Studio MSIX csomagolás beállítása az asztali alkalmazás számára című részben további részletek találhatók a pontos lépésekről.

Ezután 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 WPF- vagy WinForms-projektre mutató hivatkozást jelöli. Ezután a Visual Studio Tulajdonságok ablakában (nem a projekttulajdonságok) válassza ki a Részleges megbízhatóság értékét az Megbízhatósági szint tulajdonságnál.