<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6308750746309418547</id><updated>2012-02-10T18:01:56.783-08:00</updated><category term='ruby'/><category term='sql server 2008'/><category term='css'/><category term='javascript'/><category term='powershell'/><category term='interruppted'/><category term='javascript form disable auto submit'/><category term='vs.net 2008'/><category term='Active Directory'/><category term='Exchange'/><category term='rails'/><category term='remote desktop'/><category term='msi'/><category term='COM'/><category term='ubuntu'/><category term='bootstrapper'/><category term='impersonation'/><category term='vista'/><category term='ie'/><category term='.NET'/><category term='terminal server'/><title type='text'>/* you are not expected to understand this */</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-7088303328575700505</id><published>2010-02-15T20:58:00.000-08:00</published><updated>2010-02-15T21:06:18.506-08:00</updated><title type='text'>Common .NET Snippets</title><content type='html'>I'll be adding to this / adding as I stumble across things I find myself looking up repeatedly...&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Run code on the 'main' thread from a background thread (assuming your context is a WinForm)...&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;BeginInvoke((MethodInvoker)delegate {&lt;br /&gt;   // put code here&lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Show Guid as a 32 byte hex encoded string&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;Guid.NewGuid().ToString("B");&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Date formatting&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;// returns something like "2010/02/15 11:05:23 PM"&lt;br /&gt;DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss tt");&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-7088303328575700505?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/7088303328575700505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=7088303328575700505' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/7088303328575700505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/7088303328575700505'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2010/02/common-net-snippets.html' title='Common .NET Snippets'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-7719366666119030327</id><published>2009-09-02T14:19:00.000-07:00</published><updated>2009-09-02T14:32:00.749-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vs.net 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='interruppted'/><category scheme='http://www.blogger.com/atom/ns#' term='msi'/><title type='text'>VS.NET 2008 Web Setup Project Interrupted during MSI install in Vista  - Solved (for me)</title><content type='html'>I'm sure many of you have had problems with this based on the number of great blog entries about it:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=" http://chriscant.phdcc.com/2009/01/custom-vs-web-setup-projects.html"&gt;&lt;br /&gt;Custom VS Web Setup Projects&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/nikhiln/archive/2007/04/25/post-build-script-to-fix-msi-issues-in-vista-for-vs-2005-setup-and-deployment-project.aspx"&gt;Post-Build script to fix MSI issues in Vista for VS 2005 Setup and Deployment Projects&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/gauravb/archive/2009/03/04/web-setup-package-fails-while-executing-webca-evaluateurlsnofail-custom-action.aspx"&gt;Web setup Package: fails while executing WEBCA_EvaluateURLsNoFail custom action&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Here's what I had to do to get everything working:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Make sure II6 compatibility is installed&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Make sure your custom action code is running elevated&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Make sure you have no folders named 'filters' in your website&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The WEBCA_EvaluteURLSNoFail post mentions several of the IIS6 metabase entries... &lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;4)Most commonly you'll see things like "APPPOOLS", "FILTERS", "INFO", and "1" (1 is the default website)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Which got me started thinking, I have a subfolder named filters.  Changing nothing else but renaming the filters subfolder made it finish properly.  I'm assuming you might have the same problems with folders named apppools, info, or 1 as well.&lt;br /&gt;&lt;br /&gt;(cropped log file is below...)&lt;br /&gt;&lt;br /&gt;[ApplyWebFolderProperties                ]: Token is '/LM/W3SVC/1/ROOT/gringlobal/uploads/filters'.&lt;br /&gt;INFO   : [09/02/2009 13:25:39:434] [ApplyWebFolderProperties                ]: Getting METADATA_HANDLE for the directory '/LM/W3SVC/1/ROOT/gringlobal/uploads/filters'.&lt;br /&gt;ERROR  : [09/02/2009 13:25:39:464] [ApplyWebFolderProperties                ]: FAILED: -2147024893&lt;br /&gt;ERROR  : [09/02/2009 13:25:39:524] [ApplyWebFolderProperties                ]: FAILED: -2147024893&lt;br /&gt;ERROR  : [09/02/2009 13:25:39:534] [ApplyWebFolderProperties                ]: Custom Action failed with code: '3'&lt;br /&gt;ERROR  : [09/02/2009 13:25:39:534] [ApplyWebFolderProperties                ]: Custom Action failed with code: '3'&lt;br /&gt;INFO   : [09/02/2009 13:25:39:544] [ApplyWebFolderProperties                ]: Custom Action completed with return code: '3'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-7719366666119030327?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/7719366666119030327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=7719366666119030327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/7719366666119030327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/7719366666119030327'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2009/09/vsnet-2008-web-setup-project.html' title='VS.NET 2008 Web Setup Project Interrupted during MSI install in Vista  - Solved (for me)'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-3560576995738621836</id><published>2009-08-27T10:37:00.000-07:00</published><updated>2009-11-06T09:15:56.741-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='vs.net 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='bootstrapper'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server 2008'/><title type='text'>VS.NET 2008 Bootstrapper for SQL Server 2008 Express Edition with Tools</title><content type='html'>I looked all over for this, and ended up just making my own custom prerequisite.  There's &lt;a href="http://blogs.msdn.com/sqlexpress/archive/2008/09/12/faq-installing-the-sql-server-2008-express-clickonce-bootstrapper-for-visual-studio-2008-sp1.aspx"&gt;an ugly hack to add a prerequisite for SQL Server 2008 Express&lt;/a&gt;, but I needed to have the edition that installs the tools as well.  For whatever reason, adding the tools at a later date is not really a feasible approach with the installers that Microsoft has available.&lt;br /&gt;&lt;br /&gt;However, the installer that includes tools also has Powershell as a prerequisite, so I was forced to make that one as well as my google mojo couldn't locate any.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;To create the Powershell prerequisite:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a new folder named 'Powershell1_0' under C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages&lt;/li&gt;&lt;li&gt;In that new folder, create a file named 'product.xml'&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;EDIT 2009-11-06: XML is case-sensitive, and the previous xml for product.xml had everything in lowercase.  Please retry with proper casing as shown below.&lt;/span&gt;&lt;br /&gt;Save the following as the contents of that file:&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Windows Powershell 1.0 VS Bootstrapper : product.xml : Language neutral information --&amp;gt;&lt;br /&gt;&amp;lt;Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="Microsoft.Windows.PowerShell.1.0"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/Product&amp;gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Create a new subfolder named 'en' under the 'Powershell1_0' folder&lt;/li&gt;&lt;li&gt;In the 'en' folder, create a file named 'package.xml'&lt;br /&gt;Save the following  as the contents of that file:&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Package&lt;br /&gt;xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"&lt;br /&gt;Name="DisplayName"&lt;br /&gt;Culture="Culture"&lt;br /&gt;LicenseAgreement="eula.rtf"&lt;br /&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- Defines list of files to be copied on build --&amp;gt;&lt;br /&gt;  &amp;lt;PackageFiles CopyAllPackageFiles="false"&amp;gt;&lt;br /&gt;   &amp;lt;PackageFile Name="eula.rtf"/&amp;gt;&lt;br /&gt;   &amp;lt;PackageFile Name="Windows6.0-KB928439-x86.msu" HomeSite="ps10vistax86"&lt;br /&gt;          PublicKey="3082010A0282010100D8DC95E9D1BA58324004219BF57E8C7581752EA5DD411D6AAD3D5E0DA7CEF775EBA20C1921B28669D291B3AE251B8060CA0B163CF8FEDF7A896A77D0F62BD8377AA7D3112E2DD7BE1895757B4239C28C27C258A031410EAEB94B44502450699167A9A1D56A5AA17E865B35C92A0314E16028515F45850075CC64D7ABB27C95A67A9E0C0A1353ADB2AF9ADBD231C572A1E5598A5F6BAA0C9FEF323755C9E92663F4B6B9C52B0633DCE4050D7AD7AF55627DDB446B18424254E6F50AD5A84F41D8831835992DC9A1934E22D62C4D28BB87852176C6347DA8C9088B43BA61E9D79DDB1AD4DE44E740F18C1F7FD570B721ED775E376CBBCD512F2E4DBB9317DD56310203010001"/&amp;gt;&lt;br /&gt;   &amp;lt;PackageFile Name="Windows6.0-KB928439-x64.msu" HomeSite="ps10vistax64"&lt;br /&gt;          PublicKey="3082010A0282010100D8DC95E9D1BA58324004219BF57E8C7581752EA5DD411D6AAD3D5E0DA7CEF775EBA20C1921B28669D291B3AE251B8060CA0B163CF8FEDF7A896A77D0F62BD8377AA7D3112E2DD7BE1895757B4239C28C27C258A031410EAEB94B44502450699167A9A1D56A5AA17E865B35C92A0314E16028515F45850075CC64D7ABB27C95A67A9E0C0A1353ADB2AF9ADBD231C572A1E5598A5F6BAA0C9FEF323755C9E92663F4B6B9C52B0633DCE4050D7AD7AF55627DDB446B18424254E6F50AD5A84F41D8831835992DC9A1934E22D62C4D28BB87852176C6347DA8C9088B43BA61E9D79DDB1AD4DE44E740F18C1F7FD570B721ED775E376CBBCD512F2E4DBB9317DD56310203010001"/&amp;gt;&lt;br /&gt;   &amp;lt;PackageFile Name="WindowsXP-KB926139-v2-x86-ENU.exe" HomeSite="ps10xpx86"&lt;br /&gt;          PublicKey="3082010a0282010100a2db0a8dcfc2c1499bcdaa3a34ad23596bdb6cbe2122b794c8eaaebfc6d526c232118bbcda5d2cfb36561e152bae8f0ddd14a36e284c7f163f41ac8d40b146880dd98194ad9706d05744765ceaf1fc0ee27f74a333cb74e5efe361a17e03b745ffd53e12d5b0ca5e0dd07bf2b7130dfc606a2885758cb7adbc85e817b490bef516b6625ded11df3aee215b8baf8073c345e3958977609be7ad77c1378d33142f13db62c9ae1aa94f9867add420393071e08d6746e2c61cf40d5074412fe805246a216b49b092c4b239c742a56d5c184aab8fd78e833e780a47d8a4b28423c3e2f27b66b14a74bd26414b9c6114604e30c882f3d00b707cee554d77d2085576810203010001"/&amp;gt;&lt;br /&gt;   &amp;lt;PackageFile Name="WindowsServer2003.WindowsXP-KB926139-v2-x64-ENU.exe" HomeSite="ps10xpOrWin2003x64"&lt;br /&gt;          PublicKey="3082010a0282010100a2db0a8dcfc2c1499bcdaa3a34ad23596bdb6cbe2122b794c8eaaebfc6d526c232118bbcda5d2cfb36561e152bae8f0ddd14a36e284c7f163f41ac8d40b146880dd98194ad9706d05744765ceaf1fc0ee27f74a333cb74e5efe361a17e03b745ffd53e12d5b0ca5e0dd07bf2b7130dfc606a2885758cb7adbc85e817b490bef516b6625ded11df3aee215b8baf8073c345e3958977609be7ad77c1378d33142f13db62c9ae1aa94f9867add420393071e08d6746e2c61cf40d5074412fe805246a216b49b092c4b239c742a56d5c184aab8fd78e833e780a47d8a4b28423c3e2f27b66b14a74bd26414b9c6114604e30c882f3d00b707cee554d77d2085576810203010001"/&amp;gt;&lt;br /&gt;   &amp;lt;PackageFile Name="WindowsServer2003-KB926139-v2-x86-ENU.exe" HomeSite="ps10win2003x86"&lt;br /&gt;          PublicKey="3082010a0282010100a2db0a8dcfc2c1499bcdaa3a34ad23596bdb6cbe2122b794c8eaaebfc6d526c232118bbcda5d2cfb36561e152bae8f0ddd14a36e284c7f163f41ac8d40b146880dd98194ad9706d05744765ceaf1fc0ee27f74a333cb74e5efe361a17e03b745ffd53e12d5b0ca5e0dd07bf2b7130dfc606a2885758cb7adbc85e817b490bef516b6625ded11df3aee215b8baf8073c345e3958977609be7ad77c1378d33142f13db62c9ae1aa94f9867add420393071e08d6746e2c61cf40d5074412fe805246a216b49b092c4b239c742a56d5c184aab8fd78e833e780a47d8a4b28423c3e2f27b66b14a74bd26414b9c6114604e30c882f3d00b707cee554d77d2085576810203010001"/&amp;gt;&lt;br /&gt;  &amp;lt;/PackageFiles&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;InstallChecks&amp;gt;&lt;br /&gt;   &amp;lt;RegistryCheck Property="PowershellInstalled" Key="HKLM\Software\Microsoft\PowerShell\1" Value="Install" /&amp;gt;&lt;br /&gt;  &amp;lt;/InstallChecks&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- Defines how to invoke the setup for the Windows Powershell 1.0 redist --&amp;gt;&lt;br /&gt;  &amp;lt;Commands Reboot="Immediate"&amp;gt;&lt;br /&gt;  &amp;lt;!-- Defines installation command for:&lt;br /&gt;    Vista RTM and later&lt;br /&gt;    Windows Server 2008 RTM and later&lt;br /&gt;    on x86 platform --&amp;gt;&lt;br /&gt;    &amp;lt;Command PackageFile="Windows6.0-KB928439-x86.msu"&lt;br /&gt;         Arguments= "/quiet /norestart"&lt;br /&gt;     EstimatedInstalledBytes="1768448"&lt;br /&gt;         EstimatedInstallSeconds="450" &amp;gt;&lt;br /&gt;      &amp;lt;InstallConditions&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="PowershellInstalled" Compare="ValueEqualTo" Value="1" /&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel" /&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="VersionNT" Compare="VersionLessThan" Value="6.0" /&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="Version9x" Compare="ValueExists" String="InvalidPlatform"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/&amp;gt;&lt;br /&gt;      &amp;lt;/InstallConditions&amp;gt;&lt;br /&gt;      &amp;lt;ExitCodes&amp;gt;&lt;br /&gt;        &amp;lt;ExitCode Value="0" Result="Success"/&amp;gt;&lt;br /&gt;        &amp;lt;ExitCode Value="1641" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;        &amp;lt;ExitCode Value="3010" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;        &amp;lt;DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /&amp;gt;&lt;br /&gt;      &amp;lt;/ExitCodes&amp;gt;&lt;br /&gt;    &amp;lt;/Command&amp;gt;&lt;br /&gt;  &lt;br /&gt;    &amp;lt;!-- Defines installation command for:&lt;br /&gt;    Vista RTM and later&lt;br /&gt;    Windows Server 2008 RTM and later&lt;br /&gt;    on x64 platform --&amp;gt;&lt;br /&gt;  &amp;lt;Command PackageFile="Windows6.0-KB928439-x64.msu"&lt;br /&gt;         Arguments= "/quiet /norestart"&lt;br /&gt;     EstimatedInstalledBytes="3087360"&lt;br /&gt;         EstimatedInstallSeconds="450" &amp;gt;&lt;br /&gt;   &amp;lt;InstallConditions&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="PowershellInstalled" Compare="ValueEqualTo" Value="1" /&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="amd64" /&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="VersionNT" Compare="VersionLessThan" Value="6.0" /&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="Version9x" Compare="ValueExists" String="InvalidPlatform"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/&amp;gt;&lt;br /&gt;   &amp;lt;/InstallConditions&amp;gt;&lt;br /&gt;   &amp;lt;ExitCodes&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="0" Result="Success"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="1641" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="3010" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /&amp;gt;&lt;br /&gt;   &amp;lt;/ExitCodes&amp;gt;&lt;br /&gt;  &amp;lt;/Command&amp;gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- Defines installation command for:&lt;br /&gt;    Windows XP Service Pack 2 and later&lt;br /&gt;    on x86 platform --&amp;gt;&lt;br /&gt;  &amp;lt;Command PackageFile="WindowsXP-KB926139-v2-x86-ENU.exe"&lt;br /&gt;         Arguments= "/quiet /norestart"&lt;br /&gt;     EstimatedInstalledBytes="3326976"&lt;br /&gt;         EstimatedInstallSeconds="450" &amp;gt;&lt;br /&gt;   &amp;lt;InstallConditions&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="PowershellInstalled" Compare="ValueEqualTo" Value="1" /&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel" /&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="VersionNT" Compare="VersionGreaterThanOrEqualTo" Value="5.2.0" /&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="Version9x" Compare="ValueExists" String="InvalidPlatform"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.1.2" String="InvalidPlatform"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/&amp;gt;&lt;br /&gt;   &amp;lt;/InstallConditions&amp;gt;&lt;br /&gt;   &amp;lt;ExitCodes&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="0" Result="Success"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="1641" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="3010" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /&amp;gt;&lt;br /&gt;   &amp;lt;/ExitCodes&amp;gt;&lt;br /&gt;  &amp;lt;/Command&amp;gt;&lt;br /&gt;  &lt;br /&gt;    &amp;lt;!-- Defines installation command for:&lt;br /&gt;    Windows XP Service Pack 2 and later&lt;br /&gt;    Windows 2003 Service Pack 1 or later&lt;br /&gt;    on x64 platform --&amp;gt;&lt;br /&gt;  &amp;lt;Command PackageFile="WindowsServer2003.WindowsXP-KB926139-v2-x64-ENU.exe"&lt;br /&gt;         Arguments= "/quiet /norestart"&lt;br /&gt;     EstimatedInstalledBytes="4684800"&lt;br /&gt;         EstimatedInstallSeconds="450" &amp;gt;&lt;br /&gt;   &amp;lt;InstallConditions&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="PowershellInstalled" Compare="ValueEqualTo" Value="1" /&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="amd64" /&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="VersionNT" Compare="VersionGreaterThanOrEqualTo" Value="6.0"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="Version9x" Compare="ValueExists" String="InvalidPlatform"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.1.2" String="InvalidPlatform"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.0" String="InvalidPlatform"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/&amp;gt;&lt;br /&gt;   &amp;lt;/InstallConditions&amp;gt;&lt;br /&gt;   &amp;lt;ExitCodes&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="0" Result="Success"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="1641" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="3010" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /&amp;gt;&lt;br /&gt;   &amp;lt;/ExitCodes&amp;gt;&lt;br /&gt;  &amp;lt;/Command&amp;gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;!-- Defines installation command for:&lt;br /&gt;    Windows 2003 Service Pack 1 or later&lt;br /&gt;    on x86 platform --&amp;gt;&lt;br /&gt;  &amp;lt;Command PackageFile="WindowsServer2003-KB926139-v2-x86-ENU.exe"&lt;br /&gt;         Arguments= "/quiet /norestart"&lt;br /&gt;     EstimatedInstalledBytes="3053568"&lt;br /&gt;         EstimatedInstallSeconds="450" &amp;gt;&lt;br /&gt;   &amp;lt;InstallConditions&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="PowershellInstalled" Compare="ValueEqualTo" Value="1" /&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel" /&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="VersionNT" Compare="VersionLessThan" Value="5.2.0"/&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="VersionNT" Compare="VersionGreaterThanOrEqualTo" Value="6.0"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="Version9x" Compare="ValueExists" String="InvalidPlatform"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.0" String="InvalidPlatform"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/&amp;gt;&lt;br /&gt;   &amp;lt;/InstallConditions&amp;gt;&lt;br /&gt;   &amp;lt;ExitCodes&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="0" Result="Success"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="1641" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="3010" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /&amp;gt;&lt;br /&gt;   &amp;lt;/ExitCodes&amp;gt;&lt;br /&gt;  &amp;lt;/Command&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &amp;lt;/Commands&amp;gt;&lt;br /&gt; &lt;br /&gt;  &amp;lt;Strings&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!-- Defines Homesite locations for each of the downloads --&amp;gt;&lt;br /&gt;  &amp;lt;String Name="ps10vistax86"&amp;gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=c6ef4735-c7de-46a2-997a-ea58fdfcba63&amp;amp;displaylang=en&amp;amp;Hash=gFDYCnt0XHCZE8T4bgUP7awC7LOaLKHDhc6ARfmoFIDvb6Us%2fK7gcmW1kiq8adEqcY8gMdLa2LP4rYgftn0YEw%3d%3d&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="ps10vistax64"&amp;gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=af37d87d-5de6-4af1-80f4-740f625cd084&amp;amp;displaylang=en&amp;amp;Hash=%2fRXyTFQ415GcjD7vRY1AnTFnsiEo2IfhO4XF5eCQ1wTWTGU8W9W%2fVD8qIfYSHJWyZX3YZo%2bN0xGHL5f6MwHfAQ%3d%3d&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="ps10xpx86"&amp;gt;http://download.microsoft.com/download/7/3/4/7345bb7d-0b07-40e8-9480-5b8c55b9c8b7/WindowsXP-KB926139-v2-x86-ENU.exe&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="ps10xpWin2003x64"&amp;gt;http://www.microsoft.com/downloads/thankyou.aspx?familyId=e9a90e13-c67c-42d7-b391-0e67dd67b83f&amp;amp;displayLang=en&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="ps10win2003x86"&amp;gt;http://download.microsoft.com/download/d/e/7/de7cb629-73a3-49cc-b796-50dfaaf1b833/WindowsServer2003-KB926139-v2-x86-ENU.exe&amp;lt;/String&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- Defines a localizable string table for error messages--&amp;gt;&lt;br /&gt;  &amp;lt;String Name="DisplayName"&amp;gt;Windows Powershell 1.0&amp;lt;/String&amp;gt;&lt;br /&gt;      &amp;lt;String Name="Culture"&amp;gt;en&amp;lt;/String&amp;gt;&lt;br /&gt;      &amp;lt;String Name="AdminRequired"&amp;gt;Administrator permissions are required to install Windows Powershell 1.0. Contact your administrator.&amp;lt;/String&amp;gt;&lt;br /&gt;      &amp;lt;String Name="InvalidPlatform"&amp;gt;Installation of Windows Powershell 1.0 requires Windows XP Service Pack 2 or later. Contact your application vendor.&amp;lt;/String&amp;gt;&lt;br /&gt;      &amp;lt;String Name="GeneralFailure"&amp;gt;A failure occurred attempting to install Windows Powershell 1.0.&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;/Strings&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/Package&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Get the proper eula.rtf (I'm just a developer, you figure it out!) and save it to the en folder.  The installer just needs the file to exist there to work.&lt;/li&gt;&lt;li&gt;Download the necessary msu and exe files and save them into the 'Powershell1_0\en' folder.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c6ef4735-c7de-46a2-997a-ea58fdfcba63&amp;amp;displaylang=en&amp;amp;Hash=gFDYCnt0XHCZE8T4bgUP7awC7LOaLKHDhc6ARfmoFIDvb6Us%2fK7gcmW1kiq8adEqcY8gMdLa2LP4rYgftn0YEw%3d%3d%20"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=c6ef4735-c7de-46a2-997a-ea58fdfcba63&amp;amp;displaylang=en&amp;amp;Hash=gFDYCnt0XHCZE8T4bgUP7awC7LOaLKHDhc6ARfmoFIDvb6Us%2fK7gcmW1kiq8adEqcY8gMdLa2LP4rYgftn0YEw%3d%3d&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=af37d87d-5de6-4af1-80f4-740f625cd084&amp;amp;displaylang=en&amp;amp;Hash=%2fRXyTFQ415GcjD7vRY1AnTFnsiEo2IfhO4XF5eCQ1wTWTGU8W9W%2fVD8qIfYSHJWyZX3YZo%2bN0xGHL5f6MwHfAQ%3d%3d"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=af37d87d-5de6-4af1-80f4-740f625cd084&amp;amp;displaylang=en&amp;amp;Hash=%2fRXyTFQ415GcjD7vRY1AnTFnsiEo2IfhO4XF5eCQ1wTWTGU8W9W%2fVD8qIfYSHJWyZX3YZo%2bN0xGHL5f6MwHfAQ%3d%3d&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;    &lt;li&gt;&lt;a href="http://download.microsoft.com/download/7/3/4/7345bb7d-0b07-40e8-9480-5b8c55b9c8b7/WindowsXP-KB926139-v2-x86-ENU.exe"&gt;http://download.microsoft.com/download/7/3/4/7345bb7d-0b07-40e8-9480-5b8c55b9c8b7/WindowsXP-KB926139-v2-x86-ENU.exe&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/thankyou.aspx?familyId=e9a90e13-c67c-42d7-b391-0e67dd67b83f&amp;amp;displayLang=en"&gt;http://www.microsoft.com/downloads/thankyou.aspx?familyId=e9a90e13-c67c-42d7-b391-0e67dd67b83f&amp;amp;displayLang=en&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;&lt;a href="http://download.microsoft.com/download/d/e/7/de7cb629-73a3-49cc-b796-50dfaaf1b833/WindowsServer2003-KB926139-v2-x86-ENU.exe"&gt;http://download.microsoft.com/download/d/e/7/de7cb629-73a3-49cc-b796-50dfaaf1b833/WindowsServer2003-KB926139-v2-x86-ENU.exe&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:180%;"&gt;To create the SQL Server 2008 Express Edition with Tools prerequisite:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a new folder named 'SQLServer2008ExpressWithTools' under C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages&lt;/li&gt;&lt;li&gt;In that new folder, create a file named 'product.xml'&lt;br /&gt;Save the following as the contents of that file:&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;!-- SQL Express 2008 VS Bootstrapper : package.xml : Language neutral information --&amp;gt;&lt;br /&gt;&amp;lt;Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="Microsoft.Sql.Server.ExpressWithTools.10.0"&amp;gt;&lt;br /&gt; &amp;lt;RelatedProducts&amp;gt;&lt;br /&gt;  &amp;lt;DependsOnProduct Code="Microsoft.Net.Framework.3.5.SP1" /&amp;gt;&lt;br /&gt;  &amp;lt;DependsOnProduct Code="Microsoft.Windows.Installer.4.5" /&amp;gt;&lt;br /&gt;  &amp;lt;DependsOnProduct Code="Microsoft.Windows.PowerShell.1.0" /&amp;gt;&lt;br /&gt;  &amp;lt;IncludesProduct Code="Microsoft.Sql.Server.Express.1.0" /&amp;gt;&lt;br /&gt;  &amp;lt;IncludesProduct Code="Microsoft.Sql.Server.Express.9.2" /&amp;gt;&lt;br /&gt; &amp;lt;/RelatedProducts&amp;gt;&lt;br /&gt; &amp;lt;PackageFiles CopyAllPackageFiles="false"&amp;gt;&lt;br /&gt;  &amp;lt;PackageFile Name="SqlExpressChk.exe" /&amp;gt;&lt;br /&gt; &amp;lt;/PackageFiles&amp;gt;&lt;br /&gt; &amp;lt;InstallChecks&amp;gt;&lt;br /&gt;  &amp;lt;ExternalCheck Property="SQLExpressInstalled" PackageFile="SqlExpressChk.exe" /&amp;gt;&lt;br /&gt; &amp;lt;/InstallChecks&amp;gt;&lt;br /&gt;&amp;lt;/Product&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Create a new subfolder named 'en' under the 'SQLServer2008ExpressWithTools' folder&lt;/li&gt;&lt;li&gt;In the 'en' folder, create a file named 'package.xml'&lt;br /&gt;Save the following  as the contents of that file:&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;br /&gt;&amp;lt;Package&lt;br /&gt; xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"&lt;br /&gt; Name="DisplayName"&lt;br /&gt; Culture="Culture"&lt;br /&gt; LicenseAgreement="eula.rtf"&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;PackageFiles CopyAllPackageFiles="false"&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;for 32-bit sql server w/ tools:&lt;br /&gt;md5 hash:   CB1A8878ECC39B2F098AA1508CC94FC302C14516&lt;br /&gt;public key: 3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001&lt;br /&gt;--&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;PackageFile Name="SQLEXPRWT_x86_ENU.EXE" HomeSite="SqlExpr32WTExe" PublicKey="3082010a0282010100a2db0a8dcfc2c1499bcdaa3a34ad23596bdb6cbe2122b794c8eaaebfc6d526c232118bbcda5d2cfb36561e152bae8f0ddd14a36e284c7f163f41ac8d40b146880dd98194ad9706d05744765ceaf1fc0ee27f74a333cb74e5efe361a17e03b745ffd53e12d5b0ca5e0dd07bf2b7130dfc606a2885758cb7adbc85e817b490bef516b6625ded11df3aee215b8baf8073c345e3958977609be7ad77c1378d33142f13db62c9ae1aa94f9867add420393071e08d6746e2c61cf40d5074412fe805246a216b49b092c4b239c742a56d5c184aab8fd78e833e780a47d8a4b28423c3e2f27b66b14a74bd26414b9c6114604e30c882f3d00b707cee554d77d2085576810203010001"/&amp;gt;&lt;br /&gt;  &amp;lt;PackageFile Name="SQLEXPRWT_x64_ENU.EXE" HomeSite="SqlExpr64WTExe" PublicKey="3082010a0282010100a2db0a8dcfc2c1499bcdaa3a34ad23596bdb6cbe2122b794c8eaaebfc6d526c232118bbcda5d2cfb36561e152bae8f0ddd14a36e284c7f163f41ac8d40b146880dd98194ad9706d05744765ceaf1fc0ee27f74a333cb74e5efe361a17e03b745ffd53e12d5b0ca5e0dd07bf2b7130dfc606a2885758cb7adbc85e817b490bef516b6625ded11df3aee215b8baf8073c345e3958977609be7ad77c1378d33142f13db62c9ae1aa94f9867add420393071e08d6746e2c61cf40d5074412fe805246a216b49b092c4b239c742a56d5c184aab8fd78e833e780a47d8a4b28423c3e2f27b66b14a74bd26414b9c6114604e30c882f3d00b707cee554d77d2085576810203010001"/&amp;gt;&lt;br /&gt;  &amp;lt;PackageFile Name="eula.rtf"/&amp;gt;&lt;br /&gt; &amp;lt;/PackageFiles&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;Commands Reboot="Defer"&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- Defines a new installation (x86) --&amp;gt;&lt;br /&gt;  &amp;lt;Command PackageFile="SQLEXPRWT_x86_ENU.EXE"&lt;br /&gt;     Arguments='/q /hideconsole /action=Install /features=SQLEngine,SSMS /instancename=SQLEXPRESS /enableranu=1 /sqlsvcaccount="NT Authority\Network Service" /AddCurrentUserAsSqlAdmin /skiprules=RebootRequiredCheck'&lt;br /&gt;     EstimatedInstalledBytes="225000000"&lt;br /&gt;     EstimatedInstallSeconds="420"&amp;gt;&lt;br /&gt;   &amp;lt;InstallConditions&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel"/&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="SQLExpressInstalled" Compare="ValueNotEqualTo" Value="0"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="Version9x" Compare="ValueExists" String="InvalidPlatformXP"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.1.2" String="InvalidPlatformXP"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.0" String="InvalidPlatform2K3"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.1" String="InvalidPlatform2K3"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/&amp;gt;&lt;br /&gt;   &amp;lt;/InstallConditions&amp;gt;&lt;br /&gt;   &amp;lt;ExitCodes&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="0" Result="Success"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="1641" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="3010" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0BC2 (1214,3010) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067919934" Result="FailReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C10BC2 (1217,3010) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067723326" Result="FailReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0007 (1214,7) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922937" Result="Fail" String="AdminRequired"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C4001F (1220,31) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067529697" Result="Fail" String="AdminRequired"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0001 (1214,1)--&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922943" Result="Fail" String="InvalidPlatformOSServicePacks"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C4000B (1220,11) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067529717" Result="Fail" String="AnotherInstanceRunning"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE01F8 (1214,504) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922440" Result="Fail" String="BetaComponentsFailure"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE01FA (1214,506) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922438" Result="Fail" String="BetaComponentsFailure"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0202 (1214,514) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922430" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0203 (1214,515) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922429" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="216" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /&amp;gt;&lt;br /&gt;   &amp;lt;/ExitCodes&amp;gt;&lt;br /&gt;  &amp;lt;/Command&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- Defines an upgrade installation (x86) --&amp;gt;&lt;br /&gt;  &amp;lt;Command PackageFile="SQLEXPRWT_x86_ENU.EXE"&lt;br /&gt;     Arguments="/q /hideconsole /action=Upgrade /instancename=SQLEXPRESS /skiprules=RebootRequiredCheck"&lt;br /&gt;     EstimatedInstalledBytes="225000000"&lt;br /&gt;     EstimatedInstallSeconds="420"&amp;gt;&lt;br /&gt;   &amp;lt;InstallConditions&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel"/&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="SQLExpressInstalled" Compare="ValueEqualTo" Value="0"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="SQLExpressInstalled" Compare="ValueLessThan" Value="0" String="GeneralFailure"/&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="SQLExpressInstalled" Compare="ValueGreaterThanOrEqualTo" Value="10001600"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="Version9x" Compare="ValueExists" String="InvalidPlatformXP"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.1.2" String="InvalidPlatformXP"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.0" String="InvalidPlatform2K3"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.1" String="InvalidPlatform2K3"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/&amp;gt;&lt;br /&gt;   &amp;lt;/InstallConditions&amp;gt;&lt;br /&gt;   &amp;lt;ExitCodes&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="0" Result="Success"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="1641" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="3010" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0BC2 (1214,3010) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067919934" Result="FailReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C10BC2 (1217,3010) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067723326" Result="FailReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0007 (1214,7) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922937" Result="Fail" String="AdminRequired"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C4001F (1220,31) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067529697" Result="Fail" String="AdminRequired"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0001 (1214,1)--&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922943" Result="Fail" String="InvalidPlatformOSServicePacks"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C4000B (1220,11) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067529717" Result="Fail" String="AnotherInstanceRunning"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE01F8 (1214,504) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922440" Result="Fail" String="BetaComponentsFailure"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE01FA (1214,506) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922438" Result="Fail" String="BetaComponentsFailure"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0202 (1214,514) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922430" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0203 (1214,515) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922429" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="216" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /&amp;gt;&lt;br /&gt;   &amp;lt;/ExitCodes&amp;gt;&lt;br /&gt;  &amp;lt;/Command&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- Defines a new installation (amd64) --&amp;gt;&lt;br /&gt;  &amp;lt;Command PackageFile="SQLEXPRWT_x64_ENU.EXE"&lt;br /&gt;     Arguments='/q /hideconsole /action=Install /features=SQLEngine,SSMS /instancename=SQLEXPRESS /enableranu=1 /sqlsvcaccount="NT Authority\Network Service" /AddCurrentUserAsSqlAdmin /skiprules=RebootRequiredCheck'&lt;br /&gt;     EstimatedInstalledBytes="225000000"&lt;br /&gt;     EstimatedInstallSeconds="420"&amp;gt;&lt;br /&gt;   &amp;lt;InstallConditions&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="amd64"/&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="SQLExpressInstalled" Compare="ValueNotEqualTo" Value="0"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="Version9x" Compare="ValueExists" String="InvalidPlatformXP"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.1.2" String="InvalidPlatformXP"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.0" String="InvalidPlatform2K3"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.1" String="InvalidPlatform2K3"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/&amp;gt;&lt;br /&gt;   &amp;lt;/InstallConditions&amp;gt;&lt;br /&gt;   &amp;lt;ExitCodes&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="0" Result="Success"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="1641" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="3010" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0BC2 (1214,3010) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067919934" Result="FailReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C10BC2 (1217,3010) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067723326" Result="FailReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0007 (1214,7) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922937" Result="Fail" String="AdminRequired"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C4001F (1220,31) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067529697" Result="Fail" String="AdminRequired"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0001 (1214,1)--&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922943" Result="Fail" String="InvalidPlatformOSServicePacks"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C4000B (1220,11) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067529717" Result="Fail" String="AnotherInstanceRunning"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE01F8 (1214,504) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922440" Result="Fail" String="BetaComponentsFailure"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE01FA (1214,506) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922438" Result="Fail" String="BetaComponentsFailure"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0202 (1214,514) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922430" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0203 (1214,515) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922429" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="216" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /&amp;gt;&lt;br /&gt;   &amp;lt;/ExitCodes&amp;gt;&lt;br /&gt;  &amp;lt;/Command&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- Defines an upgrade installation (amd64) --&amp;gt;&lt;br /&gt;  &amp;lt;Command PackageFile="SQLEXPRWT_x64_ENU.EXE"&lt;br /&gt;     Arguments="/q /hideconsole /action=Upgrade /instancename=SQLEXPRESS /skiprules=RebootRequiredCheck"&lt;br /&gt;     EstimatedInstalledBytes="225000000"&lt;br /&gt;     EstimatedInstallSeconds="420"&amp;gt;&lt;br /&gt;   &amp;lt;InstallConditions&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="amd64"/&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="SQLExpressInstalled" Compare="ValueEqualTo" Value="0"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="SQLExpressInstalled" Compare="ValueLessThan" Value="0" String="GeneralFailure"/&amp;gt;&lt;br /&gt;    &amp;lt;BypassIf Property="SQLExpressInstalled" Compare="ValueGreaterThanOrEqualTo" Value="10001600"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="Version9x" Compare="ValueExists" String="InvalidPlatformXP"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.1.2" String="InvalidPlatformXP"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.0" String="InvalidPlatform2K3"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.1" String="InvalidPlatform2K3"/&amp;gt;&lt;br /&gt;    &amp;lt;FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/&amp;gt;&lt;br /&gt;   &amp;lt;/InstallConditions&amp;gt;&lt;br /&gt;   &amp;lt;ExitCodes&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="0" Result="Success"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="1641" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="3010" Result="SuccessReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0BC2 (1214,3010) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067919934" Result="FailReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C10BC2 (1217,3010) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067723326" Result="FailReboot"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0007 (1214,7) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922937" Result="Fail" String="AdminRequired"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C4001F (1220,31) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067529697" Result="Fail" String="AdminRequired"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0001 (1214,1)--&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922943" Result="Fail" String="InvalidPlatformOSServicePacks"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84C4000B (1220,11) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067529717" Result="Fail" String="AnotherInstanceRunning"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE01F8 (1214,504) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922440" Result="Fail" String="BetaComponentsFailure"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE01FA (1214,506) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922438" Result="Fail" String="BetaComponentsFailure"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0202 (1214,514) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922430" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;!-- 0x84BE0203 (1214,515) --&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="-2067922429" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;ExitCode Value="216" Result="Fail" String="InvalidPlatformArchitecture"/&amp;gt;&lt;br /&gt;    &amp;lt;DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /&amp;gt;&lt;br /&gt;   &amp;lt;/ExitCodes&amp;gt;&lt;br /&gt;  &amp;lt;/Command&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;/Commands&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;Strings&amp;gt;&lt;br /&gt;  &amp;lt;String Name="DisplayName"&amp;gt;SQL Server 2008 Express Edition With Tools&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="Culture"&amp;gt;en&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="SqlExpr32WTExe"&amp;gt;http://download.microsoft.com/download/7/9/4/794bfafa-aea7-45d4-a6ea-4e92f09918e3/SQLEXPRWT_x86_ENU.exe&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="SqlExpr64WTExe"&amp;gt;http://download.microsoft.com/download/7/9/4/794bfafa-aea7-45d4-a6ea-4e92f09918e3/SQLEXPRWT_x64_ENU.exe&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="AdminRequired"&amp;gt;You do not have the permissions required to install SQL Server 2008 Express Edition.  Please contact your administrator.&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="GeneralFailure"&amp;gt;An error occurred attempting to install SQL Server 2008 Express Edition.&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="InvalidPlatformXP"&amp;gt;Windows XP Service Pack 2 or later is required to install SQL Server 2008 Express Edition.&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="InvalidPlatform2K3"&amp;gt;Windows 2003 Service Pack 2 or later is required to install SQL Server 2008 Express Edition.&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="MissingMSXml"&amp;gt;SQL Server 2008 Express Edition requires MSXML. Please ensure MSXML is installed properly.&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="InsufficientHardware"&amp;gt;The current system does not meet the minimum hardware requirements for SQL Server 2008 Express Edition. Contact your application vendor.&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="InvalidPlatformOSServicePacks"&amp;gt;The current operating system does not meet Service Pack level requirements for SQL Server 2008 Express Edition. Install the most recent Service Pack from the Microsoft download center at http://www.microsoft.com/downloads before continuing setup.&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="InvalidPlatformIE"&amp;gt;This version of SQL Server 2008 Express Edition requires Internet Explorer version 6.0 with SP1 or later. To proceed, install or upgrade to a required version of Internet Explorer and then run setup again.&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="AnotherInstanceRunning"&amp;gt;Another instance of setup is already running. The running instance must complete before this setup can proceed.&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="BetaComponentsFailure"&amp;gt;A beta version of the .NET Framework 2.0 or SQL Server was detected on the computer. Uninstall any previous beta versions of SQL Server 2008 components, SQL Server Support Files, or .NET Framework 2.0 before continuing.&amp;lt;/String&amp;gt;&lt;br /&gt;  &amp;lt;String Name="InvalidPlatformArchitecture"&amp;gt;This version of SQL Server 2008 Express Edition is not supported for the current processor architecture.&amp;lt;/String&amp;gt;&lt;br /&gt; &amp;lt;/Strings&amp;gt;&lt;br /&gt;&amp;lt;/Package&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Get the proper eula.rtf (I'm just a developer, you figure it out!) and save it to the en folder.  The installer just needs the file to exist there to work.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://download.microsoft.com/download/7/9/4/794bfafa-aea7-45d4-a6ea-4e92f09918e3/SQLEXPRWT_x86_ENU.exe"&gt;http://download.microsoft.com/download/7/9/4/794bfafa-aea7-45d4-a6ea-4e92f09918e3/SQLEXPRWT_x86_ENU.exe&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://download.microsoft.com/download/7/9/4/794bfafa-aea7-45d4-a6ea-4e92f09918e3/SQLEXPRWT_x64_ENU.exe"&gt;http://download.microsoft.com/download/7/9/4/794bfafa-aea7-45d4-a6ea-4e92f09918e3/SQLEXPRWT_x64_ENU.exe&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:130%;"&gt;When setting SQL Server 2008 Express Edition with Tools as a prerequisite, &lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;be sure to also add Powershell 1.0!  Otherwise the prereq install will fail.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please let me know if this has helped you -- I know I pulled my hair out for a good two days before I decided to just sit down and do it.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-3560576995738621836?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/3560576995738621836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=3560576995738621836' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/3560576995738621836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/3560576995738621836'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2009/08/vsnet-2008-prerequisite-for-sql-server.html' title='VS.NET 2008 Bootstrapper for SQL Server 2008 Express Edition with Tools'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-6483028207658551399</id><published>2009-08-23T07:51:00.000-07:00</published><updated>2009-08-23T07:54:08.929-07:00</updated><title type='text'>MSI - InstallUtil Failed for Web Application Install</title><content type='html'>If you are doing a web application install and you're passing the virtual directory via TARGETVDIR, make sure to NOT add the final \ as you would for TARGETDIR in your CustomActionData:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/tgt="[TARGETDIR]\" /vtgt="[TARGETVDIR]"&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-6483028207658551399?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/6483028207658551399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=6483028207658551399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/6483028207658551399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/6483028207658551399'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2009/08/msi-installutil-failed-for-web.html' title='MSI - InstallUtil Failed for Web Application Install'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-8577929695161538953</id><published>2009-08-23T07:36:00.000-07:00</published><updated>2009-08-23T07:47:33.777-07:00</updated><title type='text'>Launch executable from MSI created from VS.NET 2008</title><content type='html'>The project I'm on requires us to use only public domain compatible solutions, so purchasing InstallShield or using open source frameworks was out -- meaning I'm forced to use the built-in VS.NET 2008 Setup and Deployment.&lt;br /&gt;&lt;br /&gt;I needed to give the user an option to launch the application after install, and after googling for hours, I never really came up with a good approach for my situation.&lt;br /&gt;&lt;br /&gt;That is, until I came upon &lt;a href="http://blogs.msdn.com/astebner/archive/2006/08/12/696833.aspx"&gt;Aaron Stebner's blog entry&lt;/a&gt;.  This was exactly what I needed.  Note: if that link ever fails, google for "How can I customize an MSI in the Visual Studio setup/deployment project?" and look for the hit on blogs.msdn.com)&lt;br /&gt;&lt;br /&gt;Essentially, you add a post-build event on your Setup project which calls out to a javascript file that manipulates the MSI.  It adds the proper entries into the MSI database.  &lt;br /&gt;&lt;br /&gt;Here's my post-build event contents:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cscript.exe "$(ProjectDir)EnableLaunchApplication.js" "$(BuiltOuputPath)"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;There are no typos in that -- "Ouput" is needed instead of "Output".&lt;br /&gt;&lt;br /&gt;If you have one Setup project that includes another, there is one caveat:  you need to run the script on both your target dir (bin) and the build dir (obj) since project references pull components from the obj dir and not the bin dir at build time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-8577929695161538953?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/8577929695161538953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=8577929695161538953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/8577929695161538953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/8577929695161538953'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2009/08/launch-executable-from-msi-created-from.html' title='Launch executable from MSI created from VS.NET 2008'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-878298033630926160</id><published>2009-08-23T07:30:00.000-07:00</published><updated>2009-08-23T07:35:48.749-07:00</updated><title type='text'>Vista IIS 503 Service Unavailable</title><content type='html'>A lot of blogs mention the application pools not starting are a cause of this, but this wasn't my case.  There was a url reservation for several subdirs under port 80 on my machine, and removing them fixed it.&lt;br /&gt;&lt;br /&gt;To see if you have url reservations:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;netsh http show urlacl&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Look for anything touching port 80.  (I had two -- /Temporary_Listen_Addresses/ and /wsman/).  These need to be deleted before IIS can serve up content on port 80.  For my case, I had to run:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;netsh http delete urlacl http://+:80/Temporary_Listen_Addresses/&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;netsh http delete urlacl http://+:80/wsman/&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;After that, pulling up http://localhost/ worked as expected&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-878298033630926160?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/878298033630926160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=878298033630926160' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/878298033630926160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/878298033630926160'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2009/08/vista-iis-503-service-unavailable.html' title='Vista IIS 503 Service Unavailable'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-3532466451210222280</id><published>2009-05-15T09:10:00.000-07:00</published><updated>2009-05-15T09:11:29.677-07:00</updated><title type='text'>Vista urlacl netsh ...</title><content type='html'>In addition to opening the proper port, you must also give that ports right to be reserved by your current userid...&lt;br /&gt;&lt;br /&gt;netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-3532466451210222280?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/3532466451210222280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=3532466451210222280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/3532466451210222280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/3532466451210222280'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2009/05/vista-urlacl-netsh.html' title='Vista urlacl netsh ...'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-7182942356569693078</id><published>2009-02-17T07:46:00.000-08:00</published><updated>2009-02-17T07:50:45.427-08:00</updated><title type='text'>Windows Installer (MSI) in VS 2008: How to Default to Everyone</title><content type='html'>When creating an installer packing in VS.NET 2008, the default option is to install as "Just Me" instead of "Everyone".  This &lt;a href="http://lucidmike78.blogspot.com/2008/01/msi-installer.html"&gt;blog entry for VS.NET 2003&lt;/a&gt; details this nicely -- but it is outdated.    As that post details, you have to edit the MSI database to get it to work.&lt;br /&gt;&lt;br /&gt;However, in VS.NET 2008, there is a property on the Setup project itself named "InstallAllUsers" that defaults to false.  Simply toggle it to true and you're in business.&lt;br /&gt;&lt;br /&gt;I just thought I'd add this so others who google for it don't go through the heart aches that used to be required in earlier versions of VS.NET.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-7182942356569693078?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/7182942356569693078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=7182942356569693078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/7182942356569693078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/7182942356569693078'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2009/02/windows-installer-msi-in-vs-2008-how-to.html' title='Windows Installer (MSI) in VS 2008: How to Default to Everyone'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-1962973969435299333</id><published>2008-10-13T13:39:00.000-07:00</published><updated>2008-10-13T14:10:38.152-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript form disable auto submit'/><title type='text'>Disable form submit on enter key press in (almost) one line of javascript</title><content type='html'>How to prevent auto-submission of forms with (almost) one line of javascript...&lt;br /&gt;&lt;br /&gt;You make your web form and you test filling it out, and you find out hitting enter causes the form to automatically submit, when in fact you want a different behavior.  Here's the simplest, cleanest, most compatible way to do this in browser-agnostic javascript without any dependencies of any kind:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;body onkeypress="var e = (event ? event : window.event); return (e.keyCode ? e.keyCode : e.charCode ? e.charCode : e.which) != 13;" &amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Essentially that is saying grab the event, determine which key was pressed, and return false if it was the enter key.  Returning false suppresses the form from auto-submitting.  &lt;br /&gt;&lt;br /&gt;Suppose you have a really super useful event handler like the following:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;input type='text' onkeypress='alert("Wow this sure is annoying");' /&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The alert would still be shown even though you have the enter key-eating code at the body level thanks to the bubbling precedence of event handling.  In essence, the onkeypress event handler is called for the textbox before the event handler code for the body is called.  (If you return false from the textbox, it would never bubble up to the body's event handler)&lt;br /&gt;&lt;br /&gt;This has been tested on the various current versions of IE (6,7,8), Firefox (2,3), and Safari (3).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-1962973969435299333?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/1962973969435299333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=1962973969435299333' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/1962973969435299333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/1962973969435299333'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2008/10/disable-form-submit-on-enter-key-press.html' title='Disable form submit on enter key press in (almost) one line of javascript'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-805555724547270720</id><published>2008-01-11T13:27:00.000-08:00</published><updated>2008-01-11T13:46:28.662-08:00</updated><title type='text'>2 - Not able to initialize admin object definitions against db ...</title><content type='html'>So I was tasked with automating the creation and deletion of BlackBerry users.  According to RIM, the recommended way of doing this is by using their BlackBerry Resource Kit -- namely the BlackBerry User Admin Service and Tool.&lt;br /&gt;&lt;br /&gt;I've never done anything with BlackBerry before, so needless to say I spent some time making noob errors when trying to install the Admin Service.  First off, I was getting this funky error:&lt;br /&gt;&lt;br /&gt;MAPILogonEx() failed (80040111) for profile:&lt;br /&gt;&lt;br /&gt;Okay, that's easy enough to see what's going on.  A missing or invalid MAPI profile.  I needed a MAPI profile locally (dammit Jim, I'm a developer, not an admin!).  I created one using a tool from Microsoft's website: &lt;a href="http://support.microsoft.com/kb/228736"&gt;http://support.microsoft.com/kb/228736&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I eventually did get to a sticking point when google no longer helped:&lt;br /&gt;&lt;br /&gt;"2 - Not able to initialize admin object definitions against db"&lt;br /&gt;&lt;br /&gt;I ran SQL profiler to make sure the service was successfully connecting to the proper database (BESMgmt) and it had rights to do everything -- yep everything was cherry.  Still no love though.  It seemed to point at a database-related error.  I fired up Query Analyzer and looked for a table relating to 'object definitions'.  Sure enough, an ObjectDefn table existed.  Here's a  partial sample record:&lt;br /&gt;&lt;br /&gt;&amp;lt;AdminObject name="ServerConfig" dbtable="ServerConfig"&amp;gt;&amp;lt;Property clientname="Id" dbname="Id" type="56" length="4" isnullable="0" key="1" /&amp;gt;&amp;lt;Property clientname="ServiceName" dbname="ServiceName" type="231" length="512" isnullable="1" /&amp;gt;&amp;lt;Property clientnam...&lt;br /&gt;&lt;adminobject name="ServerConfig" dbtable="ServerConfig"&gt;&lt;property clientname="Id" dbname="Id" type="56" length="4" isnullable="0" key="1"&gt;&lt;property clientname="ServiceName" dbname="ServiceName" type="231" length="512" isnullable="1"&gt;&lt;br /&gt;&lt;br /&gt;Then it dawned on me: they're storing xml in the database.  I didn't verify that msxml 4.0 was installed (per the Admin User Documentation from RIM).  So I grabbed &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=3144b72b-b4f2-46da-b4b6-c5d7485f2b42&amp;amp;displaylang=en"&gt;MSXML 4.0&lt;/a&gt; from Microsoft's website and installed it.  Sure enough, the service could finally start.  Yay.&lt;br /&gt;&lt;br /&gt;Moral of the story: verify your prereq's before banging your head against the wall.&lt;br /&gt;&lt;br /&gt;Long story short:&lt;br /&gt;2 - Not able to initialize admin object definitions against db == wrong version of MSXML installed&lt;br /&gt;&lt;br /&gt;Hopefully somebody googles this and doesn't have to recreate my madness :-)&lt;/property&gt;&lt;/property&gt;&lt;/adminobject&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-805555724547270720?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/805555724547270720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=805555724547270720' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/805555724547270720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/805555724547270720'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2008/01/2-not-able-to-initialize-admin-object.html' title='2 - Not able to initialize admin object definitions against db ...'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-5481978299128291398</id><published>2007-11-20T07:55:00.000-08:00</published><updated>2007-11-20T08:24:59.309-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='COM'/><category scheme='http://www.blogger.com/atom/ns#' term='impersonation'/><category scheme='http://www.blogger.com/atom/ns#' term='Exchange'/><category scheme='http://www.blogger.com/atom/ns#' term='Active Directory'/><title type='text'>Calling Exchange COM objects from a .NET web service</title><content type='html'>Suppose we have the following sample code (assuming you're &lt;span style="font-family: courier new;"&gt;using&lt;/span&gt; System.DirectoryServices and your project has references to System.DirectoryServices and CDOEXM):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;string ldapPath="ldap://&lt;full&gt;{DN to user object}";&lt;br /&gt;string homeMDBUrl = "{DN to private exchange store}";&lt;br /&gt;using(DirectoryEntry de = new DirectoryEntry(ldapPath)){&lt;br /&gt; IMailboxStore mbx = (IMailboxStore)de.NativeObject;&lt;br /&gt; mbx.CreateMailbox(homeMDBUrl);&lt;br /&gt; de.CommitChanges();&lt;br /&gt;}&lt;br /&gt;&lt;/full&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Works fine when run from a fat client.  But when we call it from an IIS-based app, it errors with:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What gives?&lt;br /&gt;&lt;br /&gt;This is a generic COM error saying "I couldn't reach a resource you need" (or something close to that).  The best bet is that logging in to the Exchange server failed.&lt;br /&gt;&lt;br /&gt;Exchange COM objects make requests under the identity associated with the &lt;span style="font-weight: bold;"&gt;process&lt;/span&gt;, not the &lt;span style="font-weight: bold;"&gt;thread&lt;/span&gt;. When trying to call into Exchange via COM (gotten from the NativeObject property on the AD object in .NET), the following do &lt;span style="font-weight: bold;"&gt;NOT&lt;/span&gt; work:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;setting the user via impersonation in web.config&lt;/li&gt;&lt;li&gt;setting the user of all websites in IIS mmc&lt;/li&gt;&lt;li&gt;setting the user of the specific website in IIS mmc&lt;/li&gt;&lt;li&gt;setting the user of IIS Admin / W3SVC services&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; There is only one way to effectively get it to work: the ASP.NET worker process must itself run as the user who has rights to touch Exchange. This can be set in machine.config within the  tag like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;processModel username="{domain\userid}" password="{password}" /&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Setting that properly causes the ASP.NET worker process to run as that user at the process level. All other overrides are at the thread level and do not work.&lt;br /&gt;&lt;br /&gt;With the machine.config file altered and IIS restarted (yes, you have to &lt;span style="font-family:courier new;"&gt;iisreset&lt;/span&gt; for changes to take effect), calling the code above within a web service / web application should work assuming your other parameters are correct.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-5481978299128291398?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/5481978299128291398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=5481978299128291398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/5481978299128291398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/5481978299128291398'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2007/11/calling-exchange-com-objects-from-net.html' title='Calling Exchange COM objects from a .NET web service'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-8719921059514823062</id><published>2007-03-08T13:00:00.000-08:00</published><updated>2007-03-08T15:34:11.601-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>HOWTO: Change a cascaded style in IE / Firefox / Opera</title><content type='html'>So you want to alter an HTML element's style dynamically.  Seems simple enough on the surface -- just alter the .style property appropriately, right?&lt;br /&gt;&lt;br /&gt;&amp;lt;a href='javascript:showElement("div2")'&amp;gt;click me&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;div id='div2' style='display:none'&amp;gt;This will show up!&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type='text/javascript'&amp;gt;&lt;br /&gt;&lt;pre&gt;function showElement(id)&lt;br /&gt; var el = document.getElementById(id);&lt;br /&gt; if (el){&lt;br /&gt;   el.style.display = 'block';&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;You go test it, it works fantastic.  You develop the rest of your page and complete it.  So to do things properly, you move most of the style attributes into a CSS file instead of doing inline style definitions.  So now you have:&lt;br /&gt;&lt;br /&gt;css file:&lt;br /&gt;&lt;pre&gt;.toggleme {&lt;br /&gt; display:none;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;page file:&lt;br /&gt;&lt;br /&gt;&amp;lt;div id='div2' class='toggleme'&amp;gt;This will show up!&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;You go back and test your page, but it doesn't work any more!  No error, but the div doesn't show up either.  What gives?&lt;br /&gt;&lt;br /&gt;It turns out that most browsers handle the .style attribute of an element as meaning the attribute value directly from the html itself, instead of the cascaded value.  IE uses .currentStyle and .runtimeStyle to renote the read/write properties for cascaded styles, while Firefox/Opera/etc uses the DOM standard of document.defaultView.getComputedStyle().  But we want something we can call that will just set the silly style regardless of browser and regardless of where the style is actually declared.&lt;br /&gt;&lt;br /&gt;I wrote an open source framework for doing a fair amount of client-side manipulation that is browser independent.  I call this Interactive Website Framework -- you can check it out at &lt;a href="http://sourceforge.net/projects/iwf/" target="_blank"&gt;IWF on sourceforge&lt;/a&gt;.  But for our needs, we really only need a single function (which I modified slightly to eliminate calls to other functions in the framework):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;function iwfStyle(id, styleName, newStyle){&lt;br /&gt; var el = document.getElementById(id);&lt;br /&gt; if (!el) { return false; }&lt;br /&gt; var ret = '';&lt;br /&gt; if (typeof(newStyle) != 'undefined'){&lt;br /&gt;   // assigning new style&lt;br /&gt;   if (el.runtimeStyle){&lt;br /&gt;     ret = el.runtimeStyle[styleName] = newStyle;&lt;br /&gt;   } else {&lt;br /&gt;     ret = el.style[styleName] = newStyle;&lt;br /&gt;   }&lt;br /&gt; } else if (el.currentStyle) {&lt;br /&gt;   // reading IE style&lt;br /&gt;   ret = el.currentStyle[styleName];&lt;br /&gt; } else {&lt;br /&gt;   // reading DOM style&lt;br /&gt;   try {&lt;br /&gt;     var cs = document.defaultView.getComputedStyle(el,null);&lt;br /&gt;     ret = cs.getPropertyValue(styleName);&lt;br /&gt;   } catch(e) {&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt; return ret;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now if we change our showElement function to simply call iwfStyle, we're set:&lt;br /&gt;&lt;br /&gt;&amp;lt;script type='text/javascript'&amp;gt;&lt;br /&gt;&lt;pre&gt;function showElement(id)&lt;br /&gt; iwfStyle(id, 'display', 'block');&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;So now the call will work regardless of browser or where the style is defined.  Check out the &lt;a href="http://sourceforge.net/projects/iwf/" target="_blank"&gt;full framework&lt;/a&gt; on sourceforge.  It includes a client-side Xml parser, an Ajax abstraction layer, and some rudimentary gui enhancements, like animating elements, docking elements, drag-n-drop, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-8719921059514823062?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/8719921059514823062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=8719921059514823062' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/8719921059514823062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/8719921059514823062'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2007/03/howto-change-cascaded-style-in-ie.html' title='HOWTO: Change a cascaded style in IE / Firefox / Opera'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-7011519400009627270</id><published>2007-03-08T12:25:00.000-08:00</published><updated>2007-03-08T12:47:24.061-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='remote desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='terminal server'/><title type='text'>HOWTO: Temporarily bypass connection limit - terminal server has exceeded max number of allowed connections</title><content type='html'>So you need to remote desktop into a Windows 2000/2003/XP/Vista box, but when you do you get the dreaded "terminal server has exceeded max number of allowed connections" error causing you to flail and try to contact all those you think *might* be connected.  Which is a major hassle, especially when all you really need to do is touch one little thing and jump right out.&lt;br /&gt;&lt;br /&gt;To see who's currently connected (from the command line of your local box):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;C:\&amp;gt;qwinsta /server:[server name or ip here]&lt;br /&gt;SESSIONNAME       USERNAME                 ID  STATE   TYPE &lt;br /&gt;console                                     0  Conn    wdcon&lt;br /&gt;rdp-tcp                                 65536  Listen  rdpwd&lt;br /&gt;                  jane.doe                  2  Conn    rdpwd&lt;br /&gt;                  john.doe                  3  Disc    rdpwd&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So you can see jane.doe and john.doe are both logged into the box.  But john.doe is disconnected, so let's pick him to boot:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;C:\&amp;gt;rwinsta /server:[server name or ip here] 3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Where the "3" is john.doe's ID.  That should boot him off.  If it doesn't, the alternative is to login to the console session.  We can do this using a command line switch for the Remote Desktop client.  Open a command prompt and run:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mstsc.exe /console&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This tells Remote Desktop to try to connect to the console instance when you click Connect.  This should allow you one more concurrent connection over the limit imposed by windows (usually 2).  Happy Remote Desktopping!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-7011519400009627270?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/7011519400009627270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=7011519400009627270' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/7011519400009627270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/7011519400009627270'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2007/03/howto-temporarily-bypass-connection.html' title='HOWTO: Temporarily bypass connection limit - terminal server has exceeded max number of allowed connections'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6308750746309418547.post-5916611270109081694</id><published>2007-03-08T12:05:00.000-08:00</published><updated>2007-03-08T15:17:30.066-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>HOWTO: Ubuntu Edgy Eft (6.10) + Ruby 1.8.5 + Gem 0.9.2 + Rails 1.2.2</title><content type='html'>There have been several excellent articles / blogs / etc explaining how to get the latest version (as of 2007-03-08) of ruby + gem + rails running on Ubuntu 6.10 Edge Eft, but no one resource met my needs to get me completely up and running.&lt;br /&gt;&lt;br /&gt;So here's the various excellent resources I used to finally get ruby + gem + rails working on my ubuntu system:&lt;br /&gt;&lt;br /&gt;Install ruby:&lt;br /&gt;&lt;a href="http://www.rubywizards.com/viewtopic.php?pid=19" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; http://www.rubywizards.com&lt;wbr&gt;/viewtopic.php?pid=19&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Grab the gem source&lt;br /&gt;&lt;a href="http://rubyforge.org/frs/?group_id=126&amp;release_id=9501" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;http://rubyforge.org/frs/&lt;wbr&gt;?group_id=126&amp;amp;release_id=9501 &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To Install gem:&lt;br /&gt;tar -zxvf rubygems-0.9.2.tgz&lt;br /&gt;cd rubygems-0.9.2&lt;br /&gt;ruby setup.rb&lt;br /&gt;&lt;br /&gt;If you get the zlib error, you probably need to get additional libs:&lt;br /&gt;apt-get install zlibc zlib1g zlib1g-dev&lt;br /&gt;(see &lt;a href="http://www.nabble.com/Gems-zlib-problem-t992896.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;http://www.nabble.com/Gems&lt;wbr&gt;-zlib-problem-t992896.html&lt;/a&gt; for more info)&lt;br /&gt;&lt;br /&gt;Re-compile and re-install ruby now that the new libs are there&lt;br /&gt;&lt;a href="http://www.rubywizards.com/viewtopic.php?pid=19" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; http://www.rubywizards.com&lt;wbr&gt;/viewtopic.php?pid=19&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Make sure you're running the latest version:&lt;br /&gt;ruby -v&lt;br /&gt;ruby 1.8.5 (2006-08-25) [i686-linux]&lt;br /&gt;&lt;br /&gt;if you still get the zlib error, copy the zlib over (this should be one line):&lt;br /&gt;        sudo cp /usr/lib/ruby/1.8/i486-linux&lt;div id="mb_0"&gt;&lt;wbr&gt;/zlib.so /usr/local/lib/ruby/site_ruby&lt;wbr&gt;/1.8/i686-linux/&lt;br /&gt;&lt;br /&gt;Great info about the zlib error in Ubuntu:&lt;br /&gt;&lt;a href="http://www.penlug.org/twiki/bin/view/Main/LinuxBookReviewsAgileWebDevelopmentwithRails" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;http://www.penlug.org/twiki&lt;wbr&gt;/bin/view/Main/LinuxBookReviews&lt;wbr&gt;AgileWebDevelopmentwithRails&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then re-install gem:&lt;br /&gt;ruby setup.rb&lt;br /&gt;&lt;br /&gt;make sure gem works:&lt;br /&gt;gem -v&lt;br /&gt;0.9.2&lt;br /&gt;&lt;br /&gt;Then grab rails:&lt;br /&gt;gem install rails --include-dependencies --remote&lt;br /&gt;&lt;br /&gt;make sure you're good to go:&lt;br /&gt;rails -v&lt;br /&gt;Rails 1.2.2&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I hope this helps someone!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6308750746309418547-5916611270109081694?l=youarenotexpectedtounderstandthis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youarenotexpectedtounderstandthis.blogspot.com/feeds/5916611270109081694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6308750746309418547&amp;postID=5916611270109081694' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/5916611270109081694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6308750746309418547/posts/default/5916611270109081694'/><link rel='alternate' type='text/html' href='http://youarenotexpectedtounderstandthis.blogspot.com/2007/03/howto-ubuntu-edgy-eft-610-ruby-185-gem.html' title='HOWTO: Ubuntu Edgy Eft (6.10) + Ruby 1.8.5 + Gem 0.9.2 + Rails 1.2.2'/><author><name>brock weaver</name><uri>http://www.blogger.com/profile/01429702658812405076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry></feed>
