<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.claritycon.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Sajo Jacob</title><subtitle type="html">I am back blogging, almost 2 years after I decided to abandon my good ol C/C++ blog, so here goes my ramblings...</subtitle><id>http://blogs.claritycon.com/blogs/sajo_jacob/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.claritycon.com/blogs/sajo_jacob/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.claritycon.com/blogs/sajo_jacob/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2007-10-31T10:15:00Z</updated><entry><title>Sharepoint Debugging with WSS V3</title><link rel="alternate" type="text/html" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/08/19/sharepoint-debugging-with-wss-v3.aspx" /><id>http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/08/19/sharepoint-debugging-with-wss-v3.aspx</id><published>2008-08-20T00:49:00Z</published><updated>2008-08-20T00:49:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;SharePoint debugging experience in WSS V3 can get annoying, when exceptions start looking like this generic message &amp;quot;An unexpected error has occurred&amp;quot;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://employees.claritycon.com/spoov/SharepointDebuggingwithWSSV3_100BD/DebugTrace.jpg"&gt;&lt;img src="http://employees.claritycon.com/spoov/SharepointDebuggingwithWSSV3_100BD/DebugTrace_thumb.jpg" style="border:0px none;" alt="DebugTrace" width="244" border="0" height="93" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;To enable stack trace similar to the ASP.NET error page, edit your web.config at C:\Inetpub\wwwroot\wss\VirtualDirectories and edit the following entries as follows:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;SafeMode &lt;/span&gt;&lt;span style="color:red;"&gt;CallStack&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt; &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;default is false&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;customErrors &lt;/span&gt;&lt;span style="color:red;"&gt;mode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Off&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt; &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;default is On&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;and there you are...go fix it now! ;)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://employees.claritycon.com/spoov/SharepointDebuggingwithWSSV3_100BD/NiceStackTrace.jpg"&gt;&lt;img src="http://employees.claritycon.com/spoov/SharepointDebuggingwithWSSV3_100BD/NiceStackTrace_thumb.jpg" style="border:0px none;" alt="NiceStackTrace" width="365" border="0" height="163" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.claritycon.com/aggbug.aspx?PostID=11132" width="1" height="1"&gt;</content><author><name>spoov</name><uri>http://blogs.claritycon.com/members/spoov.aspx</uri></author><category term="Server Products" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Server+Products/default.aspx" /><category term="SharePoint" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/SharePoint/default.aspx" /></entry><entry><title>RIApalooza</title><link rel="alternate" type="text/html" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/05/31/riapalooza.aspx" /><id>http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/05/31/riapalooza.aspx</id><published>2008-06-01T04:43:00Z</published><updated>2008-06-01T04:43:00Z</updated><content type="html">&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;RIApalooza was a Chicago based event focused on exploring the development of Rich Internet Applications which was held at the &lt;span style="mso-ansi-language:en;"&gt;Illinois Technology Association between May 30-31, 2008.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;RIA in the recent history has changed the IT industry’s outlook greatly from a designer’s role from just being a step in the lifecycle of the project instead leaning towards an iterative design based development paradigm. &lt;span style="mso-ansi-language:en;"&gt;This is something we at Clarity Consulting recognized during some of our past design focused projects and been quite successful with adopting such a model. &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;span style="mso-ansi-language:en;"&gt;&lt;font face="Calibri" color="#000000" size="3"&gt;If you are looking for a job?…go &lt;/font&gt;&lt;a href="http://www.claritycon.com/careers/"&gt;&lt;font face="Calibri" color="#800080" size="3"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font face="Calibri" color="#000000" size="3"&gt; else continue reading…&amp;lt;g&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font face="Calibri" color="#000000" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000" size="3"&gt;Getting back to RIApalooza, it turned out to be a well attended event...RIApalooza as marketed wasn’t quite as platform agnostic as I expected, there were too many demo’s based on Adobe’s Flex…Maybe I went in expecting to see a good mix of different implementation models.&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" color="#000000" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000" size="3"&gt;Geoff Cubitt of Roundarch did a good session “&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="mso-ansi-language:en;mso-bidi-font-weight:bold;"&gt;How RIA Changes In Application Design&lt;/span&gt;&lt;/i&gt;” showcasing some Flex and Ajax based RIA’s and talked about the considerations to keep in mind when moving desktop applications to an RIA.&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" color="#000000" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000" size="3"&gt;Josh Holmes who is a RIA Architect Evangelist with Microsoft and &lt;span style="mso-ansi-language:en;"&gt;Michael Labriola of Digital Primates a Chicago-based Adobe Solution Partner came together for a “&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="mso-bidi-font-weight:bold;"&gt;Best and Worst Practices Building a RIA&lt;/span&gt;&lt;/i&gt;” session&lt;span style="mso-spacerun:yes;"&gt; &lt;/span&gt;which was a &lt;/span&gt;good Design 101 class for starters *cough* Developers.&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" color="#000000" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000" size="3"&gt;Open Mic session went pretty well with some good questions from the crowd…Overall an event worth getting up on a Saturday morning for!&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.claritycon.com/aggbug.aspx?PostID=5694" width="1" height="1"&gt;</content><author><name>spoov</name><uri>http://blogs.claritycon.com/members/spoov.aspx</uri></author><category term="Rich Internet Applications" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Rich+Internet+Applications/default.aspx" /><category term="Flex" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Flex/default.aspx" /><category term="AJAX" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/AJAX/default.aspx" /><category term="RIA" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/RIA/default.aspx" /></entry><entry><title>Disk Cost Issue with ReserveCost!</title><link rel="alternate" type="text/html" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/03/31/disk-cost-issue-with-reservecost.aspx" /><id>http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/03/31/disk-cost-issue-with-reservecost.aspx</id><published>2008-04-01T04:40:00Z</published><updated>2008-04-01T04:40:00Z</updated><content type="html">&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;This was an interestingly annoying issue I came across with Windows Installer, when you use the ReserveCost Element to specify the disk space by populating the disk cost for your components in the ReserveCost Table.&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;u&gt;Here is the scenario:&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;1) You have a ReserveCost Element for your component which specifies the amount of disk space needed for the component.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;2) You have conditions around the components which decide if the component is installed on the target machine.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;So something like this….&lt;/font&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Component &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Id&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;MyCustomComponent&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;Guid&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;A2DCFC09-0651-4E2C-04A4-B18F759F9F41&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Condition&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;![CDATA[&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;MYCONDITION = &amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;]]&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Condition&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;File &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Id&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;MYCAB.CAB&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;Name&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;MYCAB.CAB&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;$(var.CustomPath)MYCAB.CAB&lt;/span&gt;&amp;quot;  &lt;span style="COLOR:red;"&gt;Compressed&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;no&lt;/span&gt;&amp;quot; &lt;/pre&gt;&lt;pre class="code"&gt;  &lt;span style="COLOR:red;"&gt;KeyPath&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;yes&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;DiskId&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;1&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;ReserveCost &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Directory&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;CABDIR&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;RunLocal&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;300000&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;RunFromSource&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;0&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;Id&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;CABID&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Component&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font size="3" face="Calibri"&gt;3) And then you have checks as follows in the “Next” or “Install” button
to prevent the installation from continuing if the target machine does not have
sufficient space&lt;/font&gt;&lt;/pre&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Publish &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Event&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;SpawnDialog&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;OutOfDiskDlg&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;gt;&amp;lt;![CDATA[&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(OutOfDiskSpace = 1 AND &lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:gray;"&gt;OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST=&amp;quot;F&amp;quot;)&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;]]&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Publish&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;u&gt;You would expect &lt;/u&gt;to see the assigned space of 300000, in this case in the Space requirements information section by subscribing to the “SelectionSize” event &lt;/font&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Subscribe &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Event&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;SelectionSize&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;Attribute&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;Text&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;And also expect that the installer will not proceed with the installation on the target machine with insufficient space and will trigger the “OutOfDiskDlg” dialog which you just wired up.&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;But unfortunately even though your ReserveCost table was populated correctly, Windows Installer decides to go the safe route of &lt;strong&gt;not &lt;/strong&gt;including the size (ReserveCost size) of any components which have a condition around them and the total space needed for the component(and Product) is not correct anymore (&lt;strong&gt;even&lt;/strong&gt; if the conditions which they are dependant on have already being determined to be true and the component will be installed). &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The fix for this would be to include a dummy component with the ReserveCost element with no conditions under the same feature (and ofcourse with no File attribute).&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.claritycon.com/aggbug.aspx?PostID=4766" width="1" height="1"&gt;</content><author><name>spoov</name><uri>http://blogs.claritycon.com/members/spoov.aspx</uri></author><category term="Windows Installer XML (WiX) " scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Windows+Installer+XML+_2800_WiX_2900_+/default.aspx" /><category term="WiX" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/WiX/default.aspx" /></entry><entry><title>CustomActionData in WiX with Deferred Custom Actions</title><link rel="alternate" type="text/html" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/02/28/customactiondata-in-wix-with-deferred-custom-actions.aspx" /><id>http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/02/28/customactiondata-in-wix-with-deferred-custom-actions.aspx</id><published>2008-02-29T04:20:00Z</published><updated>2008-02-29T04:20:00Z</updated><content type="html">&lt;pre class="code"&gt;Here is a major gotcha that you will encounter when you try to configure your product with &lt;/pre&gt;&lt;pre class="code"&gt;deferred actions using configurable properties during the installation.&lt;/pre&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;Deferred actions do NOT have access to the MSI session objects which means that if you try &lt;/pre&gt;&lt;pre class="code"&gt;to get the value of a property set by the installer like:
&lt;font size="2"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Value = Session.Property( &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Property1&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; )&lt;/font&gt;
&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;in a VBScript custom action which is deferred, It will return null. Yes, you just lost the &lt;/p&gt;&lt;p&gt;original value of &lt;font color="#a31515" size="2"&gt;Property1 &lt;/font&gt;during deferred custom actions.
&lt;/p&gt;&lt;/pre&gt;&lt;pre class="code"&gt;Here is where &lt;font color="#a31515"&gt;CustomActionData &lt;/font&gt;comes to the rescue, let’s see how this works&lt;/pre&gt;&lt;pre class="code"&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;u&gt;Your deferred Custom Action:&lt;/u&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;CustomAction &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Id&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;MYCustomDeferredAction &lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;Return&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;check&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;Execute&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;deferred&lt;/span&gt;&amp;quot; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:red;"&gt;BinaryKey&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;MYVBSCRIPT&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;VBScriptCall&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;MyVBScriptMethod&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;u&gt;&lt;font color="#000000"&gt;Now let’s create a new custom action which will run as immediate:&lt;/font&gt;&lt;/u&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="COLOR:green;"&gt;Note I am passing 2 values delimted by a ‘,’ in this example&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;--&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;CustomAction &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Id&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;SetCustomActionDataValue &lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;Return&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;check&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;Property&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;MYCustomDeferredAction&lt;/span&gt;&amp;quot; &lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:red;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:red;"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;[Value1]&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;,&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;[Value2]&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;amp;quot;&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;
&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;u&gt;&lt;/u&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;&lt;u&gt;And in the InstallExecuteSequence place the CustomActionData custom action before the&lt;/u&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;&lt;u&gt; actual custom action is executed:&lt;/u&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Custom &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Action&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;SetCustomActionDataValue&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;After&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;CAction1&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;    &amp;lt;![CDATA[ &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;( Place any conditions here…)&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;]]&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Custom&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Custom &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Action&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;MYCustomDeferredAction &lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;After&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;SetCustomActionDataValue &lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;    &amp;lt;![CDATA[ &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;( Place any conditions here…)&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;]]&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Custom&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/pre&gt;&lt;/pre&gt;&lt;/span&gt;&lt;u&gt;And now in the VBScript just do a split to parse out the 2 values from the &lt;font color="#a31515"&gt;CustomActionData &lt;/font&gt;&lt;/u&gt;&lt;pre class="code"&gt;&lt;u&gt;and you are done!&lt;/u&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;&lt;span style="COLOR:green;"&gt;&amp;#39; VBScript source code&lt;/pre&gt;
&lt;p&gt;&lt;/span&gt;Delim = &lt;span style="COLOR:#a31515;"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:#a31515;"&gt;&lt;/span&gt;strArgs = Session.Property(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;CustomActionData&amp;quot;&lt;/span&gt;)&lt;/p&gt;
&lt;p&gt;Args = Split( strArgs, Delim )&lt;/p&gt;
&lt;p&gt;Value1 = Args(0)&lt;/p&gt;
&lt;p&gt;Value2= Args(1)&lt;/p&gt;&lt;img src="http://blogs.claritycon.com/aggbug.aspx?PostID=3907" width="1" height="1"&gt;</content><author><name>spoov</name><uri>http://blogs.claritycon.com/members/spoov.aspx</uri></author><category term="Windows Installer XML (WiX) " scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Windows+Installer+XML+_2800_WiX_2900_+/default.aspx" /></entry><entry><title>How to print EULA from WiX</title><link rel="alternate" type="text/html" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/01/24/how-to-print-eula-from-wix.aspx" /><id>http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/01/24/how-to-print-eula-from-wix.aspx</id><published>2008-01-24T15:10:00Z</published><updated>2008-01-24T15:10:00Z</updated><content type="html">&lt;p&gt;&lt;font face="Calibri" size="3"&gt;Again there is absolutely no documentation out there&amp;nbsp;on this, WiX provides out of the box support for doing this though. Just define a custom action into wixca.dll with entry point &lt;b style="mso-bidi-font-weight:normal;"&gt;PrintEula&lt;/b&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:0in;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:4pt;BACKGROUND:#d9d9d9;PADDING-BOTTOM:1pt;BORDER-LEFT:windowtext 1pt solid;PADDING-TOP:1pt;BORDER-BOTTOM:windowtext 1pt solid;mso-background-themecolor:background1;mso-background-themeshade:217;mso-element:para-border-div;mso-border-alt:solid windowtext .5pt;"&gt;&lt;span style="FONT-SIZE:10pt;LINE-HEIGHT:115%;"&gt;&lt;font face="Calibri" color="#000000" size="3"&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&amp;lt;CustomAction Id=&amp;quot;PrintEula&amp;quot; BinaryKey=&amp;quot;wixca&amp;quot; DllEntry=&amp;quot;PrintEula&amp;quot; Return=&amp;quot;ignore&amp;quot; Execute=&amp;quot;immediate&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;And on the LicenseAgreement dialog, define the EULA in a ScrollableText control with ID “&lt;b style="mso-bidi-font-weight:normal;"&gt;LicenseText&lt;/b&gt;&amp;quot;, this is how WiX knows what text to print.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:0in;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:4pt;BACKGROUND:#d9d9d9;PADDING-BOTTOM:1pt;BORDER-LEFT:windowtext 1pt solid;PADDING-TOP:1pt;BORDER-BOTTOM:windowtext 1pt solid;mso-background-themecolor:background1;mso-background-themeshade:217;mso-element:para-border-div;mso-border-alt:solid windowtext .5pt;"&gt;&lt;span style="FONT-SIZE:10pt;LINE-HEIGHT:115%;"&gt;&lt;font face="Calibri" color="#000000"&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font size="3"&gt;&amp;lt;Control Id=&amp;quot;&lt;b style="mso-bidi-font-weight:normal;"&gt;LicenseText&lt;/b&gt;&amp;quot; Type=&amp;quot;ScrollableText&amp;quot; X=&amp;quot;201&amp;quot; Y=&amp;quot;62&amp;quot; Width=&amp;quot;254&amp;quot; Height=&amp;quot;66&amp;quot; Sunken=&amp;quot;yes&amp;quot; TabSkip=&amp;quot;no&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font size="3"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;Text SourceFile=&amp;quot;..\License.rtf&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font size="3"&gt;&amp;lt;/Control&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Simple!&lt;/p&gt;&lt;img src="http://blogs.claritycon.com/aggbug.aspx?PostID=3638" width="1" height="1"&gt;</content><author><name>spoov</name><uri>http://blogs.claritycon.com/members/spoov.aspx</uri></author><category term="Windows Installer XML (WiX) " scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Windows+Installer+XML+_2800_WiX_2900_+/default.aspx" /><category term="print" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/print/default.aspx" /><category term="EULA" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/EULA/default.aspx" /><category term="wixca" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/wixca/default.aspx" /><category term="WiX" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/WiX/default.aspx" /></entry><entry><title>How to customize the install directory dynamically in WiX?</title><link rel="alternate" type="text/html" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/12/18/3543.aspx" /><id>http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/12/18/3543.aspx</id><published>2007-12-19T02:05:00Z</published><updated>2007-12-19T02:05:00Z</updated><content type="html">&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri size=3&gt;This is one of those elusive topics whose answer is hard to find with googling around, but you will discover that it’s pretty easy, again if only you knew the magic words.&lt;/FONT&gt;&lt;/P&gt;
&lt;H3&gt;&lt;FONT face=Calibri size=3&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/H3&gt;&lt;FONT face=Calibri color=#000000&gt;
&lt;P class=MsoNormal&gt;Define this in your &lt;B&gt;Main.wxs&lt;/B&gt;:&lt;/P&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;&amp;lt;Property Id="_BrowseProperty" Value="INSTALLDIR" /&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 0in; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #d9d9d9; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri color=#000000&gt;&amp;lt;Directory Id="ProgramFilesFolder" SourceName="program files"&amp;gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;Directory Id="INSTALLDIR" Name="."&amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;Directory Id="FOOBAR_DIR" Name="FOOBAR"&amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;!-- All your components goes here…… --&amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt; /Directory &amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt; /Directory &amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&amp;lt; /Directory &amp;gt;&lt;/FONT&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;Define the Ok (pushbutton) and PathEdit controls in your &lt;B&gt;Browse.wxs&lt;/B&gt; dialog for browsing directories to specify the install path as:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 0in; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #d9d9d9; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri color=#000000&gt;&amp;lt;Control Id="PathEdit" Type="PathEdit" X="84" Y="202" Width="261" Height="20" Property="_BrowseProperty" Indirect="yes" /&amp;gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri color=#000000&gt;&amp;lt;Control Id="OK" Type="PushButton" X="304" Y="243" Width="56" Height="17" Default="yes" Text="[ButtonText_OK]"&amp;gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;Publish Event="SetTargetPath" Value="[_BrowseProperty]"&amp;gt;&amp;lt;![CDATA[1]]&amp;gt;&amp;lt;/Publish&amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;Publish Event="EndDialog" Value="Return"&amp;gt;&amp;lt;![CDATA[1]]&amp;gt;&amp;lt;/Publish&amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;lt;/Control&amp;gt;&lt;/FONT&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal&gt;&lt;/P&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;
&lt;H3&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;H3&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;H3&gt;&lt;FONT face=Calibri&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face="Times New Roman" size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Arial color=#000000 size=1&gt;And finally wire up the events in the Next button in the Customize.wxs Dialog which spawns the Browse.wxs dialog:&lt;/FONT&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/H3&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #d9d9d9; PADDING-BOTTOM: 1pt; MARGIN-LEFT: 0in; BORDER-LEFT: windowtext 1pt solid; MARGIN-RIGHT: 0.2in; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri color=#000000&gt;&amp;lt;Control Id="Next" Type="PushButton" X="330" Y="308" Width="56" Height="17" Default="yes" Text="[ButtonText_Next]"&amp;gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;lt;Publish Event="SetTargetPath" Value="INSTALLDIR"&amp;gt;&amp;lt;![CDATA[1]]&amp;gt;&amp;lt;/Publish&amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;lt;Publish Event="NewDialog" Value="NextDlg"&amp;gt;&amp;lt;![CDATA[1]]&amp;gt;&amp;lt;/Publish&amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;lt;Subscribe Event="SelectionNoItems" Attribute="Enabled" /&amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri color=#000000&gt;&amp;lt;/Control&amp;gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;FONT face=Calibri color=#000000&gt;
&lt;P class=MsoNormal&gt;&lt;STRONG&gt;So how did this really work?&lt;/STRONG&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;So as we can see INSTALLDIR is currently setup as “C:\Program Files\” (note the parent of “INSTALLDIR” is “Program Files”) but defining the INSTALLDIR with a Name attribute = “.” simply ignores the root parent folder if it finds INSTALLDIR was assigned a different value which we do in &lt;B&gt;Browse.wxs &lt;/B&gt;dialog and uses the newly assigned&amp;nbsp;install path.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT&gt;&lt;/FONT&gt;&lt;FONT&gt;&lt;/FONT&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;img src="http://blogs.claritycon.com/aggbug.aspx?PostID=3543" width="1" height="1"&gt;</content><author><name>spoov</name><uri>http://blogs.claritycon.com/members/spoov.aspx</uri></author><category term="Windows Installer XML (WiX) " scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Windows+Installer+XML+_2800_WiX_2900_+/default.aspx" /></entry><entry><title>I have no clue! </title><link rel="alternate" type="text/html" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/12/06/i-have-no-clue.aspx" /><id>http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/12/06/i-have-no-clue.aspx</id><published>2007-12-06T06:51:00Z</published><updated>2007-12-06T06:51:00Z</updated><content type="html">&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;You will know why I chose that caption by the time you reach the end of this post. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;So this week turned out to be an &amp;quot;interesting&amp;quot; week, besides getting bashed badly at Foos by my colleagues, something blew my fuse off and I didn’t know what really hit me for a little bit….&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;Like most outlook users/consultants, I try to take extra care before sending out emails, do the usual proof reading, double check the attachments and recipients. Besides that I also have a rule setup on my Outlook to defer my outgoing mail by 2 minutes so that I have enough time to catch last minute errors and avoid any possible embarrassment...&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;Well sadly none of those practices helped in this case.&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;Before I go any further, for those of who don&amp;#39;t know how to defer your emails, here is how to do it&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;strong&gt;Tools&amp;gt;Rules and Alerts &amp;gt; New Rule&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;a href="http://employees.claritycon.com/spoov/IhavenoclueHowOutlookSharePointintegrati_82B/1.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="436" alt="1" src="http://employees.claritycon.com/spoov/IhavenoclueHowOutlookSharePointintegrati_82B/1_thumb.jpg" width="489" border="0" /&gt;&lt;/a&gt;&lt;font face="Calibri" color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;Click &lt;strong&gt;Next&lt;/strong&gt;...&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;a href="http://employees.claritycon.com/spoov/IhavenoclueHowOutlookSharePointintegrati_82B/2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="442" alt="2" src="http://employees.claritycon.com/spoov/IhavenoclueHowOutlookSharePointintegrati_82B/2_thumb.jpg" width="489" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;Click on &lt;strong&gt;&amp;quot;a number of&amp;quot;&lt;/strong&gt; and select the number of minutes by which you want to defer your outgoing mail...&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;a href="http://employees.claritycon.com/spoov/IhavenoclueHowOutlookSharePointintegrati_82B/3.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="442" alt="3" src="http://employees.claritycon.com/spoov/IhavenoclueHowOutlookSharePointintegrati_82B/3_thumb.jpg" width="486" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;So this basically keeps your outgoing mail in the &lt;strong&gt;Outbox&lt;/strong&gt;&amp;nbsp;for 2 minutes before sending it. It does help! &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;I always liked the Outlook-SharePoint integration with shared documents since you can preview the shared documents on your SharePoint site right from your Outlook and you don&amp;#39;t have to download different versions as someone makes changes to it. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;I found this feature to be very useful during the first couple of weeks after a new project is kicked off and the project docs are frequently updated.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;strong&gt;What went wrong with the Outlook-SharePoint Discussion board integration? &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;For those of whom haven&amp;#39;t used this feature yet, here is couple of ways you can connect to your SharePoint discussion board with Outlook. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;1) Directly from your sharepoint site: Go to the discussion board and click on Actions and select &lt;strong&gt;&amp;quot;Connect to Outlook&amp;quot;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;a href="http://employees.claritycon.com/spoov/IhavenoclueHowOutlookSharePointintegrati_82B/5.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="278" alt="5" src="http://employees.claritycon.com/spoov/IhavenoclueHowOutlookSharePointintegrati_82B/5_thumb.jpg" width="335" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;2) If&lt;/font&gt;&lt;font face="Calibri" color="#000000"&gt; you have subscribed to e-mail notifications by using the &amp;quot;Alert Me&amp;quot; option above then you will find the following option to connect to the discussion board as a header on your notification email in Outlook&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;a href="http://employees.claritycon.com/spoov/IhavenoclueHowOutlookSharePointintegrati_82B/4.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;WIDTH:349px;HEIGHT:31px;BORDER-RIGHT-WIDTH:0px;" height="40" alt="4" src="http://employees.claritycon.com/spoov/IhavenoclueHowOutlookSharePointintegrati_82B/4_thumb.jpg" width="377" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;Now if I were to say that an email correspondence (infact a personal email) &lt;/font&gt;&lt;font face="Calibri" color="#000000"&gt;became a discussion post on our SharePoint site sending out notifications with the email content to everyone in the office who subscribed to the alerts without my knowledge, Would that make it any interesting? Now I seem to have an audience here…&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;You always find comfort in the statement &amp;quot;It could have been worse&amp;quot;...I totally agree! &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;strong&gt;How did this happen?&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#000000"&gt;Not quite sure, but here is one possibility:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;Once connected to your Outlook, the sharepoint discussion folders appears under the root Sharepoint lists. &lt;/font&gt;&lt;font face="Calibri" color="#000000"&gt;Drag and drop of messages from your inbox to the sharepoint discussion folder will automatically create SharePoint Discussion posts &lt;strong&gt;without&lt;/strong&gt; any prompts.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;strong&gt;Scary part&amp;nbsp;is:&lt;/strong&gt;&amp;nbsp;I am 95% confident I &lt;strong&gt;didn&amp;#39;t&lt;/strong&gt; do a drag and drop!&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Calibri" color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.claritycon.com/aggbug.aspx?PostID=3531" width="1" height="1"&gt;</content><author><name>spoov</name><uri>http://blogs.claritycon.com/members/spoov.aspx</uri></author><category term="Server Products" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Server+Products/default.aspx" /><category term="Server Products" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Server+Products/default.aspx" /></entry><entry><title>WiX tools, Logging and Silent installation</title><link rel="alternate" type="text/html" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/11/26/3509.aspx" /><id>http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/11/26/3509.aspx</id><published>2007-11-27T04:10:00Z</published><updated>2007-11-27T04:10:00Z</updated><content type="html">&lt;H2&gt;&lt;FONT size=3&gt;Some useful WiX tools and Windows installer notes:&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT face=Calibri color=#000000&gt;WiXEdit&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;A href="http://employees.claritycon.com/spoov/WiXtoolsLoggingandSilentinstallation_13799/1.jpg"&gt;&lt;IMG height=370 alt=1 src="http://employees.claritycon.com/spoov/WiXtoolsLoggingandSilentinstallation_13799/1_thumb.jpg" width=471 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;A href="http://wixedit.sourceforge.net/"&gt;&lt;B&gt;&lt;FONT face=Calibri color=#0000ff&gt;WiXEdit&lt;/FONT&gt;&lt;/B&gt;&lt;/A&gt; is a decent WiX editor (open source). I used it extensively during the initial UI design phases, it works for most purposes but don’t expect it to be very intuitive like for example when it comes to Attribute on controls its shows all possible attributes on right clicking the control instead of showing only the applicable ones.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;U&gt;Votive (the visual studio plugin)&lt;/U&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;You can use &lt;/FONT&gt;&lt;A href="http://wix.sourceforge.net/votive.html"&gt;&lt;B&gt;&lt;FONT face=Calibri color=#0000ff&gt;Votive&lt;/FONT&gt;&lt;/B&gt;&lt;/A&gt;&lt;FONT face=Calibri color=#000000&gt; to use Visual Studio to build your WiX code. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;Remember you won’t be able to see the dialogs in design mode if you are using Votive. Only advantage here would be you could use visual studio’s intellisense for the WiX code after you copy the WiX XSD’s from &lt;B&gt;WiX\doc&lt;/B&gt;&amp;nbsp; to the following directory: &lt;B&gt;C:\Program Files\Microsoft Visual Studio 8\Xml\Schemas &lt;/B&gt;&lt;SPAN&gt;and ofcourse you could integrate it with your project or as a separate build process&lt;B&gt; &lt;/B&gt;
&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri color=#000000&gt;I personally use a batch file to build my WiX project mainly because it’s easier to point to &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://wix.sourceforge.net/releases/"&gt;&lt;SPAN&gt;&lt;FONT face=Calibri color=#0000ff&gt;different releases&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt; of WiX binaries without having to install Votive each time and also with some custom actions you might want to perform when building your project. &lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;&lt;U&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;Orca Editor&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;&lt;U&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;A href="http://employees.claritycon.com/spoov/WiXtoolsLoggingandSilentinstallation_13799/2.jpg"&gt;&lt;IMG height=332 alt=2 src="http://employees.claritycon.com/spoov/WiXtoolsLoggingandSilentinstallation_13799/2_thumb.jpg" width=477 border=0&gt;&lt;/A&gt; &lt;/P&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/B&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;I use this tool for peaking into the msi files, it also lets you edit the .msi or.msm file directly.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;To install and run the Orca editor, follow these steps: &lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE class=MsoNormalTable cellSpacing=0 cellPadding=0 border=0&gt;

&lt;TR&gt;
&lt;TD&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;a.&lt;SPAN&gt; &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;Download the &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&amp;amp;displaylang=en"&gt;&lt;FONT face=Calibri color=#0000ff&gt;Windows Installer SDK&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt; samples, tools, and documentation.&lt;SPAN&gt; &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;b.&lt;SPAN&gt; &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;Install the Orca editor by double-clicking the Orca.msi file in the &lt;B&gt;\Microsoft SDK\bin&lt;/B&gt; folder.&lt;SPAN&gt; &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;/U&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;Tallow &lt;/STRONG&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/U&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;This tool is used to generate WiX fragments by harvesting a directory with WiX2.0&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;A href="http://employees.claritycon.com/spoov/WiXtoolsLoggingandSilentinstallation_13799/3.jpg"&gt;&lt;IMG height=256 alt=3 src="http://employees.claritycon.com/spoov/WiXtoolsLoggingandSilentinstallation_13799/3_thumb.jpg" width=482 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;&lt;SPAN&gt;&lt;SPAN&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #f2f2f2; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 242"&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Tallow - d c:/My_Custom_Dir/tools &amp;gt;&amp;gt; Output.wxs&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/U&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/U&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;STRONG&gt;Heat &lt;/STRONG&gt;
&lt;P&gt;&lt;/P&gt;&lt;/U&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;Similar functionality as in Tallow but Heat is optimized for working with WiX 3.0. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;A href="http://employees.claritycon.com/spoov/WiXtoolsLoggingandSilentinstallation_13799/4.jpg"&gt;&lt;IMG height=181 alt=4 src="http://employees.claritycon.com/spoov/WiXtoolsLoggingandSilentinstallation_13799/4_thumb.jpg" width=491 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;&lt;SPAN&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #f2f2f2; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 242"&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Heat dir c:/My_Custom_Dir/tools -out output.wxs&lt;/SPAN&gt;&lt;SPAN&gt; 
&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;Keep in mind that both Heat and Tallow are designed to allow a setup author to generate their setup authoring very quickly for the first time after which authoring should be done manually to make sure that guids, identifier names remain the same and component rules aren’t broken&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;
&lt;P class=MsoNormal&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;
&lt;P class=MsoNormal&gt;&lt;U&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;Dark&lt;/STRONG&gt; &lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/U&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;Dark is used to reverse engineer an MSI into a WiX source file&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;A href="http://employees.claritycon.com/spoov/WiXtoolsLoggingandSilentinstallation_13799/5.jpg"&gt;&lt;IMG height=278 alt=5 src="http://employees.claritycon.com/spoov/WiXtoolsLoggingandSilentinstallation_13799/5_thumb.jpg" width=499 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;&lt;SPAN&gt;&lt;SPAN&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #f2f2f2; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 242"&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Dark Package.msi DarkedOutput.wxs&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;STRONG&gt;Install your installation package with logging: &lt;/STRONG&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #f2f2f2; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 242"&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN&gt;msiexec /i "Package.msi" /l*v "d:\place for logs\Install.log"&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;U&gt;&lt;SPAN&gt;&lt;U&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;STRONG&gt;Silent Install with selective feature installation and logging:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #f2f2f2; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 242"&gt;&lt;U&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN&gt;msiexec /i “Package.msi" /q ADDLOCAL=Feature1,Feature3 /l*v Install.log&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;Use the msiexec switch /q for silent installation&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;You can specify properties on the command line with PROPERTYNAME=Value&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;For a selection of features use ADDLOCAL= Feature ID (assigned in WiX code)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;You can also control the install directory by passing it as a parameter. INSTALLDIR=C:\My_Custom_Dir&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Calibri color=#000000&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.claritycon.com/aggbug.aspx?PostID=3509" width="1" height="1"&gt;</content><author><name>spoov</name><uri>http://blogs.claritycon.com/members/spoov.aspx</uri></author><category term="Windows Installer XML (WiX) " scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Windows+Installer+XML+_2800_WiX_2900_+/default.aspx" /></entry><entry><title>WiX and Databases</title><link rel="alternate" type="text/html" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/11/14/WiX-and-Databases.aspx" /><id>http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/11/14/WiX-and-Databases.aspx</id><published>2007-11-15T03:07:00Z</published><updated>2007-11-15T03:07:00Z</updated><content type="html">&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;Since WiX is still fairly new and is an Open Source project, don’t be surprised if you hear a lot of noise about the little or no documentation available .&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;In this and the coming few posts I am going to start posting some of the challenges/ roadblocks I’ve hit and the workarounds or solutions I could find.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;u&gt;&lt;font face="Calibri"&gt;WiX and Databases&lt;/font&gt;&lt;/u&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;Let’s look at how to perform some simple tasks with databases first and then try the more complex ones.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;First thing to get started would be to add a WiX SQLExtension and UtilExtension. To use any extension with WiX you will have to include a reference to the schema within the WiX element. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;span style="COLOR:red;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;font face="Calibri"&gt;&lt;font color="#ff0000"&gt;&lt;span style="COLOR:red;mso-ansi-language:EN;"&gt;xmlns:sql=&amp;quot;http://schemas.microsoft.com/wix/SqlExtension&amp;quot; xmlns:util=&amp;quot;http://schemas.microsoft.com/wix/UtilExtension&amp;quot;&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;If you are using Votive the Visual Studio plugin to build your project then make sure you add references to WixSqlExtension.dll and WixUtilExtension.dll from your WiX binaries directory. &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;If you are using a batch file (like I do) for building your project then pass these extensions to both Candle and Light i.e. &lt;font color="#ff0000"&gt;&lt;span style="COLOR:red;"&gt;-ext WixSqlExtension -ext WixUtilExtension&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" color="#ff0000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Calibri"&gt;&lt;u&gt;Create a SQL User:&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;util:User Id=&amp;quot;MySQLUser&amp;quot; Name&lt;/span&gt;&lt;span style="COLOR:blue;mso-ansi-language:EN;"&gt; &lt;span&gt;=&amp;quot;[SQLUser]&amp;quot; &lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;Password=&amp;quot;[SQLPassword]&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;u&gt;Create a SQL Database:&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&amp;lt;sql:SqlDatabase Id=&amp;quot;MySqlDatabase&amp;quot; Database=&amp;quot;MyDatabase&amp;quot; Server=&amp;quot;[SQLSERVER]&amp;quot; Instance=&amp;quot;SQLEXPRESS&amp;quot; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;CreateOnInstall=&amp;quot;yes&amp;quot; DropOnUninstall=&amp;quot;yes&amp;quot; User=&amp;quot;MySQLUser&amp;quot; ContinueOnError=&amp;quot;yes&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;u&gt;Create a SQL Database and run some custom sqlscripts:&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&amp;lt;sql:SqlDatabase Id=&amp;quot;MySqlDatabase&amp;quot; Database=&amp;quot;MyDatabase&amp;quot; Server=&amp;quot;[SQLSERVER]&amp;quot; Instance=&amp;quot;SQLEXPRESS&amp;quot; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;CreateOnInstall=&amp;quot;yes&amp;quot; DropOnUninstall=&amp;quot;yes&amp;quot; User=&amp;quot;MySQLUser&amp;quot; ContinueOnError=&amp;quot;yes&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sql:SqlScript Id=&amp;quot;MySQLScript1&amp;quot; ContinueOnError=&amp;quot;no&amp;quot; ExecuteOnReinstall=&amp;quot;yes&amp;quot; ExecuteOnInstall=&amp;quot;yes&amp;quot; BinaryKey=&amp;quot;ScriptBin1&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;sql:SqlScript Id=&amp;quot;MySQLScript2&amp;quot; ContinueOnError=&amp;quot;no&amp;quot; ExecuteOnUninstall=&amp;quot;yes&amp;quot; ExecuteOnReinstall=&amp;quot;no&amp;quot; ExecuteOnInstall=&amp;quot;no&amp;quot; BinaryKey=&amp;quot; ScriptBin2&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp; 
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&amp;lt;/sql:SqlDatabase&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;font face="Calibri"&gt;&lt;u&gt;Create a Database and specify where to place the database files on the target machine:&lt;/u&gt;&lt;/font&gt;&lt;font face="Calibri"&gt;&lt;u&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&amp;lt;sql:SqlDatabase Id=&amp;quot;MySqlDatabase&amp;quot; Database=&amp;quot;MyDatabase&amp;quot; Server=&amp;quot;[SQLSERVER]&amp;quot; Instance=&amp;quot;SQLEXPRESS&amp;quot; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;CreateOnInstall=&amp;quot;yes&amp;quot; DropOnUninstall=&amp;quot;yes&amp;quot; User=&amp;quot;MySQLUser&amp;quot; ContinueOnError=&amp;quot;yes&amp;quot;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sql:SqlFileSpec Id=&amp;quot;Mdf&amp;quot; Name=&amp;quot; MyDatabase &amp;quot; Filename=&amp;quot;&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt; &lt;span style="COLOR:blue;"&gt;=&amp;quot;[TARGETDIR]&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;MyDatabase.mdf&amp;quot; Size=&amp;quot;2MB&amp;quot; GrowthSize=&amp;quot;2MB&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sql:SqlLogFileSpec Id=&amp;quot;Ldf&amp;quot;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Name=&amp;quot; MyDatabase _log&amp;quot;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Filename&lt;/span&gt;&lt;span style="COLOR:blue;mso-ansi-language:EN;"&gt;=&amp;quot;[TARGETDIR]&lt;/span&gt;&lt;span style="COLOR:blue;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;MyDatabase _log.ldf&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&amp;lt;/sql:SqlDatabase&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;u&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/u&gt;&amp;nbsp;&lt;/p&gt;&lt;u&gt;&lt;font face="Calibri"&gt;Restore a database from an mdf/ldf from WiX&lt;/font&gt;&lt;/u&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;Recently I had to restore a database from an mdf/ldf from WiX, sounds pretty straightforward right? WiX actually does pretty well to make it straightforward &lt;font color="#800080"&gt;(only if you knew the magic words).&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;Since I spent a few man hours on a workaround with what I had and did manage to avoid using VBScripts, I am going to post that here too; here is what I did:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;So all we know until now is how to create a &lt;strong&gt;new&lt;/strong&gt; database and run custom sql scripts, what we need to do is to create a database at a user specified location and restore the database from a mdf/ldf which is on the CD(final product). &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;You can create the database at the user specified location as shown above. You can also move the mdf/ldf to a location that the user desires. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;The problem comes when you want to do an attach command from a sql script. How does your sql script know where the mdf/ldf were moved to?&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoListParagraphCxSpFirst" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;"&gt;&lt;em&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;1) &lt;/span&gt;&lt;/span&gt;To begin with, &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;I manually created a .bak file from the mdf/ldf and copied that to the project folder.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;&lt;em&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&lt;/font&gt;&lt;/em&gt; 
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;"&gt;&lt;em&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;2) &lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Then I went ahead and created a new database from WiX at the location where the user desired and also specified where to place the mdf/ldf on the target machine (and the names) as shown in the &lt;u&gt;last example&lt;/u&gt; above. &lt;/font&gt;&lt;/em&gt;&lt;/p&gt;&lt;em&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&lt;/font&gt;&lt;/em&gt; 
&lt;p class="MsoListParagraphCxSpLast" style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;"&gt;&lt;em&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;3) &lt;/span&gt;&lt;/span&gt;And then finally ran this sql script from WiX to search for the physical location (filename) of the mdf/ldf that&amp;nbsp;was created from WiX and then replace them using a Restore command.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;"&gt;&lt;em&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font color="#008000"&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#008000"&gt;/*&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#008000"&gt;Written by: Sajo Jacob. Clarity Consulting. Lasted Modified: November 08, 2007&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#008000"&gt;NOTE: This script depends on the .BAK file generated from the MDF&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#008000"&gt;*/&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;CREATE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt; &lt;span&gt;PROCEDURE&lt;/span&gt;&lt;/font&gt; RestoreDB&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;as&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;DECLARE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;@restoredb &lt;span&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;1024&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;DECLARE&lt;/font&gt;&lt;/span&gt;&lt;span&gt; @path &lt;span&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;1024&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;BEGIN&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt;&lt;/span&gt;&lt;span&gt; @path&lt;span&gt;=&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;MyDatabaseBak&amp;#39; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt;&lt;/span&gt;&lt;span&gt; @restoredb &lt;span&gt;=&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39;RESTORE DATABASE MySqlDatabase&amp;#39;&lt;/font&gt;&lt;/span&gt; &lt;span&gt;+&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39; FROM DISK = &amp;#39;&lt;/font&gt;&lt;/span&gt; &lt;span&gt;+&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/span&gt; &lt;span&gt;+&lt;/span&gt; @path &lt;span&gt;+&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39; WITH REPLACE,RECOVERY,MOVE &amp;#39;&lt;/font&gt;&lt;/span&gt; &lt;span&gt;+&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color="#ff0000"&gt;&lt;span&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;MyDatabase &amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;/font&gt;&lt;span&gt; &lt;span&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39;&lt;span&gt;&amp;nbsp; &lt;/span&gt;TO &amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;span&gt; &lt;span&gt;+&lt;/span&gt; &lt;font color="#ff0000"&gt;&lt;span&gt;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt; &lt;/font&gt;&lt;span&gt;+&lt;/span&gt; &lt;span&gt;(&lt;/span&gt; &lt;font color="#0000ff"&gt;&lt;span&gt;select&lt;/span&gt; &lt;span&gt;top&lt;/span&gt; &lt;font color="#000000"&gt;1 &lt;/font&gt;&lt;span&gt;filename&lt;/span&gt; &lt;span&gt;from&lt;/span&gt;&lt;/font&gt; master&lt;span&gt;.&lt;/span&gt;dbo&lt;span&gt;.&lt;/span&gt;sysaltfiles &lt;font color="#0000ff"&gt;&lt;span&gt;where&lt;/span&gt; &lt;span&gt;name&lt;/span&gt;&lt;/font&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color="#ff0000"&gt;&lt;span&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;MyDatabase&amp;#39;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;span&gt;+&lt;/span&gt; &lt;font color="#ff0000"&gt;&lt;span&gt;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt; &lt;/font&gt;&lt;span&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39;, MOVE &amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;span&gt; &lt;span&gt;+&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color="#ff0000"&gt;&lt;span&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;MyDatabase_Log&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;/font&gt;&lt;span&gt; &lt;span&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39; TO &amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;span&gt; &lt;span&gt;+&lt;/span&gt; &lt;font color="#ff0000"&gt;&lt;span&gt;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt; &lt;/font&gt;&lt;span&gt;+&lt;/span&gt; &lt;span&gt;(&lt;/span&gt; &lt;font color="#0000ff"&gt;&lt;span&gt;select&lt;/span&gt; &lt;span&gt;top&lt;/span&gt;&lt;/font&gt; 1 &lt;font color="#0000ff"&gt;&lt;span&gt;filename&lt;/span&gt; &lt;span&gt;from&lt;/span&gt;&lt;/font&gt; master&lt;span&gt;.&lt;/span&gt;dbo&lt;span&gt;.&lt;/span&gt;sysaltfiles &lt;font color="#0000ff"&gt;&lt;span&gt;where&lt;/span&gt; &lt;span&gt;name&lt;/span&gt;&lt;/font&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color="#ff0000"&gt;&lt;span&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;MyDatabase_log&amp;#39;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;span&gt;+&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;EXEC&lt;/font&gt;&lt;/span&gt;&lt;span&gt; &lt;span&gt;(&lt;/span&gt;@restoredb&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;END&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;WiX support for doing something like this is by letting you write Inline sql statements by using the SQL attribute on SqlString element&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;sql:SqlString Id=&amp;quot; Attach &amp;quot; SqlDb=&amp;quot;MySqlDatabase&amp;quot; ExecuteOnInstall =&amp;quot;yes&amp;quot; ContinueOnError=&amp;quot;no&amp;quot; Sequence=&amp;quot;1&amp;quot; SQL=&amp;quot;CREATE DATABASE $(var.LongDBName) ON (FILENAME=N&amp;#39;[&lt;/span&gt;&lt;span style="COLOR:blue;mso-ansi-language:EN;"&gt;TARGETDIR&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;]MyDatabase.mdf&amp;#39;), (FILENAME=N&amp;#39;[&lt;/span&gt;&lt;span style="COLOR:blue;mso-ansi-language:EN;"&gt;TARGETDIR&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;]MyDatabase_log.ldf&amp;#39;) FOR ATTACH&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;If you have a readonly mdf/ldf then a restore can result in a readonly database, so assuming that is the case here, let’s perform a set operation after the restore. &lt;strong&gt;Sequence attribute here helps with the order of execution.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font face="Calibri"&gt;&lt;font color="#0000ff"&gt;&amp;lt;sql:SqlString Id=&amp;quot;ReadWriteDatabase&amp;quot; SqlDb=&amp;quot; MySqlDatabase &amp;quot; ExecuteOnInstall=&amp;quot;yes&amp;quot; ContinueOnError=&amp;quot;yes&amp;quot; Sequence=&amp;quot;2&amp;quot; SQL=&amp;quot;ALTER DATABASE $(var.LongDBName) SET READ_WRITE WITH NO_WAIT&amp;quot; /&amp;gt;&lt;u&gt;&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;u&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/u&gt;&amp;nbsp;&lt;/p&gt;&lt;u&gt;&lt;font face="Calibri"&gt;WiX and Windows Authentication&lt;/font&gt;&lt;/u&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;Just take off the User attribute in the SqlDatabase element we had earlier in the database creation section and it will use Windows Authentication. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.claritycon.com/aggbug.aspx?PostID=3487" width="1" height="1"&gt;</content><author><name>spoov</name><uri>http://blogs.claritycon.com/members/spoov.aspx</uri></author><category term="Server Products" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Server+Products/default.aspx" /><category term="Windows Installer XML (WiX) " scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Windows+Installer+XML+_2800_WiX_2900_+/default.aspx" /><category term="Server Products" scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Server+Products/default.aspx" /></entry><entry><title>Windows Installer XML (WiX) </title><link rel="alternate" type="text/html" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/10/31/windows-installer-xml-wix.aspx" /><id>http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/10/31/windows-installer-xml-wix.aspx</id><published>2007-10-31T15:15:00Z</published><updated>2007-10-31T15:15:00Z</updated><content type="html">&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-SIZE:14pt;COLOR:#943634;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;font color="#a52a2a"&gt;WiX&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt; is an XML based wrapper around the Windows Installer which lets you create Installer packages without you having to get your hands too dirty with the obscurities of dealing with the Windows Installer directly or for that matter if you want to cut down on the costs of licensing third party installer products, its a great way to create your custom Windows Installer at no money down. WiX is an open source project from the folks at MS which is currently&amp;nbsp;maintained by &lt;i&gt;Rob Mensching&lt;/i&gt;&lt;span style="mso-bidi-font-style:italic;"&gt;, the toolset itself was written in C#&lt;/span&gt;. &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;Getting to speed with WiX reminded me of my C days, no it has nothing to do with the programming language construct itself (obviously), I learnt C after I learnt C++, yeah that&amp;#39;s not fun...Learning WiX without knowing that you will need to learn the abc&amp;#39;s of Windows Installer sooner or later is very common pitfall encountered by new &amp;quot;WiX&amp;#39;xers&amp;quot;(I made that up).&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;&lt;/span&gt;&amp;nbsp; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;&lt;/span&gt;&lt;u&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;font color="#a52a2a"&gt;Who really needs WiX? how good is it really?&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;u&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;u&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;u&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;u&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;u&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;font color="#a52a2a"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&amp;nbsp; &lt;/span&gt;
&lt;p&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;/span&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;/span&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;Simple case:&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;Did you just write a game in your spare time which you plan on distributing from your website? And did you want to upgrade the game when you have some extra time and wanted your game users to get your new upgrade patch. You definitely wont want to spend the same amount of time you took to create the game or more on creating the installation package(msi/msm or a msp) by directly using the Windows Installer, neither would you like to spend that extra $$ you saved up for that Hi-Def TV on a 3rd party installation tool.&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;
&lt;p&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;Complex Cases:&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;WiX is used in most of the major software installations these days, Microsoft Office 2007, SQL Server 2005, Visual Studio 2005/2008 have already been &amp;quot;WiXed&amp;quot;.&lt;/span&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;font color="#a52a2a"&gt;So how easy is it? Can it adopted by an application developer or is it still heavily in the Installer space?&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;&lt;u&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;font color="#a52a2a"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;Depends on how you look at it. Application developers from Clarity Consulting are currently working on an installation package for a major software company and we find it to be bridging the gap between application and Installation developers. The gap will seem to get narrower when we start talking about Votive the new Visual Studio plugin.&lt;/span&gt; 
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;&lt;/span&gt;&lt;u&gt;&lt;span style="COLOR:#943634;FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&lt;font color="#a52a2a"&gt;Let’s scrape the tip of the iceberg, how bad can Windows Installer installations really be?&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;Some might say, as easy as copying the files to the target system, well that&amp;#39;s how simple it can get. &lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;Here is overview of how involved an installation process can be:&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;the COM nightmare(when multiple products share the same COM server), supporting files for an installation can be as simple as dlls or as complex as pushing MSDE, installations alter the state of a target machine so patching a product or upgrading the product calls for some grey cells. Installations can often need admin privileges or should sometimes be installed for all users on the target machine, installing/starting/shutting down windows services, dealing with installation repair scenarios, running your custom code during the installation or how about having two versions of your product installed side by side without any conflicting behavior?&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;That wasn’t meant to scare you off WiX, but to give you a vague idea of the scope/considerations when creating an installer package. WiX goes a long way in helping you with them, which I’ll cover in the next few posts. In the meanwhile take a look at Gábor Deák Jahn&amp;#39;s &lt;a href="http://www.tramontana.co.hu/wix/"&gt;&lt;font color="#800080"&gt;WiX Tutorial&lt;/font&gt;&lt;/a&gt;, which&amp;nbsp;is a&amp;nbsp;great place to start. &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;Newer posts: &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Cambria&amp;#39;,&amp;#39;serif&amp;#39;;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;"&gt;&lt;a href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/11/14/WiX_and_Databases.aspx"&gt;Wix and Databases&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;a id="bp___v___r___postlist___EntryItems_ctl00_PostTitle" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/11/26/3509.aspx"&gt;WiX tools, Logging and Silent installation&lt;/a&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;a href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2007/12/18/3543.aspx"&gt;How to customize the install directory dynamically in WiX?&lt;/a&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;a class="" title="How to print EULA from WiX" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/01/24/how-to-print-eula-from-wix.aspx"&gt;How to print EULA from WiX?&lt;/a&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;a class="" title="CustomActionData in WiX with Deferred Custom Actions" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/02.aspx"&gt;CustomActionData in WiX with Deferred Custom Actions&lt;/a&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;a class="" href="http://blogs.claritycon.com/blogs/sajo_jacob/archive/2008/03/31/disk-cost-issue-with-reservecost.aspx"&gt;Disk Cost Issue with ReserveCost!&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.claritycon.com/aggbug.aspx?PostID=3417" width="1" height="1"&gt;</content><author><name>spoov</name><uri>http://blogs.claritycon.com/members/spoov.aspx</uri></author><category term="Windows Installer XML (WiX) " scheme="http://blogs.claritycon.com/blogs/sajo_jacob/archive/tags/Windows+Installer+XML+_2800_WiX_2900_+/default.aspx" /></entry></feed>