Hola Antonio,
No conozco Advance Installer, pero te recomiendo que pruebes con una aplicación
de software libre llamada Jsmooth, es fácil de instalar y de utilizar, y nunca
me ha dado problemas con los permisos.
Saludos!
To: SoloJava@...
From: robert@...
Date: Tue, 3 Jun 2008 15:37:27 -0430
Subject: Re: [SoloJava] Permisologia en Windows Vista
On Tue, 2008-06-03 at 13:27 -0430, Antonio León wrote:
> Buenas tardes.
>
>
>
> Tengo una aplicación hecha en Java, empaquetada para instalación
> utilizando Advance Installer.
>
>
>
> Todo va bien con la aplicación cuando se instala y ejecuta en sistemas
> operativos anteriores a Windows Vista, pero aunque la instalación con
> Windows Vista ocurre sin inconvenientes, cuando se ejecuta la
> aplicación intenta obtener permisos para escribir en el directorio
> donde está instalada (por defecto C:\Program Files\Empresa\Aplicacion)
> y el sistema operativo le niega los permisos de escritura en ese
> directorio, por lo que ocurre una falla.
Tienes varias opciones, de la mas rápida a la más apropiada (se pone más
feo cada vez que bajas en esta lista :-P)
1. no conozco advanced installer, pero debe tener una opción para
modificar la permisología en Windows (no lo recomiendo)
2. Usar mecanismos propios de Java para grabar datos (por ejemplo
preferences API
http://java.sun.com/j2se/ )1.4.2/docs/ guide/lang/ preferences. html
3. Leer la propiedad de Java "user.home" y grabar los datos que
requiera tu programa en alguna carpeta que tu crees allí
(.myaplicacion quedaría bien porque hasta en Unix/Linux te
crearía un directorio escondido) NOTA he leido que Windows Vista
no te permite grabar por defecto en tu propio user home (una
loquera, pero como que es cierto) así que tienes que seguir
explorando las opciones siguientes (y es recomendable seguir las
reglas del OS que cambiar como viene por defecto)
4. Si estás usando Java 5 o superior, puedes obtener la variable de
entorno APPDATA cuando detectas que tu aplicación está corriendo
en Windows, su valor en Windows XP sería algo como "C:\Document
and Settings\usuario\Datos de Programa", en Vista está en algún
lugar de "C:\Users" que no recuerdo ahora
5. Solo en Windows Vista existe LOCALAPPDATA como variable de
entorno que almacena un directorio muy parecido a APPDATA pero
que por las convenciones de Windows, solo almacena datos de
programas específicos a un usuario en una maquina en particular,
es decir si el ambiente Windows tiene Roaming Profiles (perfiles
de usuarios en la red) esos datos no se replicarán (OJO
LOCALAPPDATA no es una variable de entorno de Windows XP, el
directorio existe pero no la variable)
6. si necesitas usar LOCALAPPDATA en Windows XP también no te queda
más que usar JNI con la función C de Windows "SHGetFolderPath"
http://msdn.microsoft. (VS.85).aspxcom/en-us/ library/bb762181
¿Que opción tomar?, depende de que grabas,
Yo nunca tomaría la opción 1 :-P. opción 2 si lo que grabas son datos de
configuración tipo Properties. opción 3 como mínimo si almacenas
archivos de contenido variado (no se cache, imágenes, etc),
Las opciones 4,5,6 solo hacen que tu aplicación cumpla con las reglas de
desarrollo Windows de MS, necesarias para una certificación por ejemplo,
o si quieres que tu usuario tenga una experiencia 100% satisfactoria en
Windows (es decir que ni se de cuenta que es una aplicación Java).
Opción 4 si los datos que almacenas son datos que el usuario puede usar
desde cualquier máquina (si usa Roaming Profiles), opción 5 si los
archivos son estrictamente locales, y por último opción 6, lo mismo que
la 5 pero necesaria para Windows XP
Probablemente tengas que usar una combinación de estas, si tienes datos
a almacenar de diferente naturaleza
> Cuando la instalación se realiza en un directorio diferente (por
> ejemplo C:\Aplicacion), con Windows Vista, todo funciona
> correctamente.
>
>
>
> Lo que quisiera es modificar el código para solicitar al sistema
> operativo los permisos para escribir, independientemente del
> directorio donde se instale la aplicación.
>
no te recomiendo cambiar permisologías, debes adaptar tu programa a las
convenciones de Windows. Si no tendrás siempre problemas, por ejemplo
hay programas que instalan en "Archivos de Programa" e intentan grabar
allí, algo que hasta en Windows XP falla cuando usas un usuario no
administrador (cosa que se debe hacer siempre y hasta ahora es que MS
apredió a obligar a los desarrolladores a respetar esa regla tan básica
que otros OSs han hecho por años)
>
>
> ¿Alguno sabe qué debo o puedo hacer?
>
>
>
> Gracias de Antemano
>
>
>
> --
>
> Tarde o temprano, la teoría es asesinada por la experiencia. Albert
> Einstein
>
> Antonio León
>
>
_____________________ _________ _________ _
Robert Marcano
web: http://www.marcanoonline.com/
gpg --keyserver hkp://pgp.mit.edu/ --recv-key 72A0DCFD
Get your fix of news, sports, entertainment and more on MSN Mobile Get your fix now!