# INI (extensión de archivo)

.ini es una extensión de archivo para denotar ficheros de configuración utilizados por Programa informático|aplicaciones del sistema operativo Windows y ciertas aplicaciones en ambiente GNU/Linux.
El término proviene de "Windows 'Ini'tialization file", es decir, archivo de inicialización de Windows.

## Breve reseña histórica

Los archivos .ini comenzaron a utilizarse en las primeras versiones de Windows siendo ya muy populares en la versión 3.11. El propio Windows (en aquella versión aún no podía denominarse sistema operativo) utilizaba dos ficheros .ini para arrancar: WIN.INI y SYSTEM.INI. Estos ficheros incluyen información básica para el inicio de Windows, tales como las impresoras instaladas y sus parámetros.
Dada la sencillez de los archivos .ini, todas las aplicaciones lo adoptaron como estándar para almacenar sus parámetros de configuración. Pero esto tenía el inconveniente de que era complicado localizar el archivo de configuración correcto para cada aplicación, puesto que podían estar en cualquier carpeta del disco duro. Además podían sufrir modificaciones que alterasen su correcto formato, dejándolos inservibles. Otro problema frecuente es que los archivos de configuración .ini podían ser eliminados inadvertidamente por el usuario o por otras aplicaciones. Por todos estos motivos, el uso de archivos .INI ha caído en desuso, sin embargo en ambiente GNU/Linux dado que cada usuario está circunscrito a su directorio personal mediante fuertes políticas de derechos en el acceso a ficheros ha resultado útil para definir preferencias personales como por ejemplo en Git y su uso de comandos por alias.
Con la llegada de Windows 95 prevalecieron los ficheros WIN.INI y SYSTEM.INI pero se creó un sistema centralizado para el almacenaje de parámetros de configuración denominado registro de Windows. El Registro no tiene los problemas anteriormente mencionados.

## Formato

Un archivo .INI consiste en un simple archivo de texto ASCII que contiene dos tipos de entradas:
* Secciones: permiten agrupar parámetros relacionados. Por ejemplo: "Parámetros de red".
* Valores: definen parámetros y su valor. Primero se define el nombre del parámetro y después su valor separado por el signo de igualdad (=).
* Comentarios: permiten explicar el propósito de una sección o parámetro. Los comentarios comienzan con el carácter punto y coma (;).
El significado de secciones y valores no está bien definido y cada aplicación puede reaccionar de manera diferente ante:
* Secciones duplicadas.
* Parámetros duplicados.
* El carácter de barra invertida (\). A veces se usa para romper una línea en dos.
* Valores. Los valores pueden consistir en texto, números, listas separadas por comas, etc.
Todo esto depende de la aplicación, pero existen librerías públicas especializadas de la empresa Microsoft para que cada aplicación tenga una lectura y escritura a dichos archivos de manera segura en cuanto a la preservación del formato y rápida porque es manejada directamente por el propio sistema operativo Windows.

### Ejemplo

El siguiente ejemplo es un archivo .ini ficticio que establece las preferencias de un navegador:
Este archivo contiene dos secciones. La sección Red describe los parámetros para que el navegador pueda conectarse a páginas Web. El parámetro UsarProxy tiene el valor 1, que significa que es necesario utilizar un servidor proxy. El parámetro Proxy establece la dirección IP de tal servidor. La sección Preferencias describe parámetros del usuario. El parámetro PaginaInicio establece la URL que debe abrir el navegador inmediatamente después de arrancar. El parámetro Maximizar con el valor 1 indica que el navegador debe iniciarse a pantalla completa.

## Cómo funciona

Tras instalar una aplicación, sus parámetros de configuración por defecto quedan almacenados en el archivo .ini que trae la instalación. Cuando el usuario cambia parámetros en la propia aplicación, ésta se encarga de rescribir el archivo .ini como resulte conveniente. Adicionalmente, cualquier usuario puede abrir el fichero .ini con un editor de texto y modificarlo. Esto puede ser necesario en caso de un mal funcionamiento de la aplicación.

## Evolución

Los archivos .ini están prácticamente en desuso hoy día. Existen varios motivos:
* Es un formato que solamente se usa en Windows y no es totalmente portable a otros sistemas operativos (léase, UNIX) debido básicamente a que los caracteres de salto de línea no se interpretan igual en todos los sistemas operativos.
* El Registro de Windows hace innecesario su uso y es menos propenso a errores de manipulación.
* El formato .XML (lenguaje de marcado extensible) puede cumplir la misma función y es un estándar portable. Además no tiene problemas respecto al juego de caracteres empleado, siempre y cuando se especifique la codificación de caracteres UTF-8 (por defecto de XML) de manera explícita en el prólogo o que la aplicación de edición de texto permita guardar en formato UTF-8.
Hasta la fecha, la empresa Microsoft mantiene una librería en lenguaje C++ que permite leer y escribir dichos archivos .INI (GetPrivateProfileString y WritePrivateProfileString) pero indican que es por compatibilidad con las aplicaciones de 16 bits y desaconsejan su uso.