Delen via


Windows Desktop Bridge-app testen

Desktop Bridge-apps (zie Een MSIX-pakket bouwen vanuit uw code) zijn Windows-bureaublad-apps geconverteerd naar UWP-apps (Universal Windows Platform) met behulp van de Desktop Bridge. Na de conversie wordt de Windows-bureaubladtoepassing verpakt, onderhouden en geïmplementeerd in de vorm van een UWP-app-pakket (een .appx of .appxbundle) gericht op Windows 10 Desktop.

Verplichte versus optionele tests

Optionele tests voor Windows Desktop Bridge-apps zijn alleen informatief en worden niet gebruikt om uw app te evalueren tijdens de onboarding van de Microsoft Store. We raden u aan deze testresultaten te onderzoeken om apps van betere kwaliteit te produceren. De algemene pass/fail-criteria voor het onboarden van winkels worden bepaald door de vereiste tests en niet door deze optionele tests.

Huidige optionele tests

1. Digitaal ondertekende bestandstest

achtergrond
Met deze test wordt gecontroleerd of alle pe-bestanden (portable executable) een geldige handtekening bevatten. Door de aanwezigheid van digitaal ondertekende bestanden kunnen gebruikers weten dat de software echt is.

Testdetails
De test scant alle draagbare uitvoerbare bestanden in het pakket en controleert hun headers op een handtekening. Alle PE-bestanden worden aanbevolen digitaal te worden ondertekend. Er wordt een waarschuwing gegenereerd als een van de PE-bestanden niet is ondertekend.

corrigerende acties
Het is altijd raadzaam om digitaal ondertekende bestanden te hebben. Zie Inleiding tot ondertekening van programmacodevoor meer informatie.

2. Bestandskoppelingswerkwoorden

Achtergrond
Met deze test wordt het pakketregister gescand om te controleren of er bestandskoppelingswoorden zijn geregistreerd.

Testdetails
Geconverteerde bureaublad-apps kunnen worden uitgebreid met een breed scala aan Windows Runtime-API's. Met deze test wordt gecontroleerd of de binaire UWP-bestanden in de app geen niet-Windows Runtime-API's aanroepen. Binaire UWP-bestanden hebben de AppContainer vlag ingesteld.

corrigerende acties
Zie Desktop naar UWP Bridge: App-extensies voor een uitleg van deze extensies en hoe u deze correct kunt gebruiken.

3. Configuratietest voor foutopsporing

Met deze test wordt gecontroleerd of de .msix of .appx geen foutopsporingsbuild is.

achtergrond
Als u wilt worden gecertificeerd voor de Microsoft Store, mogen apps niet worden gecompileerd voor foutopsporing en mogen ze niet verwijzen naar foutopsporingsversies van een uitvoerbaar bestand. Daarnaast moet u uw code optimaliseren voor uw app zodat deze test kan worden doorstaan.

Testdetails
Test de app om ervoor te zorgen dat deze geen foutopsporingsbuild is en niet is gekoppeld aan frameworks voor foutopsporing.

corrigerende acties

  • Bouw de app als een release-build voordat u deze indient bij de Microsoft Store.
  • Zorg ervoor dat u de juiste versie van .NET Framework hebt geïnstalleerd.
  • Zorg ervoor dat de app geen koppeling maakt naar foutopsporingsversies van een framework en dat deze wordt gebouwd met een releaseversie. Als deze app .NET-onderdelen bevat, controleert u of u de juiste versie van het .NET Framework hebt geïnstalleerd.

4. Pakketsaniteitstest

4.1 Gebruik van archiefbestanden

Achtergrond
Met deze test kunt u betere Desktop Bridge-apps bouwen om te worden uitgevoerd op Windows 10 S--machines.

Testdetails
Met deze test wordt gecontroleerd op alle uitvoerbare bestanden in gearchiveerde bestanden of zelfuitpakkende inhoud. Omdat uitvoerbare bestanden in dit type inhoud niet zijn ondertekend tijdens onboarding naar Windows Store, wordt de app mogelijk niet uitgevoerd zoals verwacht op Windows 10 S-systemen.

corrigerende acties

  • Overweeg om de door de test gemarkeerde bestanden te evalueren om te bepalen of er invloed is op de werking van uw app in een Windows 10 S-omgeving.
  • Als uw app wordt beïnvloed, verwijdert u de uitvoerbare bestanden uit de gearchiveerde bestanden en gebruikt u geen zelf-extraherende archieven om uitvoerbare bestanden op schijf te plaatsen. Dit moet het verlies van app-functionaliteit voorkomen.

4.2 Geblokkeerde uitvoerbare bestanden

achtergrond
Met deze test kunt u betere Desktop Bridge-apps bouwen om te worden uitgevoerd op Windows 10 S--machines.

Test details
Met deze test wordt gecontroleerd of de app uitvoerbare bestanden probeert te starten. Dit is beperkt op Windows 10 S-systemen. Apps die afhankelijk zijn van deze mogelijkheid, worden mogelijk niet uitgevoerd zoals verwacht op Windows 10 S-systemen.

corrigerende acties

  • Bepaal welke van de gemarkeerde vermeldingen uit de test een aanroep vertegenwoordigen om een uitvoerbaar bestand te starten dat geen deel uitmaakt van uw app en verwijder deze aanroepen.
  • Als de gemarkeerde bestanden deel uitmaken van uw toepassing, kunt u de waarschuwing negeren.

Huidige vereiste testen

1. App Capabilities test (speciale gebruiksmogelijkheden)

achtergrond
Speciale gebruiksmogelijkheden zijn bedoeld voor zeer specifieke scenario's. Alleen bedrijfsaccounts mogen deze mogelijkheden gebruiken.

Testdetails
Controleer of de app een van de onderstaande mogelijkheden declareren:

  • Enterprise-authenticatie
  • GedeeldeGebruikerscertificaten
  • Documentenbibliotheek

Als een van deze mogelijkheden wordt gedeclareerd, geeft de test een waarschuwing weer voor de gebruiker.

corrigerende acties
Overweeg om de speciale functionaliteit voor gebruik te verwijderen als uw app deze niet nodig heeft. Daarnaast is het gebruik van deze mogelijkheden onderhevig aan aanvullende beoordeling van onboardingbeleid.

Tests van app-manifestbronnen

2.1 Validatie van app-resources

Uw app wordt mogelijk niet goed geïnstalleerd als de tekenreeksen of afbeeldingen die in het manifest van de app zijn gedeclareerd, onjuist zijn. Als de app wel wordt geïnstalleerd met deze fouten, wordt het logo van uw app of andere afbeeldingen mogelijk niet correct weergegeven.

Testdetails
Inspecteert de resources die zijn gedefinieerd in het app-manifest om ervoor te zorgen dat ze aanwezig en geldig zijn.

corrigerende actie
Gebruik de volgende tabel als richtlijn.

Foutmelding Opmerkingen
De afbeelding {image name} definieert zowel schaal- als doelgrootte-kwalificaties; u kunt slechts één kwalificatie tegelijk definiëren. U kunt afbeeldingen aanpassen voor verschillende resoluties. In het werkelijke bericht bevat {image name} de naam van de afbeelding met de fout. Zorg ervoor dat elke afbeelding ofwel Schaal of de Doelgrootte als kwalificatie definieert.
De groottebeperkingen voor de afbeelding {image name} zijn mislukt. Zorg ervoor dat alle app-afbeeldingen de juiste groottebeperkingen hebben. In het werkelijke bericht bevat {image name} de naam van de afbeelding met de fout.
De afbeelding {image name} ontbreekt in het pakket. Er ontbreekt een vereiste afbeelding. In het werkelijke bericht bevat {image name} de naam van de afbeelding die ontbreekt.
De afbeelding {image name} is geen geldig afbeeldingsbestand. Zorg ervoor dat alle app-afbeeldingen voldoen aan het juiste bestandstypebeperkingen. In het werkelijke bericht bevat {image name} de naam van de afbeelding die ongeldig is.
De afbeelding BadgeLogo heeft een ABGR-waarde {value} op positie (x, y) die niet geldig is. De pixel moet wit (##FFFFFF) of transparant (00######) zijn Het badgelogo is een afbeelding die naast de badgemelding wordt weergegeven om de app op het vergrendelingsscherm te identificeren. Deze afbeelding moet monochromatisch zijn (deze kan alleen witte en transparante pixels bevatten). In het werkelijke bericht bevat {value} de kleurwaarde in de afbeelding die niet geldig is.
De afbeelding BadgeLogo heeft een ABGR-waarde {value} op positie (x, y) die niet geldig is voor een witte afbeelding met hoog contrast. De pixel moet (##2A2A2A) of donkerder of transparanter zijn (00######). Het badgelogo is een afbeelding die naast de badgemelding wordt weergegeven om de app op het vergrendelingsscherm te identificeren. Omdat het badgelogo wordt weergegeven op een witte achtergrond wanneer het wit met hoog contrast is, moet het een donkere versie van het normale badgelogo zijn. In wit met hoog contrast kan het badgelogo alleen pixels bevatten die donkerder zijn dan (##2A2A2A) of transparant. In het werkelijke bericht bevat {value} de kleurwaarde in de afbeelding die niet geldig is.
De afbeelding moet ten minste één variant definiëren zonder targetSize-kwalificatie. Het moet een schaalkwalificatie definiëren of Schaal en TargetSize niet opgegeven laten, wat standaard wordt ingesteld op Schaal-100. Zie de handleidingen voor responsief ontwerp en app-resourcesvoor meer informatie.
Er ontbreekt een bestand resources.pri in het pakket. Als u lokaliseerbare inhoud in uw app-manifest hebt, moet u ervoor zorgen dat het pakket van uw app een geldig resources.pri-bestand bevat.
Het bestand resources.pri moet een middelenkaart bevatten met een naam die overeenstemt met de pakketnaam {volledige naam van pakket} U kunt deze fout krijgen als het manifest is gewijzigd en de naam van de resourcetoewijzing in resources.pri niet meer overeenkomt met de pakketnaam in het manifest. In het werkelijke bericht bevat {package full name} de pakketnaam die resources.pri moet bevatten. U kunt dit oplossen door resources.pri opnieuw op te bouwen en de eenvoudigste manier om dit te doen, is door het pakket van de app opnieuw op te bouwen.
Het bestand resources.pri mag autoMerge niet hebben ingeschakeld. MakePRI.exe ondersteunt een optie met de naam AutoMerge. De standaardwaarde van AutoMerge is uitgeschakeld. Wanneer deze functie is ingeschakeld, worden de taalpakketbronnen van een app samengevoegd tot één resources.pri tijdens runtime. Dit wordt niet aanbevolen voor apps die u wilt distribueren via de Microsoft Store. De resources.pri van een app die wordt gedistribueerd via de Microsoft Store, moet zich in de hoofdmap van het app-pakket bevinden en alle taalverwijzingen bevatten die door de app worden ondersteund.
De tekenreeks {string} overschrijdt de maximale lengtebeperking van {number} tekens. Raadpleeg de App-pakketvereisten. In het werkelijke bericht wordt {string} vervangen door de tekenreeks met de fout en {number} geeft de maximale lengte aan.
De tekenreeks {string} mag geen witruimte aan het begin of het einde hebben. Het schema voor de elementen in het app-manifest laat geen voorloop- of volgspaties toe. In het werkelijke bericht wordt {string} vervangen door de tekenreeks met de fout. Zorg ervoor dat geen van de gelokaliseerde waarden van de manifestvelden in resources.pri voorloop- of volgspaties bevat.
De tekenreeks moet niet leeg zijn (groter dan nul in lengte) Zie App-pakketvereistenvoor meer informatie.
Er is geen standaardresource opgegeven in het bestand resources.pri. Zie de handleiding voor app-resourcesvoor meer informatie. In de standaard buildconfiguratie bevat Visual Studio alleen schaal-200 afbeeldingsbronnen in het app-pakket wanneer bundels worden gegenereerd, terwijl andere bronnen in het resourcepakket worden geplaatst. Zorg ervoor dat u schaal-200 afbeeldingsresources opneemt of configureer uw project om de resources op te nemen die u hebt.
Er is geen resourcewaarde opgegeven in het bestand resources.pri. Zorg ervoor dat het app-manifest geldige resources bevat die zijn gedefinieerd in resources.pri.
Het afbeeldingsbestand {bestandsnaam} moet kleiner zijn dan 204800 bytes. Verklein de grootte van de aangegeven afbeeldingen.
Het bestand {bestandsnaam} mag geen sectie met omgekeerde toewijzingen bevatten. Terwijl de omgekeerde kaart wordt gegenereerd tijdens het aanroepen van makepri.exein Visual Studio 'F5-foutopsporing', kan deze worden verwijderd door makepri.exe uit te voeren zonder de parameter /m bij het genereren van een pri-bestand.

2.2 Huisstijlvalidatie

achtergrond
Desktop Bridge Apps worden verwacht volledig functioneel te zijn. Apps die gebruikmaken van de standaardafbeeldingen (van sjablonen of SDK-voorbeelden) bieden een slechte gebruikerservaring en kunnen niet eenvoudig worden geïdentificeerd in de winkelcatalogus.

Testdetails
De test controleert of de afbeeldingen die door de app worden gebruikt, geen standaardafbeeldingen zijn uit SDK-voorbeelden of vanuit Visual Studio.

corrigerende acties
Vervang standaardafbeeldingen door iets duidelijkers en representatiever voor uw app.

3. Pakketcompatibiliteitstests

3.1 App-manifest

Test de inhoud van het app-manifest om te controleren of de inhoud juist is.

Achtergrond
Apps moeten een correct opgemaakt app-manifest hebben.

Testdetails
Onderzoekt het app-manifest om te controleren of de inhoud juist is, zoals beschreven in de app-pakketvereisten. In deze test worden de volgende controles uitgevoerd:

  • bestandsextensies en protocollen
    Uw app kan de bestandstypen declareren waaraan deze kan worden gekoppeld. Een declaratie van een groot aantal ongebruikelijke bestandstypen zorgt voor een slechtere gebruikerservaring. Deze test beperkt het aantal bestandsextensies waaraan een app kan worden gekoppeld.
  • Framework-afhankelijkheidsregel
    Met deze test wordt de vereiste afgedwongen dat apps de juiste afhankelijkheden van de UWP declareren. Als er een ongepaste afhankelijkheid is, mislukt deze test. Als er een verschil is tussen de besturingssysteemversie waar de app op is gericht en de frameworkafhankelijkheden, dan zal de test mislukken. De test mislukt ook als de app verwijst naar een preview-versie van de framework-DLL's.
  • IPC-verificatie (Inter-Process Communication)
    Met deze test wordt afgedwongen dat Desktop Bridge-apps niet buiten de app-container communiceren met bureaubladonderdelen. Communicatie tussen processen is alleen bedoeld voor apps die naast elkaar zijn geladen. Apps die de ActivatableClassAttribute- opgeven met een naam die gelijk is aan DesktopApplicationPath mislukken deze test.

corrigerende actie
Controleer het manifest van de app op basis van de vereisten die worden beschreven in de App-pakketvereisten.

3.2 Aantal toepassingen

Met deze test wordt gecontroleerd of een app-pakket (.appx, app-bundel) één toepassing bevat.

Achtergrond
Deze test wordt geïmplementeerd volgens het Store-beleid.

Testdetails
Met deze test wordt gecontroleerd of het totale aantal .appx pakketten in de bundel kleiner is dan 512 en dat er slechts één hoofdpakket in de bundel staat. Ook wordt gecontroleerd of het revisienummer van de bundelversie is ingesteld op 0.

corrigerende acties
Zorg ervoor dat het app-pakket en de bundel voldoen aan de vereisten die worden vermeld in Testdetails.

3.3 Registercontroles

achtergrond
Met deze test wordt gecontroleerd of de toepassing nieuwe services of stuurprogramma's installeert of bijwerken.

Test details
De test kijkt in het registry.dat bestand naar updates voor specifieke registerlocaties die aangeven dat er een nieuwe service of stuurprogramma wordt geregistreerd. Als de app probeert een stuurprogramma of service te installeren, mislukt de test.

corrigerende acties
Controleer de fouten en verwijder de betreffende services of stuurprogramma's als ze niet nodig zijn. Als de app hiervan afhankelijk is, moet u de app aanpassen om deze naar de Store te kunnen indienen.

4. Platform geschikte bestanden testen

Apps die binaire bestanden installeren, kunnen vastlopen of niet correct worden uitgevoerd, afhankelijk van de processorarchitectuur van de gebruiker.

Achtergrond
Met deze test worden de binaire bestanden in een app-pakket gescand op architectuurconflicten. Een app-pakket mag geen binaire bestanden bevatten die niet kunnen worden gebruikt in de processorarchitectuur die is opgegeven in het manifest. Het opnemen van niet-ondersteunde binaire bestanden kan ertoe leiden dat uw app vastloopt of een onnodige toename van de grootte van het app-pakket.

Test details
Valideert of de bitheid van elk bestand in de draagbare uitvoerbare header geschikt is wanneer deze vergeleken wordt met de declaratie van de architectuur van de processor in het app-pakket.

corrigerende acties
Volg deze richtlijnen om ervoor te zorgen dat uw app-pakket alleen bestanden bevat die worden ondersteund door de architectuur die is opgegeven in het app-manifest:

  • Als de doelprocessorarchitectuur voor uw app neutraal processortype is, kan het app-pakket geen bestanden met x86, x64 of binair arm- of afbeeldingstype bevatten.
  • Als de doelprocessorarchitectuur voor uw app x86-processortype is, mag het app-pakket alleen binaire x86- of afbeeldingstypebestanden bevatten. Als het pakket x64- of Arm binaire of afbeeldingstypen bevat, mislukt de test.
  • Als de doelprocessorarchitectuur voor uw app x64-processortype is, moet het app-pakket x64 binaire bestanden of afbeeldingstypebestanden bevatten. In dit geval kan het pakket ook x86-bestanden bevatten, maar de primaire app-ervaring moet gebruikmaken van het binaire x64-bestand. Als het pakket binaire arm- of afbeeldingstypebestanden bevat, of alleen binaire x86- of afbeeldingstypebestanden bevat, mislukt de test.
  • Als de doelprocessorarchitectuur voor uw app arm-processortype is, mag het app-pakket alleen binaire arm- of afbeeldingstypebestanden bevatten. Als het pakket x64- of x86 binaire of afbeeldingstypebestanden bevat, mislukt de test.

5. Ondersteunde API-test

Controleert de app op het gebruik van niet-compatibele API's.

achtergrond
Desktop Bridge-apps kunnen gebruikmaken van een aantal verouderde Win32-API's, samen met moderne API's (UWP-onderdelen). Deze test identificeert beheerde binaire bestanden die gebruikmaken van niet-ondersteunde API's.

Test details
Met deze test worden alle UWP-onderdelen in de app gecontroleerd:

  • Controleert of elk beheerd binair bestand in het app-pakket geen afhankelijkheid heeft van een Win32-API die niet wordt ondersteund voor de ontwikkeling van UWP-apps door de importadrestabel van het binaire bestand te controleren.
  • Controleert of elk beheerd binair bestand in het app-pakket geen afhankelijkheid heeft van een functie buiten het goedgekeurde profiel.

corrigerende acties
Dit kan worden gecorrigeerd door ervoor te zorgen dat de app is gecompileerd als een release-build en niet als een foutopsporingsbuild.

Notitie

De foutopsporingsbuild van een app mislukt deze test, zelfs als de app alleen API's gebruikt voor UWP-apps. Bekijk de foutberichten om de API te identificeren die geen toegestane API is voor UWP-apps.

Notitie

C++ apps die zijn ingebouwd in een foutopsporingsconfiguratie mislukken deze test, zelfs als de configuratie alleen API's van de Windows SDK voor UWP-apps gebruikt. Zie Alternatieven voor Windows-API's in UWP-apps voor meer informatie.

6. UAC-test (Gebruikersaccountbeheer)

achtergrond
Zorgt ervoor dat de app tijdens runtime geen gebruikersaccountbeheer aanvraagt.

Testdetails
Een app kan geen administratieve machtigingen of UIAccess aanvragen volgens het beleid van de Microsoft Store. Verhoogde beveiligingsmachtigingen worden niet ondersteund.

corrigerende acties
Apps moeten als interactieve gebruiker uitgevoerd worden. Zie UI Automation Security Overview voor meer informatie.

7. Validatie van metagegevens van Windows Runtime

achtergrond
Zorgt ervoor dat de onderdelen die in een app worden verzonden, voldoen aan het UWP-typesysteem.

Testdetails
Deze test genereert een aantal vlaggen met betrekking tot het juiste typegebruik.

corrigerende acties

  • ExclusiveTo-kenmerk
    Zorg ervoor dat UWP-klassen geen interfaces implementeren die zijn gemarkeerd als ExclusiveTo een andere klasse
  • algemene juistheid van metagegevens
    Zorg ervoor dat de compiler die u gebruikt om uw typen te genereren, is up-to-date met de UWP-specificaties.
  • eigenschappen
    Zorg ervoor dat alle eigenschappen in een UWP-klasse een get methode hebben (set methoden zijn optioneel). Zorg ervoor dat voor alle eigenschappen het type dat wordt geretourneerd door de get-methode overeenkomt met het type van de invoerparameter van de set methode.
  • Typ locatie
    Zorg ervoor dat de metagegevens voor alle UWP-typen zich in het .winmd-bestand bevinden met de langste naamruimtekoppelingsnaam in het app-pakket.
  • type naam hoofdlettergevoeligheid
    Zorg ervoor dat alle UWP-typen unieke, niet hoofdlettergevoelige namen hebben binnen uw app-pakket. Zorg er ook voor dat er geen UWP-typenaam wordt gebruikt als naamruimtenaam in uw app-pakket.
  • Typenaam juistheid
    Zorg ervoor dat er geen UWP-typen zijn in de globale naamruimte of in de Windows-naamruimte op het hoogste niveau.

8. Windows-beveiligingsfuncties testen

Als u de standaardbeveiliging van Windows wijzigt, kunnen klanten risico lopen.

8.1 Verboden Bestandsanalyse

achtergrond
Bepaalde bestanden zijn bijgewerkt met belangrijke beveiliging, betrouwbaarheid of andere verbeteringen. Windows Desktop Bridge-apps moeten de nieuwste versies van deze bestanden bevatten, omdat verouderde versies een risico vormen. De Certificeringskit voor Windows-apps blokkeert deze bestanden om ervoor te zorgen dat alle apps de huidige versie gebruiken.

Testdetails
De verboden bestandscontrole in de Windows App Certification Kit controleert momenteel op de volgende bestanden:

  • Bing.Maps.JavaScript\js\veapicore.js
    Deze controle mislukt meestal wanneer een app een versie van het bestand 'Release Preview' gebruikt in plaats van de meest recente officiële release.

corrigerende acties
Als u dit wilt corrigeren, gebruikt u de nieuwste versie van de Bing Maps SDK voor UWP-apps.

8.2 Ondertekening van persoonlijke code

Testen op het bestaan van binaire bestanden voor het ondertekenen van privécode in het app-pakket.

achtergrond
Bestanden voor ondertekening van persoonlijke code moeten privé worden gehouden, omdat ze kunnen worden gebruikt voor schadelijke doeleinden in het geval ze worden aangetast.

Testdetails
Controleert op bestanden in het app-pakket met de extensie .pfx of .snk die aangeven dat persoonlijke ondertekeningssleutels zijn opgenomen.

corrigerende acties
Verwijder eventuele ondertekeningssleutels voor persoonlijke code (zoals PFX- en .snk-bestanden) uit het pakket.