Cuando Windows 10 decide por ti

Llevo ya unas semanas usando Windows 10 y salvando ciertas desavenencias de retrocompatibilidad que voy pudiendo parchear, en general funciona bastante bien. Lo que no estoy tan contento es con la política de actualizaciones de Windows 10.

Todos hemos tenido siempre la sombra de que nuestros equipos a veces parecían más de Microsoft que nuestros. Con la llegada del nuevo sistema operativo y su gratuidad para su actualización (incluso en el caso de versiones del sistema no legítimas), me hace pensar que el negocio de Microsoft está pasando de ser la venta de servicios y software, a ser nosotros, los usuarios el producto. Lo siento chicos, pero nada en esta vida es gratis, en algún lado está el precio y su correspondiente pago no necesariamente monetario. En el caso de que haya una empresa por detrás ten claro que si algo te lo dan gratis, el producto eres TÚ. Por otro lado, es lógico que Microsoft haga este movimiento, a fin de cuentas a uno de sus rivales más fuertes (Google), le ha ido bien usando este planteamiento. Es lógico que Windows quiera probar con esta estrategia para mantener y mejorar su nicho de mercado, y dicho de paso quitarse la fragmentación de sistemas operativos a los que tiene que dar soporte (recordemos el caso de la longevidad en uso de Windows XP).

Independientemente  del modelo de comercialización que elija Microsoft para sus productos, el equipo sobre el que instalo su sistema operativo es mio (y tengo una factura que lo demuestra 😉 ). Este comentario viene a que el pasado día, tras una actualización de Windows 10 de estas que se te instalan al inicio y te realizan varios reinicios, Windows 10 decidió que cierto software que ya estaba instalado no era compatible e incluso podría causar daños, y lo desinstaló de manera unilateral. ¿Quéeeeeeeeeeeee?...

What-MrBean-Meme

¿Ni preguntar ni nada? Yo creo que se puede sugerir, pero no imponer hacer nada. Además si vas a desinstalarme algo, qué menos que dejar un fichero de registro de lo que se ha desinstalado, en vez de un fugaz mensaje a modo de pop-up que apenas llegas a ver el nombre de la lista de programas desinstalados. Al clickar el pop-up te lleva a esta web:

http://windows.microsoft.com/en-us/windows-10/incompatible-app-windows-10

Un información que dista mucho de ser valiosa y ni llega al estatus de útil. ¡¡No dice nada!!

Lo bueno de todo esto, es que lo que dice haber desinstalado, realmente no lo ha desinstalado. Cierto es que no está en "Programas y características", pero no borra los archivos del programa, sólo quita los accesos y borra la entrada de "Programas y características" . Si vas a la carpeta del programa y ejecutas el programa aún funcionará. Es decir, nos está dejando basura porque el programa sigue ocupando espacio, pero oficialmente el sistema no dice tenerlo instalado. ¡Algo muy chapucero! ¿no?

En mi caso el programa que desinstaló fue Speccy, un programa para auditar el hardware de tu equipo y el estado del mismo. Para todos los programas que tengo instalados suelo tener guardado el instalador dentro de una carpeta en donde se instala. Con ánimo de ver si realmente Windows me había tomado el pelo, vuelvo a instalar exactamente la misma versión del programa que me había desinstalado.

Mi sorpresa fue que funcionaba perfecto. Ningún problema, ni incompatibilidad, funcionaba bien. De todo esto lo que más me preocupa y me enfada es:

  1. Windows 10 no sugirió la desinstalación del programa, lo desinstaló unitalteralmente.
  2. Windows 10 desinstaló una aplicación que funcionaba perfectamente tras su reinstalación tras la actualización.
  3. Windows 10 no borró los archivos del programa desinstalado, dejando basura.

En su lanzamiento Windows 10 fue bastante criticado por la obligatoriedad de sus actualizaciones, y a día de hoy no parece haber cambiado mucho la cosa. No existe una forma simple como en versiones anteriores del sistema para desactivar las actualizaciones. Si accedemos desde el menú de inicio a "Configuración" --> "Actualización y seguridad" --> "Windows Update":

Windows10_Windows-Update

Veremos que apenas tenemos opciones de configuración. Hacemos click en "Opciones Avanzadas" para acceder a algunas opciones más.

Windows10_Windows-Update_Opciones-avanzadas

No hay ninguna opción para desactivar las actualizaciones, ni mucho menos para seleccionar cuáles instalar y no instalar.

No obstante existe la posibilidad de desactivarlas desde el Editor de Políticas de Grupo, si no estás conforme con la política de actualizaciones de Windows 10. Si tienes una versión Windows 10 Home necesitarás descargarlo desde el siguiente enlace, ya que la versión Home no lo incluye:

Descargar Group Policy (gpedit.msc)

Una vez descargado, ejecuta el instalador "setup.exe" y una vez instalado copia el archivo "gpedit.msc" de la carpeta "C:\Windows\SysWOW64" a la carpeta "C:\Windows\System32".

Para ejecutarlo escribimos en la barra de inicio "gpedit.msc" y lo seleccionamos. Os aparecerá la siguiente ventana:

Windows10_Group_Policy

Seleccionamos "Configuración de Equipo" --> "Plantillas Administrativas" --> "Componentes de Windows" --> "Windows Update".  En el panel de la derecha seleccionamos "Configurar Actualizaciones Automáticas" y seleccionamos "Deshabilitado".

Windows10_Group_Policy2

Hacemos click en "Aplicar" y luego en "Aceptar" y tendremos desactivadas las actualizaciones en Windows 10.

Si has tenido algún problema en la instalación del Editor de Políticas de Grupo, visita la siguiente dirección :

https://www.itechtics.com/enable-gpedit-windows-10-home/

El método de instalación del Editor de Políticas de Grupo sirve también para versiones  Home de Windows 7 y Windows 8. El instalador sólo se encuentra en inglés.

En resumen Windows 10 viene con una imposición de actualización continua del sistema, durante las cuales Windows se reserva el derecho de desinstalar cualquier aplicación que considere oportuna de manera unilateral sin consultar al usuario.

Actualizar los Submódulos Git de un Proyecto

Cuando tenemos proyectos muy grandes en los que usamos librerías de terceros y estamos usando Git como gestor de versiones, suele ser habitual añadir dichas librerías como submódulos. Esto nos permite que cuando clonamos el proyecto, las librerías también se descarguen. No obstante, la actualización de los módulos no se realiza mediante el comando "pull" del proyecto principal y deberemos realizar un "pull" para cada submódulo que tengamos.

Para realizar el comando "pull" en cada uno de los módulos lo más sencillo es recurrir al siguiente comando:

git submodule foreach git pull origin master

El comando "submodule" junto con el comando "foreach" nos permite ejecutar comandos para cada uno de los submódulos de un proyecto. En este caso ejecutamos el comando "git pull origin master" para traernos los cambios de cada submódulo y tenerlos todos en la ultima versión de la rama "master".

En caso de querer revertir la acción puedes usar el comando "update" para actualizar el árbol de submódulos de manera consistente con el estado almacenado en el proyecto principal. Esto quiere decir nos deshará los cambios realizados.

git submodule update

Internamente en el proyecto principal, para cada submódulo se guarda el commit concreto con el que se trabaja, razón por la que es posible revertir los cambios.

Este comando puede salvarnos, en el caso de que hayamos cambiado la URL remota donde apunta el submódulo y nos coja los cambios de la antigua ubicación. O simplemente puede servirnos para volver a la versión que teníamos, tras haber probado los nuevos cambios del submódulo y no estar contentos con ellos.

En cualquier caso, si por alguna razón hemos cambiado la URL remota de un submódulo en el archivo ".gitmodules", necesitaremos ejecutar el comando "sync" para que sincronice la URL remota con la configuración del archivo ".gitmodules".

git submodule sync

Tras la ejecución del comando podemos volver a ejecutar el comando:

git submodule foreach git pull origin master

Y veremos que los cambios corresponden a la ubicación correcta del submódulo.

Para más información sobre los distintos comandos para los submódulos, consulta la siguiente referencia:

https://git-scm.com/docs/git-submodule

 

Frase Memorable 4


El filosofo taoísta Lao Tzu escribió,  “El que domina a los otros es fuerte, pero el que se domina a si mismo es poderoso".


Corrección de resoluciones en Windows para Juegos Abandonware

Recientemente he tenido la oportunidad de empezar a trabajar con Windows 10 y de lo primero que he hecho ha sido testear software desarrollado para versiones anteriores de Windows. De las primeras que he probado, ha sido qué tal se comporta Windows 10 con Juegos Abandonware.

Hace ya un tiempo publicaba una entrada que hablaba sobre la corrección de colores en juegos abandonware en sistemas operativos de Windows más modernos. En este aspecto me ha sorprendido Windows 10, con una opción en su capa de compatibilidad para forzar a ejecutar las aplicaciones en modo 8 bits o 16 bits de color.

Propiedades-Compatibilidad_Windows10

Esta opción nos permite arreglar el problema al que dábamos solución en dicha entrada. No obstante aparece otro problema, y es que por mucho que seleccionemos en "Opciones gráficas" la opción de "Escalar a pantalla completa" mantiene el ratio de aspecto. Esto se debe a que las configuraciones que usa el sistema y con las que se lanza un juego abandonware no son heredadas. Esto quiere decir que da igual cuánto te esfuerces en revisar todas las configuraciones que no será la que luego Windows aplique para lanzar el juego. Por ejemplo, si pruebas a ejecutar un clásico como el "Age of Empires 2" verás que se generan dos franjas negras en los lateras.

Age of Empires II Expansion black-bands

Estos juego que tienen más de 10 años, suelen trabajar en resoluciones nativas con una relación de aspecto de 4:3 con unas resoluciones nativas que solían ser de 800x600 y que posteriormente se escalaba a resoluciones mayores o expandía a pantalla completa si la relación de aspecto era distinta.

En versiones anteriores a Windows 10 bastaba con cambiar la resolución a 800x600 y seleccionar en las "Opciones gráficas" la opción "Escalar a pantalla completa" . A partir de este momento podíamos volver a nuestra resolución habitual y bastaba con lanzar el juego. Este procedimiento no es válido para Windows 10 ya que no se hereda la configuración y es necesario volver a fijar la resolución en caliente.

Para cambiar la configuración de la resolución mediante mediante un atajo de teclado, usaremos Hotkey Resolution Changer (HRC) que lo podéis descargar del siguiente enlace:

HRC_-_HotKey_Resolution_Changer_v2_1.exe

Guardaremos el ejecutable en una carpeta y lo ejecutaremos con un doble click.

El programa permite definir varios atajos para cambiar la resolución al momento. A la hora de definir los atajos, intentad que sea una combinación de teclas que no se use en vuestro equipo, como puede ser CTRL+SHIFT+1CTRL+SHIFT+2.

En la primera resolución guardaremos la que usamos, mientras en la segunda buscaremos la de 800x600.

HRC_v2.1

Una vez fijadas las resoluciones con sus respectivos atajos, seleccionamos el icono de minimizar al lado del aspa roja, para que el programa se mantenga residente en la barra de tareas.  Con el HRC configurado, lanzamos el juego.

En el caso particular del "Age of Empires 2", además he creado un “Lanzador.bat“  en la carpeta del ejecutable del juego, con las siguientes líneas:

taskkill /F /IM Explorer.exe
age2_x1.exe normalmouse
start explorer.exe 

La primera línea detiene el proceso "Explorer.exe" para evitar problemas en el color. La segunda línea lanza el juego con el parámetro "normalmouse" que hace que no se cargue el icono del cursor del juego y cargue el del sistema. Esto se hace porque al poner el juego en pantalla completa con el HRC, el cursor desaparece. La tercera línea vuelve a lanzar el proceso "Explorer.exe" cerrado en la primera línea tras terminar la ejecución del juego. La primera línea sigue siendo necesaria a pesar de que se pueda seleccionar el parche de color en la pestaña de compatibilidad, porque cuando se lanza el juego desde “Lanzador.bat“ parece no aplicarse dichas configuraciones.

Lanzamos el juego mediante el lanzador y con el juego en marcha podremos poner la resolución a pantalla completa usando el atajo de teclas CTRL+SHIFT+2,  que aplica la resolución a 800x600 a pantalla completa, gracias a haber configurado para dicha resolución la opción "Escalar a pantalla completa" desde el sistema como se hacía para versiones anteriores de Windows 10.

Age of Empires II Expansion full-screen

Al salir del juego tendréis la resolución de 800x600 en el escritorio. Utilizad el atajo CTRL+SHIFT+1 para poner la resolución que originariamente teníais.

No es una solución del todo decorosa la que se presenta en esta entrada, ya que se cambia en caliente la resolución para el juego que se está renderizando, pero no obstante funciona (que no es poco 😉). A Microsoft se le olvidó este tipo de cosas cuando definía su capa de compatibilidad para Windows 10, que por otro lado es de las más completas hasta la fecha. No es sencillo mantener una retrocompatibilidad tan alta como la que mantiene Windows, para hacer funcionar software diseñado para versiones anteriores y hasta primitivas del sistema.