Condividi tramite


Manifesto dell'app (eseguibile)

Piattaforme

Client : Windows 8
Server : Windows Server 2012

Descrizione

La sezione 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 destinata all'app.

La sezione di 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 ha alcun impatto su di essi.

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

Pool di thread predefinito della routine remota (RPC)

  • 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 qualsiasi 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 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 Lock in DDRAW per bloccare il buffer video desktop primario. In questo modo, viene restituito un errore e viene restituito un puntatore NULL per il 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, poiché le app legacy dipendono da questo comportamento; l'esecuzione dell'app disattiva Gestione finestre desktop.

Trasferimento in bit-block di DirectDraw (bitblt) a primario senza ritaglio

  • 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, non verrà eseguito il rendering di un errore e l'area bitblt. Windows applica questo comportamento anche se non si attiva La composizione di Desktop Window Manager. 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 alla finestra primaria senza una finestra di ritaglio, poiché 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 condizione di gara in cui un'app multithreaded usando GetOverlappedResult può restituire senza reimpostare l'evento nella struttura sovrapposta, causando la chiamata successiva a questa funzione di restituire prematuramente.
  • Windows Vista (impostazione predefinita): fornisce il comportamento con la condizione di gara 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 reale di liing per quando in modalità a contrasto elevato.
  • Windows 7: restituisce il valore non disponibile quando è in modalità a contrasto elevato perché DWM è ancora attivo.
  • Windows Vista (impostazione predefinita): restituisce come non disponibile quando è in modalità a contrasto elevato perché DWM è ancora attivo.

Metodo Shell iPersistFile::Save

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

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

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

Assistente compatibilità programmi (PCA)

  • Windows 8: le app con la sezione compatibilità non ottengono la mitigazione del PCA.
  • Windows 7: le app con la sezione compatibilità vengono rilevate per potenziali problemi di compatibilità per le modifiche Windows 8 (descritte in questo documento).
  • Windows Vista (impostazione predefinita): le app che non riescono a installare correttamente o arresti anomali durante il runtime in alcune circostanze specifiche ottengono la mitigazione del PCA. Per altre informazioni, vedere la sezione Risorse.

Utilizzo 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)

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

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

    per Windows Vista: questo è il valore predefinito per il contesto di switchback

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

    per Windows 7: 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 pubblica i 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 sono 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 nell'esempio precedente forniscono supporto a 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 trova nel processo di test, l'app nel sistema operativo. Windows Vista e versioni precedenti del sistema operativo non prestare attenzione a queste voci. A partire da Windows 7, Windows sceglierà il GUID più alto del 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-d69d4a6e38} 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-008dee3f0} per assicurarsi che l'app funzioni correttamente usando il comportamento di Windows Vista.

Risorse