MSKB 317540 article Global Assembly Cache (GAC) APIs Are Not Documented in the .NET Framework Software Development Kit (SDK) Documentation came in handy when I recently experienced writing a deployment script to GAC an assembly. While MS Windows Installer should have been the most natural choice, I wrote a C# APP to spawn gacutil with System.Diagnostic’s Process class and used System.IO for file copying and folder creation. This App determined .NET framework path at run-time to invoke gacutil.exe and it worked like a charm on my machine; however, it failed during platform-test since gacutil isn’t distributed with runtime.
With some experience, it turned out that this approach to GAC isn’t smartest choice when it comes to network deployment; (C# version of this KB article is here: Install an Assembly into the Global Assembly Cache in Visual C# .NET). Windows Application deployment wizard turned out to be the most feasible solution but exploring how mono or DotGNU may implement gacutil will be a good learning experience.
Couple of good reads: Using a Custom Action to Pre-Compile an Assembly During Installation,
Frequently Asked Questions About Windows Installer
I hear and I forget. I see and I remember. I do and I learn.-
-Confucius