Condividi tramite


Manifesto dell'app (eseguibile)

Piattaforme

Client - server Windows 8 - Windows Server 2012

Descrizione

La sezione relativa alla compatibilità del manifesto dell'app (eseguibile) introdotta in Windows consente al sistema operativo di determinare le versioni di Windows che un'app è stata progettata per la destinazione. Inoltre, il manifesto dell'app consente a Windows di fornire il comportamento previsto dall'app in base alla versione di Windows di destinazione dell'app.

La sezione relativa alla compatibilità del manifesto consente a Windows di fornire un nuovo comportamento al software appena creato mantenendo la compatibilità per il software esistente. Questa sezione consente a Windows di offrire maggiore compatibilità anche nelle versioni future di Windows. Ad esempio, un'app che dichiara il supporto solo per Windows 8 nella sezione compatibilità continuerà a ricevere Windows 8 comportamento nelle versioni future di Windows.

Manifestazione

Le app senza una sezione di compatibilità nel manifesto avranno il comportamento di Windows Vista per impostazione predefinita in Windows 7 e Windows 8 e versioni future di Windows. Tenere presente che Windows XP e Windows Vista ignorano questa sezione del manifesto e non hanno alcun impatto su di essi.

Questi componenti di Windows forniscono un comportamento divergente in base alla sezione relativa alla compatibilità:

Pool di thread predefinito rpc (Remote Procedure Call)

  • Windows 8 e Windows 7: per migliorare la scalabilità e ridurre i conteggi dei thread, RPC passa al pool di thread NT (pool predefinito). Per Windows Vista, RPC ha usato un pool di thread privato:

    • Per i file binari compilati per Windows 7 e versioni successive di Windows, viene usato il pool predefinito.
    • Se I_RpcMgmtEnableDedicatedThreadPool viene chiamato prima che venga chiamata un'API RPC, viene usato il pool di thread privato (comportamento vista).
    • Se I_RpcMgmtEnableDedicatedThreadPool viene chiamato dopo una chiamata RPC, viene usato il pool predefinito, I_RpcMgmtEnableDedicatedThreadPool restituisce l'errore 1764 e l'operazione richiesta non è supportata.
  • Windows Vista (impostazione predefinita): per i file binari compilati per Windows Vista e le versioni precedenti di Windows, viene usato il pool privato.

Blocco DirectDraw

  • Windows 8 e Windows 7: le app manifestate per Windows 7 e versioni successive del sistema operativo non possono chiamare l'API di blocco in DDRAW per bloccare il buffer video del desktop primario. In questo modo si verifica un errore e viene restituito un puntatore NULL per il database primario. Questo comportamento viene applicato anche se La composizione di Desktop Window Manager non è attivata. Le app con compatibilità dichiarate per Windows 7 e versioni successive non devono bloccare il buffer video primario per il rendering.
  • Windows Vista (impostazione predefinita): le app possono acquisire un blocco nel buffer video primario, perché le app legacy dipendono da questo comportamento; l'esecuzione dell'app disattiva Gestione finestre desktop.

Trasferimento a blocchi di bit DirectDraw (bitblt) a primario senza ritagliare la finestra

  • Windows 8 e Windows 7: le app manifestate per Windows 7 e versioni successive di Windows non possono eseguire un bitblt nel buffer video desktop primario senza una finestra di ritaglio. In questo modo si verifica un errore e il rendering dell'area bitblt non verrà eseguito. Windows applica questo comportamento anche se non si attiva Desktop Window Manager Composition. Le app con compatibilità dichiarate per Windows 7 e versioni successive devono eseguire un bitblt in una finestra di ritaglio.
  • Windows Vista (impostazione predefinita): le app devono essere in grado di eseguire un bitblt al server primario senza una finestra di ritaglio, perché le app legacy dipendono da questo comportamento; l'esecuzione di questa app disattiva Gestione finestre desktop.

GetOverlappedResult API

  • Windows 8 e Windows 7: risolve una race condition in cui un'app multithreading tramite GetOverlappedResult può restituire senza reimpostare l'evento nella struttura sovrapposta, causando la restituzione prematura della chiamata successiva a questa funzione.
  • Windows Vista (impostazione predefinita): fornisce il comportamento con la race condition a cui le app potrebbero avere una dipendenza. Le app che devono evitare questa gara prima del comportamento di Windows 7 devono attendere l'evento sovrapposto e, quando segnalato, chiamare GetOverlappedResult con bWait == FALSE.

Stato dei temi della shell in modalità a contrasto elevato

  • Windows 8: restituisce lo stato di tema reale per quando è in modalità a contrasto elevato.
  • Windows 7: restituisce un tema non disponibile quando è in modalità a contrasto elevato perché DWM è ancora attivo.
  • Windows Vista (impostazione predefinita): restituisce un tema non disponibile in modalità a contrasto elevato perché DWM è ancora attivo.

Metodo Shell iPersistFile::Save

  • Windows 8: CShellLink::Save ora determina se il gestore IPersistFile viene chiamato con un argomento percorso relativo e non riesce la chiamata, se lo è.

    La documentazione pubblica che descrive questo comportamento indica che l'argomento path deve essere un percorso assoluto:

  • Windows 7 e versioni precedenti (impostazione predefinita): CShellLink::Save non determina se il gestore iPersistFile invia un controllo del percorso relativo e consente alle app di continuare a usare percorsi assoluti o relativi.

Assistente compatibilità programmi (PCA)

  • Windows 8: le app con la sezione compatibilità non ottengono la mitigazione PCA.
  • Windows 7: Le app con la sezione compatibilità vengono rilevate per rilevare potenziali problemi di compatibilità per Windows 8 modifiche (descritte in questo documento).
  • Windows Vista (impostazione predefinita): le app che non riescono a eseguire correttamente l'installazione o l'arresto anomalo durante il runtime in alcune circostanze specifiche ottengono la mitigazione PCA. Per altre info, vedi la sezione Risorse.

Uso delle funzionalità

Aggiornare il manifesto dell'app con le informazioni di compatibilità più recenti per il supporto del sistema operativo. Questa sezione descrive le aggiunte al manifesto:

Namespace: Compatibility.v1 (xmlns="urn:schemas-microsoft-com:compatibility.v1">)

Nome sezione: Compatibilità (nuova sezione)

SupportedOS: GUID del sistema operativo supportato: i GUID mappati ai sistemi operativi supportati sono:

  • {e2011457-1546-43c5-a5fe-008deee3d3f0}

    per Windows Vista: valore predefinito per il contesto di switchback

  • {35138b9a-5d96-4fbd-8e2d-a2440225f93a}

    per Windows 7: Le app che impostano questo valore nel manifesto dell'app ottengono il comportamento di Windows 7

  • {4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}

    per Windows 8: le app che impostano questo valore nel manifesto dell'applicazione ottengono il comportamento di Windows 8

Microsoft genererà e pubblicherà GUID per le versioni future di Windows in base alle esigenze.

Esempio XML di un manifesto aggiornato:

Nota

I nomi di attributo e tag nel manifesto dell'app fanno distinzione tra maiuscole e minuscole.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
        <!--The ID below indicates app support for Windows Vista -->
        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
        <!--The ID below indicates app support for Windows 7 -->
        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
        <!--The ID below indicates app support for Windows 8 -->
        <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    </application> 
</compatibility>
</assembly>

I GUID per tutti i sistemi operativi dell'esempio precedente forniscono supporto di livello inferiore. Le app che supportano più piattaforme non necessitano di manifesti separati per ogni piattaforma.

Test

Un'app può specificare più ID del sistema operativo supportati. È necessario aggiungere un ID del sistema operativo supportato se è stato testato o si è verificato il processo di test, l'app in tale sistema operativo. Windows Vista e versioni precedenti del sistema operativo non prestano attenzione a queste voci. A partire da Windows 7, Windows sceglierà il GUID della versione più recente nel manifesto fino alla versione di Windows in esecuzione e offrirà il supporto dell'app a tale livello. Per verificare che l'app funzioni con la nuova sezione compatibilità del manifesto dell'app:

  1. Testare l'app con la nuova sezione di compatibilità e l'ID SupportedOS = { 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} per assicurarsi che l'app funzioni correttamente usando il comportamento di Windows 8 più recente.
  2. Testare l'app con la nuova sezione di compatibilità e l'ID SupportedOS = {35138b9a-5d96-4fbd-8e2d-a2440225f93a} per assicurarsi che l'app funzioni correttamente usando il comportamento di Windows 7.
  3. Testare l'app con la nuova sezione di compatibilità e l'ID SupportedOS = {e2011457-1546-43c5-a5fe-008deee3d3f0} per assicurarsi che l'app funzioni correttamente usando il comportamento di Windows Vista.

Risorse