Förra veckan fick jag en intressant fråga av en kund. Vi diskuterade vad man kan göra med den senaste versionen av Office i kombination med Visual Studio Tools for Office. Kunden, och många med dem, har tidigare skapat avancerade mallar med mycket VBA-kod, för att kunna anpassa både Word och Excel. Dessa feta mallar är något som man vill komma ifrån och istället ha så tunna mallar som möjligt. Frågor som då kom upp var bland annat vart man istället lägger sin programkod och hur man distribuerar den ut till alla klientdatorer.

All kod som Visual Studio for Tools (VSTO) kompilerar hamnar i en dll-fil. Det finns många olika ställen som denna fil kan lagras. Det kan antingen vara lokalt på datorn; på en nätverksenhet eller via en url, alltså (http://bookbroker.se/excelmallar).

I själva dokumentet eller mallen finns ett applikationsmanifest lagrat. Det lagras i en ny del av filen, som på engelska heter Data Island, svenska Dataö. Detta manifest pekar ut två viktiga filer. Dels den kompilerade dll-filen och dels ett “deployment manifest”, spridningsmanifest. Den viktigaste uppgiften som detta andra manifest har är att peka ut den senaste versionen av dll-filen. Om användaren inte har någon dll-fil alls eller om han har en äldre så kommer den senaste filen automatiskt laddas ned till klientdatorn.

Här är ett exempel:
1. Användaren får ett mail med en Excelfil.
2. Användaren öppnar filen.
3. VSTO tittar i dataön efter applikationsmanifestet.
4. I detta applikationsmanifest finns en länk till spridningsmanifestet. VSTO läser in detta manifest.
5. VSTO läser detta manifest och får veta vilken som är den senaste versionen av dll-filen. Finns inte dll-filen lokalt eller om det är en gammal version, så laddas den nu ned till klientdatorn. Vart denna fil finns, är beskrivet i manifestet.
6. Dll-filen körs igång och dokumentet visas.