2009-10-27 9 views
10

Aunque NSIS le permite crear instaladores bastante potentes, el "lenguaje de tan bajo nivel que me recuerda el ensamblaje" que NSIS usa es bastante propenso a cometer errores y por lo tanto, cuando desea que su instalador haga algo más complejo que escribir archivos, la depuración es imprescindible.Métodos para depurar instaladores de NSIS?

Hasta ahora he utilizado el siguiente Dr. Printf técnica de depuración -como:

  • En un archivo .nsh que incluyo en todas partes, defino un NSIS_DEBUG_MSG macro de acuerdo con el valor de un DEBUG definir
    • si es DEBUGen, la macro dará lugar a una de mensaje con el mensaje de depuración
    • si DEBUG es fuera, la macro no hará nada

Este método me ha servido bien pero presenta algunas desventajas:

  • me requiere para llenar el código que Siento que es el que falla con las llamadas al NSIS_DEBUG_MSG y reconstruyo el instalador varias veces hasta que reciba la información suficiente para permitirme resolver el problema
  • me hará ningún bien si mi problema es que el instalador en sí no (si el programa instalador muere)

Así que lo que quería saber es cuáles son los métodos de depuración no se utilizan para estos instaladores por lo que se espera que pueda mejorar el mío

+4

Sería bueno aceptar una respuesta ... –

Respuesta

5

Lo que me ha ahorrado mucho tiempo es utilizar los registros creados por NSIS. Tanto el registro al compilar los scripts como el registro de instalación. Me permiten comprobar que las macros que he definido están en uso, y que la instalación realmente ejecuta los scrips que deberían.

Puede parecer muy poco, pero esto es en realidad todo lo que necesito para mantener mi software de instalación de más de 50 archivos nsh en ejecución, junto con el principio de divide y vencerás.

+0

Sí, solo problema de recopilación y análisis en tiempo de compilación log (en mi entorno de compilación) es que NSIS no tiene ningún tipo de comprobación de bitness en tiempo de compilación. Actualmente, tener un registro altamente integrador solo para 32 bits definitivamente no es una solución duradera, no se trata de un uso de recursos del sistema básicamente ineficaz ... –

2

Puede descargar una de las compilaciones especiales de NSIS desde el sitio oficial que tiene un registro avanzado. Esto le dará información de registro muy detallada que facilita la depuración.

4

Durante mi tiempo utilizando NSIS, hay estas cosas notables:

He descubierto que nada es más poderoso que el análisis detallado 3 salida de nivel con la herramienta hecho a sí mismo;)

que he encontrado! que NO se puede depender de ningún método de depuración basado en NSIS. Puede bloquearse ... y tu instalador se bloqueará junto con él. No es bonita, ¿eh? :(

Descubrí que habilitar/deshabilitar la depuración bajo demanda también es un arma muy poderosa contra los idsses, ya que permite distinguir entre la creación de NSIS inestable y fallida (aunque es más fácil usar la terminología de CI ... :))

He descubierto que la salida detallada w/o en tiempo real automatizado de pruebas NSIS es como conducir Cadillac con motor de la bicicleta :)


creo que sirve para aquellos accidentalmente visitar esta pregunta :)

EDITAR: Siempre es una buena idea comenzar con herramientas de terceros. Por ejemplo, no es necesario que molestar alrededor de interfaz gráfica de usuario, ya que siempre es más fácil de usar herramientas como:


editar # 2: he descubierto que el método muy eficaz para la depuración es utilizar automatización documentación directa. Actualmente uso de los siguientes componentes:

El resultado es que recibí una captura de pantalla después de nsDialog:Show y obtuve imágenes actualizadas en wiki :) ... lo único que queda es obtener información de svnlook :)


EDIT # 3: Y la necesidad de svnlook también se soluciona construyendo un svn log --xml exportando DLL usando el encabezado NSIS v2.44 para Delphi y Lazarus IDE 0.9.30.2 :) Felicitaciones a Lazarus!

Woohoo! :)


editar # 4: Hit esta pequeña discusión aquí: http://forums.winamp.com/showthread.php?t=325521

2

uso el DumpState plugin mucho, mucho mejor que un cuadro de mensaje básico para cuestiones de pila. Además, tiendo a usar una macro que establece todos los registros; $ 0 = r0, $ 1 = r1 etc., así que sé que la pila está en el estado correcto. Esto, por supuesto, solo es útil durante la fase de diseño y no tanto para la depuración en el sistema de los usuarios finales ...

+0

Aún así, necesita maintianing como el plugin nsisdbg ... No encuentro ninguna ventaja de hacerlo o tener nsisdbg como salida para "estructuras de datos":/.. ADEMÁS, necesito reparar el complemento de captura de pantalla de nsis para que funcione normalmente en los SO de Windows NT 6.x ... –

Cuestiones relacionadas