https://bugs.winehq.org/show_bug.cgi?id=56648
Bug ID: 56648 Summary: Autodesk DWG TrueView fails at installation Product: Wine Version: 9.8 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: szatkus@gmail.com Distribution: ---
Installation fails with the fixme: "Could not find dependent assembly odis.bs.win (1.0.0)"
Turns out the installer creates a new folder (%TEMP%/7z0F0512E4) with another installer that apparently is invoked next. The program removes it automatically after crashing, but it could be retrieved by placing `while(1);` next to the fixme or by using a Windows machine.
There's the Setup.exe file that has the following manifest in its resources:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level='asInvoker' uiAccess='false' /> </requestedPrivileges> </security> </trustInfo> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='odis.bs.win' version='1.0.0.0' processorArchitecture='*' language='*' /> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='odis.bs.wx' version='1.0.0.0' processorArchitecture='*' language='*' /> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*' /> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*' /> </dependentAssembly> </dependency> </assembly>
From what I gathered this manifest is used to resolve some required dlls files, but it ultimately fails.
The odis.bs.win is resolved by the following algorithm (a comment from the wine code):
/* Lookup in <dir>\name.dll * <dir>\name.manifest * <dir>\name\name.dll * <dir>\name\name.manifest * * First 'appdir' is used as <dir>, if that failed * it tries application manifest file path. */
The file it's looking for is in ODIS/odis.bs.win/odis.bs.win.manifest, not in odis.bs.win/odis.bs.win.manifest (name="odis.bs.win"). Where from does Windows get the ODIS part? Well, there's also a file called "Setup.exe.config" with the following content:
<configuration> <windows> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="ODIS"/> </assemblyBinding> </windows> </configuration>
It looks that the program should resolve through <dir>/<privatePath>. I added a few prints here and there, and it seems that Setup.exe.config is not loaded by wine at any point.
Moving odis.bs.win and odis.bs.wx to the upper folder fixes the problem, although the installation still fails after a while.