Simon, This should be fixed in CVS now. Before, it wouldn't allow a COM component or assembly to be a key file if there were other files (normal or COM/Assembly files) in the component. This was because multiple components were created pointing to the same key. That breaks MSI rules. I've changed the logic somewhat and it will create individual components for each COM component/assembly as long as the file isn't equal to the keyfile. Otherwise, it will allow the COM component/Assembly to equal the keyfile and will add other files (non com components/assemblies) to that component, as it did before.
Basically, this allows the user to specify any file as the keyfile and it should work, now. Personally, I think we could do away with requiring the keyfile altogether and instead, construct the database similar to how Visual Studio does... where each file is assigned to its own component. What do you guys think of this approach? This functionality might not be worth it, but I think it would be good to discuss... John, I copied you on this thread to let you know that I checked in an update to the msi target in the NAntContribInstall.include file. The task will only build an install of NAnt right now. I'll get around to writing the tasks to build the merge module(s) for NAntContrib later on (either this week or next). Sorry for just this taking so long.. I've been trying to recoup from my recent trip to Vegas :| Anyway, if you get a chance to try this out and install it, let me know if you run into any issues... -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Tuesday, June 15, 2004 4:26 AM To: [EMAIL PROTECTED] Subject: RE: [Nant-users] MSI-Task thanks James that works fine, the next problem however is the following: Unable to build MSI database 'MSG.Sapphire.msi'. Cannot specify key 'ExWebGold.dll' for component 'C__BinFiles'. File has been detected as being a COM component or Microsoft.NET assembly and is being registered with its own component. Please specify a different file in the same directory for this component's key. all the files in this websites bin directory are .NET assemblies so how do I specify a keyfile if the above is true? -----Original Message----- From: James Geurts [mailto:[EMAIL PROTECTED] Sent: 15 June 2004 00:54 To: Simon Burgess Subject: RE: [Nant-users] MSI-Task They're a bit dated, but the last one should be fine for what you're trying to do. I don't think I fixed too many bugs between then and now. http://nantcontrib.sourceforge.net/nightly/builds/ -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Monday, June 14, 2004 10:01 AM To: [EMAIL PROTECTED] Subject: RE: [Nant-users] MSI-Task Hi James Many thanks for the info. I have the latest nightly build of NAnt and I have release 0.84 of NAnt contrib. I can't seem to find any nightly builds of NAnt contrib though. cheers Simon -----Original Message----- From: James Geurts [mailto:[EMAIL PROTECTED] Sent: 14 June 2004 01:56 To: Simon Burgess; [EMAIL PROTECTED] Subject: RE: [Nant-users] MSI-Task Hi Simon, Please make sure that you are using a nightly build of NAntContrib. You'll need to also use a relatively new nightly build of NAnt to build the NAntContrib tasks. The msi/msm task schema changed between 0.84 and the current builds, giving you the error that you see. Otherwise, you could try using a previous version of the file. I believe that version 3 works with the 0.84 msi task schema. Available here: http://nant.sourceforge.net/wiki/index.php/sample%20build%20file?version=3 As for merge modules... think of them as a storage mechanism to share common install information. For example, you could build a merge module containing just the NAnt bin files. Then, for each msi that you create, you could just merge the (merge module) file into each msi. That way, you don't have to specify the (for this example) NAnt bin files for each msi. They would automatically be added to the install via the merge process. Convenient if you wanted to add an NAnt subfolder (containing a known set/version of files) to one or many installs. Another example is that your company could have a common way to setup a database... It could involve custom dialog(s) to specify server, user, and password. It would also use a custom action to modify the database. Rather than always creating custom actions and dialogs, for each install, you could separate that logic into merge modules. So, for this example, you could create a merge module that contains the dialogs. You could also create a merge module that handles the custom action logic. For each product install that your company creates, you would then just add those merge modules to the install. That way, each install would maintain exactly the same logic. It would also allow you to easily omit the dialog(s) from the install if, for that particular install, the database setup was to be automatic without user interaction. More information here: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/m erge_module_database.asp Hope that helps Jim -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Thursday, June 10, 2004 11:48 AM To: [EMAIL PROTECTED] Subject: [Nant-users] MSI-Task Hi All I'm trying to use the sample 'VDirSample.build' to generate an msi for a website depoyment, but I'm getting the following error: ".... Target(s) specified: msi msi: BUILD FAILED Validation Error: Element 'NAnt.Contrib.Tasks.MSITask:msi' has invalid child element 'NAnt.Contrib.Tasks.MSITask:features'. An error occurred at (219, 4). Total time: 2.2 seconds. ..." ...as you can see it seems to be suggesting that 'features' is not a valid child of 'msi', any ideas? Also I'm not quite sure where merge modules come into the equation. The sample build file uses 'components', is this the equivalent to merge modules. If say you needed to develop one msi that installed one more than one web site, would you hav an msi for each site and then some kind of toplevel controlling msi? many thanks Simon Burgess ______________________________________________________________ CONFIDENTIALITY NOTICE This communication and the information it contains is intended for the person or organisation to whom it is addressed. Its contents are confidential and may be protected in law. Unauthorised use, copying or disclosure of any of it may be unlawful. If you are not the intended recipient, please contact us immediately. The contents of any attachments in this e-mail may contain software viruses, which could damage your own computer system. While Marlborough Stirling has taken every reasonable precaution to minimise this risk, we cannot accept liability for any damage, which you sustain as a result of software viruses. You should carry out your own virus checking procedure before opening any attachment. Marlborough Stirling plc, Registered in England and Wales Registered No. 3008820, Allen Jones House, Jessop Avenue, Cheltenham, Gloucestershire, GL50 3SH Tel: 01242 547000 Fax: 01242 547100 http://www.marlborough-stirling.com ------------------------------------------------------- This SF.Net email is sponsored by the new InstallShield X. >From Windows to Linux, servers to mobile, InstallShield X is the one installation-authoring solution that does it all. Learn more and evaluate today! http://www.installshield.com/Dev2Dev/0504 _______________________________________________ Nant-users mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-users ------------------------------------------------------- This SF.Net email is sponsored by The 2004 JavaOne(SM) Conference Learn from the experts at JavaOne(SM), Sun's Worldwide Java Developer Conference, June 28 - July 1 at the Moscone Center in San Francisco, CA REGISTER AND SAVE! http://java.sun.com/javaone/sf Priority Code NWMGYKND _______________________________________________ NAntContrib-Developer mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nantcontrib-developer