Ir al contenido


Foto

Registrar archivos de ayuda .HLP y .CHM


  • Por favor identifícate para responder
5 respuestas en este tema

#1 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 14 diciembre 2010 - 02:19

Hola:

Pongo aquí, con los fuentes, una sencilla utilidad que sirve para registrar archivos de ayuda de Windows, los famosos archivos de extensión .hlp, que eran el formato de ayuda standard de Windows hace unos años. También se permite registrar archivos en formato .chm, es decir formato de ayuda del tipo HTML, algo más moderno pero que también va quedando superado por los sistemas actuales de ayuda sincronizable online (como los Hx? y auxiliares que trae Delphi 2010). Estos archivos pueden residir en nuestro disco duro y ser accedidos con un simple doble click, pero para que realmente puedan ser invocados desde una aplicación mediante un sistema de comandos y macros, como por ejemplo pulsar F1 desde cualquier ventana o control de dicha aplicación, es necesario que o bien la aplicación conozca su ubicación completa, o bien que estén registrados en el Registro de Windows. Así pues, el registrarlos es necesario para aquellas aplicaciones que quieren invocar una ayuda llamando al nombre del fichero sin especificar la ruta, en esos casos el Registro es quien nos da la información de dónde se ubica. El IDE de Delphi, al menos en determinadas versiones, necesita echar mano del Registro para mostrar la ayuda que lo acompaña, y también resulta imprescindible para aquellas herramientas de terceros, componentes y demás, que quieren acceder a la ayuda que trae Delphi invocando simplemente el nombre del archivo sin necesidad de saber dónde está almacenada.

Concretamente los .hlp se registran en la clave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Help

y los .chm en la clave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\HTML Help

Resulta que al instalar varias versiones de Delphi en la misma máquina, me sucedió que en algunas no funcionaba el sistema de ayuda, tanto al teclear F1 como al pulsar la opción correspondiente del menú, mostrando un mensaje del tipo:

"No se puede hallar el archivo de ayuda Delphi6.hlp. Compruebe si existe en su disco; de lo contrario necesitará instalarlo de nuevo"

El archivo sí que estaba en su sitio, pero no aparecía registrado. No sé si esta pérdida se produce por instalar varios Delphis en la misma máquina y que una instalación sobreescribe en el Registro datos de la otra, pienso en esto porque curiosamente no me ocurre con Delphi 7 que usa una notación diferente (d7.hlp, d7com.hlp frente a delphi4.hlp, del4com.hlp ó delphi5.hlp, del5com.hlp, pe.). Sea como sea, en un principio reinstalé la versión de Delphi que me daba problemas, de forma completa ya que la opción personalizada con sólo los "archivos de ayuda" no solventó nada, y así se solucionó, pero viendo que sucedía luego en otras versiones, y también en otra máquina, opté por registrar los archivos de forma manual.

Para solucionar problemas de este tipo y no tener que ir metiendo entradas al Registro una a una, he creado esta utilidad, sencilla de manejar, basta con: (1) indicar la carpeta donde se alojan los archivos de ayuda, normalmente en la carpeta Delphi\Help; (2) marcar los archivos que se desea registrar (lo normal es seleccionarlos todos, el Registro ya ignorará los duplicados) y pulsar el botón para generar las entradas relativas a dichos archivos; (3) finalmente la utilidad permite o bien registrarlos directamente o bien generar un archivo .reg que puede ser utilizado en otras ocasiones y en otras máquinas.

Al crear las entradas del registro, la utilidad crea también por defecto las relativas a ficheros "acompañantes" de los .hlp, como son los archivos con tablas de contenidos (.cnt y .toc), sólo en caso de que dichos archivos existan, claro.

Y aunque está pensado para solucionar esas "desinstalaciones" de las ayudas de Delphi, se puede emplear naturalmente para registrar cualquier fichero de ayuda en dichos formatos que tengamos en nuestro disco, si un buen día detectamos que no son reconocidos.

Junto al ejecutable y los fuentes viene un archivo Leeme.txt donde se explica mejor su funcionamiento.

A mí me ha servido y espero que a alguien le sirva también, aunque lo ideal sería que no hiciera falta tener que recurrir a esto.  :undecided:

Saludos




NOTA1: Aunque esta utilidad toca el registro, algo que siempre debe hacerse con precaución, no lo hace de forma que pudiera resultar dañina, lo peor que pudiera pasar es tener registrados unos valores referentes a archivos que no se usen, pero no altera nada que pudiera repercutir en el buen funcionamiento de la máquina. También señalar que en sistemas como Windows Vista o W7 donde se exige mayor autenticación, el programa puede arrojar una excepción cuando se usa la opción de acceder directamente al registro, para evitarlo hay que ejecutarlo como Administrador (sobre el archivo pulsar Propiedades - Opciones avanzadas - Ejecutar como Administrador), o bien simplemente usar la opción de guardar las entradas en un fichero .reg para insertarlo luego desde fuera de la utilidad (donde igualmente nos pedirá permisos).

NOTA2: Si decidimos guardar las entradas generadas en un fichero .reg para registrarlas en otras máquinas, hay que comprobar que en esa otra máquina los archivos de ayuda residan en la misma ubicación. Si no es así, podemos editar el fichero .reg y corregirlo, mediante el bloc de notas por ejemplo, teniendo en cuenta que en los ficheros .reg las direcciones se representan utilizando una doble barra (\\) para separar una carpeta de otra (C:\\Borland\\Delphi6\\Help en vez de C:\Borland\Delphi6\Help).

NOTA3: Los ficheros .hlp, que son los usados por Delphi 3 a Delphi 7, emplean un sistema de ayuda basado en el programa WinHlp32.exe (WinHlp.exe en versiones antiguas), que venía incorporado en Windows 95, 98, NT, 2000 y XP, pero Microsoft ya no lo distribuye con Windows Vista ni posteriores. Para poder visualizar esta clase de ayuda, si tenemos Vista, W7 o Windows Server 2008, deberemos descargar dicho programa desde esta dirección, donde hay que elegir bajo qué SO se va a utilizar. Por lo que dice en dicho boletín literalmente, "los desarrolladores de software de terceros ya no están autorizados a redistribuir WinHlp32.exe con sus programas".

Archivos adjuntos


  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 14 diciembre 2010 - 05:27

Este tipo de programas siempre son de utilidad.  :)

Saludos.
  • 0

#3 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 14 diciembre 2010 - 05:59

Gracias amigo (y)... nunca lo he utilizado pero el día que lo necesite vendré corriendo para acá  *-)  :D

Saludox ! :)
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 14 diciembre 2010 - 10:50

Muchas gracias Andrés, siempre son interesantes tus aportaciones (y)

Salud OS
  • 0

#5 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 15 diciembre 2010 - 07:25

Este tipo de programas siempre son de utilidad.  :)

Gracias amigo (y) ... nunca lo he utilizado pero el día que lo necesite vendré corriendo para acá  *-) :D

Muchas gracias Andrés, siempre son interesantes tus aportaciones (y)


Pues espero que no os haga falta, lo que me ha sucedido es algo curioso y raro, raro, además me fui a otra máquina, con XP, donde tengo también varios Delphis desde hace años y lo mismo, no podían acceder a las ayudas, ahora me pregunto a qué se debe que se borraran esas entradas, se me ocurren varios motivos pero ninguno me convence  :undecided: :undecided: :undecided:

Por otro lado, he corregido en el mensaje que puse antes, éso de que es imprescindible que las ayudas estén registradas para poderse acceder desde comandos. En realidad sólo es necesario registrarlas cuando vamos a acceder a ellas conociendo sólo el nombre del fichero, pero no la ruta, ahí es donde el Registro sí sale en nuestro auxilio.

Ejemplo: Si yo creo mi aplicación y le acompaña un fichero .hlp de ayuda, cuando el usuario pulsa F1 se accede al fichero indicado en la propiedad HelpFile de TApplication, o, si hemos epecificado un fichero en la propiedad HelpFile del formulario, acude a este último. Si asignamos el nombre de un fichero indicando la ruta entera, no hará falta que lo registremos, pero esto supone almacenar en algún sitio (un fichero .ini por ejemplo) la ubicación donde se instaló la ayuda, y actualizar dichas propiedades al cargarse el programa. Y si optamos por registrarlo, por ejemplo durante el proceso de instalación, no tendremos ya que modificar dichas propiedades en ejecución, basta con que tengan el nombre simple del fichero.

En el caso del IDE de Delphi es necesario registrar la ayuda porque hay muchos componentes de terceros que en sus sistemas de ayuda vinculan directamente a las ayudas que trae Delphi, para enlazar con propiedades, objetos ... etc, y no pueden ni tienen por qué saber de antemano en qué carpeta se instaló Delphi, así que acceden invocando únicamente el nombre. Y el mismo Delphi, como se ve, hasta la v. 6 que yo sepa, también accede sólo con el nombre a secas.

Saludos
  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 15 diciembre 2010 - 08:22

Muchissimas gracias amigo (y)
  • 0




IP.Board spam blocked by CleanTalk.