Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Csomagtámogatási keretrendszer egy nyílt forráskódú készlet, amely segít javításokat alkalmazni a meglévő asztali alkalmazásra (a kód módosítása nélkül), hogy egy MSIX-tárolóban fusson. A csomagtámogatási keretrendszer segít az alkalmazásnak a modern futtatókörnyezet ajánlott eljárásainak követésében.
Ez a cikk a csomagtámogatási keretrendszer minden összetevőjét ismerteti, és lépésről lépésre ismerteti annak használatát.
A csomagtámogatási keretrendszerek ismertetése
A csomagtámogatási keretrendszer végrehajtható, futtatókörnyezet-kezelő DLL-t és futtatókörnyezet-javításokat tartalmaz.
A folyamat a következő:
- Hozzon létre egy konfigurációs fájlt, amely meghatározza az alkalmazásra alkalmazni kívánt javításokat.
- Módosítsa a csomagot úgy, hogy a Csomagtámogatási keretrendszer (PSF) indító végrehajtható fájljára mutasson.
Amikor a felhasználók elindítják az alkalmazást, a Csomagtámogatási keretrendszer indítója az első futtatható fájl, ami lefut. Beolvassa a konfigurációs fájlt, és injektálja a futtatókörnyezet javításait és a futtatókörnyezet-kezelő DLL-jét az alkalmazás folyamatába. A futtatókörnyezet-kezelő akkor alkalmazza a javítást, ha az alkalmazásnak szüksége van rá egy MSIX-tárolóban való futtatáshoz.
1. lépés: A csomagolt alkalmazások kompatibilitási problémáinak azonosítása
Először hozzon létre egy csomagot az alkalmazáshoz. Ezután telepítse, futtassa és figyelje meg a viselkedését. Előfordulhat, hogy hibaüzenetek érkeznek, amelyek segíthetnek a kompatibilitási probléma azonosításában. A Folyamatfigyelő használatával is azonosíthatja a problémákat. A gyakori problémák az alkalmazások által a munkakönyvtárra és a programútvonalak engedélyeire vonatkozó feltételezésekkel kapcsolatosak.
Probléma azonosítása a Folyamatfigyelő használatával
A Process Monitor egy hatékony segédprogram egy alkalmazás fájl- és beállításjegyzék-műveleteinek és eredményeinek megfigyeléséhez. Ez segíthet megérteni az alkalmazáskompatibilitási problémákat. A Folyamatfigyelő megnyitása után adjon hozzá egy szűrőt (Szűrőszűrő > ...), amely csak az alkalmazás végrehajtható eseményeit tartalmazza.
Megjelenik az események listája. Sok ilyen esemény esetén a SIKER szó megjelenik az Eredmény oszlopban.
Lehetőség van arra is, hogy szűrje az eseményeket, hogy csak a hibák jelenjenek meg.
Ha fájlrendszer-hozzáférési hibára gyanakszik, keressen olyan sikertelen eseményeket, amelyek a System32/SysWOW64 vagy a csomagfájl elérési útja alatt találhatók. A szűrők itt is segíthetnek. Kezdje a lista alján, és görgessen felfelé. A lista alján megjelenő hibák a közelmúltban történtek. Figyelje meg a legtöbb figyelmet olyan hibákra, amelyek sztringeket tartalmaznak, például a "hozzáférés megtagadva" és az "elérési út/név nem található", és hagyja figyelmen kívül a gyanúsnak nem tűnő dolgokat. A PSFSample-nek két problémája van. Ezeket a problémákat az alábbi képen látható listában tekintheti meg.
A képen megjelenő első probléma esetén az alkalmazás nem olvassa be a "C:\Windows\SysWOW64" elérési úton található "Config.txt" fájlból. Nem valószínű, hogy az alkalmazás közvetlenül erre az útvonalra próbál hivatkozni. Valószínűleg relatív elérési úttal próbál olvasni a fájlból, és alapértelmezés szerint a "System32/SysWOW64" az alkalmazás munkakönyvtára. Ez arra utal, hogy az alkalmazás azt várja, hogy az aktuális munkakönyvtára a csomag egy részének legyen beállítva. Az appx belsejébe tekintve láthatjuk, hogy a fájl ugyanabban a könyvtárban található, mint a végrehajtható fájl.
A második probléma az alábbi képen jelenik meg.
Ebben a problémában az alkalmazás nem ír .log fájlt a csomag elérési útjára. Ez arra utalhat, hogy a fájlátirányítás javítása segíthet.
2. lépés: Futtatási hiba javításának keresése
A PSF olyan futtatókörnyezeti javításokat tartalmaz, amelyeket most használhat, például a fájlátirányítási javítást.
Fájlátirányítási javítás
A Fájlátirányítási javítással átirányíthatja az adatok írására vagy olvasására tett kísérleteket egy olyan könyvtárban, amely nem érhető el egy MSIX-tárolóban futó alkalmazásból.
Ha például az alkalmazás egy olyan naplófájlba ír, amely ugyanabban a könyvtárban található, mint a végrehajtható alkalmazások, akkor a Fájlátirányítási javítással létrehozhatja a naplófájlt egy másik helyen, például a helyi alkalmazásadattárban.
Futtatókörnyezeti hibajavítások a közösségtől
Győződjön meg arról, hogy áttekinti a GitHub-oldal közösségi hozzájárulását. Lehetséges, hogy más fejlesztők megoldottak egy, az Önhöz hasonló problémát, és megosztottak egy futtatókörnyezeti javítást.
3. lépés: Futtatókörnyezeti javítás alkalmazása
A Windows SDK néhány egyszerű eszközével és az alábbi lépésekkel alkalmazhat egy meglévő futtatókörnyezeti javítást.
- Csomagelrendezési mappa létrehozása
- A Csomagtámogatási keretrendszer fájljainak lekérése
- Hozzáadás a csomaghoz
- A csomagjegyzék módosítása
- Konfigurációs fájl létrehozása
Vizsgáljuk meg az egyes feladatokat.
A csomagelrendezési mappa létrehozása
Ha már rendelkezik .msix (vagy .appx) fájllal, kibonthatja annak tartalmát egy elrendezési mappába, amely a csomag előkészítési területeként szolgál. Ezt egy parancssorból teheti meg a MakeAppx eszközzel, az SDK telepítési útvonala alapján, itt találja meg a makeappx.exe eszközt a Windows 10 rendszerű pc-n: x86: C:\Program Files (x86)\Windows Kits\10\bin\x86\makeappx.exe x64: C:\Program Files (x86)\Windows Kits\10\bin\x64\makeappx.exe
makeappx unpack /p PSFSamplePackage_1.0.60.0_AnyCPU_Debug.msix /d PackageContents
Ez a következőhöz hasonló eredményt ad.
Ha nem rendelkezik .msix (vagy .appx) fájllal, az alapoktól létrehozhatja a csomagmappát és a fájlokat.
A Csomagtámogatási keretrendszer fájljainak lekérése
A PSF Nuget-csomagot az önálló Nuget parancssori eszközzel vagy a Visual Studióval szerezheti be.
A csomag lekérése a parancssori eszközzel
Telepítse a Nuget parancssori eszközt a következő helyről: https://www.nuget.org/downloads. Ezután a Nuget parancssorból futtassa a következő parancsot:
nuget install Microsoft.PackageSupportFramework
Másik lehetőségként átnevezheti a csomagbővítményt .zip és kibonthatja. Az összes szükséges fájl a /bin mappában lesz.
A csomag lekérése a Visual Studióval
A Visual Studióban kattintson a jobb gombbal a megoldásra vagy a projektcsomópontra, és válasszon egyet a Nuget Packages kezelése parancs közül. Keresse meg a Microsoft.PackageSupportFramework vagy a PSF függvényt, hogy megtalálja a csomagot a Nuget.org. Ezután telepítse.
A Csomagtámogatási keretrendszer fájljainak hozzáadása a csomaghoz
Adja hozzá a szükséges 32 bites és 64 bites PSF-DLL-eket és végrehajtható fájlokat a csomagkönyvtárhoz. Útmutatóként használja az alábbi táblázatot. A szükséges futtatókörnyezeti javításokat is tartalmaznia kell. A példánkban a fájlátirányítási futtatókörnyezet javítására van szükség.
Az alkalmazás végrehajtható: x64 | Az alkalmazás végrehajtható fájlja: x86 |
---|---|
PSFLauncher64.exe | PSFLauncher32.exe |
PSFRuntime64.dll | PSFRuntime32.dll |
PSFRunDll64.exe | PSFRunDll32.exe |
A csomag tartalmának így kell kinéznie.
A csomagjegyzék módosítása
Nyissa meg a csomagjegyzéket egy szövegszerkesztőben, majd állítsa az Executable
Application
elem attribútumát a PSF Launcher végrehajtható fájljának nevére. Ha ismeri a célalkalmazás architektúráját, válassza ki a megfelelő verziót, PSFLauncher32.exe vagy PSFLauncher64.exe. Ha nem, PSFLauncher32.exe minden esetben működni fog. Íme egy példa.
<Package ...>
...
<Applications>
<Application Id="PSFSample"
Executable="PSFLauncher32.exe"
EntryPoint="Windows.FullTrustApplication">
...
</Application>
</Applications>
</Package>
Konfigurációs fájl létrehozása
Hozzon létre egy fájlnevet config.json
, és mentse a fájlt a csomag gyökérmappájába. Módosítsa a config.json fájl deklarált alkalmazásazonosítóját, hogy az az imént lecserélt végrehajthatóra mutasson. A Folyamatfigyelő használatával szerzett ismeretek segítségével beállíthatja a munkakönyvtárat, valamint a fájlátirányítási javítással átirányíthatja az olvasásokat és írásokat .log fájlokra a csomag relatív "PSFSampleApp" könyvtárában.
{
"applications": [
{
"id": "PSFSample",
"executable": "PSFSampleApp/PSFSample.exe",
"workingDirectory": "PSFSampleApp/"
}
],
"processes": [
{
"executable": "PSFSample",
"fixups": [
{
"dll": "FileRedirectionFixup.dll",
"config": {
"redirectedPaths": {
"packageRelative": [
{
"base": "PSFSampleApp/",
"patterns": [
".*\\.log"
]
}
]
}
}
}
]
}
]
}
Az alábbi útmutató a config.json sémához:
Tömb | kulcs | Érték |
---|---|---|
alkalmazások | azonosító | Használja az attribútum Id értékét a csomagjegyzék Application eleménél. |
alkalmazások | végrehajtható | A elindítandó végrehajtható fájl csomaghoz viszonyított elérési útja. A legtöbb esetben a módosítás előtt lekérheti ezt az értéket a csomagjegyzékfájlból. Ez a Executable attribútum Application elem értéke. |
alkalmazások | workingDirectory | (Nem kötelező) A csomaghoz viszonyított elérési út, amelyet a kezdő alkalmazás munkakönyvtáraként kell használni. Ha nem állítja be ezt az értéket, az operációs rendszer a System32 címtárat használja az alkalmazás munkakönyvtáraként. |
Folyamatok | végrehajtható | A legtöbb esetben ez lesz a executable név, amelyet fent konfiguráltak, az elérési út és a fájlkiterjesztés eltávolításával. |
Javítások | DLL | A javítás csomag-relatív elérési útja, a betöltendő formátum: .msix/.appx. |
Javítások | konfig | (Nem kötelező) A hibajavítási dll viselkedését szabályozza. Ennek az értéknek a pontos formátuma fixup-by-fixup alapon változik, mivel az egyes javítások igény szerint értelmezhetik ezt a "blobot". |
A applications
, processes
és fixups
a kulcsok tömbök. Ez azt jelenti, hogy a config.json fájllal több alkalmazást, folyamatot és hibajavítási DLL-t is megadhat.
Az alkalmazás csomagolása és tesztelése
Ezután hozzon létre egy csomagot.
makeappx pack /d PackageContents /p PSFSamplePackageFixup.msix
Ezután írja alá.
signtool sign /a /v /fd sha256 /f ExportedSigningCertificate.pfx PSFSamplePackageFixup.msix
További információ: csomagaláíró tanúsítvány létrehozása és csomag aláírása a signtool használatával
A PowerShell használatával telepítse a csomagot.
Megjegyzés:
Először ne felejtse el eltávolítani a csomagot.
powershell Add-AppPackage .\PSFSamplePackageFixup.msix
Futtassa az alkalmazást, és figyelje meg a viselkedést a futásidejű javítás alkalmazásával. Szükség szerint ismételje meg a diagnosztikai és csomagolási lépéseket.
Ellenőrizze, hogy fut-e a csomagtámogatási keretrendszer
Ellenőrizheti, hogy a futásidejű javítás fut-e. Ennek egyik módja, ha megnyitja a Feladatkezelőt , és a További részletek elemre kattint. Keresse meg azt az alkalmazást, amelyre a csomagtámogatási keretrendszert alkalmazták, és bontsa ki az alkalmazás részleteit további részletekért. Látnia kell, hogy a csomagtámogatási keretrendszer fut.
A nyomkövetési javítás használata
A csomagolt alkalmazáskompatibilitási problémák diagnosztizálásának egy alternatív módja a Trace Fixup használata. Ez a DLL a PSF részét képezi, és részletes diagnosztikai nézetet nyújt az alkalmazás viselkedéséről, hasonlóan a Folyamatfigyelőhöz. Kifejezetten az alkalmazáskompatibilitási problémák feltárására szolgál. A Nyomkövetési javítás használatához adja hozzá a DLL-t a csomaghoz. Adja hozzá a következő töredéket a config.jsonszakaszhoz, majd csomagolja be és telepítse az alkalmazást.
{
"dll": "TraceFixup.dll",
"config": {
"traceLevels": {
"filesystem": "allFailures"
}
}
}
Alapértelmezés szerint a nyomkövetési javítás kiszűri azokat a hibákat, amelyek "vártnak" tekinthetők. Előfordulhat például, hogy az alkalmazások feltétel nélkül próbálnak törölni egy fájlt anélkül, hogy ellenőrizték volna, hogy létezik-e már, figyelmen kívül hagyva az eredményt. Ennek az a sajnálatos következménye, hogy egyes váratlan hibák kiszűrhetők, ezért a fenti példában úgy döntünk, hogy minden hibát megkapunk a fájlrendszerfüggvényektől. Ezt azért tesszük, mert tudjuk, hogy a Config.txt fájlból való olvasási kísérlet a "fájl nem található" üzenettel meghiúsul. Ez egy gyakran megfigyelt hiba, amely általában nem számít váratlannak. A gyakorlatban a legjobb, ha csak váratlan hibákra szűr, majd visszaesik az összes hibára, ha olyan probléma merül fel, amely továbbra sem azonosítható.
Alapértelmezés szerint a nyomkövetési javítás kimenetét a rendszer elküldi a csatolt hibakeresőnek. Ebben a példában nem fogunk hibakeresőt csatolni, hanem a SysInternals DebugView programját fogjuk használni a kimenet megtekintéséhez. Az alkalmazás futtatása után ugyanazokat a hibákat láthatjuk, mint korábban, ami ugyanarra a futtatókörnyezeti javításra mutatna.
A futtatókörnyezeti javítás hibakeresése, bővítése vagy új létrehozása.
A Visual Studio használatával hibakeresést végezhet a futtatókörnyezet javításán, kibővítheti a futtatókörnyezeti javításokat, vagy létrehozhat egyet az alapoktól. A sikeresség érdekében meg kell tennie ezeket a dolgokat.
- Csomagolási projekt hozzáadása
- Projektfeladat hozzáadása a futásidejű javításhoz
- Olyan projekt hozzáadása, amely elindítja a PSF-indító fájlt
- A csomagolási projekt konfigurálása
Ha elkészült, a megoldás így fog kinézni.
Tekintsük meg az egyes projekteket ebben a példában.
Projekt | Cél |
---|---|
Asztali alkalmazás csomag | Ez a projekt a Windows Application Packaging projekten alapul, és az MSIX-csomagot adja ki. |
Runtimefix | Ez egy C++ Dynamic-Linked könyvtárprojekt, amely egy vagy több olyan helyettesítő függvényt tartalmaz, amelyek futásidejű javításként szolgálnak. |
PSFLauncher | Ez a C++ üres projekt. Ez a projekt a csomagtámogatási keretrendszer futtatókörnyezetben terjeszthető fájljainak gyűjtésére alkalmas hely. Végrehajtható fájlt ad ki. Ez a végrehajtható fájl az első dolog, amely a megoldás indításakor fut. |
WinFormsDesktopApplication | Ez a projekt egy asztali alkalmazás forráskódját tartalmazza. |
Az összes ilyen típusú projektet tartalmazó teljes minta megtekintéséhez tekintse meg a PSFSample című témakört.
Tekintsük át az egyes projektek megoldásban való létrehozásának és konfigurálásának lépéseit.
Csomagmegoldás létrehozása
Ha még nem rendelkezik megoldással az asztali alkalmazáshoz, hozzon létre egy új üres megoldást a Visual Studióban.
Érdemes lehet bármilyen alkalmazásprojektet is hozzáadnia.
Csomagolási projekt hozzáadása
Ha még nem rendelkezik Windows Application Packaging Project-projektel, hozzon létre egyet, és adja hozzá a megoldáshoz.
A Windows Application Packaging projektről további információt az Alkalmazás csomagolása a Visual Studióval című témakörben talál.
A Megoldáskezelőben kattintson a jobb gombbal a csomagolási projektre, válassza a Szerkesztés lehetőséget, majd adja hozzá a projektfájl aljára:
<Target Name="PSFRemoveSourceProject" AfterTargets="ExpandProjectReferences" BeforeTargets="_ConvertItems">
<ItemGroup>
<FilteredNonWapProjProjectOutput Include="@(_FilteredNonWapProjProjectOutput)">
<SourceProject Condition="'%(_FilteredNonWapProjProjectOutput.SourceProject)'=='<your runtime fix project name goes here>'" />
</FilteredNonWapProjProjectOutput>
<_FilteredNonWapProjProjectOutput Remove="@(_FilteredNonWapProjProjectOutput)" />
<_FilteredNonWapProjProjectOutput Include="@(FilteredNonWapProjProjectOutput)" />
</ItemGroup>
</Target>
Projektfeladat hozzáadása a futásidejű javításhoz
Adjon hozzá egy C++ Dynamic-Link Könyvtár (DLL) projektet a megoldáshoz.
Kattintson a jobb gombbal a projektre, majd válassza a Tulajdonságok parancsot.
A tulajdonságoldalakon keresse meg a C++ Language Standard mezőt, majd a mező melletti legördülő listában válassza az ISO C++17 Standard (/std:c++17) beállítást.
Kattintson a jobb gombbal a projektre, majd a helyi menüben válassza a Nuget-csomagok kezelése lehetőséget. Győződjön meg arról, hogy a Csomag forrásbeállításaAz összes vagy nuget.org értékre van állítva.
Kattintson a mező melletti Beállítások ikonra.
Keresse meg a PSF* Nuget-csomagot, majd telepítse a projekthez.
Ha egy meglévő futtatókörnyezeti javítást szeretne hibakereséssel vagy bővítéssel bővíteni, adja hozzá az útmutató Futásidejű javítások keresése című szakaszában ismertetett útmutató segítségével beszerzett futtatókörnyezet-javításfájlokat .
Ha egy teljesen új javítást szeretne létrehozni, még ne adjon hozzá semmit ehhez a projekthez. Az útmutató későbbi részében segítünk a megfelelő fájlok hozzáadásában ebben a projektben. Egyelőre folytatjuk a megoldás beállítását.
Olyan projekt hozzáadása, amely elindítja a PSF-indító fájlt
Adjon hozzá egy C++ Üres projekt projektet a megoldáshoz.
Adja hozzá a PSF Nuget-csomagot ehhez a projekthez az előző szakaszban ismertetett útmutatással.
Nyissa meg a projekt tulajdonságlapjait, és az Általános beállítások lapon állítsa be a Célnév tulajdonságot PSFLauncher32
az alkalmazás architektúrájától függően.PSFLauncher64
Adjon hozzá egy projekthivatkozást a futtatókörnyezeti javítás projektjéhez a megoldásban.
Kattintson a jobb gombbal a hivatkozásra, majd a Tulajdonságok ablakban alkalmazza ezeket az értékeket.
Ingatlan | Érték |
---|---|
Helyi másolás | Igaz |
Helyi műholdas összeállítások másolása | Igaz |
Referenciaszerelvény kimenete | Igaz |
Könyvtárfüggőségek összekapcsolása | Téves |
Hivatkozáskönyvtár függőségi bemeneteinek összekapcsolása | Téves |
A csomagolási projekt konfigurálása
A csomagolási projektben kattintson a jobb gombbal az Alkalmazások mappára, majd válassza a Hivatkozás hozzáadása parancsot.
Válassza ki a PSF Launcher projektet és az asztali alkalmazásprojektet, majd kattintson az OK gombra.
Megjegyzés:
Ha nem rendelkezik az alkalmazás forráskóddal, egyszerűen válassza ki a PSF Launcher projektet. Bemutatjuk, hogyan hivatkozhat a végrehajtható fájlra konfigurációs fájl létrehozásakor.
Az Alkalmazások csomóponton kattintson a jobb gombbal a PSF-indítóalkalmazásra, majd válassza a Beállítás belépési pontként lehetőséget.
Adjon hozzá egy, a csomagolási projekthez elnevezett config.json
fájlt, majd másolja és illessze be a következő json-szöveget a fájlba. Állítsa a Package Actiontulajdonságot Tartalom értékre.
{
"applications": [
{
"id": "",
"executable": "",
"workingDirectory": ""
}
],
"processes": [
{
"executable": "",
"fixups": [
{
"dll": "",
"config": {
}
}
]
}
]
}
Adjon meg egy értéket az egyes kulcsokhoz. Használja ezt a táblázatot útmutatóként.
Tömb | kulcs | Érték |
---|---|---|
alkalmazások | azonosító | Használja az attribútum Id értékét a csomagjegyzék Application eleménél. |
alkalmazások | végrehajtható | A elindítandó végrehajtható fájl csomaghoz viszonyított elérési útja. A legtöbb esetben a módosítás előtt lekérheti ezt az értéket a csomagjegyzékfájlból. Ez a Executable attribútum Application elem értéke. |
alkalmazások | workingDirectory | (Nem kötelező) A csomaghoz viszonyított elérési út, amelyet a kezdő alkalmazás munkakönyvtáraként kell használni. Ha nem állítja be ezt az értéket, az operációs rendszer a System32 címtárat használja az alkalmazás munkakönyvtáraként. |
Folyamatok | végrehajtható | A legtöbb esetben ez lesz a executable név, amelyet fent konfiguráltak, az elérési út és a fájlkiterjesztés eltávolításával. |
Javítások | DLL | A betöltendő javító DLL csomaghoz viszonyított elérési útja. |
Javítások | konfig | (Nem kötelező) A hibajavítási DLL viselkedését szabályozza. Ennek az értéknek a pontos formátuma fixup-by-fixup alapon változik, mivel az egyes javítások igény szerint értelmezhetik ezt a "blobot". |
Ha elkészült, a config.json
fájl így fog kinézni.
{
"applications": [
{
"id": "DesktopApplication",
"executable": "DesktopApplication/WinFormsDesktopApplication.exe",
"workingDirectory": "WinFormsDesktopApplication"
}
],
"processes": [
{
"executable": ".*App.*",
"fixups": [ { "dll": "RuntimeFix.dll" } ]
}
]
}
Megjegyzés:
A applications
, processes
és fixups
a kulcsok tömbök. Ez azt jelenti, hogy a config.json fájllal több alkalmazást, folyamatot és hibajavítási DLL-t is megadhat.
Futtatókörnyezeti javítás hibakeresése
A Visual Studióban nyomja le az F5 billentyűt a hibakereső elindításához. Az első dolog, ami elindul, a PSF Launcher alkalmazás, amely viszont elindítja a cél asztali alkalmazást. A cél asztali alkalmazás hibakereséséhez manuálisan kell csatolnia az asztali alkalmazásfolyamathoz a Debug-Attach> to Process lehetőséget, majd ki kell választania az alkalmazásfolyamatot. Ha engedélyezni szeretné egy .NET-alkalmazás hibakeresését natív futtatókörnyezeti javítás DLL-vel, válassza ki a felügyelt és a natív kódtípusokat (vegyes módú hibakeresés).
Miután beállította ezt a beállítást, töréspontokat állíthat be az asztali alkalmazás kódsorai és a futtatókörnyezeti javítás projekt kódsorai mellett. Ha nem rendelkezik az alkalmazás forráskóddal, akkor csak a futtatókörnyezeti javítás projektben lévő kódsorok mellett állíthat be töréspontokat.
Mivel az F5 hibakeresése úgy futtatja az alkalmazást, hogy laza fájlokat helyez üzembe a csomagelrendezési mappa elérési útján, ahelyett, hogy .msix/.appx csomagból telepíti, az elrendezési mappa általában nem ugyanazokat a biztonsági korlátozásokat alkalmazza, mint a telepített csomagmappák. Ennek eredményeképpen előfordulhat, hogy a futtatókörnyezeti javítás alkalmazása előtt nem lehet reprodukálni a csomag elérési útjának hozzáférés-megtagadási hibáit.
A probléma megoldásához használja az .msix/.appx csomagtelepítést az F5 laza fájltelepítés helyett. .msix/.appx csomagfájl létrehozásához használja a MakeAppx segédprogramot a Windows SDK-ból a fent leírtak szerint. Vagy a Visual Studióban kattintson a jobb gombbal az alkalmazásprojekt csomópontra, és válassza az Áruház –> Alkalmazáscsomagok létrehozása lehetőséget.
A Visual Studióval kapcsolatos másik probléma, hogy nem rendelkezik beépített támogatással a hibakereső által indított gyermekfolyamatokhoz való csatoláshoz. Ez megnehezíti a logika hibakeresését a célalkalmazás indítási útvonalán, amelyet a Visual Studio-nak manuálisan kell csatolnia az indítás után.
A probléma megoldásához használjon egy hibakeresőt, amely támogatja a gyermekfolyamat csatolását. Vegye figyelembe, hogy általában nem lehet just-in-time (JIT) hibakeresőt csatolni a célalkalmazáshoz. Ennek az az oka, hogy a legtöbb JIT-technika magában foglalja a hibakereső elindítását a célalkalmazás helyett az ImageFileExecutionOptions beállításkulcson keresztül. Ez kiiktatja azt a detouring mechanizmust, amelyet a PSFLauncher.exe a FixupRuntime.dll célalkalmazásba történő injektálásához használ. A Windows hibakeresési eszközei között szereplő, és a Windows SDK-ból beszerzett WinDbg támogatja a gyermekfolyamat-csatolást. Mostantól támogatja az UWP-alkalmazások közvetlen indítását és hibakeresését is.
A célalkalmazás gyermekfolyamatként történő indításának hibakereséséhez indítsa el a műveletet WinDbg
.
windbg.exe -plmPackage PSFSampleWithFixup_1.0.59.0_x86__7s220nvg1hg3m -plmApp PSFSample
A WinDbg
parancssornál engedélyezze a gyermekfolyamat hibakeresését, és állítson be megfelelő töréspontokat.
.childdbg 1
g
(hajtsa végre, amíg a célalkalmazás el nem indul és belép a hibakeresőbe)
sxe ld fixup.dll
g
(végrehajtás a javítás DLL-jének betöltéséig)
bp ...
Megjegyzés:
A PLMDebug használatával hibakeresőt is csatolhat egy alkalmazáshoz indításkor, és a Windows hibakeresési eszközeiben is megtalálható. Ez azonban összetettebb, mint a WinDbg által biztosított közvetlen támogatás.
Támogatás
Kérdése van? Kérdezzen minket a Csomagtámogatási keretrendszer beszélgetési területéről az MSIX technikai közösség webhelyén.