http://bugs.winehq.org/show_bug.cgi?id=14875
Summary: VS 2008 Express Editions (SP1) installer fails with directory resolution error (bug in msi appsearch action) Product: Wine Version: CVS/GIT Platform: PC URL: http://www.microsoft.com/express/download/ OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: msi AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net
Hello,
downloaded full DVD image of Visual Studio 2008 Express Edition with SP1.
Minimal set of prerequisites needed to reproduce this bug:
1. sh winetricks volnum (bug 5351) 2. MsiSetExternalUIRecord patch (bug 10547)
The installer stops with error "directory resolution failed".
--- snip --- 002c:Call msi.MsiGetPropertyW(00000001,00cee4c8 L"VS7.3643236F_FC70_11D3_A536_0090278A1BB8",39e262f8,0032ab10) ret=39e55231 002c:trace:msi:MSI_GetProperty 1 L"VS7.3643236F_FC70_11D3_A536_0090278A1BB8" 0x39e262f8 0x32ab10 .. 002c:trace:msi:MSI_DatabaseOpenViewW L"SELECT `Value` FROM `_Property` WHERE `_Property`='VS7.3643236F_FC70_11D3_A536_0090278A1BB8'" 0x32a9c4 .. 002c:Ret msi.MsiGetPropertyW() retval=000000ea ret=39e55231 .. 002c:Call KERNEL32.FormatMessageW(00000b00,3aa70000,0000108e,00000400,0032a7bc,00000000,00000000) ret=39ea74fb 002c:Ret KERNEL32.FormatMessageW() retval=00000024 ret=39ea74fb .. 002c:Call oleaut32.SysAllocString(00cdcd08 L"Microsoft Visual C++ 2008 Express Edition with SP1 - DEU") ret=39e4bc58 .. 002c:Call oleaut32.SysAllocString(00cee978 L"VS7.3643236F_FC70_11D3_A536_0090278A1BB8: Fehler bei Verzeichnisaufl\00f6sung.") ret=39e4bc58 .. 002c:Call oleaut32.SysFreeString(010ab66c L"ERROR processed; exception was thrown for retail build\n\tDeveloper Comment: \n\tBuild Time: Thu Dec 11 15:04:18 2003\n\tDWORD: 234") ret=39e40e56 .. 002c:Call oleaut32.SysFreeString(010ab5ec L"Microsoft Visual C++ 2008 Express Edition with SP1 - DEU") ret=39e40e5f .. 002c:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,0032a9d8) ret=39e80d28 002c:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b8433b0 --- snip ---
Property "VS7.3643236F_FC70_11D3_A536_0090278A1BB8" (= Visual Studio install directory) does not exist (anymore) at this install stage.
Besides from a bug in dlls/msi/install.c:msi_strcpy_to_awstring(), which results in wrong ERROR_MORE_DATA for empty unicode strings (see previous snippet, str=L"" + len=0), the following sequences lead to this bug...
The installation directory property is created/set first here:
--- snip --- .. 002c:trace:msi:MsiDoActionW L"CA_SetVcvars32batProp_x86_deu.3643236F_FC70_11D3_A536_0090278A1BB8" 002c:trace:msi:ACTION_PerformUIAction Performing action (L"CA_SetVcvars32batProp_x86_deu.3643236F_FC70_11D3_A536_0090278A1BB8") .. 002c:trace:msi:ACTION_CustomAction Handling custom action L"CA_SetVcvars32batProp_x86_deu.3643236F_FC70_11D3_A536_0090278A1BB8" (33 L"CA_SetVcvars32bat_x86_deu.3643236F_FC70_11D3_A536_0090278A1BB8" L"[#FL_vsvars_bat_10582_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8];[#FL_vcvars32_bat_5369_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8];@SET VSINSTALLDIR=[VS7.3643236F_FC70_11D3_A536_0090278A1BB8]|@SET VCINSTALLDIR=[VC7.3643236F_FC70_11D3_A536_0090278A1BB8]|@SET FrameworkDir=[Framework_x86.3643236F_FC"...) .. 002c:trace:msi:MSI_GetPropertyW returning L"C:\Program Files\Microsoft Visual Studio 9.0\" for property L"VS7.3643236F_FC70_11D3_A536_0090278A1BB8" .. --- snip ---
("@SET VSINSTALLDIR=[VS7.3643236F_FC70_11D3_A536_0090278A1BB8]")
But is removed/reset at later install stage, when this custom action is run:
--- snip --- 002c:trace:msi:ACTION_CustomAction Handling custom action L"CA_VIntegration_Exec_VS7_x86_deu.3643236F_FC70_11D3_A536_0090278A1BB8" (33 L"VS7.3643236F_FC70_11D3_A536_0090278A1BB8" L"[VS7.3643236F_FC70_11D3_A536_0090278A1BB8_RO.3643236F_FC70_11D3_A536_0090278A1BB8]") 002c:trace:msidb:MSI_CreateRecord 1 .. 002c:trace:msi:MSI_GetPropertyW property L"VS7.3643236F_FC70_11D3_A536_0090278A1BB8_RO.3643236F_FC70_11D3_A536_0090278A1BB8" not found .. 002c:trace:msi:MSI_SetPropertyW 0xbcbec8 L"VS7.3643236F_FC70_11D3_A536_0090278A1BB8" L"" .. 002c:trace:msi:MSI_GetPropertyW property L"VS7.3643236F_FC70_11D3_A536_0090278A1BB8" not found 002c:trace:msi:MSI_DatabaseOpenViewW L"DELETE FROM `_Property` WHERE `_Property` = 'VS7.3643236F_FC70_11D3_A536_0090278A1BB8'" 0x32b298 .. --- snip ---
The removal/reset was due to property L"VS7.3643236F_FC70_11D3_A536_0090278A1BB8_RO.3643236F_FC70_11D3_A536_0090278A1BB8" not existing.
Using ORCA tool on msi setup database, one can find this property referenced in "AppSearch" table:
--- snip --- Property ; Signature VS7.3643236F_FC70_11D3_A536_0090278A1BB8_RO.3643236F_FC70_11D3_A536_0090278A1BB8 VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 --- snip ---
Signature is "VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8"
"CompLocator" table:
--- snip --- Signature ; ComponentId ; Type VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 {2883180F-8F0F-4B82-B0BA-D48CE920DFAF} 0 --- snip ---
"Component" table:
--- snip --- Component ; ComponentId ; Directory ; Attribute ; Condition ; KeyPath VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 {2883180F-8F0F-4B82-B0BA-D48CE920DFAF} VS7.3643236F_FC70_11D3_A536_0090278A1BB8 0 --- snip ---
Armed with this information, one can find the following in trace log:
--- snip --- 002c:trace:msi:iterate_appsearch L"VS7.3643236F_FC70_11D3_A536_0090278A1BB8_RO.3643236F_FC70_11D3_A536_0090278A1BB8" L"VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" 002c:trace:msi:ACTION_AppSearchGetSignature package 0xbcbec8, sig 0x32b304 .. 002c:trace:msi:ACTION_AppSearchGetSignature failed to query signature for L"VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" 002c:trace:msi:ACTION_AppSearchComponents L"VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" .. .. 002c:trace:msi:MsiLocateComponentW L"{2883180F-8F0F-4B82-B0BA-D48CE920DFAF}" 0x32b040 0x32b248 002c:trace:msi:MsiGetProductCodeW L"{2883180F-8F0F-4B82-B0BA-D48CE920DFAF}" 0x32afae .. 002c:trace:msi:MSIREG_OpenUserDataComponentKey L"{2883180F-8F0F-4B82-B0BA-D48CE920DFAF}" .. 002c:trace:msi:MSIREG_OpenUserDataComponentKey squished (L"F0813882F0F828B40BAB4DC89E02FDFA") .. 002c:trace:msi:ACTION_AppSearchReg L"VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" .. 002c:trace:msi:ACTION_AppSearchReg failed to query RegLocator for L"VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" 002c:trace:msi:ACTION_AppSearchIni L"VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" .. 002c:trace:msi:ACTION_AppSearchIni failed to query IniLocator for L"VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" 002c:trace:msi:ACTION_AppSearchDr L"VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" .. 002c:trace:msi:ACTION_AppSearchDr failed to query DrLocator for L"VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" .. --- snip ---
This results in property "VS7.3643236F_FC70_11D3_A536_0090278A1BB8_RO.3643236F_FC70_11D3_A536_0090278A1BB8" and depending property "VS7.3643236F_FC70_11D3_A536_0090278A1BB8" reset.
MSDN info for AppSearch table here: http://msdn.microsoft.com/en-us/library/aa367579.aspx
and AppSearch action: http://msdn.microsoft.com/en-us/library/aa367578.aspx
Specifically:
--- quote --- The AppSearch action requires that the Signature table be present in the installation package. [..] A signature that is not in the Signature table denotes a directory and the action sets the property to the directory path for that signature. --- quote ---
This "VInt_VS7_X86_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" key is not present in "Signature" table, it's actually a directory.
If we look in the previously posted "Component" table we see the directory is actually "VS7.3643236F_FC70_11D3_A536_0090278A1BB8"
By looking into "Directory" table we find the following:
--- snip --- Directory ; Directory Parent ; DefaultDir VS7.3643236F_FC70_11D3_A536_0090278A1BB8 ProgramFilesFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8 VS90.NET|Microsoft Visual Studio 9.0 --- snip ---
So "VS7.3643236F_FC70_11D3_A536_0090278A1BB8_RO.3643236F_FC70_11D3_A536_0090278A1BB8" should resolve to "VS7.3643236F_FC70_11D3_A536_0090278A1BB8" -> L"C:\Program Files\Microsoft Visual Studio 9.0\" (install dir)
This looks like bug in wine msi appsearch action impl.
Regards
http://bugs.winehq.org/show_bug.cgi?id=14875
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, Installer
http://bugs.winehq.org/show_bug.cgi?id=14875
--- Comment #1 from James Hawkins truiken@gmail.com 2008-10-09 17:49:30 --- I can't reproduce this with latest git. MsiSetExternalUIRecord is in git, and I used winetricks volnum. I get a crash when running setup.exe for VCExpress.
http://bugs.winehq.org/show_bug.cgi?id=14875
James Hawkins truiken@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #2 from James Hawkins truiken@gmail.com 2008-10-23 01:07:27 --- It's not a problem with the AppSearch action. If the component is not found, the destination property is not changed at all. The problem is that the installer runs a query on the join of the CustomAction and InstallExecuteSequence tables and we return the wrong resulting set. To be precise, the implementation of joins can't handle a where clause unless the attributes in the where clause are selected into the resulting set.
http://bugs.winehq.org/show_bug.cgi?id=14875
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|VS 2008 Express Editions |VS 2008 Express Editions |(SP1) installer fails with |(SP1) installer fails with |directory resolution error |directory resolution error |(bug in msi appsearch | |action) | Version|CVS/GIT |1.1.2
http://bugs.winehq.org/show_bug.cgi?id=14875
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |peterbelm@gmail.com
--- Comment #3 from Austin English austinenglish@gmail.com 2009-04-17 19:42:36 --- *** Bug 15619 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=14875
Jeff Zaroyko jeffz@jeffz.name changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |alpha.super-one@laposte.net
--- Comment #4 from Jeff Zaroyko jeffz@jeffz.name 2009-05-20 04:06:38 --- *** Bug 18538 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=14875
--- Comment #5 from Dan Kegel dank@kegel.com 2009-08-08 10:23:43 --- *** Bug 19008 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=14875
Alan Jones skyphyr@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |skyphyr@gmail.com
--- Comment #6 from Alan Jones skyphyr@gmail.com 2009-09-29 01:05:14 --- I am also unable to install VCExpress 2008. I've attempted with 1.1.17 and 1.1.30.
What should I do to provide some useful logs regarding this failure? The default stderr/stdout doesn't appear to contain any great information. It fails while "Setup is loading installation components".
Cheers,
Alan.
http://bugs.winehq.org/show_bug.cgi?id=14875
Vincent Cappe vcappe@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |vcappe@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=14875
Jon Dufresne jon.dufresne@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jon.dufresne@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=14875
Hans Leidekker hans@meelstraat.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |hans@meelstraat.net
--- Comment #7 from Hans Leidekker hans@meelstraat.net 2010-01-29 03:37:17 --- This installer now fails while running a subinstaller for the dotnet framework, which is bug 16956.
http://bugs.winehq.org/show_bug.cgi?id=14875
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Component|msi |ole32 Resolution| |FIXED
--- Comment #8 from Anastasius Focht focht@gmx.net 2010-01-29 16:36:45 --- Hello,
--- quote --- This installer now fails while running a subinstaller for the dotnet framework, which is bug 16956. --- quote ---
yes, this bug was fixed a while a ago (between wine-1.1.32 and wine-1.1.33), thanks for the ping.
commit ee6856d874d687c4504914e61bcde3e6b8823bca (ole32: Don't use IEnumSTATSTG to search for elements of storages)
commit 0359a47d0ddfa768a3a2cb5791385cccc48ef459 (ole32: Fix the LEFTCHILD and RIGHTCHILD offset defines.)
Regards
http://bugs.winehq.org/show_bug.cgi?id=14875
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #9 from Alexandre Julliard julliard@winehq.org 2010-02-05 11:38:44 --- Closing bugs fixed in 1.1.38.
http://bugs.winehq.org/show_bug.cgi?id=14875
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |ee6856d874d687c4504914e61bc | |de3e6b8823bca
--- Comment #10 from Anastasius Focht focht@gmx.net 2011-10-12 03:25:55 CDT --- Hello,
filling/correcting fields ...
Regards
https://bugs.winehq.org/show_bug.cgi?id=14875
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.microsoft.com/ex |https://web.archive.org/web |press/download/ |/20110917192320/http://down | |load.microsoft.com/download | |/E/8/E/E8EEB394-7F42-4963-A | |2D8-29559B738298/VS2008Expr | |essWithSP1ENUX1504728.iso