miércoles, 10 de agosto de 2016

Solución crash System.NotSupportedException aplicaciones Windows 10 [.NET Framework]



La verdad es que el nuevo Sistema Operativo de los de Redmond, Windows 10, me está resultando ser una maravilla. Si bien es cierto que tiene algunos aspectos que pulir y las quejas sobre actualizarse solo, se nota la nueva dirección de la compañía y que es un sistema de "10".

Aunque en este caso, este post va encaminado hacia un problema que he tenido personalmente que me ha traído un poco de cabeza hasta que he dado con la solución.

El caso, es que ciertas aplicaciones han dejado de funcionar con Windows 10. Lo primero que hice al ver que no conseguía hacerlas funcionar, es ver si el Visor de eventos me daba algo más de información al respecto. Para ello, basta con buscar en la nueva barra de búsqueda "Cortana": Visor de eventos.



Nos abrirá la ventana de eventos, debemos dirigirnos a: Registros de Windows -> Aplicación, y por la fecha, ver el evento que ha proporcionado el crash del programa. El "Origen" del error, será Windows Error Reporting, que es el programa encargado de recopilar este tipo de errores cuando "peta" una aplicación y guarda el registro para enviarlo a Microsoft.


Como veis, en mi caso, al final lo que detecto es que está dando un "System.NotSupportedException", que a fin de cuentas lo que quiere decir es que nuestro sistema no soporta dicha aplicación (o al menos en el estado actual).

Este tipo de errores, son los que se encuentran compilados bajo la librería de Microsoft, .NET Framework (en cualquiera de sus versiones como la 2.0, 3.5, 4.0, etc...). 

Me resultaba raro, porque antes siquiera de seguir todas las guías que hay por internet para instalar las versiones antiguas de .NET Framework (Windows 10 es "nativamente" instalado junto con la versión 4.6), y de hecho, no conseguí instalar más "frameworks" porque los tenía todos instalados, me estaba temiendo lo peor.

Pero, finalmente, y a través de los foros de Frontiers (creadores de Elite Dangerous), daban solución para su "launcher" (el cual también me daba errores).

El caso, es que es posible que donde se encuentre alojado el ejecutable (.exe) que nos está dando el problema, exista un ficherito "mágico" que da ciertas ordenes a la hora de ejecutar dicha aplicación. Este fichero, en su nomenclatura comparte el nombre del ejecutable, pero con la coletilla ".config", y de hecho nuestro sistema operativo lo pintará como un fichero con una llave inglesa si teneis instalado el Visual Studio 2015 :D

Como podréis apreciar, todo .exe va acompañado de su .config
Para solucionar dicho problema, bastará con editar el .config con cualquiera de nuestros editores de texto preferidos (en mi caso Notepad++) y cambiar las líneas que están en el fragmento de "startup" para, o bien eliminar la línea que hace referencia al framework "2.X", o añadir la del "4.0".

<configuration>
    <configsections>
    </configsections>
    <startup> 
       <supportedruntime version="v2.0.4.456"></supportedruntime>
       <supportedruntime version="v4.0"></supportedruntime>
    </startup>
  <runtime>
    <enforcefipspolicy enabled="false">
  </enforcefipspolicy></runtime>
  <usersettings>
    <cobrabay .properties.settings="">
      <setting name="DXCheck" serializeas="String">
        <value>True</value>
      </setting>
    </cobrabay>
  </usersettings>
</configuration>

La línea que indica el runtime 2.0.XXX debéis eliminarla.

También puede darse el caso, que exista el .exe pero no el .config. En este caso, basta con crear desde 0 un archivo .config (con el mismo nombre que vuestro ejecutable, incluido el .exe, pero en este caso la extensión debe ser .config) con el siguiente contenido:

<configuration>
    <startup> 
        <supportedruntime version="v4.0">
    </supportedruntime></startup>
</configuration>

Programas que sufrían este "mal" en mi ordenador (para el VorpX tuve que crear todos los ficheros .config):
- EDLaunch.exe (parte del juego Elite Dangerous)
- HardwareReporter.exe (parte del juego Elite Dangerous)
- CrashReporter.exe (parte del juego Elite Dangerous)
- wyUpdater.exe (parte de una aplicación externa creada por un fan para temas de rutas comerciales en el Elite Dangerous)
- vorpX_WebSetup.exe (instalador de aplicación para hacer compatibles juegos con HTC Vive)
- vorpConfig.exe
- vorpControl.exe
- vorpDestop.exe
- vorpDocViewer.exe

Si me da alguna aplicación más este fallo, intentaré dejarla aquí registrada, para que esto pueda servir de ayuda a quien esté buscando una solución.