2010-02-04 17 views
7

Tengo un instalador escrito en Java usando Izpack. Funciona bien en Windows XP, sin embargo, en Windows 7 no puede escribir en c: \ Archivos de programa. Curiosamente, como usuario que ejecuta este instalador, puedo crear carpetas en c: \ archivos de programa, pero no desde el instalador.No se puede instalar en c: Archivos de programa en Windows 7

¿Qué me estoy perdiendo?

+0

¿Qué quiere decir por 'como un usuario que ejecuta el instalador', frente a 'no desde el propio instalador. ¿Cómo se llama el instalador? –

+0

Quiero decir manualmente, es decir, usando el explorador puedo crear archivos y directorios en c: \ archivos de programa, pero programáticamente, es decir, desde este instalador Java - No puedo – Demiurg

+0

Finalmente resolví el problema haciendo que el instalador solicite la escalada de privilegios adecuada como se sugiere a continuación. – Demiurg

Respuesta

6

con el fin de escribir en esta ruta, el instalador tendría que solicitar y se le concedió ejecutar como privilegios de administrador.

Para Java: Ejecutar el símbolo del CMD como administrador o PowerShell como administrador y vaya a Bin dir de JAVA .... y ejecutar java.exe ruta jar #FULL del archivo JAR # que conseguirá que los privledges

+0

Estoy ejecutando la aplicación como administrador. Como ya mencioné, puedo crear archivos y directorios en c: \ archivos de programa como el usuario que ejecuta el instalador, ¡pero el instalador no puede! – Demiurg

+0

Hay una gran diferencia entre ser un usuario administrador y ejecutar una aplicación 'Como administrador'. Haga clic derecho en el instalador y verá un ícono de escudo con la ejecución como administrador al lado. Elija esa opción. – Alex

+3

ejecución del indicador de CMD como administrador o PowerShell como administrador y vaya a Bin dir de JAVA .... y ejecutar java.exe-jar #FULL ruta del archivo JAR # que conseguir que los privledges – Alex

1

Debe ejecutar el instalador como administrador. Solo el administrador puede escribir en el directorio Archivos de programa. Por lo general, cuando un usuario intenta realizar cambios, el UAC le pregunta si está seguro. Esto no es necesariamente cierto para un programa.

+0

Me postulo como administrador, consulte más arriba para obtener más información – Demiurg

+1

Ejecutar como administrador en Windows Vista y 7 no significa ejecutar como administrador en Windows XP. Aún tiene que otorgar privilegios de software para el UAC. – Joel

+0

Además, esos privilegios no son transitivos. Si su programa de host ha recibido acceso UAC, el elemento secundario, por defecto, no lo está. – Joel

1

¿Has probado con Run As ... Administrator option?

+0

Como el instalador es un archivo .jar, no puedo usar "ejecutar como", pero de nuevo, este no es el problema - Lo estoy ejecutando como administrador – Demiurg

+1

Si ha iniciado sesión como administrador, esto no significa que el la aplicación que ejecuta obtendrá privilegios de administrador. – anthares

+1

Para ser más específico, no se está ejecutando como administrador. Se está ejecutando como un usuario privilegiado que puede elevar a administrador, con confirmación de UI. Por ejemplo, cada vez que cree una carpeta en el Explorador, debe obtener un mensaje de confirmación de UAC preguntándole si está bien hacerlo. No hay forma de evitarlo (a menos que deshabilite el UAC), y no está mágicamente ajustado en todas las aplicaciones. Su aplicación debe conocer este problema y solicitar que el sistema se eleve (mostrando el cuadro de diálogo de UAC y preguntando al usuario si está de acuerdo con eso) siempre que necesite acceso de "administrador real". –

1

Añadir

<run-privileged/> 

a la parte info de su installer.xml.

Ejemplo de here:

<info> 
    <appname>IzPack</appname> 
    <appversion>4.2.0</appversion> 
    <authors> 
     <author email="" name="Julien Ponge (project founder)"/> 
     <author email="" name="The fantastic IzPack developers and contributors"/> 
    </authors> 
    <url>http://izpack.org/</url> 
    <javaversion>1.5</javaversion> 
    <requiresjdk>no</requiresjdk> 
    <run-privileged condition="izpack.windowsinstall.vista|izpack.macinstall"/> 
    <summarylogfilepath>$INSTALL_PATH/installinfo/Summary.htm</summarylogfilepath> 
</info> 
Cuestiones relacionadas