Manifest (i Windows), vad är det?


Ett manifest är en speciell XML-fil med olika inställningar som Windows läser av i samband med att ett program startar. Ett manifest kan antingen vara infogat direkt i programfilen (EXE-filen) eller så kan den distribueras som en separat fil och ska då vara placerad i samma mapp som programmet. Om manifestet distribueras som en separat fil ska den ha samma filnamn som programfilen, men med namntillägget ”.manifest” adderat sist i filnamnet (t ex: "MYAPP.EXE.manifest").
 
Manifest kan också användas tillsammans med biblioteksfiler (t ex DLL-filer), men i denna artikel ska vi fokusera oss på manifest som används tillsammans med programfiler. Manifest som används med program brukar kallas för application manifests och manifest som används tillsammans med biblioteksfiler brukar kallas för assembly manifests.


XML används
 
Inställningar i ett manifest anges alltid med hjälp av märkspråket XML. En vanlig inställning som brukar läggas in i ett manifest är information om programmet kräver standardrättigheter eller administratörsrättigheter när det körs i Windows Vista eller Windows 7. Om programmet kräver administratörsrättigheter kommer dialogrutan Kontroll av användarkonto att visas när programmet startar. Räcker det med standardrättigheter startar programmet igång direkt utan att en dialogruta visas.


Manifest kan användas för att ge program en modern design
 
Med hjälp av ett manifest kan programmet även informera Windows om en speciell version av en biblioteksfil (t ex en DLL-fil) ska användas. Detta används bland annat för att bestämma om ett program ska ha samma visuella design som den aktuella Windows-version programmet körs i eller om ett äldre standardutseende ska användas istället. Om det sistnämnda alternativet valts kan programmet dock själv rita upp knappar, menyer mm och ge programmet en helt egen grafisk stil. Många program väljer dock att låta programmet få samma design som den aktuella Windows-versionen, vilket då anges i manifestet. En fördel med att låta programmet få samma visuella design som Windows är att programmet automatiskt anpassar sig även efter ett valt Windows-tema. Detta gäller även teman som skapats av andra än Microsoft och som kan laddas ned från Internet.
 
Den här tekniken att låta DLL:er av olika versioner existera samtidigt i Windows brukar kallas för side-by-side technology på engelska. Och DLL:er som kan existera i flera olika versioner i Windows brukar kallas side-by-side assemblies. I Windows systemmapp finns i regel den äldsta ursprungliga versionen av DLL-filen, medan nästföljande versioner brukar placeras i en mapp som heter WinSxS i Windows-mappen.


Exempel på manifest
 
Här nedan visas ett par exempel på hur manifest innehållande XML-skript kan se ut. Exemplen förutsätter att du är lite bekant med XML sedan innan.

Exemplet nedan visar ett enkelt manifest som informerar Windows om att programmet som ska startas kan köras med standardrättigheter i Windows Vista och Windows 7:
 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="9.0.0.0"
    processorArchitecture="x86"
    name="VI.EXE"
    type="win32"
/>
<description>SamLogic VI Editor</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
        </requestedPrivileges>
    </security>
</trustInfo>
</assembly>
 
Om programmet istället måste ha administratörsrättigheter för att kunna köras så skulle taggarna som är inneslutna av trustInfo behöva se ut så här:
 
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
        </requestedPrivileges>
    </security>
</trustInfo>
 
Istället för "asInvoker" står det nu "requireAdministrator" vid requestedExecutionLevel level=.

Nästa exempel visar hur man i ett manifest kan ange att en speciell version av ett bibliotek ska användas. I detta exempel så informeras Windows om att Windows Common Controls version 6.0 ska användas, vilket innebär att programmet kommer få samma visuella design som den Windows-version som programmet körs i:
 
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="9.0.0.0"
    processorArchitecture="x86"
    name="VIS32X.EXE"
    type="win32"
/>
<description>SamLogic Visual Installer (Main Installer)</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
        </requestedPrivileges>
    </security>
</trustInfo>
</assembly>
 
 
Mer information
 
Vill du ha mer information om manifest så kan du läsa denna sida hos Microsoft:
 
Manifest Files Reference
 
Vill du ha mer information om märkspråket XML så kan du titta närmare på denna sida om XML hos Wikipedia.
  
 
Vill du ha fler tips?
 
Om du vill ha fler liknande tips så kan du följa oss på Facebook eller Twitter. Du kan även prenumerera på vårt nyhetsbrev eller läsa vår blogg. Du hittar fler artiklar på denna sida.
Besök vår Facebook-sida Följ oss på Twitter Besök vår videokanal på YouTube
 
  
Relaterad produktinformation:
SamLogic Visual Installer  -  skapar installationer för Windows

 
 
SamLogic
Skriven av: Mika Larramo English