2014-04-10 13 views
6

Próbuję uruchomić narzędzie testowe platformy Microsoft w wersji 4.6 dla systemu Windows Server 2012: http://www.microsoft.com/en-ca/download/details.aspx?id=41676Jak dodać manifest do aplikacji MFC i ustawić obsługiwane?

Wystawiam problem. Narzeka, że ​​aplikacja MFC, którą mam, ma manifest, ale w tym manifeście brakuje sekcji supportedOS. Wiem, jak dodać to do projektów C#, ale jak to zrobić w aplikacjach MFC?

Aplikacja MFC pojawia się w polu "Pliki wykonywalne z manifestem brakuje sekcji supportedOS".

Odpowiedz

6

Właśnie dostałem to. Proces był następujący:

Kliknij prawym przyciskiem myszy swoje rozwiązanie, przejdź do Właściwości. Przewierć dane z Właściwości konfiguracji -> Łącznik -> Plik manifestu. Ustaw następujące opcje:

Generowanie Manifest "Yes (/ MANIFEST)"

plik manifestu do "app.manifest"

Teraz sztuczka ... dodać nowy plik w aplikacji MFC. Nazwij go "app.manifest", gdy zrobiliśmy to z powyższą nazwą. Upewnij się, że ma w nim manifest XAML, na przykład:

<?xml version="1.0" encoding="utf-8"?> 
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <!-- UAC Manifest Options 
      If you want to change the Windows User Account Control level replace the 
      requestedExecutionLevel node with one of the following. 

     <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

      Specifying requestedExecutionLevel node will disable file and registry virtualization. 
      If you want to utilize File and Registry Virtualization for backward 
      compatibility then delete the requestedExecutionLevel node. 
     --> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 

    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
     <!-- A list of all Windows versions that this application is designed to work with. 
     Windows will automatically select the most compatible environment.--> 

     <!-- If your application is designed to work with Windows Vista, uncomment the following supportedOS node--> 
     <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>--> 

     <!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node--> 
     <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>--> 

     <!-- If your application is designed to work with Windows 8, uncomment the following supportedOS node--> 
     <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>--> 

     <!-- If your application is designed to work with Windows 8.1, uncomment the following supportedOS node--> 
     <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> 

    </application> 
    </compatibility> 

    <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) --> 
    <!-- <dependency> 
    <dependentAssembly> 
     <assemblyIdentity 
      type="win32" 
      name="Microsoft.Windows.Common-Controls" 
      version="6.0.0.0" 
      processorArchitecture="*" 
      publicKeyToken="6595b64144ccf1df" 
      language="*" 
     /> 
    </dependentAssembly> 
    </dependency>--> 

</asmv1:assembly> 

Daj sobie klepnięcie po plecach, bohaterem.

Wskazówka: Aby przejrzeć manifest pliku wykonywalnego, otwórz plik wykonywalny w Notatniku ++ i przewiń na sam dół. Jest na dole. Przynajmniej to działało dla mnie.

Powiązane problemy