I am trying to get my continuous integration to create build the smart device cab project from within msbuild on the command line. Everything that I have found says to use the inf file (with cabwiz) created when you build the project from within visual studio. Is there a way to create the inf using the .vddproj file so that I can then use it with cabwiz.exe?
views:
2143answers:
3Are you asking how to create the cab file or how to include it in your project? You could create the inf then add the command line to the post build event.
Your best bet is either to run devenv.exe (or devenv.com) from the msbuild task, or to steal the INF that Visual Studio generates and use it to run cabwiz.exe from the msbuild task.
MVP Discussion: http://social.microsoft.com/Forums/en-US/csharpide/thread/a3caae81-fd79-45a9-ac38-f471e30e5b2a
CabWiz.exe: http://msdn.microsoft.com/en-us/library/aa924359.aspx
INF reference: http://msdn.microsoft.com/en-us/library/aa924371.aspx
Examples: http://blog.enterprisemobile.com/2008/07/automating-build-versioning-and-publishing-smart-device-projects-with-team-foundation-build/ http://blog.opennetcf.com/ctacke/2008/09/18/AutomatingCABFileGenerationWithMSBUILD.aspx http://guystarbuck.blogspot.com/2006/08/automate-build-of-windows-moble-cab.html
How about adding a "Smart Device CAB Project" to your solution (available in Visual Studio 2005 and 2008)? These kind of projects build the .inf file from the output of the other projects in the solution and spawn "cabwiz.exe" to generate your final cab.
I personally use NAnt instead of MSBuild, and prefer to manually edit my inf file (doesn't change that often), but the CAB project seem to be the way to go for a solution that uses MSBuild.
PS: be careful if your cab needs to set a registry dword to -1 (0xffffffff): cabwiz is known to have a nasty bug when it comes to this.
PS2: also note this other post.