WIndows Store Certification Errors

I exported a project from Unity v4.2 to a Windows Store app with a build option of D3D11 C# Solution. I used JavaScript files in the Unity project and the game works fine on Windows Phone and Windows 8.

I change the Configuration Manager option to Release and Platform to x86. I am able to compile the project and run it fine on my Windows 8 slate and the game works as expected. Now when I Create App Package to upload to the store I get the following error messages using WACK v2.2:

Windows security features test - FAILED (Binary analyser)

  • Error Found: The binary analyzer test detected the following errors:
    …Boo.Lang.dll has failed the NXCheck check.
    …Boo.Lang.dll has failed the SafeSEHCheck check.
  • Impact if not fixed: If the app doesn’t use the available Windows protections, it can increase the vulnerability of customer’s computer to malware.
  • How to fix: Apply the required linker options - SAFESEH, DYNAMICBASE, NXCOMPAT, and APPCONTAINER - when you link the app. See links below for more information:

Supported API test - FAILED (Supported APIs)

  • Error Found: The supported APIs test detected the following errors:
    …API System.Console in MSCORLIB, PUBLICKEYTOKEN=XXXXXXXXXX is not supported for this application type. Boo.Lang.dll calls this API.
  • Impact if not fixed: Using an API that is not part of the Windows SDK for Windows Store apps violates the Windows Store certification requirements.
  • How to fix: Review the error messages to identify the API that is not part of the Windows SDK for Windows Store apps. Please note, C++ apps that are built in a debug configuration will fail this test even if it only uses APIs from the Windows SDK for Windows Store apps. See the link below for more information:

There are options to use a linker option but there is no option for that in a C# solution. I am using Visual Studio 2012 and really stuck here. Any help will be appreciated as I am trying to get this into the Windows store as soon as I can.

Has anyone else come across the above error? Is there any solution to this?

Javascript is not supported for Windows Store Apps in 4.2, this might change in 4.3

@Tomas1856 - thanks for taking time to reply to this topic. I guess we just have to wait and see until the next version.

I exported a project from Unity v4.3.1 to a Windows Store app with a build option of xaml C# Solution.but iam getting certification failure in WACK kit that " Using an API that is not part of the Windows SDK for Windows Store apps violates the Windows Store certification requirements."

please tell how i can fix that…
reply soon

That sounds serious? Can you post full WACK log?

Supported API test

FAILED
Supported APIs

Error Found: The supported APIs test detected the following errors:◦API System.IO.Directory in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Directory.GetCurrentDirectory in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Path.DirectorySeparatorChar in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Directory.GetDirectories(System.String,System.String) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Directory.GetDirectories(System.String) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Directory.GetFiles(System.String) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Directory.GetFiles(System.String,System.String) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.


Impact if not fixed: Using an API that is not part of the Windows SDK for Windows Store apps violates the Windows Store certification requirements.


How to fix: Review the error messages to identify the API that is not part of the Windows SDK for Windows Store apps. Please note, C++ apps that are built in a debug configuration will fail this test even if it only uses APIs from the Windows SDK for Windows Store apps. See the link below for more information:

Those APIs don’t exist in Windows Store Apps. Please see this link - .NET desktop apps | Free tools and frameworks

Some of the directory functions are implemented in UnityEngine.Windows.Directory class

i didnt get it…please tell me the exact procedure for fixing this problem…

iam adding using unityengine.windows in vs 2012 and test by wack kit now iam getting another bug…

Supported API test

FAILED
Supported APIs

Error Found: The supported APIs test detected the following errors:◦API System.IO.Directory in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Directory.GetCurrentDirectory in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Path.DirectorySeparatorChar in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Directory.GetDirectories(System.String,System.String) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Directory.GetDirectories(System.String) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Directory.GetFiles(System.String) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.
◦API System.IO.Directory.GetFiles(System.String,System.String) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-CSharp.dll calls this API.


Impact if not fixed: Using an API that is not part of the Windows SDK for Windows Store apps violates the Windows Store certification requirements.

rply soon

Take a look at the API that it is mentioning:

These are not supported on Windows 8 - the functions don’t exist. So you will have to look in your code to find where you use the function “GetCurrentDirectory()” and either a) Remove it for Windows 8 builds, or b) replace it with supported functions for Windows 8.

The getting started post in this forum is a great place to look for, well, getting started, and any common issues are in there. Specifically in the FAQ about unsupported classes and functions.

-Kyle

Please read the porting documentation at Game development for desktop | Unity on how to resolve these issues.

Hi Guys,

I am facing the same the problem as UnityNewbieX posted above.
I have coded in Unity 4.2 in JS and C# both. The game works fine in Local Machine and Simulator and my tablet too when I make a build through debug. But when I Create App Package to upload to the store I get the following error messages using WACK v3.4:

Windows security features test
FAILED
Binary analyzer

  • Error Found: The binary analyzer test detected the following errors:

  • Boo.Lang.dll has failed the NXCheck check.

  • Boo.Lang.dll has failed the SafeSEHCheck check.

Supported API test
FAILED
Supported APIs

  • Error Found: The supported APIs test detected the following errors:

  • API System.Console in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.Process in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.ProcessStartInfo in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Collections.Hashtable in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Runtime.Serialization.SerializationInfo in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.MemberTypes in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.MissingFieldException in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.DynamicMethod in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.ILGenerator in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.LocalBuilder in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.MissingMethodException in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.ApplicationException in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Binder in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.String.Format(System.String,System.Object) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Console.WriteLine(System.Object) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Console.ReadLine in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Console.Write(System.String) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.Process.#ctor in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.Process.get_StartInfo in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.ProcessStartInfo.set_Arguments(System.String) in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.ProcessStartInfo.set_CreateNoWindow(System.Boolean) in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.ProcessStartInfo.set_UseShellExecute(System.Boolean) in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.ProcessStartInfo.set_RedirectStandardOutput(System.Boolean) in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.ProcessStartInfo.set_RedirectStandardInput(System.Boolean) in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.ProcessStartInfo.set_RedirectStandardError(System.Boolean) in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.ProcessStartInfo.set_FileName(System.String) in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.Process.Start in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.Process.get_StandardOutput in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Diagnostics.Process.WaitForExit in SYSTEM, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.String.Format(System.String,System.Object,System.Object) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Collections.Hashtable.#ctor(System.Collections.IEqualityComparer) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Collections.Hashtable.Add(System.Object,System.Object) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.StringComparer.get_InvariantCultureIgnoreCase in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Collections.Hashtable.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Collections.Hashtable.get_Count in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Collections.Hashtable.GetEnumerator in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Collections.Hashtable.ContainsKey(System.Object) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Collections.Hashtable.get_Item(System.Object) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Collections.Hashtable.GetHash(System.Object) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Exception.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.MissingFieldException.#ctor(System.String) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.MemberInfo.get_MemberType in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Type.EmptyTypes in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.DynamicMethod.#ctor(System.String,System.Type,System.Type[ ],System.Type) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.DynamicMethod.GetILGenerator in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.DynamicMethod.CreateDelegate(System.Type) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.ILGenerator.Emit(System.Reflection.Emit.OpCode,System.Type) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.ILGenerator.Emit(System.Reflection.Emit.OpCode) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.ILGenerator.Emit(System.Reflection.Emit.OpCode,System.Int32) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.ILGenerator.Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.ILGenerator.Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.ILGenerator.DeclareLocal(System.Type) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Reflection.Emit.ILGenerator.Emit(System.Reflection.Emit.OpCode,System.Reflection.FieldInfo) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.MissingMethodException.#ctor(System.String) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Type.GetMember(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Environment.get_Version in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Type.get_IsCOMObject in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.MissingMethodException.#ctor(System.String,System.Exception) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.String.Format(System.String,System.Object,System.Object,System.Object) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.ApplicationException.#ctor(System.String) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[ ]) in MSCORLIB, PUBLICKEYTOKEN=7CEC85D7BEA7798E is not supported for this application type. Boo.Lang.dll calls this API.

  • API System.Console in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Poly2Tri.dll calls this API.

  • API System.Text.StringBuilder.AppendFormat(System.String,System.Object) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Poly2Tri.dll calls this API.

  • API System.Console.WriteLine(System.String) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Poly2Tri.dll calls this API.

Please help me out. Thanks in advance.

Regards
Tarun

Hi,

Windows Store started supporting UnityScript only in 4.3. It was not working in 4.2.

Hi Tautvydas Zilys,

Thanks for taking out time and replying.
I started developing this game on November,2013 using Unity 4.2 and there was windows store support in it. Through this I created the build and made it run on my device.
Now, the game has to be uploaded to market. While passing it through WACK, its showing me errors.

As asked by you, I can’t switch it to Unity 4.3 as it has some issues related to SQLite.

Please suggest some solution through Unity 4.2.

Tarun

Let’s put it this way: UnityScript will not be accepted to Windows Store in Unity 4.2. The only workaround is to rewrite scripts in C#.

Anyway, what exact issues are you having in Unity 4.3/4.5? What’s wrong with SQLite in those Unity versions?

Ahh. That would be too cumbersome to write all JS files into C#.

In version 4.3, the compiler sends Unhandled Exception Error without any reason for it. Whereas, it allows to compile a build for Windows Store in Unity 4.2 without an issue.
Version 4.4/4.5 have build types other than D3D11 C# which in-turn again don’t allow to generate build.

D3D11 C# projects were removed because practically nobody used them. Is there any reason why XAML projects won’t work for you?

Yup, it throws issues and asks me to remove many 3rd party plugin effects.

Btw… boo.lang.dll error is removed after creating build through Unity 4.3.3. Thanks a lot mate for this help.

But, now its throwing me “Poly2Tri.dll calls this API”. Please help in this too.

Could you post the full error message? Poly2Tri.dll is not part of Unity - did you create it yourself?