title: Issue in MSI Launch Condition for detecting currently installed Excel version
body: <p>I have a MSI for installing an Excel AddIn.</p>
  
  <p>This MSI has worked correctly on a number of machines till now (both 64 bit and 32 bit machines running Windows 7, Windows Vista or Windows XP) but recently a launch condition falsely failed for one of the user.</p>
  
  <p>MSI was prepared using Visual Studio 2010 installer project on a 32 bit Windows XP machine.</p>
  
  <p>User is trying to install it on Windows 7 64 bit machine with Excel 2007 SP2 (32 bit) installed.</p>
  
  <p>The launch condition is to determine the currently installed Excel version.
  For this:</p>
  
  <ol>
  <li><p>I have a registry search action with following parameters</p>
  
  <pre><code>Property: EXCEL
  RegKeY: Software\Classes\Excel.Application\CurVer
  Root: vsdrrHKLM
  Value: 
  </code></pre></li>
  <li><p>And the launch condition is <code>EXCEL = "Excel.Application.12" OR EXCEL = "Excel.Application.14"</code></p></li>
  </ol>
  
  <p>On the user's machine I have already confirmed that:</p>
  
  <ol>
  <li>The registry value at 'HKLM\Software\Classes\Excel.Application\CurVer' is 'Excel.Application.12'</li>
  <li>The msi logs indicates that this value was correctly read</li>
  </ol>
  
  <p>The logs look like:</p>
  
  <pre><code>Action 15:42:58: ProgressForm. Dialog created
  Action ended 15:42:58: ProgressForm. Return value 1.
  MSI (c) (AC:28) [15:42:58:401]: Doing action: ExecuteAction
  Action 15:42:58: ExecuteAction. 
  Action start 15:42:58: ExecuteAction.
  MSI (c) (AC:28) [15:42:58:410]: PROPERTY CHANGE: Adding SECONDSEQUENCE property. Its value is '1'.
  MSI (c) (AC:28) [15:42:58:413]: Grabbed execution mutex.
  MSI (c) (AC:28) [15:42:58:416]: Incrementing counter to disable shutdown. Counter after increment: 0
  MSI (c) (AC:28) [15:42:58:419]: Switching to server: TARGETDIR="C:\Program Files (x86)\MySoftware\" _F6F7C451BA1841F0B59F5BF6C3620B2B="C:\Program Files (x86)\MySoftware\Data\" _B87F203625174B9894BB9AAD7BBA6EAB="C:\Program Files (x86)\MySoftware\Bin\" _6448E393C853494F8BBDC9D2FA0DA440="C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MyCompany\" _BA6D696DE1324CDF936304F630FC10AD="C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MyCompany\MySoftware\" _77B6D7C007D440959AF59826EEB28541="C:\Program Files (x86)\MySoftware\Data\LOGS\" _4AE2CF68991D4AADBC1984A3B6A685D2="C:\Program Files (x86)\MySoftware\Data\DB\" _0E7ED596C9F747DB961B97EBE7D8CA47="C:\Program Files (x86)\MySoftware\Doc\" EXCEL2007="C:\Program Files (x86)\Microsoft Office\Office12\" EXCEL="Excel.Application.12" VSDNETURLMSG="This setup requires the .NET Framework version 2.0.  Please install the .NET Framework and run this setup again.  The .NET Fram
  MSI (s) (74:78) [15:42:58:430]: Running installation inside multi-package transaction H:\MySoftware\MySoftware.msi
  MSI (s) (74:78) [15:42:58:433]: Grabbed execution mutex.
  MSI (s) (74:F8) [15:42:58:439]: Resetting cached policy values
  MSI (s) (74:F8) [15:42:58:442]: Machine policy value 'Debug' is 0
  MSI (s) (74:F8) [15:42:58:444]: ******* RunEngine:
             ******* Product: H:\MySoftware\MySoftware.msi
             ******* Action: INSTALL
             ******* CommandLine: **********
  //A lot of other stuff
  
  MSI (s) (74:F8) [15:43:10:824]: Doing action: AppSearch
  Action 15:43:10: AppSearch. Searching for installed applications
  Action start 15:43:10: AppSearch.
  MSI (s) (74:F8) [15:43:10:838]: Skipping AppSearch action: already done on client side
  Action ended 15:43:10: AppSearch. Return value 0.
  MSI (s) (74:F8) [15:43:10:844]: Doing action: FindRelatedProducts
  Action 15:43:10: FindRelatedProducts. Searching for related applications
  Action start 15:43:10: FindRelatedProducts.
  MSI (s) (74:F8) [15:43:10:855]: Skipping FindRelatedProducts action: already done on client side
  Action ended 15:43:10: FindRelatedProducts. Return value 0.
  MSI (s) (74:F8) [15:43:10:861]: Skipping action: ERRCA_CANCELNEWERVERSION (condition is false)
  MSI (s) (74:F8) [15:43:10:866]: Doing action: VSDCA_VsdLaunchConditions
  Action 15:43:10: VSDCA_VsdLaunchConditions. 
  Action start 15:43:10: VSDCA_VsdLaunchConditions.
  MSI (s) (74:F8) [15:43:10:890]: Creating MSIHANDLE (27) of type 790542 for thread 4344
  MSI (s) (74:E0) [15:43:10:893]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI9C72.tmp, Entrypoint: VsdLaunchConditions
  MSI (s) (74!34) [15:43:11:441]: Creating MSIHANDLE (28) of type 790531 for thread 6708
  INFO   : [10/25/2012 15:43:11:445] [VsdLaunchConditions                     ]: Custom Action is starting...
  INFO   : [10/25/2012 15:43:11:451] [VsdLaunchConditions                     ]: CoInitializeEx - COM initialization Apartment Threaded...
  INFO   : [10/25/2012 15:43:11:456] [VsdLaunchConditions                     ]: Enumerating table using SQL statement: 'SELECT * FROM `_VsdLaunchCondition`'
  INFO   : [10/25/2012 15:43:11:460] [VsdLaunchConditions                     ]: Calling MsiGetActiveDatabase...
  MSI (s) (74!34) [15:43:11:464]: Creating MSIHANDLE (29) of type 790541 for thread 6708
  INFO   : [10/25/2012 15:43:11:467] [VsdLaunchConditions                     ]: MsiDatabaseOpenViewW - Prepare Database to view table...
  MSI (s) (74!34) [15:43:11:471]: Creating MSIHANDLE (30) of type 790540 for thread 6708
  INFO   : [10/25/2012 15:43:11:474] [VsdLaunchConditions                     ]: TMsiViewExecute - Open Database view on table...
  MSI (s) (74!34) [15:43:11:478]: Creating MSIHANDLE (31) of type 790531 for thread 6708
  INFO   : [10/25/2012 15:43:11:482] [VsdLaunchConditions                     ]: Checking a launch condition...
  INFO   : [10/25/2012 15:43:11:485] [VsdLaunchConditions                     ]: Getting the condition to evaluate...
  INFO   : [10/25/2012 15:43:11:489] [VsdLaunchConditions                     ]: MsiRecordGetStringW - Fetching value...
  INFO   : [10/25/2012 15:43:11:492] [VsdLaunchConditions                     ]: MsiRecordGetStringW - Getting value from column '1'...
  INFO   : [10/25/2012 15:43:11:497] [VsdLaunchConditions                     ]: Evaluating condition 'VSDFXAvailable'...
  INFO   : [10/25/2012 15:43:11:500] [VsdLaunchConditions                     ]: RESULT:  Condition is true. Nothing more to do.
  MSI (s) (74!34) [15:43:11:504]: Closing MSIHANDLE (31) of type 790531 for thread 6708
  MSI (s) (74!34) [15:43:11:508]: Closing MSIHANDLE (30) of type 790540 for thread 6708
  INFO   : [10/25/2012 15:43:11:512] [VsdLaunchConditions                     ]: Custom Action succeeded.
  INFO   : [10/25/2012 15:43:11:518] [VsdLaunchConditions                     ]: Custom Action completed with return code: '0'
  MSI (s) (74!34) [15:43:11:522]: Closing MSIHANDLE (29) of type 790541 for thread 6708
  MSI (s) (74!34) [15:43:11:525]: Closing MSIHANDLE (28) of type 790531 for thread 6708
  MSI (s) (74:E0) [15:43:11:530]: Closing MSIHANDLE (27) of type 790542 for thread 4344
  Action ended 15:43:11: VSDCA_VsdLaunchConditions. Return value 1.
  MSI (s) (74:F8) [15:43:11:538]: Doing action: LaunchConditions
  Action 15:43:11: LaunchConditions. Evaluating launch conditions
  //Few more lines
  
  Action ended 15:43:13: LaunchConditions. Return value 3.
  Action ended 15:43:13: INSTALL. Return value 3.
  //some other traces
  
  MSI (c) (AC:04) [15:43:16:896]: Custom Action Manager thread ending.
  Property(C): UpgradeCode = {9FC0F443-EECC-4C3B-939E-D033349C22BA}
  Property(C): TARGETDIR = C:\Program Files (x86)\MySoftware
  Property(C): _F6F7C451BA1841F0B59F5BF6C3620B2B = C:\Program Files (x86)\MySoftware\Data\
  Property(C): _B87F203625174B9894BB9AAD7BBA6EAB = C:\Program Files (x86)\MySoftware\Bin\
  Property(C): ProgramMenuFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\
  Property(C): _6448E393C853494F8BBDC9D2FA0DA440 = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MySoftware\
  Property(C): _BA6D696DE1324CDF936304F630FC10AD = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MySoftware\
  Property(C): WindowsFolder = C:\Windows\
  Property(C): SystemFolder = C:\Windows\SysWOW64\
  Property(C): SourceDir = H:\MySoftware\
  Property(C): _77B6D7C007D440959AF59826EEB28541 = C:\Program Files (x86)\MySoftware\Data\LOGS\
  Property(C): _4AE2CF68991D4AADBC1984A3B6A685D2 = C:\Program Files (x86)\MySoftware\Data\DB\
  Property(C): _0E7ED596C9F747DB961B97EBE7D8CA47 = C:\Program Files (x86)\MySoftware\Doc\
  Property(C): VSDFXAvailable = TRUE
  Property(C): VSDFrameworkVersion = v2.0
  Property(C): VSDAllowLaterFrameworkVersions = False
  Property(C): EXCEL2007 = C:\Program Files (x86)\Microsoft Office\Office12\
  Property(C): EXCEL = Excel.Application.12
  Property(C): ProductName = MySoftware
  Property(C): ProductCode = {04835711-7FDB-4B00-9A39-6C6776D9900A}
  Property(C): ProductVersion = 1.31.2012
  Property(C): Manufacturer = MyCompany
  Property(C): ARPHELPLINK = http://www.MyCompany.com/
  Property(C): ARPCONTACT = MyCompany
  Property(C): ARPURLINFOABOUT = http://www.MyCompany.com/
  Property(C): ProductLanguage = 1033
  Property(C): SecureCustomProperties = PREVIOUSVERSIONSINSTALLED;NEWERPRODUCTFOUND
  Property(C): RedirectedDllSupport = 2
  Property(C): VersionNT = 601
  Property(C): VSDNETURLMSG = This setup requires the .NET Framework version 2.0.  Please install the .NET Framework and run this setup again.  The .NET Framework can be obtained from the web.  Would you like to do this now?
  Property(C): VSDIISMSG = This setup requires Internet Information Server 5.1 or higher and Windows XP or higher.  This setup cannot be installed on Windows 2000.  Please install Internet Information Server or a newer operating system and run this setup again.
  Property(C): VSDUIANDADVERTISED = This advertised application will not be installed because it might be unsafe. Contact your administrator to change the installation user interface option of the package to basic.
  Property(C): VSDNETMSG = This setup requires the .NET Framework version 2.0.  Please install the .NET Framework and run this setup again.
  Property(C): VSDINVALIDURLMSG = The specified path '[2]' is unavailable. The Internet Information Server might not be running or the path exists and is redirected to another machine. Please check the status of this virtual directory in the Internet Services Manager.
  Property(C): VSDVERSIONMSG = Unable to install because a newer version of this product is already installed.
  Property(C): FolderForm_AllUsers = ALL
  Property(C): FolderForm_AllUsersVisible = 1
  Property(C): DefaultUIFont = VsdDefaultUIFont.524F4245_5254_5341_4C45_534153783400
  Property(C): MaintenanceForm_Action = Repair
  Property(C): AdminMaintenanceForm_Action = Repair
  Property(C): ErrorDialog = ErrorDialog
  Property(C): SFF_UpFldrBtn = UpFldrBtn
  Property(C): SFF_NewFldrBtn = NewFldrBtn
  Property(C): WelcomeForm_NextArgs = FolderForm
  Property(C): FolderForm_PrevArgs = WelcomeForm
  Property(C): FolderForm_NextArgs = ConfirmInstallForm
  Property(C): ConfirmInstallForm_PrevArgs = FolderForm
  Property(C): AdminWelcomeForm_NextArgs = AdminFolderForm
  Property(C): AdminFolderForm_PrevArgs = AdminWelcomeForm
  Property(C): AdminFolderForm_NextArgs = AdminConfirmInstallForm
  Property(C): AdminConfirmInstallForm_PrevArgs = AdminFolderForm
  Property(C): WindowsFolder_x86_VC.F1DD796A_B984_3DCA_A68D_6B352BDC86F3 = C:\Windows\
  Property(C): SystemFolder_x86_VC.F1DD796A_B984_3DCA_A68D_6B352BDC86F3 = C:\Windows\SysWOW64\
  Property(C): ALLUSERS = 2
  Property(C): DirectoryTable100_x86.F1DD796A_B984_3DCA_A68D_6B352BDC86F3 = DirectoryTable
  Property(C): MsiLogFileLocation = H:\MySoftware\.\msilog.txt
  Property(C): PackageCode = {ABF9C77A-61D2-49AF-BD7F-F55CE2567525}
  Property(C): ProductState = -1
  Property(C): PackagecodeChanging = 1
  Property(C): RestrictedUserControl = 1
  Property(C): CURRENTDIRECTORY = H:\MySoftware
  Property(C): CLIENTUILEVEL = 0
  Property(C): CLIENTPROCESSID = 7340
  Property(C): VersionDatabase = 200
  Property(C): VersionMsi = 5.00
  Property(C): VersionNT64 = 601
  Property(C): WindowsBuild = 7601
  Property(C): ServicePackLevel = 1
  Property(C): ServicePackLevelMinor = 0
  Property(C): MsiNTProductType = 1
  Property(C): WindowsVolume = C:\
  Property(C): System64Folder = C:\Windows\system32\
  Property(C): RemoteAdminTS = 1
  Property(C): TempFolder = C:\Users\U060597\AppData\Local\Temp\
  Property(C): ProgramFilesFolder = C:\Program Files (x86)\
  Property(C): CommonFilesFolder = C:\Program Files (x86)\Common Files\
  Property(C): ProgramFiles64Folder = C:\Program Files\
  Property(C): CommonFiles64Folder = C:\Program Files\Common Files\
  Property(C): AppDataFolder = C:\Users\U060597\AppData\Roaming\
  Property(C): FavoritesFolder = C:\Users\U060597\Favorites\
  Property(C): NetHoodFolder = C:\Users\U060597\AppData\Roaming\Microsoft\Windows\Network Shortcuts\
  Property(C): PersonalFolder = C:\
  Property(C): PrintHoodFolder = C:\Users\U060597\AppData\Roaming\Microsoft\Windows\Printer Shortcuts\
  Property(C): RecentFolder = C:\Users\U060597\AppData\Roaming\Microsoft\Windows\Recent\
  Property(C): SendToFolder = C:\Users\U060597\AppData\Roaming\Microsoft\Windows\SendTo\
  Property(C): TemplateFolder = C:\ProgramData\Microsoft\Windows\Templates\
  Property(C): CommonAppDataFolder = C:\ProgramData\
  Property(C): LocalAppDataFolder = C:\Users\U060597\AppData\Local\
  Property(C): MyPicturesFolder = C:\My Pictures\
  Property(C): AdminToolsFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\
  Property(C): StartupFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
  Property(C): StartMenuFolder = C:\ProgramData\Microsoft\Windows\Start Menu\
  Property(C): DesktopFolder = C:\Users\Public\Desktop\
  Property(C): FontsFolder = C:\Windows\Fonts\
  Property(C): GPTSupport = 1
  Property(C): OLEAdvtSupport = 1
  Property(C): ShellAdvtSupport = 1
  Property(C): MsiAMD64 = 6
  Property(C): Msix64 = 6
  Property(C): Intel = 6
  Property(C): PhysicalMemory = 12279
  Property(C): VirtualMemory = 18474
  Property(C): LogonUser = u060597
  Property(C): UserSID = S-1-5-21-1715567821-1004336348-725345543-486654
  Property(C): UserLanguageID = 2057
  Property(C): ComputerName = WR8DW1T3
  Property(C): SystemLanguageID = 2057
  Property(C): ScreenX = 1920
  Property(C): ScreenY = 1080
  Property(C): CaptionHeight = 22
  Property(C): BorderTop = 1
  Property(C): BorderSide = 1
  Property(C): TextHeight = 16
  Property(C): TextInternalLeading = 3
  Property(C): ColorBits = 32
  Property(C): TTCSupport = 1
  Property(C): Time = 15:43:17
  Property(C): Date = 25/10/2012
  Property(C): MsiNetAssemblySupport = 4.0.30319.1
  Property(C): MsiWin32AssemblySupport = 6.1.7601.17514
  Property(C): AdminUser = 1
  Property(C): MsiRunningElevated = 1
  Property(C): Privileged = 1
  Property(C): USERNAME = user
  Property(C): COMPANYNAME = UserCompany
  Property(C): DATABASE = C:\Users\U060597\AppData\Local\Temp\5c64805.msi
  Property(C): OriginalDatabase = H:\MySoftware\MySoftware.msi
  Property(C): SOURCEDIR = H:\MySoftware\
  Property(C): VersionHandler = 5.00
  Property(C): UILevel = 5
  Property(C): ACTION = INSTALL
  Property(C): EXECUTEACTION = INSTALL
  Property(C): VSDFxConfigFile = C:\Users\U060597\AppData\Local\Temp\CFG4C2A.tmp
  Property(C): ROOTDRIVE = C:\
  Property(C): CostingComplete = 1
  Property(C): OutOfDiskSpace = 0
  Property(C): OutOfNoRbDiskSpace = 0
  Property(C): PrimaryVolumeSpaceAvailable = 0
  Property(C): PrimaryVolumeSpaceRequired = 0
  Property(C): PrimaryVolumeSpaceRemaining = 0
  Property(C): INSTALLLEVEL = 1
  === Logging stopped: 25/10/2012  15:43:17 ===
  </code></pre>
  
  <p>As can be seen from above logs, property 'EXCEL' is correctly set and still launch condition fails. Also MSI is running with elevated permissions.</p>
  
  <p>Does anyone has any idea of what might be going wrong here?
  I am fairly new to the world of deployment and will really appreciate any help in this regard</p>