Prediction

I have a lot of debates with people about the iPhone, and so for posterity’s sake, I thought it prudent to write down my prediction of the iPhone’s future.

What most people don’t care about is that Apple has always been a very closed, very proprietary company.  That is why they lost the first war against IBM.  This time around, however, they hired some marketing geniuses (to whom I give unconditional kudos), which blinded everyone to Apple’s core philosophies.

Microsoft’s Windows Mobile was never much of a platform because, as I’m sure they now realize, they only put a half-assed effort into developing it.  This is what Microsoft always does until they have a reason to do otherwise.

But then comes Android, which I see as a very large threat to Apple’s closed platform.  Sure, it’s been here for a little while, but we’re just now seeing some real phones being built that use it.  At first it will only appeal to geeks and developers because it is so open.  However, it is only a matter of time before the applications surpass those that currently exist on the iPhone.

I say the Android applications will surpass those available on the iPhone because the Android is so much more open to developers.  There are already 10,000+ apps available to it, and this number is bound to grow exponentially as the platform is embraced.  Linux-minded developers aren’t the only target, either, due to the existence of Microsoft’s Silverlight platform that the Mono project has developed.

Because of this, unless Apple makes their platform more open (e.g. removing restrictions from their 3rd party software distribution network), I foresee the software development community embracing the open Android platform, and the Android taking, at very least, a large chunk of Apple’s market share.

Unfortunately for Apple, if history is any indication, Apple has no intention of ever making things more open.

Advertisements

It worked!

Just an FYI, my quest to become #1 search result for the word tombstonable worked!  That was easy.

Just for fun!! Tombstoneable & Tombstonable

Tombstoneable & Tombstonable (which is the real spelling… hmmm) has almost no Google results!

Sooo…. here I come top position!  hahah…

Eclipse Network Connection Error during Update

In my previous post, I mentioned a reboot seemed to fix my network connection error when I tried to update.  However, the problem was actually that the path length to Eclipse was too long.  The folder I copied Eclipse to was this, which resulted in broken updates:

C:\Program Files (x86)\Eclipse-3.3-wpf

However, Eclipse Updates started working when I changed to folder name it to this:

C:\Program Files (x86)\E-3.3-wpf

Weird, huh!?

Eclipse 3.3 (Europa) Vista x64 Render and Connection Errors/Bugs

I am trying to use Eclipse 3.3 (Europa) from Vista x64.  Everything seems to work fine except for the Preferences dialog.  The General/Key tab is missing most of the GUI the first time I view it and is blank every other time.  This means that I couldn’t change any of my keybindings (key bindings).

I tried a million different things to get this to work.  Finally I tried a using a beta 3.3-wpf release of eclipse, which does render the preferences correctly!  Come to find out so does 3.4-wpf.  However, 3.4 without wpf does not render correctly.  So, something with the win32 graphics library is broken.  Eclipse 3.2 didn’t have any problems, so it’s something that was introduced with version 3.3.

However, when I tried to do an update from the newer versions, I got weird connection errors:

Network connection problems encountered during search.

Unable to access “http://sitename

Error parsing site stream. [Premature end of file.]

Premature end of file.

But from my original 3.3 version, updates worked find.  In this case, a reboot seemed to have fixed something, but I don’t know why.

Microsoft Sharepoint Error: Cannot connect to the configuration database.

This was actually a very simple error to fix once I knew the cause, but the problem is that the Microsoft knowledgebase didn’t give the correct answer and there are no log files to be found to help find the correct cause, things were severly complicated by the fact that every search result I could find on the error insisted that it was a security problem. Finally, I had to just guess, and I was right. 🙂

The problem turned out to be that I installed another app that switched IIS to use 32-bit mode. All I had to do was switch it back to 64-bit (x64) mode and SharePoint worked again.

First, fix IIS:

\inetpub\AdminScripts\cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 False

Second, reregister the .Net isapi filters:

\windows\microsoft.net\Framework64\v2.0.50727\aspnet_reg
iis.exe -i

That’s it! How about some better logging, Microsoft?

Installing Mobile Client Software Factory on Vista x64

Well, let me start by saying I can’t believe how difficult this was to get working. To start with, the SCSF May 2007 Dependency Checker shows almost every item as not installed, even though they are. Secondly, Mobile Client Software Factory says that it requires Guidance Automation Toolkit 2006 or later, even though the newest version is installed.

The basic problem is that the installer is looking for registry keys where the 64 bit keys are normally stored. However, the keys are actually stored underneath Wow6432Node.

So, my solution was to reflected the embedded App.Config, and find the registry keys it was looking for, find the corresponding 32 bit keys, convert them to 64 bit keys, and then imported them. The registry import file looks like this:

 
 

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Guidance Automation Extensions]
“CurrentVersion”=”1.2”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Guidance Automation Extensions\Compatibililty]
“1.1”=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{77d93a80-73fc-40f8-87db-acd3482964b2}]
“ID”=dword:00000001
“MinEdition”=”Standard”
“ProductVersion”=”1.0”
“ProductName”=”recipe framework”
“CompanyName”=”Microsoft”
@=”Microsoft.Practices.RecipeFramework.VisualStudio.RecipeManagerPackage, Microsoft.Practices.RecipeFramework.VisualStudio, Version=1.0.60429.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
“InprocServer32″=”C:\\Windows\\syswow64\\mscoree.dll”
“Class”=”Microsoft.Practices.RecipeFramework.VisualStudio.RecipeManagerPackage”
“CodeBase”=”file:///C:/Program Files (x86)/Microsoft Visual Studio 8/Common7/IDE/PublicAssemblies/Microsoft.Practices.RecipeFramework.VisualStudio.DLL”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{77d93a80-73fc-40f8-87db-acd3482964b2}\SatelliteDll]
“Path”=”C:\\Program Files (x86)\\Microsoft Visual Studio 8\\Common7\\IDE\\PublicAssemblies”
“DllName”=”Microsoft.Practices.RecipeFramework.VisualStudioUI.dll”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{77d93a80-73fc-40f8-87db-acd3482964b2}\Templates]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{77d93a80-73fc-40f8-87db-acd3482964b2}\Templates\{22ce1b10-8c41-41fd-aa62-3e9d19ef1a7f}]
“LastTemplate”=dword:0000000e
“PackageName”=”guid22ce1b10_8c41_41fd_aa62_3e9d19ef1a7f”
“1”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Items\\ServiceAgent\\ServiceAgent.vstemplate”
“2”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Projects\\Module\\Module.Basic.vstemplate”
“3”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Projects\\Module\\Module.Layout.vstemplate”
“4”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Projects\\Module\\ModuleHandle.vstemplate”
“5”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Projects\\Module.Business\\BusinessModuleHandle.vstemplate”
“6”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Projects\\Module.Business\\Module.vstemplate”
“7”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Projects\\Module.Interface\\Module.Interface.vstemplate”
“8”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Solutions\\SmartClient.vstemplate”
“9”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Solutions\\Projects\\Infrastructure\\Infrastructure.vstemplate”
“10”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Solutions\\Projects\\Library\\Library.vstemplate”
“11”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Solutions\\Projects\\Module\\Module.vstemplate”
“12”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Solutions\\Projects\\Shell.Basic\\Shell.vstemplate”
“13”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Solutions\\Projects\\Shell.Extended\\Shell.vstemplate”
“14”=”C:\\Program Files (x86)\\Microsoft SCSF\\GuidancePkg\\Bin\\Templates\\Solutions\\Projects\\Shell.LayoutModule\\Shell.Layout.vstemplate”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{77d93a80-73fc-40f8-87db-acd3482964b2}\Templates\{23fc29c9-fafe-47f1-b633-b548e788dddf}]
“LastTemplate”=dword:00000004
“PackageName”=”MetaGuidancePackage”
“1”=”C:\\Program Files (x86)\\Microsoft Guidance Automation Toolkit\\Templates\\Items\\Action\\Action.vstemplate”
“2”=”C:\\Program Files (x86)\\Microsoft Guidance Automation Toolkit\\Templates\\Solutions\\GuidancePackageSolution.vstemplate”
“3”=”C:\\Program Files (x86)\\Microsoft Guidance Automation Toolkit\\Templates\\Solutions\\Projects\\GuidancePackage\\GuidancePackage.vstemplate”
“4”=”C:\\Program Files (x86)\\Microsoft Guidance Automation Toolkit\\Templates\\Solutions\\Projects\\GuidancePackageInstaller\\GuidancePackageInstaller.vstemplate”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{77d93a80-73fc-40f8-87db-acd3482964b2}\Templates\{6d454017-bb09-47ca-b66d-feb9edc25075}]
“LastTemplate”=dword:0000000c
“PackageName”=”WCFGuidancePackage”
“1”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Projects\\WCFClient\\Client.vstemplate”
“2”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Projects\\WCFFaultContract\\FaultContract.vstemplate”
“3”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Solutions\\WCF Guidance Package.vstemplate”
“4”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Solutions\\Projects\\WCFBusinessEntity\\BusinessEntity.vstemplate”
“5”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Solutions\\Projects\\WCFBusinessLogic\\BusinessLogic.vstemplate”
“6”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Solutions\\Projects\\WCFClient\\Client.vstemplate”
“7”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Solutions\\Projects\\WCFDataAccess\\DataAccess.vstemplate”
“8”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Solutions\\Projects\\WCFDataContract\\DataContract.vstemplate”
“9”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Solutions\\Projects\\WCFFaultContract\\FaultContract.vstemplate”
“10”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Solutions\\Projects\\WCFHost\\Host.vstemplate”
“11”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Solutions\\Projects\\WCFServiceContract\\ServiceContract.vstemplate”
“12”=”C:\\Program Files (x86)\\Microsoft Service Factory\\WCF Guidance Package\\Templates\\Solutions\\Projects\\WCFServiceImplementation\\ServiceImplementation.vstemplate”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{77d93a80-73fc-40f8-87db-acd3482964b2}\Templates\{7c2709d0-bc18-455e-a822-082836e0672a}]
“LastTemplate”=dword:00000000
“PackageName”=”WCFSecurityGuidancePackage”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{77d93a80-73fc-40f8-87db-acd3482964b2}\Templates\{adf804af-9229-4bc6-807e-700ccc7b69d6}]
“LastTemplate”=dword:0000000a
“PackageName”=”ASMXGuidancePackage”
“1”=”C:\\Program Files (x86)\\Microsoft Service Factory\\ASMX Guidance Package\\Templates\\Projects\\ASMXClient\\Client.vstemplate”
“2”=”C:\\Program Files (x86)\\Microsoft Service Factory\\ASMX Guidance Package\\Templates\\Solutions\\ASMXTooling.vstemplate”
“3”=”C:\\Program Files (x86)\\Microsoft Service Factory\\ASMX Guidance Package\\Templates\\Solutions\\Projects\\ASMXBusinessEntity\\BusinessEntity.vstemplate”
“4”=”C:\\Program Files (x86)\\Microsoft Service Factory\\ASMX Guidance Package\\Templates\\Solutions\\Projects\\ASMXBusinessLogic\\BusinessLogic.vstemplate”
“5”=”C:\\Program Files (x86)\\Microsoft Service Factory\\ASMX Guidance Package\\Templates\\Solutions\\Projects\\ASMXClient\\Client.vstemplate”
“6”=”C:\\Program Files (x86)\\Microsoft Service Factory\\ASMX Guidance Package\\Templates\\Solutions\\Projects\\ASMXDataAccess\\DataAccess.vstemplate”
“7”=”C:\\Program Files (x86)\\Microsoft Service Factory\\ASMX Guidance Package\\Templates\\Solutions\\Projects\\ASMXDataType\\DataType.vstemplate”
“8”=”C:\\Program Files (x86)\\Microsoft Service Factory\\ASMX Guidance Package\\Templates\\Solutions\\Projects\\ASMXHost\\Host.vstemplate”
“9”=”C:\\Program Files (x86)\\Microsoft Service Factory\\ASMX Guidance Package\\Templates\\Solutions\\Projects\\ASMXServiceContract\\ServiceContract.vstemplate”
“10”=”C:\\Program Files (x86)\\Microsoft Service Factory\\ASMX Guidance Package\\Templates\\Solutions\\Projects\\ASMXServiceImplementation\\ServiceImplementation.vstemplate”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{77d93a80-73fc-40f8-87db-acd3482964b2}\Templates\{b665c858-8ab2-407d-9c7c-102237d0b7cc}]
“LastTemplate”=dword:0000001e
“PackageName”=”SmartClientFactoryPackage”
“1”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.Business.CS\\BusinessModuleHandle.vstemplate”
“2”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.Business.CS\\Module.vstemplate”
“3”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.Business.Tests.CS\\Module.Tests.vstemplate”
“4”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.Business.Tests.VB\\Module.Tests.vstemplate”
“5”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.Business.VB\\BusinessModuleHandle.vstemplate”
“6”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.Business.VB\\Module.vstemplate”
“7”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.CS\\Module.Basic.vstemplate”
“8”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.CS\\Module.Layout.vstemplate”
“9”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.CS\\ModuleHandle.vstemplate”
“10”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.Interface.CS\\Module.Interface.vstemplate”
“11”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.Interface.VB\\Module.Interface.vstemplate”
“12”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.Tests.CS\\Module.Tests.vstemplate”
“13”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.Tests.VB\\Module.Tests.vstemplate”
“14”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.VB\\Module.Basic.vstemplate”
“15”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.VB\\Module.Layout.vstemplate”
“16”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Projects\\Module.VB\\ModuleHandle.vstemplate”
“17”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\SCSFSolutionCS.vstemplate”
“18”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\SCSFSolutionVB.vstemplate”
“19”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Infrastructure.CS\\Infrastructure.vstemplate”
“20”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Infrastructure.VB\\Infrastructure.vstemplate”
“21”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Library.CS\\Library.vstemplate”
“22”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Library.VB\\Library.vstemplate”
“23”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Module.CS\\Module.vstemplate”
“24”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Module.VB\\Module.vstemplate”
“25”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Shell.Basic.CS\\Shell.vstemplate”
“26”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Shell.Basic.VB\\Shell.vstemplate”
“27”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Shell.Extended.CS\\Shell.vstemplate”
“28”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Shell.Extended.VB\\Shell.vstemplate”
“29”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Shell.LayoutModule.CS\\Shell.Layout.vstemplate”
“30”=”C:\\Program Files (x86)\\Microsoft Smart Client Factory\\Guidance Package\\Templates\\Solutions\\Projects\\Shell.LayoutModule.VB\\Shell.Layout.vstemplate”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{77d93a80-73fc-40f8-87db-acd3482964b2}\Templates\{d292b01a-6efa-40ad-a56a-57fb7439e2ab}]
“LastTemplate”=dword:00000008
“PackageName”=”WebClientFactoryPackage”
“1”=”C:\\Program Files (x86)\\Microsoft Web Client Factory\\WCSF Guidance Package\\Templates\\Projects\\Module\\BusinessModule.vstemplate”
“2”=”C:\\Program Files (x86)\\Microsoft Web Client Factory\\WCSF Guidance Package\\Templates\\Projects\\Module\\FoundationalModule.vstemplate”
“3”=”C:\\Program Files (x86)\\Microsoft Web Client Factory\\WCSF Guidance Package\\Templates\\Projects\\Module.Tests\\BusinessModule.Tests.vstemplate”
“4”=”C:\\Program Files (x86)\\Microsoft Web Client Factory\\WCSF Guidance Package\\Templates\\Projects\\Module.Tests\\FoundationalModule.Tests.vstemplate”
“5”=”C:\\Program Files (x86)\\Microsoft Web Client Factory\\WCSF Guidance Package\\Templates\\Projects\\PageFlow\\PageFlow.vstemplate”
“6”=”C:\\Program Files (x86)\\Microsoft Web Client Factory\\WCSF Guidance Package\\Templates\\Solutions\\WCSF Guidance Package.vstemplate”
“7”=”C:\\Program Files (x86)\\Microsoft Web Client Factory\\WCSF Guidance Package\\Templates\\Solutions\\Projects\\Shell\\Shell.vstemplate”
“8”=”C:\\Program Files (x86)\\Microsoft Web Client Factory\\WCSF Guidance Package\\Templates\\Solutions\\Projects\\WebProject\\WebUI.vstemplate”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{77d93a80-73fc-40f8-87db-acd3482964b2}\Templates\{f8b16ed4-8656-4b73-922a-2fe00c6dff0f}]
“LastTemplate”=dword:00000000
“PackageName”=”DataAccessGuidancePackage”

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{CACEFF92-665D-4A7E-9C8F-5E80B0610601}]
“AuthorizedCDFPrefix”=””
“Comments”=””
“Contact”=”Microsoft”
“DisplayVersion”=”1.0.51104”
“HelpLink”=””
“HelpTelephone”=””
“InstallDate”=”20070611”
“InstallLocation”=””
“ModifyPath”=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,78,\
00,65,00,20,00,2f,00,49,00,7b,00,43,00,41,00,43,00,45,00,46,00,46,00,39,00,\
32,00,2d,00,36,00,36,00,35,00,44,00,2d,00,34,00,41,00,37,00,45,00,2d,00,39,\
00,43,00,38,00,46,00,2d,00,35,00,45,00,38,00,30,00,42,00,30,00,36,00,31,00,\
30,00,36,00,30,00,31,00,7d,00,00,00
“Publisher”=”Microsoft”
“Readme”=””
“Size”=””
“EstimatedSize”=dword:00001f54
“UninstallString”=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,\
78,00,65,00,20,00,2f,00,49,00,7b,00,43,00,41,00,43,00,45,00,46,00,46,00,39,\
00,32,00,2d,00,36,00,36,00,35,00,44,00,2d,00,34,00,41,00,37,00,45,00,2d,00,\
39,00,43,00,38,00,46,00,2d,00,35,00,45,00,38,00,30,00,42,00,30,00,36,00,31,\
00,30,00,36,00,30,00,31,00,7d,00,00,00
“URLInfoAbout”=””
“URLUpdateInfo”=””
“VersionMajor”=dword:00000001
“VersionMinor”=dword:00000000
“WindowsInstaller”=dword:00000001
“Version”=dword:0100c7a0
“Language”=dword:00000409
“DisplayName”=”Guidance Automation Toolkit”
“InstallSource”=”D:\\Users\\Mouch\\Downloads\\Programming\\Code\\Patterns & Practices\\”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{b3bae735-386c-4030-8329-ef48eeda4036}]
@=”Microsoft.VisualStudio.WPFFlavor.WPFFlavor, Microsoft.VisualStudio.WPFFlavor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
“InprocServer32″=”C:\\Windows\\SysWOW64\\mscoree.dll”
“Class”=”Microsoft.VisualStudio.WPFFlavor.WPFFlavor”
“CodeBase”=”C:\\Program Files (x86)\\Microsoft Visual Studio 8\\Common7\\IDE\\PrivateAssemblies\\Microsoft.VisualStudio.WPFFlavor.dll”
“ID”=dword:00000096
“MinEdition”=”standard”
“ProductVersion”=”2.0.0.0”
“ProductName”=”wpfflavor”
“CompanyName”=”Microsoft”

IMPORTANT!!!!! There are all sorts of local file references in that registry export. You definitely need to go through it and customize it to your setup.

This worked about 90% of the way. The Dependency Checker program now shows that everything is installed correctly.

However, the Mobile Client Software Factory still won’t install. So, I opened up the MSI using the Orcas viewer/editor that comes with the Windows SDK. I looked up the RegLocator table to find where it was looking for the Guidance Automation Toolkit. However, the registry key that it was looking for was actually there this time!

Rather than spend tons more time playing with registry keys, I just edited the GATRegistry row using Orcas so that it was identical to the GTXRegistry row. This basically removes the Guidance Automation Tookit dependency check.

So now I am able to install!  I did get some compile errors during the install, so I just loaded the installed solution files after the install was complete and recompiled them.

Resize OS partition in Windows Vista

Here’s an easy walkthrough to change your OS partition size in Vista:

http://extended64.com/blogs/blake/archive/2006/07/21/2934.aspx

Microsoft Really Sucks at Describing What Their Software Does

I was just browsing through my MSDN library, and came across several pieces of software that I have never used before.  However, even after reading the descriptions of the products, I still have no idea what they do.  It is sad when a marketing team can’t even explain what their own product does.  Here is an example.

Live Communications Server 2005 provides a standards-based platform, allowing developers the ability to presence-enable existing applications and create next-generation solutions with real-time capabilities.

Oh good.  It was horrible how I couldn’t build next-generation solutions before; thanks for allowing it now!  And I love getting capabilities in real-time!  Saves me the trouble of having to download them.

Change User Profile Folder Location in Vista

Here lies my experience moving my entire User Profile folder structure, including Default, Public, and any local users.

In my search for a solution, the only two easy ways I found to move the user profile directory locations from the system drive is to

  1. Set the User Profile folder during setup using an unattended install file.
  2. Move the individual folders inside your user profile, which can be done using explorer (which will update the registry keys HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders and HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders).

However, this was not good enough for me, I wanted my actual user profile folder to be moved to a seperate partition/volume, including registry settings.  I discovered that it is not actually that hard, provided you’re comfortable with mass replacing registry keys and values.

Here is how I moved my user profile location.  Please note that I wanted all of the profiles moved, included Public and Default, so some of these steps can be skipped if you do not want that:

  1. Make sure you have a complete backup of your system!
  2. Copy the original Default Profile directory to the new location (e.g. from C:\Users\Default to D:\Users\Default).
  3. Copy the original Public Profile directory to the new location (e.g. from C:\Users\Public to D:\Users\Public).
  4. Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList.
  5. Change the value of the Default key to the new user profile location (e.g. D:\Users\Default).
  6. Change the value of the Public key to the new user profile location (e.g. D:\Users\Public).
  7. Change the value of the ProfilesDirectory to the new user profile location (e.g. D:\Users).
  8. At this point, you need to restart and log back in as a different user that has never logged in before and therefore does not have a profile created.  In my case, the Administrator user had never logged in before so I enabled it so that Administrator could log in and used that.  You can enable Administrator login by loading Computer Management and then go to User Accounts, edit the properties for Administrator, and then uncheck Disable Login.
  9. After logging in for the first time with the new user account, you will see “Creating Desktop” and other things like that while Windows is creating your profile.  Note that the new profile should be created in the new location.
  10. After logging in, try to close as many applications as possible.  This will prevent most files from being locked so that you cannot copy them.
  11. Copy the entire original user profiles folder from the original location to the new location (e.g. C:\Users\* to D:\Users\).  (See next step after copy starts).
  12. There are a few things to note during this copy.  There were thousands of .TMP files that were locked and would not copy.  I just skipped these files.  I held down Alt-S so that I could see all of the skipped files and make sure that there were only .TMP files being skipped.  Yes, this took a little while, but at least I was confident that I got all of my files copied.  This process could probably be made easier using the command prompt or powershell.
  13. If, in your case, there are some files that will not copy, you can run procexp.exe, which is file provided by sysinternals.  Then do a Find Handle and search for part of the filename.  procexp will tell you which programs are locking the file.  As long as you closed as many programs as you could, though, this should not happen.
  14. Find and download a program that will do a Search & Replace on the registry.  I will not suggest one because I did not find one single program that worked perfectly.  I ended up downloading a few different freeware applications and using all of them.
  15. Using the Registry Search & Replace program, do a search for the original user profile folder and replace it with the new user profile folder (e.g. search for “C:\Users” and replace with “D:\Users”.  Note that some of the applications I used would only change values and not key names.  However, the keys that needed to be chagned were all related to MuiCache.  I do not know if these actually need to be updated.  I did just to make sure.
  16. Log out.  Log back in with the same user.  Repeat step 14 until there is nothing left to replace.  The reason for this step is that on logout, some programs seem to update the registry using the old user profile path.
  17. Run regedit.exe and do a search for the original user profile path and make sure it does not exist.  The reason for this step is because (as noted in step 13), I did not trust any of the Registry Search & Replace programs I used.  I ended up needing to update about a dozen of the keys and values manually, since the search & replace missed them.
  18. So that you can easily find programs that do not use the registry and hard-coded profile paths, rename your original profile folder (e.g. rename C:\Users to C:\~Users).
  19. Log out. Log back in as your usual user.  Everything should be working correctly except for programs that use a “hardcoded” user profile location.
  20. There are two easy methods that can be used to find programs that use a “hardcoded” profile location and are still looking for the original user profile path.  You can use the procexp.exe trick mentioned above and search for handles in the original profile location.  You can also monitor the oringal profile location to see if any new folders or files were created.  For example, in my case, FolderShare created some folders and files in the directory C:\Users\MyUsername\AppData\Local\FolderShare\.  So, I updated the FolderShare settings to point to the different path and then deleted the C:\Users directory (note that C:\~Users still existed as a backup).
  21. Since you are now confident that all of your data has been moved (right??????), you can deleted the backup of the original user profile location (e.g. C:\~Users).

 

This procedure worked flawlessly for me.  Everything user-related is now on a completely different volume, and I can sleep a little better at night!  🙂