Friday, March 5, 2010

How to Create and Modify ClickOnce Manifests

Working with ClickOnce manifests can be a pain, especially if you need to integrate that work into your build process. There are several tools you can work with and potentially automate.
  1. mage.exe - This is the backing process behind mage.ui. In my opinion, mage.exe is the next step up from the "Publish" tab in Visual Studio -- it works, but only for basic cases. Comes with the .NET SDK.
  2. mt.exe - This is a great little tool that can validate, sign, and update the hashes in your manifests. It can also merge manifests and dump manifests from executables, as well as extract COM information to generate your own Reg-Free COM information (better than the Visual Studio build process does, actually -- most of our Reg-Free COM manifests are manually built with mt.exe).
  3. Microsoft.Build.Tasks.Deployment.ManifestUtilities - This namespace is a god-send, although it doesn't work with VSTO deployment manifests (in fact, it will probably mangle them). I believe the Visual Studio build process uses these classes internally, but I'm not sure. You can use this to modify application and deployment manifests in just about any way imaginable. To get access to this, add a reference to the Microsoft.Build.Tasks assembly. 

    To read a manifest using this, start at ManifestReader.ReadManifest(path) and work from there.
    To sign your manifests (or other files) from code, take a look at SecurityUtilities.SignFile(certThumbprint, timestampUrl, path)

No comments:

Post a Comment