http://bugs.winehq.org/show_bug.cgi?id=17631
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://litestep.net/ |https://github.com/Tobbe/lo | |si/downloads CC| |focht@gmx.net Summary|LiteStep 0.3 doesn't |LiteStep 0.3 refuses to |install |install due to failing VC++ | |runtime detection in WinSxS | |(needs sxs.dll | |IAssemblyCache::QueryAssemb | |lyInfo implementation)
--- Comment #9 from Anastasius Focht focht@gmx.net 2012-01-18 11:26:18 CST --- Hello,
confirming, still present.
I found the code for that VC++ runtime check in NSIS installer here:
http://nsis.sourceforge.net/WinSxS_QueryAssemblyInfo_to_check_if_assembly_is...
It seems to closely match what can be seen in trace logs...
--- snip --- Function WinSxS_HasAssembly ;legacyDllName,(Strong)AssemblyName /* push 'msvcr80.dll' push 'Microsoft.VC80.CRT,version="8.0.50727.42",type="win32",processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b"' call WinSxS_HasAssembly pop $0 ;0 on fail, 1 if it is in WinSxS or 2 if LoadLibrary worked on pre xp (call GetDLLVersion to make sure if you require a minimum version) */ Exch $8 Exch Exch $7 push $9 StrCpy $9 0 push $0 push $R0 push $R1 ${If} ${AtLeastWinXP} System::Call "sxs::CreateAssemblyCache(*i.R0,i0)i.r0" ${If} $0 = 0 System::Call '*(i 24,i0,l,i0,i0)i.R1' ;TODO,BUGBUG: check alloc success System::Call `$R0->4(i 0,w '$8',i $R1)i.r0` ;IAssemblyCache::QueryAssemblyInfo ${If} $0 = 0 System::Call '*$R1(i,i.r0)' IntOp $0 $0 & 1 ;ASSEMBLYINFO_FLAG_INSTALLED=1 ${IfThen} $0 <> 0 ${|} StrCpy $9 1 ${|} ${EndIf} System::Free $R1 System::Call $R0->2() ;IAssemblyCache::Release ${EndIf} ${Else} System::Call kernel32::LoadLibrary(t"$7")i.r0 ${If} $0 <> 0 StrCpy $9 2 System::Call 'kernel32::FreeLibrary(i r0)' ${EndIf} ${EndIf} pop $R1 pop $R0 pop $0 Exch 2 pop $8 pop $7 Exch $9 FunctionEnd --- snip ---
Example code to use this detection function:
--- snip --- !include LogicLib.nsh !include WinVer.nsh Section var /GLOBAL hasCRT !define CRTCHECKDLL msvcr80.dll !define CRTCHECKNAME 'Microsoft.VC80.CRT,version="8.0.50727.42",type="win32",processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b"' push '${CRTCHECKDLL}' push '${CRTCHECKNAME}' call WinSxS_HasAssembly pop $hasCRT DetailPrint ${CRTCHECKDLL}=$hasCRT SectionEnd --- snip ---
Old LiteStep installers can be downloaded here:
https://github.com/Tobbe/losi/downloads
https://github.com/downloads/Tobbe/losi/LOSI-0.3.exe
$ sha1sum LOSI-0.3.exe cee31fa9ebf1838b89e7452e6269b4d20f1c51b8 LOSI-0.3.exe
$ wine --version wine-1.3.37-108-g4cd49d3
Regards