Distribución de Aplicación Multi-Lenguaje con Install Shield

Entre las desventajas o más bien, funciones limitadas del Install Shield Limited Edition está la del idioma del instalador, un sólo idioma. Esto quiere decir que nuestro instalador independietemente de los idiomas que maneje nuestro proyecto, sólo tendrá uno para el instalador.

En los casos en que nuestra aplicación es multi-idioma esto puede ser un dilema pero alguna razon desconocida mentira! Es culpa de la globalización! lo anterior planeado se resuelve: Indicando el idioma por default del producto software o más bien (y común) el idioma Inglés.

Cuando se tenga el producto software con recursos multi-language/localization ya creado el ejecutable ‘setup.exe’ por parte de Install Shield se instala. Instalada la aplicación, la carpeta será estructuralmente como la siguiente:

installShield_1El ejecutable del producto software en conjunto con las librerías de la solución.

La aplicación de ejemplo contiene el idioma Español e Inglés. Se creará una carpeta por idioma  y dentro contendrá el(los) recurso(s) para dicho idioma (en este caso): anime-k.resources.dll. El idioma configurado para Install Shield fue el Español lo que resultó en:

installShield_2

¿Lo notan? Existe una librería que no es un recurso ‘HtmlAgilityPack‘ y que está indicada como objeto primario de salida (Primary Output). La librería adicional Install Shield la dirigió hacia el idioma configurado.

En tiempo de ejecución esto origina un Exception, ya que el CultureInfo del Current Thread desde el cual se llama (el .exe) no es el mismo que el de la librería, es decir, el producto software siendo ejecutado en un idioma, intentará realizar llamados “idiomizados” a la librería. El error es porque obviamente la librería es neutral.

installShield_exception

Para solucionar esto tendríamos que indicar en las llamadas a dicha librería que utilize el idioma estrictamente indicado. Esto, mediante el CurrentThread igual a Neutral.

Cuando desarrollamos una aplicación y vamos a distribuirlas, Visual Studio nos tiene muy mal acostumbrado a colocar todas las dependencias en el folder ‘bin’ y esto nos origina los Exception. En este ejemplo, es exactamente lo mismo: Install Shield recorre todas las dependencias del proyecto y las coloca por si solo en el folder final.

Solución:

Se deben indicar explícitamente la ruta de las dependencias y complementos que utilizará el proyecto, haciendo esto que Install Shield anteponga ésta regla antes que las propias de él.

installShield_3

Resultado:

installShield_4

Las librerías no estarán relacionadas a ningun idioma.

Anuncios

¿Quieres agregar algo?

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s