Condividi tramite


Test delle app Desktop Bridge di Windows

Le app Desktop Bridge (vedi Creazione di un pacchetto MSIX dal codice) sono app desktop di Windows convertite in app UWP (Universal Windows Platform) usando Desktop Bridge. Dopo la conversione, l'applicazione desktop di Windows viene assemblata in un pacchetto, aggiornata e distribuita in forma di pacchetto di app UWP (file con estensione appx o appxbundle) destinato a Windows 10 Desktop.

Test obbligatori e facoltativi

Test facoltativi per le app Desktop Bridge di Windows, che sono solo a scopo informativo e non verranno usati per valutare l'app durante l'onboarding in Microsoft Store. È consigliabile analizzare i risultati dei test per produrre app di migliore qualità. I criteri globali di esito positivo o negativo per l'onboarding nello store sono determinati dai test obbligatori e non da questi test facoltativi.

Test facoltativi correnti

1. Test dei file con firma digitale

Background
Questo test verifica che tutti i file eseguibili di tipo PE contengano una firma valida. La presenza di file con firma digitale consente agli utenti di sapere che il software è originale.

Dettagli del test
Il test analizza tutti i file di tipo PE nel pacchetto e controlla la presenza di una firma nelle intestazioni. È consigliabile che tutti i file di tipo PE includano una firma digitale. Verrà generato un avviso se uno dei file PE non è firmato.

Azioni correttive
È sempre consigliabile che i file includano una firma digitale. Per altre informazioni, vedi Introduzione alla firma del codice.

2. Verbi di associazione file

Background
Questo test analizza il Registro di sistema del pacchetto per verificare se sono registrati verbi di associazione file.

Dettagli del test
Le app desktop convertite possono essere migliorate con un'ampia gamma di API di Windows Runtime. Questo test verifica che i file binari UWP nell'app non chiamino API diverse da quelle di Windows Runtime. I file binari UWP hanno il flag AppContainer impostato.

Azioni correttive
Per una spiegazione di queste estensioni e di come usarle correttamente, vedere Da desktop a Bridge UWP: estensioni di app.

3. Test della configurazione del debug

Questo test verifica che il pacchetto .msix o .appx non sia una build 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.

4. Test di integrità del pacchetto

4.1 Uso dei file di archivio

Background
Questo test ti aiuta a creare app Desktop Bridge migliori per l'esecuzione nei computer Windows 10 S.

Dettagli del test
Questo test controlla tutti i file eseguibili all'interno dei file archiviati o del contenuto autoestraente. Dato che i file eseguibili contenuti all'interno di questo tipo di contenuto non vengono firmati durante l'onboarding a Windows Store, l'app nei sistemi Windows 10 S potrebbe non funzionare come previsto.

Azioni correttive

  • Prendi in considerazione la valutazione dei file contrassegnati dal test per determinare se ciò avrà un impatto sulla tua app in esecuzione in un ambiente di Windows 10 S.
  • Se l'app verrà compromessa, rimuovi i file eseguibili dai file archiviati e non usare gli archivi autoestraenti per inserire i file eseguibili nel disco. Questo dovrebbe impedire la perdita di funzionalità dell'app.

4.2 File eseguibili bloccati

Background
Questo test ti aiuta a creare app Desktop Bridge migliori per l'esecuzione nei computer Windows 10 S.

Dettagli del test
Questo test verifica se l'app sta tentando di avviare i file eseguibili; azione soggetta a restrizioni nei sistemi Windows 10 S. Le app che si basano su questa funzionalità nei sistemi Windows 10 S potrebbero non funzionare come previsto.

Azioni correttive

  • Identifica le voci contrassegnate del test che rappresentano una chiamata per avviare un file eseguibile che non fa parte dell'app e rimuovi tali chiamate.
  • Se i file contrassegnati fanno parte dell'applicazione, puoi ignorare l'avviso.

Test obbligatori correnti

1. 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 del 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 onboarding.

Test delle risorse del manifesto dell'app

2.1 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 potrebbero non essere visualizzate correttamente.

Dettagli del test
Controlla le risorse definite nel manifesto dell'app per verificare che siano presenti e valide.

Azione correttiva
Usa la tabella seguente come riferimento.

Messaggio di errore 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 altre info, vedi le guide sul responsive design e 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 altre info, vedi la guida sulle 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.

2.2 Convalida personalizzazioni

Background
Le app Desktop Bridge devono 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 del 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 di conformità pacchetto

3.1 Manifesto dell'app

Testa il contenuto del manifesto dell'app per verificarne la correttezza.

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. In questo test vengono eseguiti i controlli seguenti:

  • Estensioni di file e protocolli
    L'app può dichiarare i tipi di file a cui può essere associata. Una dichiarazione di un numero elevato di tipi di file insoliti determina un'esperienza utente meno soddisfacente. Il test limita il numero di estensioni di file a cui un'app può essere associata.
  • Regola di dipendenza framework
    Questo test applica il requisito in base a cui le app devono dichiarare le dipendenze appropriate dalla piattaforma UWP. Se una dipendenza non è appropriata, il test ha esito negativo. Se la versione del sistema operativo di destinazione dell'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 in base al quale le app Desktop Bridge 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.

3.2 Conteggio applicazione

Questo test verifica che un pacchetto di app (estensione .appx, bundle dell'app) contenga una sola applicazione.

Background
Questo test è implementato in base ai criteri di Windows Store.

Dettagli del test
Questo test verifica che il numero totale di pacchetti con estensione appx nel bundle sia inferiore a 512 e che esista un solo pacchetto principale nel bundle. Verifica inoltre che il numero di revisione della versione del bundle sia impostato su 0.

Azioni correttive
Verifica che il pacchetto dell'app e il bundle soddisfino i requisiti indicati in Dettagli del test.

3.3 Controlli del Registro di sistema

Background
Questo test verifica se l'applicazione installa o aggiorna nuovi servizi o driver.

Dettagli del test
Questo test cerca nel file registry.dat gli aggiornamenti a percorsi specifici del Registro di sistema che indicano un nuovo servizio o driver in corso di registrazione. Se l'app sta tentando di installare un driver o un servizio, il test avrà esito negativo.

Azioni correttive
Esamina gli errori e rimuovi i servizi o driver in questione, se non sono necessari. Se l'app dipende da questi, dovrai modificarla se vuoi eseguire l'onboarding sullo Store.

4. 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 analizza i file binari presenti in un pacchetto di app per cercare eventuali 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 del 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.

Azioni correttive
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. 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.

5. Test delle API supportate

Controlla l'app per verificare l'uso di eventuali API non conformi.

Background
Le app Desktop Bridge possono sfruttare alcune API Win32 legacy insieme ad API moderne (componenti UWP). Questo test identifica i file binari gestiti che usano API non supportate.

Dettagli del test
Questo test controlla tutti i componenti UWP nell'app:

  • Verifica che ogni file binario gestito 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
Questo tipo di problemi può essere corretto assicurandosi 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 presente che non è un'API consentita 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.

6. Test del Controllo dell'account utente

Background
Assicura che l'app non richieda il controllo dell'account utente in fase di esecuzione.

Dettagli del test
Un'app non può richiedere l'elevazione a privilegi di amministratore o l'accesso all'interfaccia utente per ogni criterio di Microsoft Store. Non sono supportate le autorizzazioni di sicurezza con privilegi elevati.

Azioni correttive
Le app devono essere eseguite come utente interattivo. Per i dettagli, vedi Panoramica della sicurezza di Automazione interfaccia utente.

7. Convalida dei metadati per Windows Runtime

Background
Verifica che i componenti forniti in un'app siano conformi al sistema dei tipi della piattaforma UWP.

Dettagli del test
Questo test genera un numero di flag correlati all'uso dei tipi appropriati.

Azioni correttive

  • Attributo ExclusiveTo
    Verifica che le classi UWP non implementino interfacce contrassegnate come esclusive di (ExclusiveTo) un'altra classe
  • Correttezza generale dei metadati
    Verifica che il compilatore che usi per generare i tipi sia aggiornato con le specifiche UWP.
  • Proprietà
    Verifica che tutte le proprietà di una classe UWP dispongano di un metodo get (i metodi set sono facoltativi). Per tutte le proprietà, verifica che il tipo restituito dal metodo get corrisponda al tipo del parametro di input del metodo set.
  • Posizione dei tipi
    Verifica che i metadati di tutti i tipi UWP si trovino nel file con estensione .winmd e con il nome corrispondente allo spazio dei nomi più lungo all'interno del pacchetto dell'app.
  • Distinzione maiuscole/minuscole nei nomi dei tipi
    Verifica che tutti i tipi UWP abbiano nomi che non distinguono tra maiuscole e minuscole, univoci 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.
  • Correttezza dei nomi dei tipi
    Verifica che non siano presenti tipi UWP nello spazio dei nomi globale o nello spazio dei nomi di primo livello di Windows.

8. Test delle funzionalità di sicurezza di Windows

La modifica delle protezioni di sicurezza di Windows predefinite può comportare maggiori rischi per gli utenti.

8.1 Analisi file esclusi

Background
Alcuni file sono stati aggiornati con importanti funzioni di sicurezza, affidabilità o altri miglioramenti. Le app Desktop Bridge di Windows devono contenere le versioni più recenti questi file, poiché le versioni non aggiornate presentano un rischio. Il Kit di certificazione app Windows blocca questi file per garantire che tutte le app usino la versione corrente.

Dettagli del test
La funzione di controllo dei file esclusi nel Kit di certificazione app Windows attualmente cerca i file seguenti:

  • Bing.Maps.JavaScript\js\veapicore.js
    In genere questo controllo ha esito negativo quando un'app usa una versione "di anteprima" del file anziché l'ultima versione ufficiale.

Azioni correttive
Per risolvere il problema, usa la versione più recente dell'SDK di Bing Maps per le app UWP.

8.2 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 di firma private.

Azioni correttive
Rimuovi eventuali chiavi per la firma di codice privato (ad esempio file con estensione pfx e snk) dal pacchetto.