<?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-1625465183306533989</id><updated>2011-11-27T16:39:42.449-08:00</updated><category term='Visual Studio'/><category term='Installer'/><category term='web'/><category term='debugger'/><category term='Remap'/><category term='MSXML'/><category term='hang'/><category term='Option'/><category term='XPSEPSC-x86-en-US.exe'/><category term='hosting'/><category term='x86'/><category term='Alt'/><category term='Windows'/><category term='MSI'/><category term='Qwest'/><category term='Domain'/><category term='Keyboard'/><category term='VGA'/><category term='XAML'/><category term='Application_Exit'/><category term='Admin'/><category term='Visual Studio 2008'/><category term='Exception'/><category term='SelectedIndex'/><category term='ActiveX'/><category term='STA'/><category term='PublicKey'/><category term='32-bit'/><category term='ComboBox'/><category term='reseed'/><category term='Picture Messaging'/><category term='T-mobile'/><category term='x1600'/><category term='hotfix'/><category term='iMac'/><category term='2008'/><category term='x64'/><category term='Windows 7'/><category term='64-bit'/><category term='Mobility'/><category term='reset'/><category term='SP1'/><category term='MMS'/><category term='.NET Framework'/><category term='SelectedItem'/><category term='Axosoft'/><category term='Command'/><category term='ATT'/><category term='iPhone'/><category term='OnTime'/><category term='sql'/><category term='MTA'/><category term='apartment model'/><category term='ATI'/><category term='2g'/><category term='WIC'/><category term='Custom Action'/><category term='XPSEPSC-amd64-en-US.exe'/><category term='increment'/><category term='WiFi'/><category term='Silverlight'/><title type='text'>kuhnboy</title><subtitle type='html'>Giving back to the developer community.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1625465183306533989.post-5151025985626329588</id><published>2011-05-10T09:26:00.000-07:00</published><updated>2011-05-10T09:31:08.755-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='OnTime'/><category scheme='http://www.blogger.com/atom/ns#' term='increment'/><category scheme='http://www.blogger.com/atom/ns#' term='Axosoft'/><category scheme='http://www.blogger.com/atom/ns#' term='reset'/><category scheme='http://www.blogger.com/atom/ns#' term='reseed'/><title type='text'>Changing the next Defect/Feature Id for Axosoft OnTime</title><content type='html'>We just switched from Axosoft OnTime 2007 to 2010, and during so we wanted to totally redo our workflow and field structure for software defects and features, but we didn't want existing defect and feature numbers to collide with the new system, so with sqlcmd, you can execute a command to 'up the new numbers'. So for example in OnTime 2007, we had the latest defect number 1397. In OnTime 2010, since we have a new structure, it starts out at 1.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Open sqlcmd on the database server for OnTime.&lt;/li&gt;&lt;li&gt;Switch to your OnTime database with a command such as 'use OnTime;'&lt;/li&gt;&lt;li&gt;Execute the command: &lt;span class="Apple-style-span" style="font-family: monospace; font-size: 12px; color: rgb(51, 51, 51); line-height: 19px; "&gt;&lt;span style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: blue; "&gt;DBCC &lt;/span&gt;&lt;span style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: black; "&gt;CHECKIDENT &lt;/span&gt;&lt;span style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: gray; "&gt;(&lt;/span&gt;&lt;span style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: black; "&gt;yourtable&lt;/span&gt;&lt;span style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: gray; "&gt;, &lt;/span&gt;&lt;span style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: black; "&gt;reseed&lt;/span&gt;&lt;span style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: gray; "&gt;, &lt;/span&gt;&lt;span style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;lastnumber&lt;/span&gt;&lt;/span&gt;&lt;span style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: gray; "&gt;) &lt;/span&gt;&lt;/span&gt;(Where yourtable is the name of the table in OnTime such as 'Defects', and last number from the old OnTime system).&lt;/li&gt;&lt;li&gt;That's it!&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-5151025985626329588?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/5151025985626329588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2011/05/changing-next-defectfeature-id-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/5151025985626329588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/5151025985626329588'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2011/05/changing-next-defectfeature-id-for.html' title='Changing the next Defect/Feature Id for Axosoft OnTime'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-3940069181202629414</id><published>2009-12-10T15:17:00.000-08:00</published><updated>2009-12-10T15:19:39.286-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debugger'/><category scheme='http://www.blogger.com/atom/ns#' term='hotfix'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><title type='text'>Visual Studio 2008 Skipping lines while debugging</title><content type='html'>If you have a problem with Visual Studio 2008 SP1 skipping lines in a for loop while you are 'stepping over' there is a hotfix for Visual Studio (KB957912). Apparently Visual Studio can treat a 'step over' as a 'run' while inside of a for loop. &lt;a href="http://code.msdn.microsoft.com/KB957912/Release/ProjectReleases.aspx?ReleaseId=1796"&gt;http://code.msdn.microsoft.com/KB957912/Release/ProjectReleases.aspx?ReleaseId=1796&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-3940069181202629414?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/3940069181202629414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/12/visual-studio-2008-skipping-lines-while.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/3940069181202629414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/3940069181202629414'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/12/visual-studio-2008-skipping-lines-while.html' title='Visual Studio 2008 Skipping lines while debugging'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-4053917953025570976</id><published>2009-12-10T15:12:00.000-08:00</published><updated>2009-12-10T15:16:22.906-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='STA'/><category scheme='http://www.blogger.com/atom/ns#' term='apartment model'/><category scheme='http://www.blogger.com/atom/ns#' term='MTA'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveX'/><title type='text'>Mixing ActiveX GUI C++ and .NET</title><content type='html'>I came across a problem the other day. I have:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;An ActiveX GUI control that requires a single-threaded apartment model in C++ (MFC)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A C++ static library that is a bridge between C++ and a .NET class library&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A .NET class library&lt;/li&gt;&lt;/ul&gt;The GUI control cannot be instantiated in C++. Why? The .NET thread apartment model is multi-threaded by default. How do I set the apartment model of the C++ program to be STA, when there is no .NET code directly in the C++ program? Add a linker option to the project: /CLRTHREADATTRIBUTE:STA&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-4053917953025570976?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/4053917953025570976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/12/mixing-activex-gui-c-and-net.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/4053917953025570976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/4053917953025570976'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/12/mixing-activex-gui-c-and-net.html' title='Mixing ActiveX GUI C++ and .NET'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-5009864103196044239</id><published>2009-07-22T09:25:00.000-07:00</published><updated>2009-07-22T09:27:09.943-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debugger'/><category scheme='http://www.blogger.com/atom/ns#' term='hang'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><title type='text'>Visual Studio 2008 Hangs after debugging</title><content type='html'>I've found it really annoying that VS 2008 (I'm currently using SP1) on a closed network hangs for about 10 - 20 seconds after exiting the debugger. The solution to the hang is to edit the C:\windows\system32\drivers\etc\hosts file and add:&lt;br /&gt;&lt;br /&gt;127.0.0.1       crl.microsoft.com&lt;br /&gt;127.0.0.1       6to4.ipv6.microsoft.com&lt;br /&gt;&lt;br /&gt;as I've found in other postings on the net.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-5009864103196044239?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/5009864103196044239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/07/visual-studio-2008-hangs-after.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/5009864103196044239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/5009864103196044239'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/07/visual-studio-2008-hangs-after.html' title='Visual Studio 2008 Hangs after debugging'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-5994132915211566300</id><published>2009-07-01T10:47:00.000-07:00</published><updated>2009-07-01T18:53:31.585-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2g'/><category scheme='http://www.blogger.com/atom/ns#' term='T-mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='MMS'/><category scheme='http://www.blogger.com/atom/ns#' term='Picture Messaging'/><title type='text'>MMS on 2g iPhone w/ T-Mobile</title><content type='html'>Getting MMS to work on the iPhone 2G OS 3.0 with T-mobile is not that difficult at all. Do not install ActivateMMS2G on the 3G iPhone.. it will most likely brick it.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Install the package ActivateMMS2G &lt;span&gt;with Cydia.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Go to Settings -&gt; General -&gt; Celular Data Network&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;You need to enter an APN for normal web browsing (wap.voicestream.com for $5.99 data plan customers and internet2.voicestream.com for other data plans). If you do not enter anything here the MMS APN will not be set and MMS will not work.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;MMS APN: &lt;/span&gt;wap.voicestream.com&lt;/li&gt;&lt;li&gt;MMS MMSC: http://mms.msg.eng.t-mobile.com/mms/wapenc&lt;/li&gt;&lt;li&gt;MMS Proxy: 216.155.165.050&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Reboot. Open the Messages app. It may want you to enter your phone number under the Settings and then thats it!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;em&gt;&lt;span style="font-style: italic;"&gt;Update !!!!:&lt;/span&gt;&lt;/em&gt;&lt;div&gt;&lt;i&gt;     The settings you actually may need are below depending on your data plan:&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 12px; font-style: normal; color: rgb(68, 68, 68); line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;APN: epc.tmobile.com&lt;br /&gt;USERNAME: (leave blank)&lt;br /&gt;PASSWORD: (leave blank)&lt;br /&gt;MMSC: &lt;a rel="nofollow" href="http://mms.msg.eng.t-mobile.com/mms/wapenc" target="_blank" style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(54, 54, 54); "&gt;http://mms.msg.eng.t-mobile.com/mms/wapenc&lt;/a&gt;&lt;br /&gt;MMS PROXY: 216.155.165.50:8080&lt;br /&gt;MMS MAX MESSAGE SIZE: (leave blank)&lt;br /&gt;MMS UA PROF URL: (leave blank)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:Verdana, Helvetica, Arial, sans-serif;font-size:100%;color:#444444;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-5994132915211566300?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/5994132915211566300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/07/mms-on-2g-iphone-w-t-mobile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/5994132915211566300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/5994132915211566300'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/07/mms-on-2g-iphone-w-t-mobile.html' title='MMS on 2g iPhone w/ T-Mobile'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-4390999336357662095</id><published>2009-06-08T08:38:00.000-07:00</published><updated>2009-06-08T08:43:36.550-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PublicKey'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='XPSEPSC-amd64-en-US.exe'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='XPSEPSC-x86-en-US.exe'/><title type='text'>PublicKey attribute in .NET Framework 3.5 SP1 Does not match that of file...</title><content type='html'>When building an installer in Visual Studio 2008 SP1 and including the bootstrapper installer for .NET Framework 3.5 SP1, you may get 2 warnings when building stating:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;'PublicKey' attribute in '.NET Framework 3.5 SP1' does not match that of file 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFX35SP1\dotNetFX30\XPSEPSC-x86-en-US.exe&lt;/span&gt;'&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;'PublicKey' attribute in '.NET Framework 3.5 SP1' does not match that of file 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFX35SP1\dotNetFX30\XPSEPSC-amd64-en-US.exe'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For some reason in the product.xml file for DotNetFX35SP1, the XPSEPSC files have a different PublicKey than all of the other files in the dotNetFX30 packages for the DotNetFX35SP1 bootstrapper. To fix the issue replace the XPSEPSC PublicKeys with one of the other keys (they are all the same).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-4390999336357662095?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/4390999336357662095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/06/publickey-attribute-in-net-framework-35.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/4390999336357662095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/4390999336357662095'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/06/publickey-attribute-in-net-framework-35.html' title='PublicKey attribute in .NET Framework 3.5 SP1 Does not match that of file...'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-2742854368342153316</id><published>2009-06-02T13:48:00.000-07:00</published><updated>2009-06-02T13:49:41.292-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qwest'/><category scheme='http://www.blogger.com/atom/ns#' term='ATT'/><category scheme='http://www.blogger.com/atom/ns#' term='WiFi'/><title type='text'>Qwest High Speed users get free ATT WiFi</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Qwest&lt;/span&gt; High-Speed Internet subscribers are &lt;b&gt;now enabled to receive free access&lt;/b&gt; to the Nation's Largest &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Wi&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Fi&lt;/span&gt; Hot Spot network, powered by AT&amp;amp;T &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Wi&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Fi&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.qwest.com/residential/products/wifi/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Qwest&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Wi&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Fi&lt;/span&gt;&lt;/a&gt;, powered by AT&amp;amp;T &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Wi&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Fi&lt;/span&gt;, is a complimentary service available to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Qwest&lt;/span&gt; High-Speed Internet subscribers -- &lt;em&gt;at thousands of coffee shops, bookstores and restaurants nationwide.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-2742854368342153316?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/2742854368342153316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/06/qwest-high-speed-users-get-free-att.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/2742854368342153316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/2742854368342153316'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/06/qwest-high-speed-users-get-free-att.html' title='Qwest High Speed users get free ATT WiFi'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-1058373707443782115</id><published>2009-04-28T07:00:00.000-07:00</published><updated>2009-04-28T07:38:24.954-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Option'/><category scheme='http://www.blogger.com/atom/ns#' term='Command'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Remap'/><category scheme='http://www.blogger.com/atom/ns#' term='Alt'/><title type='text'>Remapping Windows (Command) and Alt (Option) Keys</title><content type='html'>Using boot camp with my iMac, I find it frustrating pressing the command key and having the start menu pop-up. It was actually hard to search google and find a simple registry solution, so taking a look at a couple of documents:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/whdc/archive/w2kscan-map.mspx"&gt;http://www.microsoft.com/whdc/archive/w2kscan-map.mspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc"&gt;http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I found it very easy to modify the registry and change the mappings for any key really, but this is how you map LAlt (0038) to LWin (E05B) and vice versa.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Open regedit to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout&lt;/li&gt;&lt;li&gt;Create a binary value with the name "Scancode Map" with the value '00000000000000000300000038005BE05BE0380000000000'&lt;/li&gt;&lt;li&gt;Reboot.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-1058373707443782115?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/1058373707443782115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/04/remapping-windows-command-and-alt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/1058373707443782115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/1058373707443782115'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/04/remapping-windows-command-and-alt.html' title='Remapping Windows (Command) and Alt (Option) Keys'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-7414119871464130819</id><published>2009-04-27T21:36:00.000-07:00</published><updated>2009-04-27T22:14:44.752-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x1600'/><category scheme='http://www.blogger.com/atom/ns#' term='Mobility'/><category scheme='http://www.blogger.com/atom/ns#' term='iMac'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='VGA'/><category scheme='http://www.blogger.com/atom/ns#' term='ATI'/><title type='text'>1440x900 on 17-inch iMac in Windows 7 w/ Dual Monitors</title><content type='html'>Of course when using a beta operating system, drivers are going to be finiky. I was able to actually get my iMac to work at 1440x900, but not by default. I tried the bootcamp ATI drivers at first but they did not list the native resolution for my 17inch iMac (Late 2006) possibly due to the second VGA monitor I have connected.&lt;br /&gt;&lt;br /&gt;Not sure if one or all of these steps got this to work but this is what I did:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get the latest Catalyst Control Center (8.12 for Vista 32-bit) from &lt;a href="http://www.driverheavendownloads.net/ati.htm"&gt;http://www.driverheavendownloads.net/ati.htm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Download MobilityModder.NET and follow the instructions on modifying the ATI driver package for the mobility card.&lt;/li&gt;&lt;li&gt;Once the driver is installed, open the Windows 7 Control Panel for Screen Resolutions.&lt;/li&gt;&lt;li&gt;Windows has 'Duplicate Desktop on 1 and 2' enabled for multiple displays. For some reason display 2 is a 'dead display' and the second monitor is really display 3.&lt;/li&gt;&lt;li&gt;Once you separate display 2 from display 1, your primary LCD should be able to do 1440x900. You can then enable the extend desktop to display 3.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-7414119871464130819?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/7414119871464130819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/04/1440x900-on-17-inch-imac-in-windows-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/7414119871464130819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/7414119871464130819'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/04/1440x900-on-17-inch-imac-in-windows-7.html' title='1440x900 on 17-inch iMac in Windows 7 w/ Dual Monitors'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-2162598486756648202</id><published>2009-04-13T22:45:00.000-07:00</published><updated>2009-04-13T22:49:06.501-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='SP1'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Installing Visual Studio 2008 SP1 on Windows 7</title><content type='html'>If you try to install Visual Studio 2008 SP1 update with Windows 7, you will most likely get an installation error and the installer will rollback the changes. This can be fixed by running the installer (SPInstaller.exe) in compaitibility mode for Vista. Right click on SPInstaller.exe, choose Compatibility. Then choose Vista as the compatibility mode and Run this program as administrator.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-2162598486756648202?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/2162598486756648202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/04/installing-visual-studio-2008-sp1-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/2162598486756648202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/2162598486756648202'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/04/installing-visual-studio-2008-sp1-on.html' title='Installing Visual Studio 2008 SP1 on Windows 7'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-4763086104704243280</id><published>2009-04-06T19:51:00.000-07:00</published><updated>2009-04-06T19:59:08.141-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Are there any reputable hosting companies out there?</title><content type='html'>I really, truly understand that 'value' hosting (i.e. the $5, $10 per month) companies are really crappy. How do I pick out the good hosting companies from the bad ones? At say, $35 per month you can still get stuck with a bad company.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our last hosting company had a filesystem problem and I lost some of my work. Our current hosting company has started having issues today (luckily I make local daily backups this time). If this problem does not get resolved, I will definitely post the name of the hosting company, they keep giving me the runaround on the issue for the past couple hours only for me to "be patient".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How can I weed out the good hosting companies from the bad ones?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-4763086104704243280?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/4763086104704243280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/04/are-there-any-reputable-hosting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/4763086104704243280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/4763086104704243280'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/04/are-there-any-reputable-hosting.html' title='Are there any reputable hosting companies out there?'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-5774258143798935682</id><published>2009-04-01T08:57:00.000-07:00</published><updated>2009-04-01T09:00:46.042-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Admin'/><category scheme='http://www.blogger.com/atom/ns#' term='Domain'/><category scheme='http://www.blogger.com/atom/ns#' term='MSXML'/><title type='text'>If .NET 3.0 fails to install...</title><content type='html'>In response to my previous posting about &lt;a href="http://kuhnboy.blogspot.com/2009/03/problems-installing-net-framework-30.html"&gt;Problems Installing .NET 3.0 Runtime&lt;/a&gt;, we have seen at other customer locations now admins not knowing that you must be a Domain Administrator to install .NET runtimes (since it is considered a Windows Update), and have seen other errors that don't make sense such as MSXML 6.0 not being installed. So really, in general if theres an issue installing .NET runtime, it's most likely that you are on a domain but not a Domain Administrator.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-5774258143798935682?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/5774258143798935682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/04/if-net-30-fails-to-install.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/5774258143798935682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/5774258143798935682'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/04/if-net-30-fails-to-install.html' title='If .NET 3.0 fails to install...'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-3038072694246277764</id><published>2009-03-09T15:17:00.001-07:00</published><updated>2009-03-09T15:20:26.012-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WIC'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Domain'/><title type='text'>Problems installing .NET Framework 3.0 Runtime</title><content type='html'>Recently I received a support call from a user trying to install our software but it was failing for .NET Framework 3.0 Runtime. In the logs for the installer it mentioned WIC (Windows Imaging Component) failing to install, but in reality all the problem turned out to be was that the computer was on a domain and still set up as a domain computer (but not actually hooked up to the domain). The local administrator account would not allow for updating any core Windows components without a Domain Admin being logged in.&lt;br /&gt;&lt;br /&gt;Solution?&lt;br /&gt;Change the computer back to workgroup instead of being a member of a domain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-3038072694246277764?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/3038072694246277764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/03/problems-installing-net-framework-30.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/3038072694246277764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/3038072694246277764'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/03/problems-installing-net-framework-30.html' title='Problems installing .NET Framework 3.0 Runtime'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-4128401763934460883</id><published>2009-02-20T14:55:00.000-08:00</published><updated>2009-02-20T15:30:03.158-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SelectedItem'/><category scheme='http://www.blogger.com/atom/ns#' term='ComboBox'/><category scheme='http://www.blogger.com/atom/ns#' term='SelectedIndex'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><category scheme='http://www.blogger.com/atom/ns#' term='Application_Exit'/><title type='text'>Silverlight 2 crashing with SelectedItem/SelectedIndex after repopulating ComboBox</title><content type='html'>I have a Silverlight form with a ComboBox that is populated with all 50 States. Whenever a state is chosen, a list of cities are retrieved and sent back to another ComboBox.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class="prettyprint"&gt;// Remove the old cities and populate with the new cities, selecting&lt;br /&gt;// the proper city if it exists for the user profile.&lt;br /&gt;Cities.Items.Clear();&lt;br /&gt;&lt;br /&gt;ComboBox item = new ComboBoxItem();&lt;br /&gt;item.Content = "Other";&lt;br /&gt;Cities.Items.Add(item);&lt;br /&gt;Cities.SelectedItem = item;&lt;br /&gt;&lt;br /&gt;foreach(string city in retrievedCities)&lt;br /&gt;{&lt;br /&gt; item = new ComboBoxItem();&lt;br /&gt; item.Content = city;&lt;br /&gt; Cities.Items.Add(item);&lt;br /&gt;&lt;br /&gt; if(city == db_profile_city)&lt;br /&gt;  Cities.SelectedItem = item;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This block of code above crashes when the SelectedItem of Cities is changed, not with an exception but Application_Exit is called. When the items are cleared from the ComboBox, the selected indicies don't seem to be updated, so when the SelectedItem is changed, the engine crashes with the 'white screen of death'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The fix to this is to call &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Cities.UpdateLayout()&lt;/span&gt;&lt;/span&gt; after calling &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Cities.Items.Clear()&lt;/span&gt;&lt;/span&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-4128401763934460883?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/4128401763934460883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/02/silverlight-2-crashing-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/4128401763934460883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/4128401763934460883'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/02/silverlight-2-crashing-with.html' title='Silverlight 2 crashing with SelectedItem/SelectedIndex after repopulating ComboBox'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-5139390574752727630</id><published>2009-02-20T12:30:00.000-08:00</published><updated>2009-02-20T15:31:56.734-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Action'/><category scheme='http://www.blogger.com/atom/ns#' term='Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Extending Installer Custom Actions with Visual Studio Installer</title><content type='html'>The Visual Studio Installer custom actions are fairly useless if you want to control when your custom action is executed (outside of the options provided by Visual Studio). So instead of using a Visual Studio Installer custom action, I used a post build step for the installer and used my own program to modify the MSI post build.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What I really want to do:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Execute a custom action before the Installer UI is displayed to the user&lt;/li&gt;&lt;li&gt;Execute a custom action after the user chooses to install the product, but before files are copied to the computer.&lt;/li&gt;&lt;li&gt;Execute a custom action after all files have been copied to the computer.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tools Needed:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa370557.aspx"&gt;Orca&lt;/a&gt; (Views and edits MSI databases visually)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/izfree/"&gt;MSI.Interop&lt;/a&gt; (If you want to write the Installer post build step in managed code)&lt;/li&gt;&lt;/ul&gt;Using the Orca program, open your MSI file (already built). The two tables we will be working with are InstallUISequence and InstallExecuteSequence. The InstallUISequence and InstallExecuteSequence tables are actions executed by the intaller in the order defined by the Column 'Sequence'. Your custom action will need to be placed somewhere in this sequence with a unique sequence number. For my custom actions I will use the following numbers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;InstallUISequence - Sequence 920 (Happens before a UI is displayed).&lt;/li&gt;&lt;li&gt;InstallExecuteSequence - Sequence 1050 (Happens after the user chooses to install the product but before files are copied to the system).&lt;/li&gt;&lt;li&gt;InstallExecuteSequence - Sequence 6700 (Happens after all files are installed but before the user exits the installer).&lt;/li&gt;&lt;/ul&gt;So, how do we translate this into code? I already have my custom action DLL built and three functions exported (PreProcess, Process, and PostProcess) in the file CustomAction.dll. The post build program for the installer must insert the DLL into the MSI, and insert the three sequences in the two Install tables.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example code for the post-build executable is below:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;// Open the MSI&lt;br /&gt;Pahvant.MSI.Database db = new Database("myInstaller.msi", Pahvant.MSI.Database.OpenMode.Transact);&lt;br /&gt;&lt;br /&gt;// Insert the custom action DLL into the MSI&lt;br /&gt;Pahvant.MSI.Record rec = new Pahvant.MSI.Record(1);&lt;br /&gt;rec.SetStream(1, @"c:\path_to\CustomAction.dll");&lt;br /&gt;Pahvant.MSI.View binView = new Pahvant.MSI.View("INSERT INTO `Binary` (`Name`, `Data`) VALUES ('CustomAction', ?)");&lt;br /&gt;binView.Execute(rec);&lt;br /&gt;&lt;br /&gt;// Insert the custom action functions (the ones exported from the DLL) into the MSI&lt;br /&gt;Pahvant.MSI.View caView = new Pahvant.MSI.View("INSERT INTO `CustomAction` (`Action`, `Type`, `Source`, `Target`) VALUES ('PreProcess', 1, 'CustomAction', 'PreProcess')");&lt;br /&gt;caView.Execute();&lt;br /&gt;caView = new Pahvant.MSI.View("INSERT INTO `CustomAction` (`Action`, `Type`, `Source`, `Target`) VALUES ('Process', 1, 'CustomAction', 'Process')");&lt;br /&gt;caView.Execute();&lt;br /&gt;caView = new Pahvant.MSI.View("INSERT INTO `CustomAction` (`Action`, `Type`, `Source`, `Target`) VALUES ('PostProcess', 1, 'CustomAction', 'PostProcess')");&lt;br /&gt;caView.Execute();&lt;br /&gt;&lt;br /&gt;// Insert the rows to call the custom action at the proper time in the installer sequence&lt;br /&gt;Pahvant.MSI.View seqView = new Pahvant.MSI.View("INSERT INTO `InstallUISequence` (`Action`, `Condition`, `Sequence`) VALUES ('PreProcess', '', 920)");&lt;br /&gt;seqView.Execute();&lt;br /&gt;seqView = new Pahvant.MSI.View("INSERT INTO `InstallExecuteSequence` (`Action`, `Condition`, `Sequence`) VALUES ('Process', '', 1050)");&lt;br /&gt;seqView.Execute();&lt;br /&gt;seqView = new Pahvant.MSI.View("INSERT INTO `InstallExecuteSequence` (`Action`, `Condition`, `Sequence`) VALUES ('PostProcess', '', 6700)");&lt;br /&gt;seqView.Execute();&lt;br /&gt;&lt;br /&gt;// Commits the changes to the MSI.&lt;br /&gt;db.Commit();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now you can set the program you created to run as a post build step for your Visual Studio Installer. I know I haven't explained how to write a custom action DLL, but there's many references online and I might provide an example in the future.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What would you want to do during each custom action?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In the PreProcess step you may want to store some information such as previous version information, or install pre-requisites outside of the Visual Studio pre-requisites.&lt;/li&gt;&lt;li&gt;In the Process step you may want to backup configuration files that may be overwritten during an upgrade&lt;/li&gt;&lt;li&gt;In the PostProcess step you may want to display application configuration dialogs to the user or copy extra files from your installer location.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-5139390574752727630?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/5139390574752727630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/02/extending-installer-custom-actions-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/5139390574752727630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/5139390574752727630'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/02/extending-installer-custom-actions-with.html' title='Extending Installer Custom Actions with Visual Studio Installer'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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-1625465183306533989.post-3384909455903533040</id><published>2009-02-20T12:08:00.000-08:00</published><updated>2009-02-20T12:14:30.807-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='x64'/><category scheme='http://www.blogger.com/atom/ns#' term='x86'/><category scheme='http://www.blogger.com/atom/ns#' term='Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='64-bit'/><category scheme='http://www.blogger.com/atom/ns#' term='32-bit'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Hybrid Visual Studio Installer for 32-bit (x86) and 64-bit (x64)</title><content type='html'>Recently, I came across a problem where one of our software vendors does not support a component in 32-bin (x86) but they could provide us executables (managed and unmanaged) in 64-bit (x64) that would replace the component on a 64-bit system.&lt;br /&gt;&lt;br /&gt;The only problem is that the Visual Studio installer complains if there are 64-bit executables in a 32-bit installer and won't build (I believe the unmanaged 64-bit binaries were just warnings, but the managed code built specifically for AMD64 caused the installer to error out).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The solution:&lt;/span&gt;&lt;br /&gt;Build the installer in Visual Studio with the TargetPlatform set to x64. Since this installer is set to x64, it will not run on a 32-bit machine. So, as a post build step, I have a program that opens the MSI database and changes the Template in the Summary Information section and changes the installer back to 32-bit. Voila, the 64-bit executables are copied to the machine during installation for whichever platform you are running on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1625465183306533989-3384909455903533040?l=kuhnboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuhnboy.blogspot.com/feeds/3384909455903533040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kuhnboy.blogspot.com/2009/02/hybrid-visual-studio-installer-for-32.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/3384909455903533040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1625465183306533989/posts/default/3384909455903533040'/><link rel='alternate' type='text/html' href='http://kuhnboy.blogspot.com/2009/02/hybrid-visual-studio-installer-for-32.html' title='Hybrid Visual Studio Installer for 32-bit (x86) and 64-bit (x64)'/><author><name>kuhnboy</name><uri>http://www.blogger.com/profile/17878814142991466634</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></feed>
