Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
W przypadku dowolnego procesu uruchomionego w aplikacji AppContainer, jeśli wywołasz metodę DeploymentManager.Initialize , aplikacja musi zadeklarować packageManagementograniczoną możliwość w manifeście pakietu. Aby uzyskać więcej informacji, zobacz Automatyczny inicjator Menedżera Wdrożeń.
Temat AppContainer dla starszych aplikacji obejmuje wszystkie niezbędne informacje w tle dotyczące środowiska AppContainer i jego korzyści; ten temat zawiera również przykłady kodu C# i C++ na potrzeby testowania, czy proces jest uruchomiony wewnątrz aplikacji AppContainer.
W temacie, który czytasz teraz, pokazano, jak można użyć aplikacji spakowanej przy użyciu pliku MSIX i łatwo skonfigurować ją do uruchamiania w środowisku AppContainer (w uproszczonym kontenerze aplikacji). Universal Windows Platform (UWP) aplikacje są automatycznie aplikacjami AppContainer. Możesz jednak również skonfigurować aplikację komputerową opakowaną w MSIX jako aplikację AppContainer.
Proces aplikacji AppContainer i jej procesy podrzędne są uruchamiane wewnątrz uproszczonego kontenera aplikacji, w którym mogą uzyskiwać dostęp tylko do zasobów, które zostały im przyznane. Są one izolowane przy użyciu systemu plików i wirtualizacji rejestru. W związku z tym aplikacje zaimplementowane w aplikacji AppContainer nie mogą zostać zhakowane, aby umożliwić złośliwe działania poza ograniczonymi przypisanymi zasobami.
Wskazówka
Aplikacje rozpakowane mogą być również uruchamiane w aplikacji AppContainer. Jednak szczególnie łatwo jest używać aplikacji AppContainer, jeśli pakiet jest używany przy użyciu pliku MSIX. Wszystkie scenariusze opisane w tym temacie dotyczą spakowanych aplikacji.
Konfigurowanie projektu WinUI 3 dla aplikacji AppContainer
Kroki opisane w artykule Create a new project for a packaged C# or C++ WinUI 3 desktop app (Tworzenie nowego projektu dla spakowanego języka C# lub C++ WinUI 3 ) pokazują domyślny i zalecany sposób tworzenia nowego projektu WinUI 3.
Domyślnie plik projektu Package.appxmanifest zawiera konfigurację pełnego zaufania (czyli pakietu o średnim poziomie integralności). Odpowiednie sekcje wyglądają następująco:
...
<Applications>
<Application ...
EntryPoint="$targetentrypoint$">
...
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
...
Aby skonfigurować pakiet jako zawierający aplikację AppContainer, możesz edytować atrybut EntryPoint i usunąć deklarację możliwości z ograniczeniami (ale zachować element Capabilities ). Jak to:
...
<Applications>
<Application ...
EntryPoint="windows.partialTrustApplication">
...
</Application>
</Applications>
<Capabilities/>
...
Jeśli pakiet jest instalowany w Windows 10, wersja 2004 (10.0; Kompilacja 19041) i/lub nowsza następnie zamiast ustawiać EntryPoint można ustawić uap10:TrustLevel i uap10:RuntimeBehavior (po zadeklarowaniu prefiksu przestrzeni nazw XML, jak pokazano). Jak to:
<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/>
...
Aby uzyskać więcej informacji, zobacz następujące tematy:
- Element aplikacji
- uap10 został wprowadzony w Windows 10 w wersji 2004 (10.0; Kompilacja 19041)
- Typy aplikacji desktopowych
Konfigurowanie rozwiązania z dwoma projektami WinUI 3 dla AppContainer
W poprzedniej sekcji opisano proces MSIX dla pojedynczego projektu, który zalecamy i który jest domyślnym ustawieniem dla nowych projektów WinUI 3. Aby uzyskać więcej informacji, zobacz Package your app using single-project MSIX (Pakowanie aplikacji przy użyciu pliku MSIX pojedynczego projektu).
Jednak może istnieć projekt WinUI 3, który pochodzi sprzed wprowadzenia funkcji MSIX dla projektu jednolitego. W tym przypadku będziesz mieć dwa projekty w rozwiązaniu — projekt aplikacji oraz dodatkowy projekt pakietowania aplikacji Windows. Jeśli możesz przeprowadzić migrację projektu do jednoprojektowego MSIX, jest to idealne rozwiązanie. I będziesz w stanie postępować zgodnie ze wskazówkami w poprzedniej sekcji. Aby uzyskać więcej informacji, zobacz Package your app using single-project MSIX (Pakowanie aplikacji przy użyciu pliku MSIX pojedynczego projektu).
Jeśli nie możesz przeprowadzić migracji projektu do pojedynczego projektu MSIX, ta sekcja opisuje, jak skonfigurować pakiet jako zawierający aplikację AppContainer.
Windows Application Packaging Project oznacza ustawienie domyślne, które zastępuje konfigurację w Package.appxmanifest. Projekt zachowuje się tak, jakby w pliku projektu była właściwość TrustLevel ustawiona na wartość Full.
Aby rozwiązać ten problem z wartością właściwości, rozwiń węzeł Zależności, a następnie > projektu pakietowania i wybierz węzeł reprezentujący odwołanie do projektu WinUI 3. Następnie w oknie Visual Studio Properties (nie właściwości projektu) dla Poziom zaufania wybierz wartość właściwości Partial Trust.
Plik projektu pakietu zawiera teraz tę jawną właściwość:
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
I możesz teraz usunąć <rescap:Capability Name="runFullTrust" /> z pliku Package.appxmanifest projektu pakowania.
Konfigurowanie projektu aplikacji Windows (C++ Win32 WndProc-type app) dla AppContainer
Ta sekcja jest dla Ciebie, jeśli masz projekt typu C++ Win32 WndProc, który został utworzony za pomocą szablonu Windows Application Project projektu. Pierwszym krokiem, w skrócie, jest dodanie do rozwiązania projektu Windows Application Packaging Project. Szczegółowe informacje znajdują się w artykule Konfigurowanie aplikacji desktopowej na potrzeby tworzenia pakietów MSIX w Visual Studio. Ten temat dotyczy aplikacji na komputery stacjonarne napisanych w języku C++ lub C#.
Następnie otwórz plik projektu nowego projektu pakowania i dodaj właściwość TrustLevel do istniejącej właściwości ProjectReference w następujący sposób:
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
Podczas kompilacji może zostać wyświetlony błąd "błąd APPX1673: brak wymaganego elementu "PhoneIdentity" manifestu aplikacji". W takim przypadku zmodyfikuj Package.appxmanifest plik projektu w następujący sposób:
<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>
...
Konfigurowanie projektu WPF lub WinForms dla aplikacji AppContainer
Ta sekcja jest dla Ciebie, jeśli masz:
- Windows Presentation Foundation (WPF) projekt aplikacji WPF utworzony za pomocą szablonu projektu aplikacji WPF. Spowoduje to utworzenie projektu .NET i różni się on od szablonu projektu o nazwie WPF App (.NET Framework). lub
- projekt aplikacji Windows Forms (WinForms) stworzony przy użyciu szablonu projektu Windows Forms App w języku C#. Spowoduje to utworzenie projektu .NET i różni się on od szablonu projektu o nazwie Windows Forms App (.NET Framework).
Pierwszym krokiem, krótko mówiąc, jest dodanie do rozwiązania Projekt Windows Application Packaging. Więcej szczegółowych informacji o dokładnych krokach znajdziesz w artykule Konfigurowanie aplikacji komputerowej na potrzeby tworzenia pakietów MSIX w Visual Studio.
Następnie rozwiń w projekcie pakowania węzeł Dependencies>Applications i wybierz węzeł reprezentujący odwołanie do projektu WPF lub WinForms. Następnie w oknie Visual Studio Properties (nie właściwości projektu) dla Poziom zaufania wybierz wartość właściwości Partial Trust.
Tematy pokrewne
- Omówienie konteneryzacji MSIX
- Aplikacja AppContainer dla starszych aplikacji
- Utwórz nowy projekt dla spakowanej aplikacji desktopowej C# lub C++ WinUI 3
- Element aplikacji
- uap10 został wprowadzony w Windows 10 w wersji 2004 (10.0; Kompilacja 19041)
- Typy aplikacji desktopowych
- Spakuj aplikację, używając MSIX dla pojedynczego projektu
- Windows Presentation Foundation (WPF)
- Windows Forms (WinForms)
- Skonfiguruj aplikację pulpitową na potrzeby tworzenia pakietów MSIX w Visual Studio