Test del Kit di certificazione app Windows
Nel Kit di certificazione app Windows sono inclusi numerosi test che ti consentono di verificare che l'app sia pronta per la pubblicazione in Microsoft Store. I test sono elencati di seguito con i relativi criteri, i dettagli e le azioni consigliate in caso di errore.
Test di distribuzione e avvio
Monitoraggio dell'app durante il test per la certificazione per registrare eventuali arresti anomali o blocchi.
Background
Le app che smettono di rispondere o si arrestano in modo anomalo possono provocare perdite di dati e non offrono un'esperienza utente ottimale.
Le app dovrebbero essere completamente funzionali senza l'uso delle modalità di compatibilità di Windows, i messaggi AppHelp o le correzioni rapide per la compatibilità.
Le app non devono elencare le DLL da caricare nella chiave del registro di sistema HKEY-LOCAL-MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit-DLL.
Dettagli del test
Testiamo l'app per verificarne la resilienza e la stabilità per l'intera durata del test di certificazione.
Il Kit di certificazione app Windows chiama IApplicationActivationManager::ActivateApplication per avviare le app. Per avviare un’app mediante ActivateApplication, è necessario che Controllo dell’account utente sia abilitato e che la risoluzione dello schermo sia almeno 1024 x 768 o 768 x 1024. In assenza di queste due condizioni, l'app non supererà questo test.
Azioni correttive
Assicurati che Controllo account utente sia attivato nel computer di prova.
Assicurati che il test venga eseguito su un computer con uno schermo sufficientemente ampio.
Se la tua app non si avvia e la tua piattaforma di prova soddisfa i requisiti preliminari per ActivateApplication, puoi indagare sul problema esaminando il registro eventi di attivazione. Per individuare le voci pertinenti nel registro eventi:
- Apri eventvwr.exe e passa alla cartella Application and Services Log\Microsoft\Windows\Immersive-Shell.
- Filtra la visualizzazione in modo da mostrare gli ID degli eventi: 5900-6000.
- Esamina le voci del registro con l'obiettivo di trovare una spiegazione al fatto che l'app non si è avviata.
Cerca il file che ha causato il problema, identifica l'errore e correggilo. Ricompila ed esegui un nuovo test dell'app. Puoi anche verificare se nella cartella di log del Kit di certificazione app Windows è stato generato un file di dump che può essere usato per il debug della tua app.
Test avvio versione piattaforma
Controlla che l'app di Windows possa essere eseguita in una versione futura del sistema operativo. Questo test è sempre stato applicato solo al flusso di lavoro delle app desktop, ma ora è abilitato per i flussi di lavoro dello Store e della piattaforma UWP (Universal Windows Platform).
Background
L'uso delle info sulla versione del sistema operativo è limitato per Microsoft Store. Queste info sono state spesso usate erroneamente dalle app per controllare la versione del sistema operativo, in modo da poter fornire agli utenti funzionalità specifiche di una versione del sistema operativo.
Dettagli del test
Il Kit di certificazione app Windows usa HighVersionLie per rilevare come l'app controlla la versione del sistema operativo. Se l'app si arresta in modo anomalo, non supererà questo test.
Azione correttiva
Per questo controllo, le app dovrebbero usare le funzioni helper dell'API per la versione. Per ulteriori informazioni, consulta Versione sistema operativo.
Convalida gestore annullamento attività in background
Verifica che l'app disponga di un gestore annullamento per le attività in background dichiarate. Deve essere una funzione dedicata che verrà chiamata quando l'attività viene annullata. Questo test viene applicato solo per le app distribuite.
Background
Le app dello Store possono registrare un processo eseguito in background. Ad esempio, un'app per l'email di tanto in tanto può effettuare il ping di un server. Se però il sistema operativo ha bisogno di queste risorse, annullerà l'attività in background e le app dovrebbero gestire correttamente questo annullamento. Le app che non hanno un gestore annullamento potrebbero arrestarsi in modo anomalo o non chiudersi quando l'utente tenta di chiudere l'app.
Dettagli del test
L'app viene avviata e sospesa e la parte non in background dell'app viene terminata. Quindi le attività in background associate all'app vengono annullate. Viene verificato lo stato dell'app e, se l'app è ancora in esecuzione, non supererà questo test.
Azione correttiva
Aggiungi il gestore annullamento alla tua app. Per ulteriori informazioni, consulta Supportare la tua app con le attività in background.
Conteggio di app
Verifica che un pacchetto dell'app (.msix, .appx, bundle dell'app) contenga una sola applicazione. Questo test è diventato autonomo nel kit.
Background
Questo test è stato implementato in base ai criteri dello Store.
Dettagli del test
Per le app di Windows Phone 8.1, il test verifica che il numero totale di pacchetti .appx nel bundle sia < 512, che esista un solo pacchetto principale nel bundle e che l'architettura del pacchetto principale nel bundle sia contrassegnata come ARM o neutra.
Per le app di Windows 10, il test verifica che il numero di revisione nella versione del bundle sia impostato su 0.
Azione correttiva
Verificare che il pacchetto dell'app e il bundle soddisfino i requisiti sopra indicati in Dettagli del test.
Test di conformità del manifesto dell'app
Testa il contenuto del manifesto dell'app per verificare se il contenuto è corretto.
Background
Le app devono disporre di un manifesto dell'app correttamente formattato.
Dettagli del test
Esamina il manifesto dell’app per verificare che il contenuto sia corretto in base a quanto indicato nei requisiti per il pacchetto dell’app.
Estensioni di file e protocolli
L'app può dichiarare le estensioni di file a cui desidera essere associata. Se utilizzata in maniera impropria, un'app può dichiarare un grande numero di estensioni di file, molte delle quali potrebbe anche non utilizzare, e ciò peggiora l'esperienza dell'utente. Il test aggiunge un controllo per limitare il numero di estensioni di file ai quali un'app può associarsi.
Regola di dipendenza framework
Questo test applica il requisito che le app abbiano le dipendenze appropriate nella piattaforma UWP. Se una dipendenza non è appropriata, il test ha esito negativo.
Se la versione del sistema operativo alla quale si applica l'app e le dipendenze del framework generate non corrispondono, il test ha esito negativo. Il test ha esito negativo anche se l'app fa riferimento a una versione di anteprima delle DLL del framework.
Verifica della comunicazione tra processi (IPC)
Questo test applica il requisito che le app UWP non devono comunicare all'esterno del contenitore dell'app con componenti desktop. La comunicazione tra processi è destinata solo alle app trasferite tramite sideload. Le app che specificano ActivatableClassAttribute con nome uguale a "DesktopApplicationPath" non supereranno questo test.
Azione correttiva
Confronta il manifesto dell’app rispetto a quanto indicato nei requisiti per il pacchetto dell’app.
Test delle funzionalità di sicurezza di Windows
Background
La modifica delle protezioni di sicurezza di Windows predefinite può comportare maggiori rischi per gli utenti.
Dettagli del test
Testa la sicurezza dell’app tramite l’esecuzione dello strumento BinScope Binary Analyzer.
I test di BinScope Binary Analyzer esaminano i file binari dell'app per verificare alcune procedure relative a codifica e compilazione in modo da limitare la vulnerabilità dell'app agli attacchi o la possibilità che venga usata per un attacco.
I test di BinScope Binary Analyzer verificano il corretto uso delle funzionalità correlate alla sicurezza seguenti.
- Test di BinScope Binary Analyzer
- Firma del codice privato
Test di BinScope Binary Analyzer
I test di BinScope Binary Analyzer esaminano i file binari dell’app per verificare alcune procedure relative a codifica e compilazione in modo da limitare la vulnerabilità dell’app agli attacchi o la possibilità che venga usata per un attacco.
I test di BinScope Binary Analyzer verificano il corretto uso delle funzionalità correlate alla sicurezza:
- AllowPartiallyTrustedCallersAttribute
- Protezione per la gestione delle eccezioni /SafeSEH
- Protezione esecuzione programmi
- ASLR (Address Space Layout Randomization)
- Sezione PE condivisa di lettura/scrittura
- AppContainerCheck
- ExecutableImportsCheck
- WXCheck
AllowPartiallyTrustedCallersAttribute
Messaggio di errore del Kit di certificazione app Windows: test APTCACheck non superato
L'attributo AllowPartiallyTrustedCallersAttribute (APTCA) consente l'accesso a codice completamente attendibile da codice parzialmente attendibile in assembly firmati. Quando applichi a un assembly l'attributo APTCA, l'assembly è accessibile per tutta la relativa durata da chiamanti parzialmente attendibili, con un potenziale rischio per la sicurezza.
Cosa fare se l'app non supera questo test
Non usare l'attributo APTCA per assembly con nome sicuro a meno che non sia indispensabile per il tuo progetto e che tu abbia ben chiaro quali rischi comporta. Se devi proprio usarlo, assicurati che tutte le API siano protette con richieste di sicurezza appropriate per l'accesso al codice. APTCA non ha effetto se l'assembly fa parte di un'app UWP (Universal Windows Platform).
Osservazioni:
Questo test viene eseguito solo su codice gestito (C#, .NET e così via).
Protezione per la gestione delle eccezioni /SafeSEH
Messaggio di errore del Kit di certificazione app Windows: test SafeSEHCheck non superato
Quando l'app incontra una condizione anomala, ad esempio un errore di divisione per zero, viene eseguito un gestore di eccezioni. Poiché l'indirizzo del gestore di eccezioni viene archiviato nello stack durante la chiamata di una funzione, può essere esposto a un attacco di sovraccarico del buffer in caso di sovrascrittura dello stack da parte di malware.
Cosa fare se l'app non supera questo test
Abilita l'opzione /SAFESEH nel comando del linker durante la compilazione dell'app. Questa opzione è abilitata per impostazione predefinita nelle configurazioni per il rilascio di Visual Studio. Verifica che questa opzione sia abilitata nelle istruzioni di compilazione di tutti i moduli eseguibili dell'app.
Osservazioni:
Questo test non viene eseguito sui file binari a 64 bit o sui file binari del chipset Arm, perché non archiviano nello stack indirizzi del gestore di eccezioni.
Protezione esecuzione programmi
Messaggio di errore del Kit di certificazione app Windows: test NXCheck non superato
Questo test verifica che un'app non esegua codice archiviato in un segmento di dati.
Cosa fare se l'app non supera questo test
Abilita l'opzione /NXCOMPAT nel comando del linker durante la compilazione dell'app. Questa opzione è abilitata per impostazione predefinita nelle versioni del linker che supportano Protezione esecuzione programmi.
Osservazioni:
Ti consigliamo di testare le app in una CPU che supporta Protezione esecuzione programmi e di correggere gli eventuali errori rilevati.
ASLR (Address Space Layout Randomization)
Messaggio di errore del Kit di certificazione app Windows: test DBCheck non superato
ASLR (Address Space Layout Randomization) carica immagini eseguibili in posizioni imprevedibili della memoria. Questo ostacola l'esecuzione di malware che fa affidamento sul caricamento di un programma in un determinato indirizzo virtuale. ASLR deve essere supportato dall'app e da tutti i componenti da essa usati.
Cosa fare se l'app non supera questo test
Abilita l'opzione /DYNAMICBASE nel comando del linker durante la compilazione dell'app. Verifica che questa opzione del linker sia impostata in tutti i moduli usati dall'app.
Osservazioni:
In genere, ASLR non ha effetto sulle prestazioni. In alcuni scenari, tuttavia, si verifica un leggero miglioramento delle prestazioni su sistemi a 32 bit. In un sistema con un'alta congestione, in cui vengono caricate molte immagini in svariate posizioni della memoria, le prestazioni possono peggiorare.
Questo test viene eseguito solo su app scritte in lingue non gestite, ad esempio con C o C++.
Sezione PE condivisa di lettura/scrittura
Messaggio di errore del Kit di certificazione app Windows: test SharedSectionsCheck non superato.
I file binari con sezioni scrivibili contrassegnate come condivise rappresentano un rischio per la sicurezza. Non compilare app con sezioni scrivibili condivise se non è strettamente necessario. Usa CreateFileMapping o MapViewOfFile per creare un oggetto memoria condivisa adeguatamente protetto.
Cosa fare se l'app non supera questo test
Rimuovi tutte le sezioni condivise dall’app e crea oggetti memoria condivisa chiamando la funzione CreateFileMapping o MapViewOfFile con attributi di sicurezza appropriati e quindi compila di nuovo l’app.
Osservazioni:
Questo test viene eseguito solo su app scritte in lingue non gestite, ad esempio con C o C++.
AppContainerCheck
Messaggio di errore del Kit di certificazione app Windows: test AppContainerCheck non superato.
AppContainerCheck verifica che sia impostato il bit appcontainer nell’intestazione PE (Portable Executable) di un file binario eseguibile. Per eseguire correttamente le app, il bit appcontainer deve essere impostato in tutti i file EXE e in tutte le DLL non gestite.
Cosa fare se l'app non supera questo test
Se un file eseguibile nativo non supera il test, verifica di aver usato la versione più recente del compilatore e del linker per compilare il file e di aver usato il flag /appcontainer nel linker.
Se un file eseguibile gestito non supera il test, verifica di aver usato la versione più recente del compilatore e del linker, ad esempio Microsoft Visual Studio, per compilare l'app UWP.
Osservazioni:
Questo test viene eseguito su tutti i file exe e su tutte le DLL non gestite.
ExecutableImportsCheck
Messaggio di errore del Kit di certificazione app Windows: test ExecutableImportsCheck non superato.
Un'immagine PE non supera questo test se la relativa tabella di importazione è stata inserita in una sezione del codice eseguibile. Questa situazione può verificarsi se hai abilitato l’unione della sezione .rdata per l’immagine PE impostando il flag /merge del linker Visual C++ come /merge:.rdata=.text.
Cosa fare se l'app non supera questo test
Non unire la tabella di importazione in una sezione del codice eseguibile. Verifica che il flag /merge del linker Visual C++ non sia impostato in modo da unire la sezione ".rdata" in una sezione del codice.
Osservazioni:
Questo test viene eseguito su tutto il codice eccetto gli assembly gestiti in senso stretto.
WXCheck
Messaggio di errore del Kit di certificazione app Windows: test WXCheck non superato.
Il controllo consente di assicurarsi che un file binario non disponga di pagine mappate come scrivibili ed eseguibili. Questo può verificarsi se il file binario dispone di una sezione scrivibile ed eseguibile o se il valore SectionAlignment del file binario è minore di PAGE SIZE.
Cosa fare se l'app non supera questo test
Verifica che il file binario non disponga di una sezione scrivibile o eseguibile e che il valore SectionAlignment del file binario sia almeno uguale al relativo valore PAGE SIZE.
Osservazioni:
Questo test viene eseguito su tutti i file .exe e su tutte le DLL native non gestite.
Un eseguibile potrebbe disporre di una sezione scrivibile ed eseguibile se è stato generato con l'opzione Modifica e continuazione abilitata (/ZI). Disabilitando Modifica e continuazione, la sezione non valida risulterà non presente.
PAGE SIZE è il valore predefinito di SectionAlignment per gli eseguibili.
Firma del codice privato
Controlla l'esistenza dei file binari di firma del codice privato all'interno del pacchetto dell'app.
Background
I file di firma del codice privato devono essere mantenuti privati perché potrebbero essere usati per scopi illeciti, se compromessi.
Dettagli del test
Verifica se il pacchetto dell'app include file con estensione pfx o snk, che indicherebbero la presenza di chiavi per la firma di codice privato.
Azioni correttive
Rimuovi eventuali chiavi per la firma di codice privato (ad esempio file con estensione .pfx e .snk) dal pacchetto.
Test delle API supportate
Testa l'app per verificare l'uso di eventuali API non conformi.
Background
Per ottenere la certificazione per Microsoft Store, le app devono usare le interfacce API per le app UWP (API Win32 supportate o di Windows Runtime). Questo test identifica anche le situazioni in cui un file binario gestito dipende da una funzione esterna al profilo approvato.
Dettagli del test
- Verifica che ogni file binario all'interno del pacchetto dell'app non dipenda da un'interfaccia API Win32 non supportata per lo sviluppo di app UWP controllando la tabella IAT (Import Address Table) del file binario.
- Verifica che ogni file binario gestito all'interno del pacchetto dell'app non dipenda da una funzione esterna al profilo approvato.
Azioni correttive
Verifica che l'app sia stata compilata come versione di rilascio e non come versione di debug.
Nota: la versione di debug di un'app non supererà questo test anche se l'app usa solo le API per le app UWP.
Controlla i messaggi di errore per individuare l'API usata dall'app che non è un'API per le app UWP.
Nota: le app C++ create in una configurazione di debug non supereranno questo test anche se la configurazione usa solo interfacce API di Windows SDK per le app UWP. Per altre informazioni, vedi Alternative alle API Windows nelle app UWP.
Test prestazionali
L'app deve rispondere rapidamente all'interazione dell'utente e ai comandi di sistema per presentare un'esperienza utente veloce e fluida.
Le caratteristiche del computer in cui viene eseguito il test possono influire sui risultati. Le soglie per i test delle prestazioni per la certificazione delle app sono impostate in modo che i computer a basso consumo possano soddisfare le aspettative dei clienti in termini di fluidità e velocità. Per stabilire le prestazioni dell'app, ti consigliamo di testarla su un computer a basso consumo, ad esempio un computer basato su un processore Intel Atom con risoluzione dello schermo 1366x768 (o superiore) e un disco rigido rotazionale anziché a stato solido (SSD).
Generazione del bytecode
Come ottimizzazione delle prestazioni per accelerare il tempo di esecuzione di JavaScript, i file JavaScript con estensione js generano il bytecode quando l'app viene distribuita. Questo migliora in modo significativo i tempi di avvio ed esecuzione delle operazioni JavaScript.
Dettagli test
Verifica la distribuzione dell'app per controllare che tutti i file js siano stati convertiti in bytecode.
Azione correttiva
Se il test ha esito negativo, prova a eseguire queste operazioni per risolvere il problema:
- Verifica che la registrazione eventi sia abilitata.
- Verifica che la sintassi di tutti i file JavaScript sia valida.
- Verifica che tutte le versioni precedenti dell'app siano state disinstallate.
- Escludi dal pacchetto dell'app i file identificati.
Riferimenti binding ottimizzati
Quando usi i binding, imposta WinJS.Binding.optimizeBindingReferences su true per ottimizzare l'utilizzo della memoria.
Dettagli test
Verifica il valore di WinJS.Binding.optimizeBindingReferences.
Azione correttiva
Imposta WinJS.Binding.optimizeBindingReferences su true nell’app JavaScript.
Test delle risorse del manifesto dell'app
Convalida delle risorse dell'app
Potrebbe non essere possibile installare un'app se le stringhe o le immagini dichiarate nel manifesto dell'app non sono corrette. Se l'app viene installata con questi errori, il logo dell'app o altre immagini usate dall'app potrebbero non essere visualizzati correttamente.
Dettagli test
Controlla le risorse definite nel manifesto dell'app per verificare che siano presenti e valide.
Azione correttiva
Usa la tabella seguente come riferimento.
Error message | Commenti |
---|---|
L'immagine {image name} definisce sia il qualificatore Scale che TargetSize. È possibile definire un solo qualificatore alla volta. |
Puoi personalizzare le immagini per le diverse risoluzioni. Nel messaggio effettivo, {image name} contiene il nome dell'immagine interessata dall'errore. Assicurati che ogni immagine definisca Scale o TargetSize come qualificatore. |
L'immagine {image name} supera il limite per le dimensioni. |
Assicurati che tutte le immagini dell'app rispettino le restrizioni relative alle dimensioni. Nel messaggio effettivo, {image name} contiene il nome dell'immagine interessata dall'errore. |
L'immagine {image name} risulta mancante dal pacchetto. |
Manca un'immagine richiesta. Nel messaggio effettivo, {image name} contiene il nome dell'immagine mancante. |
L'immagine {image name} non è un file di immagine valido. |
Assicurati che tutte le immagini dell'app rispettino le restrizioni relative al tipo di formato del file. Nel messaggio effettivo, {image name} contiene il nome dell'immagine che non è valida. |
Il valore ABGR {value} nella posizione (x, y) dell'immagine "BadgeLogo" non è valido. Il pixel deve essere bianco (##FFFFFF) o trasparente (00######) |
Il logo badge è un'immagine che viene visualizzata accanto alla notifica di badge per identificare l'app nella schermata di blocco. Tale immagine deve essere monocromatica, in altre parole può contenere solo pixel bianchi e trasparenti. Nel messaggio la variabile {value} contiene il valore del colore nell'immagine che non è valido. |
Il valore ABGR {value} nella posizione (x, y) dell'immagine "BadgeLogo" non è valido per un'immagine bianca a contrasto elevato. Il pixel deve essere (##2A2A2A) o più scuro oppure trasparente (00######). |
Il logo badge è un'immagine che viene visualizzata accanto alla notifica di badge per identificare l'app nella schermata di blocco. Poiché il logo badge viene visualizzato su uno sfondo bianco con un bianco a contrasto elevato, deve essere una versione scura del normale logo badge. In bianco a contrasto elevato, il logo badge può contenere solo pixel più scuri di (##2A2A2A) o trasparenti. Nel messaggio la variabile {value} contiene il valore del colore nell'immagine che non è valido. |
L'immagine deve definire almeno una variante senza un qualificatore TargetSize. Deve definire un qualificatore Scale o lasciare Scale e TargetSize non specificati, in modo da usare il valore predefinito Scale-100. |
Per ulteriori informazioni, consulta Tutto sul responsive design 101 per app UWP (Universal Windows Platform) e Linee guida per le risorse dell’app. |
Nel pacchetto manca un file "resources.pri". |
Se nel manifesto dell'app è presente contenuto localizzabile, assicurati che il pacchetto dell'app includa un file resources.pri valido. |
Il file "resources.pri" deve contenere una mappa delle risorse con un nome corrispondente al nome del pacchetto {package full name} |
Questo messaggio di errore potrebbe comparire se il manifesto è cambiato e il nome della mappa risorse in resources.pri non corrisponde più al nome del pacchetto nel manifesto. Nel messaggio effettivo, {package full name} contiene il nome del pacchetto che deve essere contenuto in resources.pri. Per risolvere questo problema, devi ricompilare resources.pri e il modo più semplice per farlo consiste nel ricreare il pacchetto dell'app. |
Il file "resources.pri" non deve avere AutoMerge abilitato. |
MakePRI.exe supporta un’opzione denominata AutoMerge. Il valore predefinito di AutoMerge è off. Quando questa opzione è abilitata, AutoMerge unisce le risorse di un Language Pack dell'app in un unico file resources.pri in fase di esecuzione. Questa impostazione è sconsigliata per le app che verranno distribuite mediante Microsoft Store. Il file resources.pri di un'app che verrà distribuita mediante Microsoft Store deve trovarsi nella radice del pacchetto dell'app e contenere i riferimenti a tutte le lingue supportate dell'app. |
La stringa {string} supera il limite di lunghezza di caratteri indicati in {number}. |
Fai riferimento a Requisiti per il pacchetto dell’app. Nel messaggio effettivo, la variabile {string} è sostituita dalla stringa interessata dall'errore e la variabile {number} contiene la lunghezza massima. |
La stringa {string} non deve contenere spazi iniziali o finali. |
Lo schema per gli elementi nel manifesto dell'app non consente l'uso di spazi iniziali e finali. Nel messaggio effettivo, al posto della variabile {string} viene visualizzata la stringa interessata dall'errore. Assicurati che nessuno dei valori localizzati nei campi del manifesto in resources.pri contenga spazi vuoti iniziali e finali. |
La stringa non deve essere vuota (lunghezza maggiore di zero) |
Per ulteriori informazioni, consulta Requisiti per il pacchetto dell’app. |
Non è stata specificata alcuna risorsa predefinita nel file "resources.pri". |
Per ulteriori informazioni, consulta Linee guida per le risorse dell’app. Nella configurazione di compilazione predefinita, Visual Studio include solo le risorse immagine in scala 200 nel pacchetto dell'app durante la generazione di bundle, inserendo le altre risorse nel pacchetto di risorse. Assicurati di includere risorse immagine in scala 200 oppure di configurare il progetto in modo da includere le risorse disponibili. |
Non è stato specificato alcun valore di risorsa nel file "resources.pri". |
Assicurati che nel manifesto dell'app siano state definite risorse valide in resources.pri. |
Le dimensioni del file di immagine {filename} devono essere inferiori a 204800 byte.\*\* |
Ridurre le dimensioni delle immagini indicate. |
Il file {filename} non deve contenere una sezione mapping inverso.\*\* |
Anche se il mapping inverso viene generato durante il debug F5 di Visual Studio con la chiamata di makepri.exe, è possibile rimuoverlo eseguendo makepri.exe senza il parametro /m quando si genera un file PRI. |
\*\* Indica che è stato aggiunto un test nel Kit di certificazione app Windows 3.3 per Windows 8.1 e che il test è applicabile solo quando si usa questa versione del kit. |
Convalida personalizzazioni
Le app UWP dovrebbero essere complete e perfettamente funzionanti. Le app che usano le immagini predefinite (di modelli o di esempi di SDK) non offrono un'esperienza utente ottimale e sono difficili da identificare nel catalogo di Store.
Dettagli test
Questo test verifica se le immagini usate dall'app non sono immagini predefinite provenienti da esempi di SDK o da Visual Studio.
Azioni correttive
Sostituisci le immagini predefinite con elementi grafici più specifici e rappresentativi della tua app.
Test della configurazione del debug
Testa l'app per verificare che non si tratti di una versione di debug.
Background
Per ottenere la certificazione per Microsoft Store, le app non devono essere compilate per il debug e non devono fare riferimento alle versioni di debug di un file eseguibile. Per superare questo test devi anche compilare il codice come ottimizzato per la tua app.
Dettagli del test
Testa l'app per verificare che non si tratti di una versione di debug e che non sia collegata ad alcun framework di debug.
Azioni correttive
- Compila l'app come versione per il rilascio prima di inviarla a Microsoft Store.
- Verifica di aver installato la versione corretta di .NET Framework.
- Verifica che l'app non si colleghi a versioni di debug di un framework e che venga compilata con una versione finale. Se l'app contiene componenti .NET, verifica di aver installato la versione corretta di .NET Framework.
Test di codifica dei file
Codifica file UTF-8
Background
I file HTML, CSS e JavaScript devono essere codificati in formato UTF-8 con un contrassegno BOM (Byte-Order Mark) corrispondente per usufruire della memorizzazione del bytecode nella cache ed evitare alcune condizioni di errore di runtime.
Dettagli del test
Testa il contenuto dei pacchetti di app per verificare se usano la codifica file corretta.
Azione correttiva
Apri il file interessato e scegli Salva con nome dal menu File di Visual Studio. Seleziona il controllo a discesa accanto al pulsante Salva e scegli Salva con codifica. Nella finestra di dialogo Opzioni di salvataggio avanzate seleziona l’opzione Unicode (UTF-8 con firma digitale) e fai clic su OK.
Test del livello delle funzionalità Direct3D
Supporto del livello di funzionalità Direct3D
Test per assicurarsi che non si verifichino arresti anomali delle app Microsoft Direct3D nei dispositivi con hardware grafico meno recente.
Background
Microsoft Store richiede che il rendering venga eseguito correttamente oppure che eventuali errori vengano gestiti automaticamente nelle schede grafiche con livello di funzionalità 9-1 per tutte le applicazioni che usano Direct3D.
Poiché gli utenti possono modificare l'hardware grafico nei propri dispositivi dopo l'installazione dell'app, se scegli un livello minimo di funzionalità superiore a 9-1, l'app deve rilevare all'avvio se l'hardware corrente soddisfa o meno i requisiti minimi. Se i requisiti minimi non sono soddisfatti, l'app deve visualizzare un messaggio per l'utente in cui sono descritti in dettaglio i requisiti per Direct3D. Inoltre, se un'app viene scaricata in un dispositivo con cui non è compatibile, deve rilevare il problema in fase di avvio e visualizzare al cliente un messaggio in cui sono descritti in dettaglio i requisiti.
Dettagli test
Il test verifica se il rendering delle app è accurato a livello di funzionalità 9-1.
Azione correttiva
Verifica che il rendering della tua app sia corretto al livello 9-1 delle funzionalità Direct3D, anche se prevedi che venga eseguita a un livello di funzionalità superiore. Per ulteriori informazioni, consulta Sviluppo per diversi livelli di funzionalità Direct3D.
Trim su Direct3D dopo sospensione
Nota Questo test si applica solo alle app UWP sviluppate per Windows 8.1 e versioni successive.
Background
Se l’app non chiama Trim sul dispositivo Direct3D, non rilascia la memoria allocata per il lavoro 3D precedente. Questo può far aumentare il rischio di interruzione delle app in presenza di molte richieste di memoria di sistema.
Dettagli test
Verifica la conformità delle app ai requisiti d3d e assicura che le app chiamino una nuova API Trim al callback di sospensione.
Azione correttiva
L’app dovrebbe chiamare l’API Trim sull’interfaccia IDXGIDevice3 ogni volta che sta per essere sospesa.
Test delle funzionalità dell'app
Funzionalità di uso speciale
Background
Le funzionalità di uso speciale sono destinate a scenari estremamente specifici. E possono essere usate solo da account aziendali.
Dettagli test
Verifica se l'app dichiara una o più delle funzionalità seguenti:
- EnterpriseAuthentication
- SharedUserCertificates
- DocumentsLibrary
Se una qualsiasi di queste funzionalità è dichiarata, il test visualizza un avviso all'utente.
Azioni correttive
Considera la possibilità di rimuovere la funzionalità di uso speciale se l'app non la richiede. L'uso di queste funzionalità è anche soggetto a ulteriori verifiche dei criteri di accettazione.
Convalida dei metadati per Windows Runtime
Background
Verifica che i componenti forniti in un'app siano conformi al sistema dei tipi della piattaforma Windows Runtime.
Dettagli test
Verifica che i file con estensione winmd inclusi nel pacchetto siano conformi alle regole della piattaforma Windows Runtime.
Azioni correttive
- Test dell'attributo ExclusiveTo: assicurati che le classi di Windows Runtime non implementino interfacce contrassegnate come ExclusiveTo a un'altra classe.
- Test percorso dei tipi: verifica che i metadati di tutti i tipi Windows Runtime si trovino nel file con estensione winmd e con il nome corrispondente allo spazio dei nomi più lungo all'interno del pacchetto dell'app.
- Test di distinzione maiuscole/minuscole nei nomi dei tipi: assicurati che tutti i tipi di Windows Runtime abbiano nomi univoci senza distinzione tra maiuscole e minuscole all'interno del pacchetto dell'app. Verifica inoltre che nessun nome di tipo UWP venga usato anche come nome dello spazio dei nomi all'interno del pacchetto dell'app.
- Test di correttezza dei nomi dei tipi: verifica che non siano presenti tipi Windows Runtime nello spazio dei nomi globale o nello spazio dei nomi di primo livello di Windows.
- Test di correttezza generale dei metadati: assicurati che il compilatore usato per generare i tipi sia aggiornato con le specifiche di Windows Runtime.
- Test delle proprietà: verifica che tutte le proprietà in una classe Windows Runtime abbiano un metodo get (i metodi set sono facoltativi). Assicurati che il tipo del valore restituito dal metodo get corrisponda al tipo del parametro di input del metodo set per tutte le proprietà nei tipi Windows Runtime.
Test di integrità del pacchetto
Test dell'uso di file appropriati per la piattaforma
Le app che installano file binari misti possono arrestarsi in modo anomalo o non essere eseguite correttamente a seconda dell'architettura del processore dell'utente.
Background
Questo test convalida i file binari presenti in un pacchetto di app per i conflitti relativi all'architettura. Un pacchetto di app non deve includere file binari non utilizzabili nell'architettura del processore specificata nel manifesto. La presenza di file binari non supportati può comportare l'arresto anomalo dell'app o un incremento non necessario delle dimensioni del pacchetto di app.
Dettagli test
Verifica che il "numero di bit" di ogni file nell'intestazione PE sia appropriato a seguito del controllo incrociato con la dichiarazione dell'architettura del processore del pacchetto dell'app
Azione correttiva
Segui le linee guida illustrate di seguito per verificare che il pacchetto di app contenga solo file supportati dall'architettura specificata nel manifesto dell'app:
Se l'architettura del processore di destinazione per l'app è di tipo processore neutro, il pacchetto di app non potrà contenere file binari x86, x64 o ARM oppure file di immagine.
Se l'architettura del processore di destinazione per l'app è di tipo processore x86, il pacchetto di app dovrà contenere solo file binari x86 oppure file di immagine. Se il pacchetto contiene file binari x64 o Arm oppure file di immagine, non supererà il test.
Se l'architettura del processore di destinazione per l'app è di tipo processore x64, il pacchetto di app dovrà contenere file binari x64 oppure file di immagine. In questo caso il pacchetto potrà includere anche file x86, ma l'esperienza principale dell'app dovrà usare il file binario x64.
Tuttavia, se il pacchetto contiene file binari Arm o file di immagine oppure solo file binari x86 o di immagine, non supererà il test.
Se l'architettura del processore di destinazione per l'app è di tipo processore Arm, il pacchetto di app dovrà contenere solo file binari Arm oppure file di immagine. Se il pacchetto contiene file binari x64 o x86 oppure file di immagine, non supererà il test.
Test della struttura di directory supportata
Verifica che durante l'installazione le applicazioni non creino sottodirectory più lunghe di MAX-PATH.
Background
I componenti del sistema operativo (inclusi Trident, WWAHost, ecc.) sono limitati internamente a MAX-PATH per i percorsi del file system e non funzionano correttamente con percorsi più lunghi.
Dettagli test
Verifica che nessun percorso nell'app installi directory che superano MAX-PATH.
Azione correttiva
Usa una struttura di directory e/o un nome file più breve.
Test di utilizzo delle risorse
Test attività in background WinJS
Questo test verifica che le app JavaScript abbiano le istruzioni di chiusura appropriate in modo da non consumare la batteria.
Background
Le app con attività in background JavaScript devono chiamare Close() come ultima istruzione in tali attività. Altrimenti possono impedire al sistema di tornare in modalità di standby connesso e quindi possono esaurire la carica della batteria.
Dettagli test
Se l'app non ha un file attività in background specificato nel manifesto, il test viene superato. Altrimenti il test analizza il file attività in background JavaScript specificato nel pacchetto dell'app e cerca un'istruzione Close(). Se la trova, il test ha esito positivo. In caso contrario, ha esito negativo.
Azione correttiva
Aggiorna il codice JavaScript in background per chiamare Close() correttamente.