PDA

Ver la Versión Completa : Cargar un certificado desde Inno Setup


Zina
05-11-2015, 20:10:37
Hola chicos de nuevo,

Como saben soy nueva con el tema de Inno Setup por lo que ahora necesito agregar un certificado en cacerts con el cmd line keytool: keytool -import -noprompt -trustcacerts -alias, ya lo he hecho manualmente y si lo crea, pero ahora necesito que el mismo intalador de Inno Setup lo haga por mi jejeje, e intentado con [Run] pero sólo al terminar la instalación me ejecuta el ms-dos, pero no hace nada más, espero haberme explicado bien, espero sus comentarios.

Muchas Gracias

Neftali [Germán.Estévez]
06-11-2015, 08:33:19
Aquí, en la propia ayuda de Inno setup (http://www.jrsoftware.org/iskb.php?runbatchfile) tienes ejemplos de cómo lanzar un comando MSDOS desde un script de instalación de Inno setup.

Lo más sencillo es que crees un fichero .BAT con todo lo que necesitas ejecutar y lo lances desde el Inno.

Zina
10-11-2015, 01:24:09
Hola de nuevo,

Ya hice un .bat que me ejecute el agregar un certificado:

keytool -import -noprompt -trustcacerts -alias ....
[Run]
Filename: "{userdesktop}\keytool.bat"
El problema es que a la hora de ejecutarlo entra al cmd y se hace un ciclo sin fin, por lo que tengo que parar la instalación y por lo tanto no me agrega el certificado, ustedes sabrán por que hace eso?

Se los agradezco mucho

mamcx
10-11-2015, 03:14:37
Porque lo haces con el instalador? No va el certificado aplicado al exe que vas a instalar despues?

Zina
10-11-2015, 16:40:15
No, el chiste de esto es que el instalador haga todo, el usuario solo debe de darle clic en instalar y ya, no hacer más tareas, el keytool lo que hace es instalar el certificado en cacerts de Java, el cual agrego en la carpeta de instalación.
Había mandado a traer desde el Inno Setup el cmd:
[Run]
Filename: {cmd}; Parameters: ('keytool -import...')

Pero lo único que hace es mandar a llamar el cmd y no agrega la línea de comando a ejecutar.
Después la sugerencia fue que mandara a llamar un .bat, ahi agregué la linea de comando que necesito pero al ejecutar mi instalador lo hace bien y al final manda llamar el .bat y se queda en un ciclo y no agrega el certificado

dec
10-11-2015, 17:16:48
Hola,

Aquí un artículo en inglés (http://revolution.screenstepslive.com/s/revolution/m/10695/l/95041-signing-installers-you-create-with-inno-setup) que acaso pueda ser de interés.

dec
10-11-2015, 17:23:34
Hola,

Creo que en mi anterior mensaje cometí un error, puesto que me parece ahora que no se trata el tema de cómo firmar nuestro instalador de Inno Setup, sino de otra cosa. Lo lamento, pero, tal vez el artículo enlazado siga sirviendo a alguien: de hecho acabo de probarlo y funciona como se espera.

Zina
18-11-2015, 22:10:14
Hola ,
Retomando el tema, hice un archivo .bat como me lo recomendaron:

echo off
setlocal

set JAVA_HOME=C:\Archivos de programa\Java\jre1.8.0_60

set CERT_NAME=certificado.cer
set CERT_ALIAS=alias1

set KEYTOOL_PASS=changeit

set JAVA_SECURITY=%JAVA_HOME%\lib\security\
set CERT_Ruta=C:\ruta de programa
set CERT=%CERT_Ruta%\%CERT_NAME%
keytool -import -trustcacerts -keystore %JAVA_SECURITY%cacerts -storepass %KEYTOOL_PASS% -noprompt -alias %CERT_ALIAS% -file %CERT%
endlocal
pause

En inno lo mando a traer en
[Run]
Filename: "{userdesktop}\keytool.bat"; Flags: nowait skipifsilent
Pero no me lo ejecuta como yo quisiera :( me sale error : "se ha alcanzado el maximo nivel de recursividad"

Necesito ayuda :(

roman
19-11-2015, 16:23:37
Hola,

Según entiendo, keytool es una herramienta de java, y, por otro lado, también así se llama tu archivo bat. Es posible entonces, que en la línea


keytool -import -trustcacerts -keystore %JAVA_SECURITY%cacerts -storepass %KEYTOOL_PASS% -noprompt -alias %CERT_ALIAS% -file %CERT%


el S.O esté intentando llamar al bat (o sea, a sí mismo) en lugar de la herramienta de java. De ahí la recursividad.

Si esto es lo que pasa, podrías solventarlo especificando la ruta completa a la herramienta y/o cambiando el nombre del bat.

Por otra parte, si la herramienta es un ejecutable, pienso que podrías ejecutarla directamente desde la sección [Run] del script de Inno Setup, en ligar de hacerlo a través de un bat. Aun no siendo un ejecutable (un archivo jar, por ejemplo), la documentación de InnoSetup indica que puedes ejecutarla especificando la opción shellexec.

// Saludos

Zina
20-11-2015, 22:33:12
De verdad, muchas Gracias, ya resultó :D

roman
20-11-2015, 23:50:50
Pues ¡qué bueno! Sería deseable que expusieras cuál fue la solución final para otros que puedan requerir algo similar.

// Saludos

dec
21-11-2015, 12:02:28
Hola,

Hola,

Creo que en mi anterior mensaje cometí un error, puesto que me parece ahora que no se trata el tema de cómo firmar nuestro instalador de Inno Setup, sino de otra cosa. Lo lamento, pero, tal vez el artículo enlazado siga sirviendo a alguien: de hecho acabo de probarlo y funciona como se espera.

A esto tengo que añadir que al final he cambiado el sistema que estaba usando hasta ahora para firmar el instalador por el que proporciona el mismo Inno Setup. Anteriormente, ejecutaba también un archivo BAT después de la instalación, que, se encargaba de "firmar" el ejecutable del instalador.

Pero esto tiene el inconveniente de que el desinstalador (otro ejecutable) no se firmaba. Ahora bien, haciéndolo desde Inno Setup, el mismo programa se encarga de firmar ambos ejecutables instalador y desinstalador. Además de que así no es preciso que hagamos nada luego de crear el instalador, pues Inno Setup se encarga de todo.

Zina
24-11-2015, 00:39:03
Hola,

Efectivamente estaba volviendo a llamar la ruta, mi solución fué poner el certificado (.cer) en la ruta de Java/jre/lib/security
Al archivo .bat le cambié el nombre y ejecuté en Inno.

[Run]
Filename: "{app}\certificado.bat"; Flags: nowait

Y listo eso fué, muchas gracias.