Hey Sam, I found a couple things that should be changed in your build file.
You should specify GUIDs to define the ProductCode and UpgradeCode properties. The ProductCode is used to distinguish different versions and languages of products. The UpgradeCode is a GUID representing a related set of products. So, say that you have Kensington v1.0.0 with Product Code {3057D982-F7E4-4243-803E-04E943285B62} and Upgrade Code {15F29190-CA8A-4398-94B9-477C46212E94}, Kensington v1.1.0 might have Product Code {FCF4EE6B-F849-4b47-9FA3-E4739C8CA95C} and UpgradeCode {15F29190-CA8A-4398-94B9-477C46212E94}. When setup is run, it uses the ProductVersion property to then determine if an upgrade is required or not. With that said, you should change the value of the kensington.version property to follow the format major.minor.build per Microsoft's specification of the ProductVersion property. It seems that the root attribute specified for the directory is bad. You should change it to a supported directory. This is a list of supported root directories with the default msi template provided with NAntContrib: TARGETDIR ProgramFilesFolder AppDataFolder DesktopFolder ProgramMenuFolder StartMenuFolder StartupFolder AdminToolsFolder CommonAppDataFolder CommonFiles64Folder CommonFilesFolder FavoritesFolder FontsFolder LocalAppDataFolder MyPicturesFolder PersonalFolder ProgramFiles64Folder SendToFolder System16Folder System64Folder SystemFolder TempFolder TemplateFolder WindowsFolder WindowsVolume Also, one thing to keep in mind with regard to directories is that the MSI/MSM tasks expect that the directories exist relative to where the build file is. So, for your example, if your build file exists in C:\MyProjects\Kensington\TestSolution, then there should be a subdirectory Kensington from the TestSolution folder. The other result of this is that when you specify a basedir from the fileset, the task ignores that and expects the files to exist in a directory structure relative to where the build file is being executed. So, it is looking for Kensington.dll in C:\MyProjects\Kensington\TestSolution\Kensington rather than C:\MyProjects\Kensington\TestSolution\Kensington\bin\Release The key file assigned to a component should be a file within that component's fileset. So for the component "KensingtonFiles" the keyfile should be "Kensignton.dll" I have included the changes that I made. If you have further questions, please don't hesitate to ask. Jim P.s. The bug with the fileset is on my TODO list, so once Kraen submits his changes, I'll have a look at that. ________________________________________ From: Sam Akiwumi [mailto:[EMAIL PROTECTED] Sent: Wednesday, January 21, 2004 9:29 AM To: James Geurts; Sam Akiwumi; [EMAIL PROTECTED] Subject: RE: [NAntC-Dev] MSITask usage and documentation Thanks James I've managed to cobble together a build file using the nantcontrib as the example. However I think I might have missed something, because I get the error below when I run the build (file attached). Any pointers in the right direction are appreciated. Buildfile: file:///C:/MyProjects/Kensington/Kensington.build msi: [msi] Building MSI Database "Kensington.msi". [msi] Storing Banner: C:\MyProjects\Kensington\TestSolution\Kensington\Bliss.bmp [msi] Storing Background: C:\MyProjects\Kensington\TestSolution\Kensington\Bliss.bmp [msi] Storing License: C:\MyProjects\Kensington\TestSolution\Kensington\license.rtf [msi] Adding Properties: ProductName ProductVersion Manufacturer ProductCode UpgradeCode [msi] Adding Directories: C:\MyProjects\Kensington\TestSolution\Kensington [msi] Add Files: Total time: 1 seconds. BUILD FAILED [msi] ERROR: System.NullReferenceException thrown: Object reference not set to an instance of an object. at NAnt.Core.DataTypeBase.InitializeElement(XmlNode elementNode) at NAnt.Core.Types.FileSet.InitializeElement(XmlNode elementNode) at NAnt.Core.Element.Initialize(XmlNode elementNode) at NAnt.Contrib.Tasks.MSITask.AddFiles(Database Database, View DirectoryView, MSIComponent Compon ent, View FileView, Type InstallerType, Object InstallerObject, String ComponentDirectory, String Co mponentName, Int32& ComponentCount, Int32& Sequence, View MsiAssemblyView, View MsiAssemblyNameView, View ComponentView, View FeatureComponentView, View ClassView, View ProgIdView, View SelfRegView) at NAnt.Contrib.Tasks.MSITask.LoadComponents(Database Database, Type InstallerType, Object Instal lerObject, Int32& LastSequence, View MsiAssemblyView, View MsiAssemblyNameView, View DirectoryView, View ClassView, View ProgIdView) at NAnt.Contrib.Tasks.MSITask.ExecuteTask()
Kensington_update.build
Description: Binary data