http://bugs.winehq.org/show_bug.cgi?id=34711
Bug #: 34711 Summary: Terraria Server 1.2.0.x fails on startup (needs CLSID_UPnPNAT {ae1e00aa-3fd5-403c-8a27-2bbdc30cd0e1}) Product: Wine Version: 1.7.4 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net Classification: Unclassified
Hello folks,
split off from bug 30097 as this is a different issue.
Prerequisite: 'winetricks -q dotnet40 xna40' in clean 32-bit WINEPREFIX
--- snip --- $ wine TerrariaServer.exe -config serverconfig.txt ... fixme:shell:URL_ParseUrl failed to parse L"System" fixme:shell:URL_ParseUrl failed to parse L"Microsoft.Xna.Framework.Game" fixme:shell:URL_ParseUrl failed to parse L"Microsoft.Xna.Framework" fixme:shell:URL_ParseUrl failed to parse L"System.Configuration" fixme:shell:URL_ParseUrl failed to parse L"System.Xml" err:ole:CoGetClassObject class {ae1e00aa-3fd5-403c-8a27-2bbdc30cd0e1} not registered err:ole:create_server class {ae1e00aa-3fd5-403c-8a27-2bbdc30cd0e1} not registered fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported err:ole:CoGetClassObject no class object {ae1e00aa-3fd5-403c-8a27-2bbdc30cd0e1} could be created for context 0x15 fixme:advapi:RegisterTraceGuidsW (0xc3c4da, (nil), {8e9f5090-2d75-4d03-8a81-e5afbf85daf1}, 1, 0x33b6cc, (null), (null), 0xfa2868,): stub fixme:shell:URL_ParseUrl failed to parse L"Microsoft.Xna.Framework.Graphics" fixme:shell:URL_ParseUrl failed to parse L"Microsoft.Xna.Framework.Xact" fixme:process:FlushProcessWriteBuffers : stub
Unhandled Exception: System.TypeInitializationException: The type initializer for 'Terraria.Main' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Terraria.Netplay' threw an exception. ---> System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {AE1E00AA-3FD5-403C-8A27-2BBDC30CD0E1} failed due to the following error: 80040154 Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG). at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.Activator.CreateInstance(Type type) at Terraria.Netplay..cctor() --- End of inner exception stack trace --- at Terraria.Main..cctor() --- End of inner exception stack trace --- at Terraria.Main..ctor() at Terraria.ProgramServer.Main(String[] args) --- snip ---
Server: Main.versionNumber = "v1.2.0.3.1";
Decompiling with ILSpy gives:
--- snip --- // Terraria.Netplay static Netplay() { // Note: this type is marked as 'beforefieldinit'. Netplay.stopListen = false; Netplay.serverSock = new ServerSock[256]; Netplay.clientSock = new ClientSock(); Netplay.serverPort = 7777; Netplay.disconnect = false; Netplay.password = ""; Netplay.banFile = "banlist.txt"; Netplay.spamCheck = false; Netplay.anyClients = false; Netplay.upnpnat = (UPnPNAT)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("AE1E00AA-3FD5-403C-8A27-2BBDC30CD0E1"))); Netplay.mappings = Netplay.upnpnat.StaticPortMappingCollection; Netplay.uPNP = true; Netplay.ServerUp = false; } --- snip ---
Expected as Wine doesn't implement CLSID_UPnPNAT in HNetCfg.dll (NATUPnP.idl).
$ du -sh terraria-server-12031.zip 788K terraria-server-12031.zip
$ sha1sum terraria-server-12031.zip 2333bf1e6ad1d77fc5d59a389cad6581e48c12bf terraria-server-12031.zip
$ wine --version wine-1.7.4-91-g7ac2b3b
Regards