<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux, Java y programación &#187; Windows</title>
	<atom:link href="http://casidiablo.net/tag/windows/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Fri, 11 Nov 2011 05:41:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Usando el System Tray desde Java</title>
		<link>http://casidiablo.net/systray-java-ejemplo/</link>
		<comments>http://casidiablo.net/systray-java-ejemplo/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 13:55:04 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[ejercicios en java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[area]]></category>
		<category><![CDATA[awt]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[jpoupmenu]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[notificacion]]></category>
		<category><![CDATA[system tray]]></category>
		<category><![CDATA[systray]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3625</guid>
		<description><![CDATA[En esta ocasión vamos a aprender usar el System Tray desde una aplicación hecha en Java. El System Tray o área de notificaciones, es el espacio en el escritorio en donde &#8216;residen&#8217; aplicaciones que el sistema está ejecutando, pero que no tienen en foco de lo que estamos haciendo. Antes se usaban librerías nativas + [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fsystray-java-ejemplo%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fcasidiablo.in%2FckC2zY%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Usando%20el%20System%20Tray%20desde%20Java%22%20%7D);"></div>
<p style="text-align: justify;">En esta ocasión vamos a aprender usar el System Tray desde una aplicación hecha en Java. El System Tray o área de notificaciones, es el espacio en el escritorio en donde &#8216;residen&#8217; aplicaciones que el sistema está ejecutando, pero que no tienen en foco de lo que estamos haciendo.</p>
<p style="text-align: justify;"><strong>Antes</strong> se usaban librerías nativas + JNI para lograr esto, pero desde hace un tiempo se incluyeron en el API de Java 6 las clases SystemTray y TrayIcon (dentro del paquete java.awt) lo cual nos facilita mucho las cosas.</p>
<p style="text-align: center;"><img class="size-full wp-image-3638 aligncenter" title="windowsxp" src="http://casidiablo.net/wordpress/wp-content/uploads/2010/02/windowsxp.png" alt="" width="325" height="173" /></p>
<h3>0. Entendiendo las clases SystemTray y TrayIcon + Prerrequisitos</h3>
<p style="text-align: justify;">Antes que nada, debes tener instalada una versión reciente del JDK6. La clase <code><a href="http://java.sun.com/javase/6/docs/api/java/awt/SystemTray.html">java.awt.SystemTray</a> </code>representa el System Tray del escritorio. Para manipular dicha clase es necesario obtener un objeto estático de esta usando el método <code>SystemTray.getSystemTray() </code> (es decir, no es posible crear instancias de dicha clase). Además, es necesario verificar que el uso de esta clase sea soportada en el sistema donde se ejecuta. Esto lo hacemos usando el método estático <code>SystemTray.isSupported()</code>. Si no hay soporte, este método retornará false. Si haces un llamado al método <code>getSystemTray</code> y tu sistema no está soportado, se lanzará la excepción <code>java.lang.UnsupportedOperationException</code>.</p>
<p style="text-align: justify;">La instancia de <code>SystemTray</code> contiene uno o más <code>TrayIcons</code>, los cuales son añadidos usando el método <code>add(java.awt.TrayIcon)</code>, y son eliminados con el método <code>remove(java.awt.TrayIcon)</code>.</p>
<p><span id="more-3625"></span></p>
<h3>1. Ejemplo de uso</h3>
<pre class="brush: java; highlight: [8,10,46,50]; title: ; notranslate">import java.awt.*;
import java.awt.event.*;
public class EjemploSystemTray {
    public EjemploSystemTray() {
        //se declara el objeto tipo icono
        final TrayIcon iconoSystemTray;
        //se verifica que el SystemTray sea soportado
        if (SystemTray.isSupported()) {
            //se obtiene una instancia estática de la clase SystemTray
            SystemTray tray = SystemTray.getSystemTray();
            //esta es la imagen de icono
            Image imagenIcono = Toolkit.getDefaultToolkit().getImage(&quot;icono.png&quot;);
            //este listener nos permite capturar cualquier tipo de evento
            //que se haga con el mouse sobre el icono
            MouseListener mouseListener = new MouseListener() {
                public void mouseClicked(MouseEvent e) {
                    System.out.println(&quot;Icono del System Tray - Mouse clicked!&quot;);
                }
                public void mouseEntered(MouseEvent e) {
                    System.out.println(&quot;Icono del System Tray - Mouse entered!&quot;);
                }
                public void mouseExited(MouseEvent e) {
                    System.out.println(&quot;Icono del System Tray - Mouse exited!&quot;);
                }
                public void mousePressed(MouseEvent e) {
                    System.out.println(&quot;Icono del System Tray - Mouse pressed!&quot;);
                }
                public void mouseReleased(MouseEvent e) {
                    System.out.println(&quot;Icono del System Tray - Mouse released!&quot;);
                }
            };
            //este listener se asociara con un item del menu contextual
            //que aparece al hacer click derecho sobre el icono
            ActionListener escuchadorSalir = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println(&quot;Saliendo...&quot;);
                    System.exit(0);
                }
            };
            //menu que aparece al hacer click derecho
            PopupMenu popup = new PopupMenu();
            MenuItem item = new MenuItem(&quot;Exit&quot;);
            item.addActionListener(escuchadorSalir);
            popup.add(item);
            //iniciamos el objeto TrayIcon
            iconoSystemTray = new TrayIcon(imagenIcono, &quot;Prueba System Tray&quot;, popup);
            //este tipo de listener captura el doble click sobre el icono
            ActionListener accionMostrarMensaje = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    iconoSystemTray.displayMessage(&quot;Titulo mensaje&quot;,
                            &quot;Este es el contenido del mensaje!&quot;,
                            TrayIcon.MessageType.INFO);
                }
            };

            iconoSystemTray.setImageAutoSize(true);
            iconoSystemTray.addActionListener(accionMostrarMensaje);
            iconoSystemTray.addMouseListener(mouseListener);

            //se debe capturar una excepción en caso que falle la adicion de un icono
            try {
                tray.add(iconoSystemTray);
            } catch (AWTException e) {
                System.err.println(&quot;No es posible agregar el icono al System Tray&quot;);
            }
        }
        else
            System.err.println(&quot;Tu sistema no soporta el System Tray&quot;);
    }
    public static void main(String[] args) {
        new EjemploSystemTray();
    }
}</pre>
<p>Así se ve en Linux (usando Gnome) y en Windows7:</p>
<p style="text-align: center;"><img title="en gnome" src="http://casidiablo.net/wordpress/wp-content/uploads/2010/02/gnome.png" alt="" /> <img title="en-windows7" src="http://casidiablo.net/wordpress/wp-content/uploads/2010/02/windows7.png" alt="" /></p>
<p style="text-align: justify;">Del ejemplo anterior veamos las líneas más importantes:</p>
<ul>
<li style="text-align: justify;">Línea 8: verificamos que tengamos soporte.</li>
<li style="text-align: justify;">Línea 10: obtenemos una instancia de la clase SystemTray.</li>
<li style="text-align: justify;">Línea 46: creamos el icono que vamos a añadir.</li>
<li style="text-align: justify;">Línea 50: invocación del método displayMessage para mostrar globos de notificación.</li>
<li style="text-align: justify;">Línea 62: añadimos el icono al systray.</li>
</ul>
<h3>2. ¿Cómo usar Swing en vez de AWT?</h3>
<p style="text-align: justify;">Si te fijaste bien, el SystemTray es una clase que pertenece al paquete AWT&#8230; por alguna razón no se tuvo en cuenta Swing en todo esto. Es por ello que no podemos usar directamente <code>JPopupMenu</code> en vez de <code>PopupMenu</code>. Además, <code>JPopupMenu</code> tampoco es una subclase de <code>PopupMenu</code> por lo cual no podemos usar polimorfismo <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </p>
<p style="text-align: justify;">Afortunadamente hay algunos trucos para hacerlo funcionar con Swing que nos proporciona varias ventajas: la apariencia del menú sería igual en cualquier sistema operativo, podemos añadir iconos a los items, etc.</p>
<p style="text-align: justify;">El truco más sencillo del cual tengo conocimiento lo leí en el blog de Artem Ananiev, en un post llamado <a href="http://weblogs.java.net/blog/2006/05/04/using-jpopupmenu-trayicon">Using JPopupMenu in TrayIcon</a>. He preparado entonces otro ejemplo sencillo en donde se muestra cómo lograr esto:</p>
<pre class="brush: java; highlight: [40,41,42,43,44]; title: ; notranslate">import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class EjemploSystemTraySwing {
    public EjemploSystemTraySwing() {
        //se declara el objeto tipo icono
        final TrayIcon iconoSystemTray;
        //se verifica que el SystemTray sea soportado
        if (SystemTray.isSupported()) {
            //se obtiene una instancia estática de la clase SystemTray
            SystemTray tray = SystemTray.getSystemTray();
            //esta es la imagen de icono
            Image imagenIcono = Toolkit.getDefaultToolkit().getImage(&quot;icono.png&quot;);
            //este listener se asociara con un item del menu contextual
            //que aparece al hacer click derecho sobre el icono
            ActionListener escuchadorSalir = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println(&quot;Saliendo...&quot;);
                    System.exit(0);
                }
            };
            //menu que aparece al hacer click derecho
            final JPopupMenu popup = new JPopupMenu();

            //aniadir un menu con icono (swing)
            JMenuItem carita = new JMenuItem(&quot;casidiablo.net&quot;,  new ImageIcon(&quot;carita.png&quot;));
            popup.add(carita);
            popup.addSeparator();

            //aniadir el item de salir
            JMenuItem item = new JMenuItem(&quot;Exit&quot;, new ImageIcon(&quot;salir.png&quot;));
            item.addActionListener(escuchadorSalir);
            popup.add(item);
            //iniciamos el objeto TrayIcon
            iconoSystemTray = new TrayIcon(imagenIcono, &quot;Prueba System Tray&quot;, null);
            iconoSystemTray.setImageAutoSize(true);
            //iconoSystemTray.addMouseListener(mouseListener);
            iconoSystemTray.addMouseListener(new MouseAdapter() {
                public void mouseReleased(MouseEvent e) {
                    if (e.isPopupTrigger()) {
                        popup.setLocation(e.getX(), e.getY()-50);
                        popup.setInvoker(popup);
                        popup.setVisible(true);
                    }
                }
            });
            //se debe capturar una excepción en caso que falle la adicion de un icono
            try {
                tray.add(iconoSystemTray);
            } catch (AWTException e) {
                System.err.println(&quot;No es posible agregar el icono al System Tray&quot;);
            }
        }
        else
            System.err.println(&quot;Tu sistema no soporta el System Tray&quot;);
    }
    public static void main(String[] args) {
        new EjemploSystemTraySwing();
    }
}</pre>
<p style="text-align: justify;">El resultado es algo como lo que aparece en la primera imagen que acompaña esta entrada. Importante tener en cuenta las líneas resaltadas (40 a 44) que es donde se hace la <em>magia</em> <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Como siempre, puedes descargar el código y probar tú mismo:</p>
<p><a href="http://casidiablo.net/descargar/Ejemplos+System+Tray+Java" class="descargacodigo">Descargar ZIP con ejemplos</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/systray-java-ejemplo/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Redimensionar partición NTFS [consola]</title>
		<link>http://casidiablo.net/cambiar-tamano-particion-ntfs-linux/</link>
		<comments>http://casidiablo.net/cambiar-tamano-particion-ntfs-linux/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 00:22:03 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[linux. unix]]></category>
		<category><![CDATA[ntfs]]></category>
		<category><![CDATA[partición]]></category>
		<category><![CDATA[redimensionar]]></category>
		<category><![CDATA[resize]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3530</guid>
		<description><![CDATA[Entre tanto trabajo, estudio y procrastinación me queda poco tiempo para publicar cosas&#8230; así que al menos iré poniendo pequeños tips que considero útiles. En esta ocasión un tip simple, redimensionar una partición con NTFS desde la consola. Para ello usaremos el comando ntfsresize que viene dentro del paquete ntfsprogs (Gentoo/Debian/Arch/FreeBSD/) o ntfstools (Ubuntu): http://www.linux-ntfs.org/ [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fcambiar-tamano-particion-ntfs-linux%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Redimensionar%20partici%C3%B3n%20NTFS%20%5Bconsola%5D%22%20%7D);"></div>
<p style="text-align: justify;">Entre tanto trabajo, estudio y procrastinación me queda poco tiempo para publicar cosas&#8230; así que al menos iré poniendo pequeños tips que considero útiles. En esta ocasión un tip simple, redimensionar una partición con NTFS desde la consola. Para ello usaremos el comando ntfsresize que viene dentro del paquete ntfsprogs (Gentoo/Debian/Arch/FreeBSD/) o ntfstools (Ubuntu): <a href="http://www.linux-ntfs.org/">http://www.linux-ntfs.org/</a></p>
<h3>Instalación</h3>
<p><strong>Gentoo:</strong></p>
<div class="consola">emerge -av ntfsprogs</div>
<p><strong>FreeBSD:</strong></p>
<div class="consola">cd /usr/ports/sysutils/ntfsprogs<br />
make &amp;&amp; make install clean</div>
<p><strong>Ubuntu:</strong></p>
<div class="consola">aptitude install ntfstools</div>
<p><strong>Debian:</strong></p>
<div class="consola">apt-get install ntfsprogs</div>
<p><strong>Arch:</strong></p>
<div class="consola">pacman -S ntfsprogs</div>
<p style="text-align: justify;">
<h3>Uso&#8230;</h3>
</p>
<p style="text-align: justify;">El uso es bastante simple&#8230; para inspeccionar una partición, conocer cuanto espacio disponible tiene y cuanto es el mínimo/máximo que podemos asignarle ejecutamos lo siguiente:</p>
<div class="consola">ntfsresize -if /dev/sda2</div>
<p style="text-align: justify;">Donde /dev/sda2 corresponde a la partición que queremos tratar. Supongamos que, por ejemplo, queremos redimensionar la partición a 34GB, ejecutamos lo siguiente para hacer un test de solo lectura:</p>
<div class="consola">ntfsresize -n -s 34G /dev/sda2</div>
<p style="text-align: justify;">El flag -n indica que NO se harán cambios reales sobre el disco, mientras que -s especifica el nuevo tamaño (k kilobytes, M para megabytes, G gigabytes). Si todo va bien con el test procedemos con el cambio real:</p>
<div class="consola">ntfsresize -f -s 34G /dev/sda2</div>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/cambiar-tamano-particion-ntfs-linux/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ejecutar aplicación Java como servicio &#8211; Integración básica</title>
		<link>http://casidiablo.net/correr-programa-java-como-demonio/</link>
		<comments>http://casidiablo.net/correr-programa-java-como-demonio/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 01:16:20 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[ejercicios en java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[daemon]]></category>
		<category><![CDATA[demonio]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[servicio]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3407</guid>
		<description><![CDATA[En esta entrada abordaremos un tema bastante interesante: cómo correr un programa en Java como servicio en Windows o demonio en UNIX/Linux. Puesto que el API de Java no proporciona nada para estos casos, utiliza remos una librería llamada Java Service Wrapper. Dicha librería nos ofrece una serie de scripts y binarios preparados para diferentes [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fcorrer-programa-java-como-demonio%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Ejecutar%20aplicaci%C3%B3n%20Java%20como%20servicio%20-%20Integraci%C3%B3n%20b%C3%A1sica%22%20%7D);"></div>
<p style="text-align: justify;">En esta entrada abordaremos un tema bastante interesante: <strong>cómo correr un programa en Java como servicio en Windows o demonio en UNIX/Linux</strong>. Puesto que el API de <a href="http://casidiablo.net/java/">Java</a> no proporciona nada para estos casos, utiliza</p>
<p style="text-align: justify;">remos una librería llamada <a href="http://wrapper.tanukisoftware.org/">Java Service Wrapper</a>. Dicha librería nos ofrece una serie de scripts y binarios preparados para diferentes sistemas operativos y arquitecturas, que nos permitirán correr nuestros programas como un servicio; además ofrece diferentes versiones: Profesional, Estándar y Comunity. En este caso usaremos la versión Comunity que es libre y gratuita.</p>
<p style="text-align: justify;">La mejor manera de aprender a usar dicha librería es con un pequeño laboratorio, así que he preparado uno en donde explico la integración más simple que existe con Java Service Wrapper (existen 4 métodos; unos más avanzados que otros). La integración sencilla que he escogido nos permitirá ejecutar como servicio una aplicación que ya esté creada (probablemente ya empaquetada en un .jar) y a la que no podemos o es difícil hacerle modificaciones. Esta es la manera más sencilla de hacerlo, sin embargo tiene una desventaja: al detener el servicio se envía directamente un System.exit() a la JVM por lo que la aplicación no se cerrará limpiamente.</p>
<p style="text-align: justify;">Si quieres integrar tu aplicación de una manera más segura y estás en la capacidad de prepararla para ello, podrías intentar la integración avanzada en la que utilizas el API de Java Service Wrapper para implementar métodos de inicio, pausa y detención del servicio [<a href="http://casidiablo.net/descargar/Ejemplo+Servicio+Avanzado+Java+src&#8220;>descargar un ejemplo</a>].</p>
<h3>Laboratorio 1 &#8211; Integración Simple (Linux/Windows/Solaris)</h3>
<p style="text-align: justify;">Para este caso utilizaremos una aplicación de ejemplo que recibe un archivo como parámetro y escribe en él <a href="http://casidiablo.net/capturar-informacion-sistema-operativo-java/">información sobre la memoria del sistema</a>, cada 60 segundos. He escogido este ejemplo porque posee varios aspectos interesantes: requiere de librerías externas (tanto JARs como librerías nativas [.so, dll, etc.]) y recibe parámetros.</p>
<p style="text-align: justify;">Puedes descargar la aplicación de ejemplo de haciendo <a class="tooltip" title="Descargar los binarios del ejemplo" href="http://casidiablo.net/descargar/Ejemplo+Servicio+Simple+Java+bin">clic aquí</a>. Si la ejecutáramos de manera convencional veríamos algo de este tipo:</p>
<div class="consola">gentookde@larry bin % java -jar servicio.jar /tmp/log<br />
^C<br />
gentookde@larry bin % cat /tmp/log<br />
======Mon Oct 05 09:42:05 COT 2009=======<br />
Cantidad de memoria RAM: 3952MB<br />
Total: 4042664<br />
Usada: 3509516<br />
Disponible: 533148<br />
Memoria SWAP total: 1052248<br />
Memoria SWAP usada: 0<br />
Memoria SWAP libre: 1052248</div>
<p style="text-align: justify;">Como puedes ver se trata de una aplicación de consola común y corriente. La aplicación consta básicamente de:</p>
<ul style="text-align: justify;">
<li>El ejecutable servicio.jar ubicado en el directorio bin/</li>
<li>La librería sigar.jar en el directorio lib/</li>
<li style="text-align: justify;">Las librerías específicas de cada arquitectura de sigar en lib/</li>
</ul>
<h3>Pasos para la integración</h3>
<p style="text-align: justify; ">Lo primero es descargar el paquete de <a href="http://wrapper.tanukisoftware.org/doc/english/download.jsp">Java Service Wrapper</a> y descomprimirlo<span style="background-color: #ffffff;">. Supondremos que el directorio donde se encuentra Java Service Wrapper es $RUTA_JSW y que el directorio de la aplicación que  vamos a convertir en servicio es </span><span style="background-color: #ffffff;">$RUTA_APP</span><span style="background-color: #ffffff;">.</span></p>
<h4>1. Copiamos los siguentes archivos al directorio bin de nuestra aplicación de ejemplo&#8230;</h4>
<p style="text-align: justify; "><span style="background-color: #ffffff;"><strong>UNIX/Linux</strong><br />
</span></p>
<div class="consola">cp $RUTA_JSW/bin/wrapper $RUTA_APP/bin/<br />
cp $RUTA_JSW/src/bin/sh.script.in $RUTA_APP/bin/<br />
cp $RUTA_JSW/lib/* $RUTA_APP/bin/</div>
<p style="text-align: justify; ">El archivo $RUTA_JSW/bin/wrapper podría no existir; por lo tanto lo que debes copiar es el archivo wrapper-xxx específico para tu plataforma. Por ejemplo, en este caso estoy usando Gentoo Linux de 64bits por lo tanto copiaré el archivo $RUTA_JSW/bin/wrapper-linux-x86-64.</p>
<p style="text-align: justify; "><strong><span style="background-color: #ffffff;">Windows</span></strong></p>
<div class="consola">copy $RUTA_JSW/bin/ wrapper-windows-x86-32.exe $RUTA_APP/bin/<br />
copy $RUTA_JSW/src/bin/ App.bat.in $RUTA_APP/bin/<br />
copy $RUTA_JSW/src/bin/ InstallApp-NT.bat.in $RUTA_APP/bin/<br />
copy $RUTA_JSW/src/bin/ UninstallApp-NT.bat.in $RUTA_APP/bin/<br />
copy $RUTA_JSW/lib/* $RUTA_APP/bin/</div>
<h4>2. Renombramos algunos archivos&#8230;</h4>
<p><strong>UNIX/Linux&#8230;</strong></p>
<p style="text-align: justify;">Ahora debes renombrar el script sh.script.in con el nombre de la aplicación con la que haremos la integración y darle privilegios de ejecución. En este casó se llama simplemente &#8220;servicio&#8221;:</p>
<div class="consola">cd $RUTA_APP/bin<br />
mv sh.script.in servicio<br />
chmod a+x servicio</div>
<p><strong>Windows</strong></p>
<p style="text-align: justify;">Ahora debes renombrar los archivos .bat  para que concuerden con el nombre de la aplicación con la que haremos la integración. En este casó se llama simplemente &#8220;servicio&#8221; (lo puedes hacer usando el explorador si no te gusta usar la consola, pero a mi me daría pena):</p>
<div class="consola">cd $RUTA_APP/bin<br />
move App.bat.in servicio.bat<br />
move InstallApp-NT.bat.in InstallServicio-NT.bat<br />
move UninstallApp-NT.bat.in UninstallServicio-NT.bat</div>
<h4>3. editar archivo de configuración</h4>
<p style="text-align: justify;">Editamos el archivo wrapper.conf y lo dejamos en el directorio $RUTA_APP/conf/. El archivo para este ejemplo tendrá el siguiente contenido (<strong>importante</strong>! lee la explicación si usas Windows):</p>
<pre class="brush: plain; title: ; notranslate"># Comando de Java
wrapper.java.command=java
# Clase que ejecutara el Wrapper
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
# Librerias necesarias para ejecutar el programa
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=servicio.jar
# Java Library Path (ubicacion de las librerias wrapper.dll o wrapper.so)
wrapper.java.library.path.1=../lib
# Java Bits.  On applicable platforms, tells the JVM to run in 32 or 64-bit mode.
wrapper.java.additional.auto_bits=TRUE
# Parametros del programa
wrapper.app.parameter.1=net.casidiablo.servicio.Servicio
wrapper.app.parameter.2=/tmp/log
#********************************************************************
# Wrapper General Properties
#********************************************************************
# Allow for the use of non-contiguous numbered properties
wrapper.ignore_sequence_gaps=TRUE
# Title to use when running as a console
wrapper.console.title=servicio
#********************************************************************
# Wrapper Windows NT/2000/XP Service Properties
#********************************************************************
# Name of the service
wrapper.name=jgossip
# Display name of the service
wrapper.displayname=Servicio
# Description of the service
wrapper.description=Monitor de memoria
# Mode in which the service is installed. AUTO_START or DEMAND_START
wrapper.ntservice.starttype=AUTO_START
# Allow the service to interact with the desktop.
wrapper.ntservice.interactive=false</pre>
<p>Explicación del archivo de configuración:</p>
<ul>
<li style="text-align: justify;"><code>wrapper.java.command=java</code> es el comando para ejecutar java. En este caso es simplemente java porque estoy en Linux y además tengo configurado correctamente el path. En Windows podría ser algo como: c:\archivos de programa\java\jdk1.6\bin\java.exe</li>
<li style="text-align: justify;"><code>wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp</code> indica el archivo a ejecutar es la clase WrapperSimpleApp que se usa en la integración sencilla. Esta clase envoltorio es la que permite ejecutar la aplicación como servicio.</li>
<li style="text-align: justify;"><code>wrapper.java.classpath.1=../lib/wrapper.jar<br />
wrapper.java.classpath.2=servicio.jar</code> indican las rutas o archivos del classpath.</li>
<li style="text-align: justify;"><code>wrapper.java.library.path.1=../lib</code> indica el directorio donde se encuentran las librerías a usar.</li>
<li style="text-align: justify;"><code>wrapper.app.parameter.1=net.casidiablo.servicio.Servicio<br />
wrapper.app.parameter.2=/tmp/log</code> estos son los parámetros que se pasarán al programa. <strong>Importante</strong>: como estamos haciendo la integración simple, el primer parámetro debe ser la clase que contiene el método main de nuestra aplicación.</li>
<li style="text-align: justify;"><code>wrapper.name=jgossip</code> esta opción es para Windows y define el nombre del servicio en el sistema.</li>
<li style="text-align: justify;"><code>wrapper.ntservice.starttype=AUTO_START</code> si estás en windows, define si el servicio quedará configurado para iniciar automáticamente.</li>
</ul>
<h4>4. Probar/Instalar el servicio&#8230;</h4>
<p style="text-align: justify;">Ahora veremos cómo podemos probar la aplicación para asegurarnos que ha quedado bien configurada antes de proceder con la instalación.</p>
<p><strong>UNIX/Linux</strong></p>
<p style="text-align: justify;">Ejecutamos el script &#8216;servicio&#8217; que configuramos en el paso 1 y 2 con el parámetro console:</p>
<div class="consola">./servicio console</div>
<p>Deberías ver algo como:</p>
<div class="consola">Running un servicio que escribe cosas&#8230;<br />
wrapper  | &#8211;&gt; Wrapper Started as Console<br />
wrapper  | Java Service Wrapper Community Edition 64-bit 3.3.6<br />
wrapper  |   Copyright (C) 1999-2009 Tanuki Software, Ltd.  All Rights Reserved.<br />
wrapper  |     http://wrapper.tanukisoftware.org<br />
wrapper  |<br />
wrapper  | Launching a JVM&#8230;<br />
jvm 1    | WrapperManager: Initializing&#8230;</div>
<p style="text-align: justify;">Lo detienes presionando Ctrl+C. Ahora, si queremos probarlo como demonio basta con ejecutar los comandos típicos de un demonio en UNIX/Linux:</p>
<div class="consola">$ ./servicio start<br />
Starting un servicio que escribe cosas&#8230;<br />
$ ./servicio stop<br />
Stopping un servicio que escribe cosas&#8230;<br />
Stopped un servicio que escribe cosas.</div>
<p style="text-align: justify;">Para instalarlo basta con crear un enlace simbólico del script en el directorio /etc/init.d y añadirlo al listado de servicios a iniciar; por ejemplo:</p>
<div class="consola">sudo ln -sv $RUTA_APP/bin/servicio /etc/init.d/servicio<br />
sudo rc-update add servicio default</div>
<p><strong>Windows</strong></p>
<p style="text-align: justify;">Para instalarlo en Windows basta con ejecutar el archivo InstallServicio-NT.bat. Puedes verificar que fue instalado correctamente accediendo a la consola de administración de servicios de NT (ejecutas el comando services.msc):</p>
<p><a href="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_001.png"><img class="aligncenter size-full wp-image-3460" title="servicio windows java" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_001.png" alt="servicio windows java" width="778" height="566" /></a></p>
<h3>Fuentes y descargas</h3>
<p>Aunque en esta entrada no explico cómo hacer la integración avanzada, he preparado un ejemplo completo que puedes descargar en el listado de abajo.<strong><br />
</strong></p>
<ul>
<li><a href="http://wrapper.tanukisoftware.org/doc/">Puedes encontrar más documentación en la página oficial del proyecto</a></li>
<li><a href="http://casidiablo.net/descargar/Ejemplo+Servicio+Simple+Java+bin">Descargar el laboratorio de esta entrada</a></li>
<li><a href="http://casidiablo.net/descargar/Ejemplo+Servicio+Simple+Java+src">Descargar el código fuente del laboratorio</a></li>
<li><a href="http://casidiablo.net/descargar/Ejemplo+Servicio+Avanzado+Java+src"><strong>Descargar código fuente y laboratorio de la integración avanzada</strong></a></li>
</ul>
<p><br/><br/><br/></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/correr-programa-java-como-demonio/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Video Tutorial VirtualBox: ejecutar sistemas operativos REALES</title>
		<link>http://casidiablo.net/correr-diferentes-so-instalados-con-vbox/</link>
		<comments>http://casidiablo.net/correr-diferentes-so-instalados-con-vbox/#comments</comments>
		<pubDate>Mon, 11 May 2009 19:51:27 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensuse]]></category>
		<category><![CDATA[software libre]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[video tutoriales]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[sistemas operativos]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3043</guid>
		<description><![CDATA[Hola amigos&#8230; he grabado un pequeño vídeo en donde enseño cómo ejecutar varios sistemas operativos REALES, es decir, que no son virtuales, al mismo tiempo usando VirtualBox. Por ejemplo, si tienes instalado Windows XP, Ubuntu y Fedora, y en cada uno tienes aplicaciones que usas a diario, podrías ejecutar Windows XP desde Ubuntu sin necesidad [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fcorrer-diferentes-so-instalados-con-vbox%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Video%20Tutorial%20VirtualBox%3A%20ejecutar%20sistemas%20operativos%20REALES%22%20%7D);"></div>
<p style="text-align: justify;">Hola amigos&#8230; he grabado un pequeño vídeo en donde enseño cómo ejecutar varios sistemas operativos REALES, es decir, que no son virtuales, al mismo tiempo usando VirtualBox. Por ejemplo, si tienes instalado Windows XP, Ubuntu y Fedora, y en cada uno tienes aplicaciones que usas a diario, podrías ejecutar Windows XP desde Ubuntu sin necesidad de tener que reiniciar el equipo.</p>
<p style="text-align: justify;">Esto tiene una gran ventaja frente al típico entorno en el cual tienes máquinas virtuales instaladas ya que, cuando realmente quieras usar el otro sistema operativo, lo ejecutas directamente en tu máquina sin las limitaciones de RAM o aceleración gráfica. Es más o menos lo que explicaba en <a href="http://casidiablo.net/correr-windows-preinstalado-sobre-ubuntu/">esta entrada, en donde lo hacia con Windows XP</a>. Pero puesto que algunos han tenido problemas con eso, y otros más me han pedido algo de información más detallada, mejor dejar todo registrado en este vídeo.</p>
<p style="text-align: justify;"><embed src="http://blip.tv/play/gs1QgYDVY5OibA" type="application/x-shockwave-flash" width="640" height="430" allowscriptaccess="always" allowfullscreen="true"></embed></p>
<p style="text-align: justify;">Como siempre lo he subido en <a href="http://blip.tv/file/2097553">Blip.tv</a>, <a href="http://www.youtube.com/watch?v=DcmLNy08iag">Youtube</a> y <a href="http://www.vimeo.com/4591443">Vimeo</a>. El vídeo es completamente libre, puedes darle el uso que desees; si deseas el vídeo original para cualquier propósito me contactan por correo.</p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/correr-diferentes-so-instalados-con-vbox/feed/</wfw:commentRss>
		<slash:comments>77</slash:comments>
		</item>
		<item>
		<title>Ejecutar Windows instalado en el disco duro desde Ubuntu usando VirtualBox</title>
		<link>http://casidiablo.net/correr-windows-preinstalado-sobre-ubuntu/</link>
		<comments>http://casidiablo.net/correr-windows-preinstalado-sobre-ubuntu/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 04:01:38 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[software libre]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[maquinas]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtuales]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=1623</guid>
		<description><![CDATA[Muchas veces tenemos un sistema Windows instalado/configurado/personalizado antes de instalar nuestra distro favorita, y desearíamos no perder dicho trabajo y poder a la vez ejecutar aplicaciones nativamente para Windows desde nuestro querido Linux. Lo que podemos hacer en este caso es crear una imagen de acceso virtual de nuestro disco duro, y con ella ejecutar [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fcorrer-windows-preinstalado-sobre-ubuntu%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Ejecutar%20Windows%20instalado%20en%20el%20disco%20duro%20desde%20Ubuntu%20usando%20VirtualBox%22%20%7D);"></div>
<p>Muchas veces tenemos un sistema Windows instalado/configurado/personalizado antes de instalar nuestra distro favorita, y desearíamos no perder dicho trabajo y poder a la vez ejecutar aplicaciones nativamente para Windows desde nuestro querido Linux.</p>
<p>Lo que podemos hacer en este caso es crear una imagen de acceso virtual de nuestro disco duro, y con ella ejecutar Windows desde Linux. </p>
<div class="nota"><strong>Paso cero (opional)</strong>: muchas veces, cuando Windows inicia, éste reescribe información de drivers en su configuración, de acuerdo al hardware sobre el que corre. Por tanto, y para no correr riesgos de estropear nada, podríamos crear un nuevo perfil de hardware alterno. Para ello vamos a las propiedades de Mi PC, seleccionamos la pestaña Hardware y hacemos clic en Perfiles de hardware. Luego hacemos clic en Copiar y ya está, aceptamos todo, reiniciamos y volvemos a la tranquilidad de nuestro Linux.</div>
<h3>Paso 1: crear imagen del disco duro</h3>
<div class="consola">:~/.VirtualBox$ VBoxManage internalcommands createrawvmdk -filename $HOME/.VirtualBox/WinXP.vmdk -rawdisk /dev/sdb2 -relative -register</p>
<p>VirtualBox Command Line Management Interface Version 2.0.2<br />
(C) 2005-2008 Sun Microsystems, Inc.<br />
All rights reserved.</p>
<p>RAW host disk access VMDK file /home/cristian/.VirtualBox/WinXP.vmdk created successfully.</p></div>
<p>En realidad lo que se crea es un especie de &#8220;acceso directo&#8221; al disco, es decir, NO crea una imagen con los datos del disco duro sino acceso al mismo. </p>
<h3>Paso 2: añadir el disco duro virtual a VirtualBox</h3>
<p>Abre VirtualBox y selecciona <em>Archivo-&gt;Administrador de discos virtuales</em> (<em>File-&gt;Virtual Disk Manager</em> en inglés), clic en el botón <em>Añadir</em> (<em>Add</em>) y seleccina el archivo que acabas de crear.</p>
<h3>Paso 3: crear una nueva máquina virtual</h3>
<p>Clic en el botón <em>Nueva</em> (<em>New</em>) y <em>Siguiente</em> (<em>Next</em>) en el asistente de creación de máquinas virtuales. Digita <em>WinXP</em> como nombre y selecciona <em>Windows XP</em> como tipo de máquina virtua, clic en <em>Siguiente</em> (<em>Next</em>).<span id="more-1623"></span></p>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2008/09/virtualbox-1.png" alt="virtualbox" /></p>
<p>Selecciona la cantidad de memoria RAM que deseas otorgar a la máquina virtual.</p>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2008/09/virtualbox-2.png" alt="virtualbox" /></p>
<p>Ahora es donde debemos seleccionar el disco duro que hemos creado, así que has clic en <em>Existente</em> (<em>Existing</em>) y selecciona el disco duro que añadiste en el <em>paso 2</em>. Clic en <em>Siguiente</em> y luego en <em>Finalizar</em>.</p>
<h3>Paso 4: configurar la nueva máquina virtual</h3>
<p>Selecciona la máquina virtual <em>WinXP</em>, clic derecho y <em>Configuración</em> (<em>Settings</em>). Allí habilita el audio, los <em>Puertos seriales</em> (<em>Serial Ports</em>), los <em>Puertos USB</em> (<em>USB ports</em>), asigna el drive CD/DVD a la unidad local, y añade los <em>Directorios Compartidos</em> (<em>Shared Folders</em>) que sean necesarios, etc.</p>
<p>Ahora simplemente has clic en <em>Iniciar</em> (<em>Start</em>) y verás el menú de tu grub (o lilo), donde podrás seleccionar y ejecutar Windows XP (no es recomendable ejecutar el SO Linux que ya está corriendo). Recuerda que todos los cambios que realizes sobre la máquina virtual se verán reflejados en el SO original.</p>
<h3>Problemas y soluciones</h3>
<p>Uno de los problemas normales que pueden ocurrir, es al momento de crear el disco virtual. En la mayoría de los casos se trata de problemas de permisos, y tenemos algunas opciones para solventarlo:</p>
<ol>
<li>Realizar todo como root (NO RECOMENDADO)</li>
<li>Cambiar los permisos de los discos duros:
<div class="consola">sudo chmod 666 /dev/sdb2</div>
<p>(Más o menos recomendado)</li>
<li>Crear un nuevo usuario con los permisos indicados:
<div class="consola">sudo adduser rawvb &#8211;ingroup MYGROUP &#8211;no-create-home<br />
sudo adduser rawvb disk<br />
sudo adduser rawvb vboxusers</div>
<p>Luego puedes crear un script que ejecute VirtualBox adecuadamente:</p>
<div class="consola">#! /bin/bash<br />
VBUSER=rawvb                           # nombre del usuario que es miembro del grupo disk<br />
VM_NAME=xpraw                         # nombre de la maquina virtual      </p>
<p>chmod -R g=u /home/$USER/.VirtualBox   # asegurarse que el otro usuario tenga acceso a la configuracion del VirtualBox<br />
xauth extract /home/$USER/cookieTmp $DISPLAY<br />
chmod g+r /home/$USER/cookieTmp<br />
sudo -u $VBUSER XAUTHORITY=/tmp/.Xauthority_$VBUSER xauth merge /home/$USER/cookieTmp<br />
rm /home/$USER/cookieTmp<br />
sudo -u $VBUSER XAUTHORITY=/tmp/.Xauthority_$VBUSER VBOX_USER_HOME=/home/$USER/.VirtualBox VBoxManage startvm $VM_NAME&amp;</p></div>
<p>Es la manera RECOMENDADA aunque es un poco más larga. Es tu desición.</li>
</ol>
<p>Otro problema puede ser que Windows no arranque <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  (pequeño problema <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ), lo cual se puede deber al hardware, por ejemplo: supón que tienes una nVidia y haces uso de ella en Windows&#8230; luego VBox (que no tiene soporte para aceleración gráfica) carga Windows con su hardware emulado, entonces Windows dice <em>¿Qué demonios pasa? ¿No pillo bien el hardware? ¿Qué ha pasado? Bueno, mejor ni arranco, que se las apañe el usuario solito</em>. En esos casos no podrás ¿disfrutar? de tu Windows.</p>
<p>En lo personal, me ha funcionado en uno de dos computadores donde hice la prueba. Aunque eso no dice mucho, así que lo mejor será leer sus comentarios.</p>
<p><strong>Actualización</strong>: me envía Pablo Derendinger <strong><a href="http://casidiablo.net/descargar/windows+en+ubuntu">los pasos que el siguió y que le funcionaron</a></strong>&#8230; se basó en esta guía pero añadió un par de pasos que seguro resultarán útiles a algunos usuarios con problemas.</p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/correr-windows-preinstalado-sobre-ubuntu/feed/</wfw:commentRss>
		<slash:comments>156</slash:comments>
		</item>
		<item>
		<title>Instalar fuentes Office 2007 en Linux</title>
		<link>http://casidiablo.net/instalar-fuentes-office-2007-en-linux/</link>
		<comments>http://casidiablo.net/instalar-fuentes-office-2007-en-linux/#comments</comments>
		<pubDate>Sat, 09 Aug 2008 18:14:42 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[fuentes]]></category>
		<category><![CDATA[instalar]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=1297</guid>
		<description><![CDATA[No suelo usar la suite ofimática de Windows Office 2007, pero siempre me gustó la fuente que trae por defecto: Calibri. Me parece bastante elegante, y aunque por obvias razones no son libres me gusta tenerlas a mano en mi equipo. Al grano! En cualquiera de los casos necesitamos el paquete PowerPoint Viewer de Microsoft. [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Finstalar-fuentes-office-2007-en-linux%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Instalar%20fuentes%20Office%202007%20en%20Linux%22%20%7D);"></div>
<p>No suelo usar la suite ofimática de Windows Office 2007, pero siempre me gustó la fuente que trae por defecto: Calibri. Me parece bastante elegante, y aunque por obvias razones no son libres me gusta tenerlas a mano en mi equipo. Al grano!</p>
<p>En cualquiera de los casos necesitamos el paquete <a href="http://www.microsoft.com/downloads/details.aspx?familyid=048DC840-14E1-467D-8DCA-19D2A8FD7485&amp;displaylang=en">PowerPoint Viewer</a> de Microsoft.</p>
<h3>Instalarlas sin necesidad de wine</h3>
<ol>
<li>Instalar cabextract.  En Fedora o openSuse, correr este comando: <code style="overflow: auto; display: block; white-space: pre;">sudo yum -y install cabextract</code>En Debian o Ubuntu correr este comando: <code style="overflow: auto; display: block; white-space: pre;">sudo apt-get install cabextract</code></li>
<li>Descargar el <a href="http://www.microsoft.com/downloads/details.aspx?familyid=048DC840-14E1-467D-8DCA-19D2A8FD7485&amp;displaylang=en">PowerPoint Viewer 2007</a>.</li>
<li>Extraer el .exe: <code style="overflow: auto; display: block; white-space: pre;"> cabextract -F ppviewer.cab PowerPointViewer.exe</code></li>
<li>Preparar un direcotorio para instalar las fuentes: <code style="overflow: auto; display: block; white-space: pre;">sudo mkdir /usr/share/fonts/vista</code></li>
<li>Extraer las fuentes: <code style="overflow: auto; display: block; white-space: pre;">sudo cabextract -F '*.TT?' -d /usr/share/fonts/vista ppviewer.cab </code><br />
<strong>Tip</strong>: Puedes sustituir /usr/share/fonts con ~/.fonts si no tienes permisos administrativos.</li>
<li>Actualizar el caché: <code>fc-cache -fv</code></li>
</ol>
<h3>Instalarlas usando wine</h3>
<ol>
<li>Instalar wine.  En Fedora o openSuse, correr este comando: <code style="overflow: auto; display: block; white-space: pre;">sudo yum -y install wine</code>En Debian o Ubuntu correr este comando: <code style="overflow: auto; display: block; white-space: pre;">sudo apt-get install wine</code><code style="overflow: auto; display: block; white-space: pre;"></code></li>
<li>Descargar <a href="http://www.microsoft.com/downloads/details.aspx?familyid=048DC840-14E1-467D-8DCA-19D2A8FD7485&amp;displaylang=en">PowerPoint Viewer 2007</a>.</li>
<li>Instalar el visor: <code style="overflow: auto; display: block; white-space: pre;">wine PowerPointViewer.exe</code></li>
<li>Copiar las fuentes: <code style="overflow: auto; display: block; white-space: pre;">sudo mkdir /usr/share/fonts/vista<br />
cd ~/.wine/drive_c/windows/fonts/<br />
sudo mv {CALIBR,CAMBRIA,CANDARA,CONSOLA,CONSTAN,CORBEL}*.TT? \<br />
/usr/share/fonts/vista</code><strong>Tip</strong>: Puedes sustituir /usr/share/fonts con ~/.fonts si no tienes permisos administrativos.</li>
<li>Actualizar el caché: <code>fc-cache -fv</code></li>
</ol>
<h3>Licencia de las fuentes:</h3>
<p>You may use the fonts that accompany the PowerPoint Viewer only to display and print content from a device running a Microsoft Windows operating system.</p>
<p>Fuente: <a href="http://www.oooninja.com/2008/01/calibri-linux-vista-fonts-download.html">OpenOffice Ninja</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/instalar-fuentes-office-2007-en-linux/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

