<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>.Thoughts</title><link>http://codeblooded.com/blog/</link><description>Terry Denham's thoughts and perspectives on .NET Technologies</description><managingEditor>Terry Denham</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Terry Denham</dc:creator><title>98% American</title><link>http://codeblooded.com/blog/archive/2005/08/12/335.aspx</link><pubDate>Fri, 12 Aug 2005 20:14:00 GMT</pubDate><guid>http://codeblooded.com/blog/archive/2005/08/12/335.aspx</guid><wfw:comment>http://codeblooded.com/blog/comments/335.aspx</wfw:comment><comments>http://codeblooded.com/blog/archive/2005/08/12/335.aspx#Feedback</comments><slash:comments>2965</slash:comments><wfw:commentRss>http://codeblooded.com/blog/comments/commentRss/335.aspx</wfw:commentRss><trackback:ping>http://codeblooded.com/blog/services/trackbacks/335.aspx</trackback:ping><description>&lt;P&gt;I was reading Sgt Lizzies Blog&amp;nbsp;( &lt;A href="http://www.sgtlizzie.blogspot.com./"&gt;http://www.sgtlizzie.blogspot.com./&lt;/A&gt;&amp;nbsp;)&amp;nbsp;and ran across this test to see how American you are. Turns out, I'm 98% American.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 width=350 align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD align=middle bgColor=#ffb2b2&gt;&lt;FONT style="FONT-SIZE: 14pt; COLOR: black" face="Georgia, Times New Roman, Times, serif"&gt;&lt;B&gt;You Are 98% American&lt;/B&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#b2c4ff&gt;
&lt;CENTER&gt;&lt;IMG src="http://www.quizdiva.net/howamerican/american4.jpg"&gt;&lt;/CENTER&gt;&lt;FONT color=#000000&gt;You're as American as red meat and shooting ranges. Tough and independent, you think big. You love everything about the US, wrong or right. And anyone who criticizes your home better not do it in front of you!&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;DIV align=center&gt;&lt;A href="http://www.blogthings.com/howamericanareyouquiz/"&gt;How American Are You?&lt;/A&gt;&lt;/DIV&gt;&lt;img src ="http://codeblooded.com/blog/aggbug/335.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Terry Denham</dc:creator><title>Great book on building your build environment</title><link>http://codeblooded.com/blog/archive/2005/07/20/299.aspx</link><pubDate>Wed, 20 Jul 2005 12:44:00 GMT</pubDate><guid>http://codeblooded.com/blog/archive/2005/07/20/299.aspx</guid><wfw:comment>http://codeblooded.com/blog/comments/299.aspx</wfw:comment><comments>http://codeblooded.com/blog/archive/2005/07/20/299.aspx#Feedback</comments><slash:comments>2736</slash:comments><wfw:commentRss>http://codeblooded.com/blog/comments/commentRss/299.aspx</wfw:commentRss><trackback:ping>http://codeblooded.com/blog/services/trackbacks/299.aspx</trackback:ping><description>&lt;P&gt;Recently I came across a review for a book that documents how to use NAnt and CruiseControl.NET to automate you build environment. We'll I just got the book delivered yesterday and I've been able to spend a few hours reading it and I'm really looking forward to reading more and clearing up some space in my busy schedule to get back to making our build environment at Telligent more like the ideas proposed in this book. A good read.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/1590594851/qid=1121892154/sr=8-1/ref=pd_bbs_1/102-7946212-6644150?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;Expert .NET Delivery Using NAnt and CruiseControl.NET&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://codeblooded.com/blog/aggbug/299.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Terry Denham</dc:creator><title>Community Server Installer using WiX Part 1</title><link>http://codeblooded.com/blog/archive/2004/10/03/154.aspx</link><pubDate>Sun, 03 Oct 2004 21:04:00 GMT</pubDate><guid>http://codeblooded.com/blog/archive/2004/10/03/154.aspx</guid><wfw:comment>http://codeblooded.com/blog/comments/154.aspx</wfw:comment><comments>http://codeblooded.com/blog/archive/2004/10/03/154.aspx#Feedback</comments><slash:comments>6487</slash:comments><wfw:commentRss>http://codeblooded.com/blog/comments/commentRss/154.aspx</wfw:commentRss><trackback:ping>http://codeblooded.com/blog/services/trackbacks/154.aspx</trackback:ping><description>&lt;p&gt;For those that don't know I've been working on the ASP.NET Forums codebase for a long time and I've always wanted to have a MSI based installer but with my full time job and the work that needed to be done with getting the Forums software up and running, I never had time.&lt;/p&gt;
&lt;p&gt;Now that I've been hired on with Telligent Systems I can now make the time to rework the Forums installer to use MSI and to do that I'm going to use WiX.&lt;/p&gt;
&lt;p&gt;Since using WiX to create the installer for the Forums software is going to be a learning experience and I'll also learn some information that will help me when I have the time to get back to work on WiXStudio I thought I would document the process that I'm going through and the leasons learned in creating a WiX file.&lt;/p&gt;
&lt;p&gt;Before I get started I want to give a little background on the Forums software and some goals that I'll want to have met before I'll be satisfied with the installer.&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;Goals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Must support installing everything or the web files only (no source files) &lt;/li&gt;
&lt;li&gt;Must support installing the English resource files and give the option to selectivly install other languages &lt;/li&gt;
&lt;li&gt;Support installing the default skin and optional skins &lt;/li&gt;
&lt;li&gt;Support the ability to define an professional version and an interprise version that will have different steps that will be performed. &lt;/li&gt;
&lt;li&gt;Integrated into our build environment (Draco.NET and NAnt) &lt;/li&gt;
&lt;li&gt;Dialogs to prompt the user for additional information to setup the database &lt;/li&gt;
&lt;li&gt;Ability to run SQL scripts from the installer &lt;/li&gt;
&lt;li&gt;Ability to create a IIS website&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ok now that's out of the way I'll describe how the files are laid out. We have 4 major pieces of the software and they are the Web, SqlDataProvider, Components and Controls assemblies. Of these, only the Web project is needed to run the website once the other 3 assemblies are built and placed in the Web's bin subdirectory. We also have some support tools and the localization files and each one could be an optional component that is installed. The final piece is we have a default skin and optional skins that could be installed on the web site. So I see 5 major sets of files to install.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Web Files : files that are essential to run the web application, including the default skin &lt;/li&gt;
&lt;li&gt;Skin Files : optional set of files that allow the admin to change the layout of their site &lt;/li&gt;
&lt;li&gt;Source Files : files that can be optionally installed since the user may not want to build the project &lt;/li&gt;
&lt;li&gt;Support Tools &lt;/li&gt;
&lt;li&gt;Localization files &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Reading the WiX documentation it sounds like I can accomplish this using Features and defining which Files or Components are included with each Feature.&lt;/p&gt;
&lt;p&gt;Alright so now I have a basic idea of where i want to take the Forums installer so lets get started using it. I'll create a file Forums.wxs file and place it in a Installer directory off my project's root directory. In the case of the Forums it will be forums\Installer directory. I'll use the sample wxs file that is in the wix.chm file as the starting template.&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?xml version='1.0'?&amp;gt;
	&amp;lt;Product Id='EFDE9F61-68D2-4D4F-8C76-31CF1736CC94' Name='Community Server Forums' Language='1033' Version='1.0.0.0' Manufacturer='Telligent Systems'&amp;gt;
		&amp;lt;Package Id='????????-????-????-????-????????????'
			Description='A rich collaboration platform.'
			Comments=&amp;quot;Community Server is a rich knowledge management and collaboration platform designed to meet the demands of the most rigorous collaborative needs.&amp;quot;
			Manufacturer='Telligent Systems' InstallerVersion='200' Compressed='yes' /&amp;gt;

		&amp;lt;Media Id=&amp;quot;1&amp;quot; Cabinet=&amp;quot;product.cab&amp;quot; EmbedCab=&amp;quot;yes&amp;quot; /&amp;gt;
		
		&amp;lt;Directory Id='TARGETDIR' Name='SourceDir'&amp;gt;
			&amp;lt;Directory Id=&amp;quot;ProgramFilesFolder&amp;quot; Name=&amp;quot;PFiles&amp;quot; &amp;gt;
				&amp;lt;Directory Id=&amp;quot;TelligentFolder&amp;quot; Name=&amp;quot;TellSys&amp;quot; LongName=&amp;quot;Telligent Systems&amp;quot; &amp;gt;
					&amp;lt;Directory Id=&amp;quot;CommunityServerFolder&amp;quot; Name=&amp;quot;CommServ&amp;quot; LongName=&amp;quot;Community Server&amp;quot; &amp;gt;
						&amp;lt;Directory Id=&amp;quot;DocFolder&amp;quot; Name=&amp;quot;Docs&amp;quot; LongName=&amp;quot;Documentation&amp;quot; &amp;gt;
							&amp;lt;Component Id=&amp;quot;docs&amp;quot; Guid=&amp;quot;B1F09005-C841-4A9C-AC29-1FFA167D79C5&amp;quot; &amp;gt;
								&amp;lt;File Id=&amp;quot;eula&amp;quot; Name=&amp;quot;eula.txt&amp;quot; DiskId=&amp;quot;1&amp;quot; src=&amp;quot;..\Documentation\eula.txt&amp;quot; /&amp;gt; 
							&amp;lt;/Component&amp;gt;
						&amp;lt;/Directory&amp;gt;
					&amp;lt;/Directory&amp;gt;
				&amp;lt;/Directory&amp;gt;
			&amp;lt;/Directory&amp;gt;
		&amp;lt;/Directory&amp;gt;

		&amp;lt;Feature Id='Core Files' Title='Core Files' Level='1'&amp;gt;
			&amp;lt;ComponentRef Id='docs' /&amp;gt;
		&amp;lt;/Feature&amp;gt;
	&amp;lt;/Product&amp;gt;
&amp;lt;/Wix&amp;gt;
&lt;/pre&gt;
&lt;p&gt;After I wrote this post and then tried to run the installer I received a Windows Installer error 2755 which didn't tell me much. So I ran msiexec using the /log operation and looked at the log file and read I was getting an error 1639 ERROR_INVALID_COMMAND_LINE but it didn't tell me where. I opened up first.wxs and started to compare what I had that was different and noticed that my File ID had a period in it, so I removed it and tried again but this didn't fix the problem. Then I noticed that Feature ID had a space in it, so I removed the space and tried it again and this time it ran without a problem. So now my Feature element should look like this : &lt;/p&gt;
&lt;p&gt;
&lt;pre&gt;
&amp;lt;Feature Id='CoreFiles' Title='Core Files' Level='1'&amp;gt;
	&amp;lt;ComponentRef Id='docs' /&amp;gt;
&amp;lt;/Feature&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;To help you understand what is going is going on in this file the only thing of significance that is not already outlined in the first.wxs file is that I'm using a series of question marks '?' as the package id. This is a new extension to the WiX toolset that tells the tool to generate a new Package ID every time its built. This is to keep you from having installs that you will not be able to uninstall like you would if you were to use the same PackageID for two seperate builds of the MSI database.&lt;/p&gt;
&lt;p&gt;Over the next several weeks I'll document more and more of what I discover in using the WiX toolset.&lt;/p&gt;&lt;img src ="http://codeblooded.com/blog/aggbug/154.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Terry Denham</dc:creator><title>Wiki Rules to Live By</title><link>http://codeblooded.com/blog/archive/2004/07/22/152.aspx</link><pubDate>Thu, 22 Jul 2004 21:49:00 GMT</pubDate><guid>http://codeblooded.com/blog/archive/2004/07/22/152.aspx</guid><wfw:comment>http://codeblooded.com/blog/comments/152.aspx</wfw:comment><comments>http://codeblooded.com/blog/archive/2004/07/22/152.aspx#Feedback</comments><slash:comments>5846</slash:comments><wfw:commentRss>http://codeblooded.com/blog/comments/commentRss/152.aspx</wfw:commentRss><trackback:ping>http://codeblooded.com/blog/services/trackbacks/152.aspx</trackback:ping><description>&lt;P&gt;I've started to document the project formerly known as ASP.NET Forums and now known as Community Server :: Forums. In the process of documenting the product I need to add the database schema to the Wiki but being a lazy programmer I'm always looking for more efficient ways to get my work done.&lt;/P&gt;
&lt;P&gt;Since I've been working with SQL Server for about 10 years now if I need anything out of the database and I have to generate reports or some kind of tabular data I alwasy try to find a way I can get the information I need from the database and let the database produce the report the way I need it.&lt;/P&gt;
&lt;P&gt;So in the Forums Wiki I wanted to generate a heading of Database Schema with each table listed as a link and then when I got to each link I wanted to print each table name again and then the columns in a table with the column name, datatype, key information, nullability and a general comment about the column. &lt;/P&gt;
&lt;P&gt;So I wrote a quick little TSQL script to generate the information for me in the proper Wiki format.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#ff0000&gt;select &lt;BR&gt;&amp;nbsp;'!!!Database Schema'&lt;BR&gt;&amp;nbsp;, '1' as [dorder]&lt;BR&gt;union all&lt;BR&gt;select &lt;BR&gt;&amp;nbsp;'[' + o.name + ']'&lt;BR&gt;&amp;nbsp;, '2.' + o.name + '.0'&lt;BR&gt;from sysobjects o where o.type = 'U' and o.name like 'forums%'&lt;BR&gt;union all&lt;BR&gt;select &lt;BR&gt;&amp;nbsp;'!!!!' + o.name&lt;BR&gt;&amp;nbsp;, '2.' + o.name + '.1' [dorder]&lt;BR&gt;&amp;nbsp;from sysobjects o where o.type = 'U' and o.name like 'forums%'&lt;BR&gt;union all&lt;BR&gt;select &amp;nbsp;&lt;BR&gt;&amp;nbsp;'||''''''Column Name''''''||''''''Data Type''''''||' &lt;BR&gt;&amp;nbsp;&amp;nbsp;+ '''''''Nullable''''''||''''''Key''''''||'&lt;BR&gt;&amp;nbsp;&amp;nbsp;+ '''''''Description''''''||'&lt;BR&gt;&amp;nbsp;, '2.' + o.name + '.2' [dorder]&lt;BR&gt;&amp;nbsp;from sysobjects o where o.type = 'U' and o.name like 'forums%'&lt;BR&gt;union all&lt;BR&gt;select&amp;nbsp;'||[' + c.name + ']||' &lt;BR&gt;&amp;nbsp;&amp;nbsp;+ type_name(c.xusertype) + case c.xusertype&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;when 62 then '(' + convert(varchar(10), xprec) + ',' &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ convert(varchar(10), xscale) + ')'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;when 99 then '(' + convert(varchar(10), length) + ')'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;when 108 then '(' + convert(varchar(10), xprec) + ',' &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ convert(varchar(10), xscale) + ')'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;when 165 then '(' + convert(varchar(10), length) + ')'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;when 167 then '(' + convert(varchar(10), length) + ')'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;when 173 then '(' + convert(varchar(10), length) + ')'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;when 175 then '(' + convert(varchar(10), length) + ')'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;when 231 then '(' + convert(varchar(10), length) + ')'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else ''&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;BR&gt;&amp;nbsp;&amp;nbsp;+ '||' + case when c.isnullable = 0 then 'no' else 'yes' end + '||||||'&lt;BR&gt;&amp;nbsp;, '2.' + o.name + '.2.' + convert(varchar(20), c.colid) [dorder]&lt;BR&gt;&amp;nbsp;from sysobjects o inner join syscolumns c on o.id = c.id where o.type = 'U' and o.name like 'forums%'&lt;BR&gt;order by 2, 1&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000&gt;&lt;FONT face="Times New Roman" color=#000000&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#ff0000&gt;&lt;FONT face="Times New Roman" color=#000000&gt;Now to generate a Data Dictionary I used the following script.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT face="Courier New" color=#ff0000&gt;select '!!!Data Dictionary', '1' as [dorder]&lt;BR&gt;union all&lt;BR&gt;select distinct '[' + c.name + ']', '2.' + c.name &lt;BR&gt;&amp;nbsp;from sysobjects o &lt;BR&gt;&amp;nbsp;&amp;nbsp;inner join syscolumns c &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;on o.id = c.id &lt;BR&gt;&amp;nbsp;where o.name like 'forums%' and o.type = 'U'&lt;BR&gt;order by 2, 1&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#ff0000&gt;&lt;FONT face="Times New Roman" color=#000000&gt;Now that the Database Schema and Data Dictionary are created with dummy links I just need to go to each one and create the page and copy in the information that is supposed to be on each page.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#ff0000&gt;&lt;FONT face="Times New Roman" color=#000000&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src ="http://codeblooded.com/blog/aggbug/152.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Terry Denham</dc:creator><title>WiXStudio Update</title><link>http://codeblooded.com/blog/archive/2004/06/12/151.aspx</link><pubDate>Sat, 12 Jun 2004 12:16:00 GMT</pubDate><guid>http://codeblooded.com/blog/archive/2004/06/12/151.aspx</guid><wfw:comment>http://codeblooded.com/blog/comments/151.aspx</wfw:comment><comments>http://codeblooded.com/blog/archive/2004/06/12/151.aspx#Feedback</comments><slash:comments>9619</slash:comments><wfw:commentRss>http://codeblooded.com/blog/comments/commentRss/151.aspx</wfw:commentRss><trackback:ping>http://codeblooded.com/blog/services/trackbacks/151.aspx</trackback:ping><description>&lt;P&gt;Sorry about not posting in a while but I've been extremely busy and I think I may have started or being involved in too many projects. At work I was working on an internal .NET WinForms framework and after meeting one deadline I was asked to travel to Houston to help another team tune their new application with SQL Server. So I'll spend the rest of June working on tuning this application.&lt;/P&gt;
&lt;P&gt;In my spare time I'm still working on getting the 2.0 release of the ASP.NET Forums wrapped up. We recently released a Beta 2 release and things are looking good for a late June release of the Forums. There are numerous support applications and tests that we need for the Forums that are also eating into my time to devote to the WiXStudio project.&lt;/P&gt;
&lt;P&gt;So there are other things that I can't really talk about now that are also eating into my available time so for now it looks like I won't be able to spend a whole lot of time on the WiXStudio project until July or August. I'm really excited about the WiX project and want to contribute to it and was really fired up but with all the work I have to do for a living plus all the extra curricular activities I'm working on WiXStudio has kind of fallen off my plate.&lt;/P&gt;
&lt;P&gt;When I get back to working on WiXStudio in July/Auguest, after we release the 2.0 release of the Forums, I want to rewrite our installer to use MSI so I will be looking to WiX to help me accomplish that. I'm anticipating that as I write our installer that is the time that I'll find to devote to WiXStudio.&lt;/P&gt;&lt;img src ="http://codeblooded.com/blog/aggbug/151.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Terry Denham</dc:creator><title>States I've Visited</title><link>http://codeblooded.com/blog/archive/2004/05/03/146.aspx</link><pubDate>Mon, 03 May 2004 12:35:00 GMT</pubDate><guid>http://codeblooded.com/blog/archive/2004/05/03/146.aspx</guid><wfw:comment>http://codeblooded.com/blog/comments/146.aspx</wfw:comment><comments>http://codeblooded.com/blog/archive/2004/05/03/146.aspx#Feedback</comments><slash:comments>2381</slash:comments><wfw:commentRss>http://codeblooded.com/blog/comments/commentRss/146.aspx</wfw:commentRss><trackback:ping>http://codeblooded.com/blog/services/trackbacks/146.aspx</trackback:ping><description>&lt;P&gt;Found this interesting site. Thought it would be interesting to see the States I've been to.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;IMG src="http://www.world66.com/myworld66/visitedStates/statemap?visited=ALAZARCACODCDEFLGAIDILKSKYLAMDMAMNMSMOMTNENVNJNMNYNCOKRISCTNTXUTVAWAWIWY"&gt;&lt;BR&gt;&lt;A href="http://www.world66.com/myworld66"&gt;create your own personalized map of the USA&lt;/A&gt; or &lt;A href="http://www.world66.com/"&gt;write about it on the open travel guide&lt;/A&gt;
&lt;P&gt;&lt;/P&gt;&lt;img src ="http://codeblooded.com/blog/aggbug/146.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Terry Denham</dc:creator><title>WixStudio Progress</title><link>http://codeblooded.com/blog/archive/2004/04/24/145.aspx</link><pubDate>Sat, 24 Apr 2004 17:34:00 GMT</pubDate><guid>http://codeblooded.com/blog/archive/2004/04/24/145.aspx</guid><wfw:comment>http://codeblooded.com/blog/comments/145.aspx</wfw:comment><comments>http://codeblooded.com/blog/archive/2004/04/24/145.aspx#Feedback</comments><slash:comments>8241</slash:comments><wfw:commentRss>http://codeblooded.com/blog/comments/commentRss/145.aspx</wfw:commentRss><trackback:ping>http://codeblooded.com/blog/services/trackbacks/145.aspx</trackback:ping><description>&lt;P&gt;Over the last week I've been working on some core components to the WixStudio project. I thought I'd give a status update to whomever is interested.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WixDom&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;As I dug around the wix namespace trying to understand what was going on I stumbled across the wix.cs file in the Serialize namespace within the Wix assembly. This file contains numerous class declarations that map to the Wix schema. It was an easy undertaking to get the file to open and save using XmlSerializer. I would run a Wix file using these classes and produce a model that I could use in my program. Problem was since everything was object arrays getting the classes in and out of the arrays was becoming a royal pain.&lt;/P&gt;
&lt;P&gt;After asking around a little to make sure I wasn't missing anything, it dawned on me that I would have to create a Code DOM to make the manipulation of the Wix file easier. The Wix structure in the Serialize namespace is perfect for the Wix compiler and linker because the model contained within the file will be static for the duration of the compile/linking stages of Wix but trying to use the model in a GUI program where the model is not yet finalized was going to be a nightmare.&lt;/P&gt;
&lt;P&gt;So what I've been doing this past week is refactoring the Wix model from Serialize/Wix.cs into a Code DOM to make the manipulation of the model easier. When the model is finished, or whenever the developer saves the model, the model will be saved to a proper Wix formatted file that can be read by an XmlSerializer or by the Wix tools.&lt;/P&gt;
&lt;P&gt;The major undertaking was to create collections for almost every classes used in the Wix namespace and for each class to change all the array properties to collections. This allows me to use standard notation to add new objects to a given node within the model. The additional benefit is that by having it as a Collection, I can now use this as a DataSource to any of the WinForms controls that I'll use in the WixStudio application.&lt;/P&gt;
&lt;P&gt;Take for example the UI class. It has children that are UIText classes. In the Serialize namespace these are stored in the UI Items object array but in the Code DOM they are stored in the UI's UITexts property which stores it's values in a simple StringCollection. Now because it's stored in a StringCollection I can now load the collection in a DataGrid for easy editing.&lt;/P&gt;
&lt;P&gt;Another major problem with the Wix Serialize namespace is that all objects only have fields and not properties. By not having the objects use properties, we loose the ability to have automatic data binding support. I've solved this in the Wix Dom by having every class have properties for everything that was a field within the Serialize namespace.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;GUI&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The other aspect of the WixStudio project that I've been working on is getting the GUI framework fleshed out to make it easier to edit Wix files. Along this line I have a Designer surface that I'm creating that will allow you to open/create Dialog objects, drop some supported MSI controls on the Dialog surface and have this Dialogs show during the installation process.&lt;/P&gt;
&lt;P&gt;I will also create some template Dialogs and allow for others to create their own Dialog templates that you can add to your own setup programs. If you think they are important enough or have a widespread need then let me know and we can discuss getting them into the WixStudio project.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Final Thoughts&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I know you all are wanting to see what the tool will look like but there is a lot of code to write just to get the project to a runnable state. I'm not going to wait until the program supports all options, that will be too long of a wait, but I do want the ability to at least make adding files, directories and Dialogs easier to perform. Keep in mind that it won't support every option that Wix supports but over time I hope that I or other contributors can add more and more supported features to the program.&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://codeblooded.com/blog/aggbug/145.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>