Saltar al contenido

Incrustar un manifiesto de aplicación en un exe de VB6

Después de investigar en diferentes repositorios y foros al terminar hemos descubierto la solución que te mostramos a continuación.

Solución:

VB6 tiene una peculiaridad en el sentido de que cualquier elemento de recurso debe ser un múltiplo exacto de 4 de longitud. Intente rellenar el archivo de manifiesto con espacios para garantizar esto y vea si eso cambia el comportamiento.

Esta peculiaridad se documentó en el artículo de Microsoft Q297112 (archivo).

Además, puede agregar el recurso utilizando el IDE de VB6 en lugar de editar el VBP. El efecto puede ser el mismo, pero el editor de recursos es el medio estándar para hacerlo.

Curiosamente, tuve que hacer exactamente lo mismo recientemente. Siguiendo los pasos que Christian describió, conseguí que funcionara la primera vez. Para la prosperidad, aquí está todo el flujo de trabajo que seguí:

  1. Creó un archivo RC como se describe en la pregunta original
  2. Creó un app.manifest, conservando los caracteres de espacio en blanco, que son MUY IMPORTANTES para que esto funcione. Como se indicó en respuestas anteriores, el tamaño del archivo debe ser un múltiplo de 4.

  3. Ejecutó RC.EXE como se describe en la pregunta original contra el rc para generar el archivo .res

  4. Edité mi archivo Project.VBP para incluir la siguiente línea cerca de la parte superior:

ResFile32=”Recursos.res”

  1. EXE integrado en el entorno vb6 estándar. Cuando se implementa en una máquina vista o win7, aparece el escudo y se le pide al usuario que se ejecute como administrador. Al abrir el archivo EXE en el estudio, verifiqué los recursos.

  2. Notepad++ me dice que la codificación en mi archivo app.manifest es ANSI. No incluía una marca de orden de bytes al comienzo del archivo.

Si todavía tiene problemas, hágamelo saber y compartiré todo lo que pueda con usted. Aparte de eso, no estoy seguro de qué decirle aparte de ¡Funciona en mi máquina!

El uso del Compilador de recursos (rc.exe) es muy complicado. Hay una opción mucho más simple para incrustar un manifiesto de aplicación dentro de un ejecutable, ya sea C++ o VB6 o cualquier otro idioma. La herramienta de manifiesto (mt.exe) se escribió específicamente para incrustar manifiestos en archivos binarios y se proporciona de forma gratuita con el SDK de Windows. El beneficio adicional de usar mt.exe es que maneja automáticamente cualquier relleno necesario.

Simplemente ejecute la siguiente línea de comando después de compilar el binario. He usado la convención de nomenclatura utilizada internamente por el compilador de Visual C++ 2005, donde el nombre de archivo del manifiesto contiene el nombre completo del programa con “.intermediate.manifest” adjunto.

mt.exe -nologo -manifest "program.exe.intermediate.manifest" -outputresource:"program.exe;#1

Actualizar: Personalmente, he estado usando esto en un proceso de compilación automatizado con ejecutables de VB6 durante más de dos años. Ha tenido tanto éxito que hemos eliminado las pruebas de compatibilidad del sistema operativo, específicas de los manifiestos, de nuestras pruebas de regresión.

Recuerda que puedes optar por la opción de reseñar tu experiencia .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *