Autor Tema: Exe compilados en windows 7 no funcionan con windows xp  (Leído 12043 veces)

0 Usuarios y 1 Visitante están viendo este tema.

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Exe compilados en windows 7 no funcionan con windows xp
« en: Diciembre 16, 2010, 06:53:42 pm »
Pues eso, Los ejecutables compilados en windows 7 misteriosamente no funcionan en windows xp  :o Al menos a mi no.
Quisiera saber si a alguien mas le pasa y si sabe alguna solucion...

Encontre este post pero no me da solucion alguna: Are there problems with running vb6 executables on Windows XP that were compiled under Windows 7?

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #1 en: Diciembre 16, 2010, 11:18:58 pm »
yo no diria que es problema del compilador, porque yo programo en w7 x64 desde hace mas de 1 año y los .exe generados corren excelente sobre todos los SO. Hice pruebas con el skinner de leandro en W98 (virtual), en WinME tambien y en W2k tengo un soft pedorro andando, ni hablar de XP donde funciona de pelos.

Fijate que el problema debe venir por el .manifest. Proba borrandolo. Si lo tenes como un recurso, sacalo tambien, y proba.

A mi eso siempre pero siempre me trajo problemas, hasta que cobein spawneo del cielo, y desarrollo un soft q genera manifest. De ahi yo lo extraigo, y lo guardo como recurso, y directamente lo compilo asi :P

saludos
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #2 en: Diciembre 17, 2010, 01:40:28 pm »
Si, tienen que ver con algo del manifest...

Usaba el uclistview (que tiene el InitCommonControls) en un formulario que no llamaba a InitCommonControls, con manifest  :-\

Ahora parece andar bien :)

lucius

  • Gigabyte
  • ****
  • Mensajes: 263
  • Reputación: +6/-5
    • Ver Perfil
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #3 en: Diciembre 17, 2010, 02:37:24 pm »
coco, puedes explicar los pasos a seguir para generar el manifest del modo que mencionas, no entendi muy bien.

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #4 en: Diciembre 17, 2010, 02:53:01 pm »
Es facil, bajate el Theme Patcher de cobein:
http://cobein.com/wp/?p=117

Elegis el .exe de tu proyecto, la descripcion, etc. y aplicas. Aca tenes tu .exe con el manifest ya generado, en recursos.

Ahora deberias extraerlo, usa el ResourceHacker o lo que quieras. Guardalo en un archivo .xml o .bin, da igual.

Despues tenes que agregar ese recurso a los que tiene el programa, por ejemplo, si tenes ya un .rc, podes agregarlo asi:
Código: [Seleccionar]
#define LANG_NEUTRAL 0x00
#define SUBLANG_NEUTRAL 0x00
/* ----------------------------------------------------------- */
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
/* ----------------------------------------------------------- */
0 ICON "main.ico"
/* ----------------------------------------------------------- */
1 24 "Manifest.bin"

Y luego "compila" los recursos con RC.EXE, lo que te genera un .res. Este archivo .res lo tiras a la lista de archivos en tu proyecto de VB6, y compilas el .exe y ya tenes los themes.

Ahora, si estas usando los .res del VB6, agrega el archivo como "datos", nombre "1" y tipo "24". Y compila, y estamos.

Saludos
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

xkiz ™

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 283
  • Reputación: +30/-11
    • Ver Perfil
    • xkiz ™
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #5 en: Diciembre 17, 2010, 07:53:29 pm »
esto es lo que uso cuando hago algo con vb6, resource.rc se compila con rc.exe

Código: (rc) [Seleccionar]
#define LANG_NEUTRAL         0x00
#define SUBLANG_NEUTRAL      0x00

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

1 24
MOVEABLE PURE
BEGIN
    0x3f3c, 0x6d78, 0x206c, 0x6576, 0x7372, 0x6f69, 0x3d6e, 0x3122, 0x302e,
    0x2022, 0x6e65, 0x6f63, 0x6964, 0x676e, 0x223d, 0x5455, 0x2d46, 0x2238,
    0x7320, 0x6174, 0x646e, 0x6c61, 0x6e6f, 0x3d65, 0x7922, 0x7365, 0x3f22,
    0x0d3e, 0x3c0a, 0x7361, 0x6573, 0x626d, 0x796c, 0x7820, 0x6c6d, 0x736e,
    0x223d, 0x7275, 0x3a6e, 0x6373, 0x6568, 0x616d, 0x2d73, 0x696d, 0x7263,
    0x736f, 0x666f, 0x2d74, 0x6f63, 0x3a6d, 0x7361, 0x2e6d, 0x3176, 0x2022,
    0x616d, 0x696e, 0x6566, 0x7473, 0x6556, 0x7372, 0x6f69, 0x3d6e, 0x3122,
    0x302e, 0x3e22, 0x0a0d, 0x2020, 0x613c, 0x7373, 0x6d65, 0x6c62, 0x4979,
    0x6564, 0x746e, 0x7469, 0x0d79, 0x200a, 0x2020, 0x2020, 0x7620, 0x7265,
    0x6973, 0x6e6f, 0x223d, 0x2e31, 0x2e30, 0x2e30, 0x2230, 0x0a0d, 0x2020,
    0x2020, 0x2020, 0x7270, 0x636f, 0x7365, 0x6f73, 0x4172, 0x6372, 0x6968,
    0x6574, 0x7463, 0x7275, 0x3d65, 0x5822, 0x3638, 0x0d22, 0x200a, 0x2020,
    0x2020, 0x6e20, 0x6d61, 0x3d65, 0x6322, 0x696c, 0x6e65, 0x2274, 0x0a0d,
    0x2020, 0x2020, 0x2020, 0x7974, 0x6570, 0x223d, 0x6977, 0x336e, 0x2232,
    0x3e2f, 0x0a0d, 0x2020, 0x643c, 0x7365, 0x7263, 0x7069, 0x6974, 0x6e6f,
    0x3c3e, 0x642f, 0x7365, 0x7263, 0x7069, 0x6974, 0x6e6f, 0x0d3e, 0x0d0a,
    0x200a, 0x3c20, 0x2d21, 0x202d, 0x6e45, 0x6261, 0x656c, 0x5720, 0x6e69,
    0x6f64, 0x7377, 0x5820, 0x2050, 0x6e61, 0x2064, 0x6968, 0x6867, 0x7265,
    0x7420, 0x6568, 0x656d, 0x2073, 0x6977, 0x6874, 0x6320, 0x6d6f, 0x6f6d,
    0x206e, 0x6f63, 0x746e, 0x6f72, 0x736c, 0x2d20, 0x3e2d, 0x0a0d, 0x2020,
    0x643c, 0x7065, 0x6e65, 0x6564, 0x636e, 0x3e79, 0x0a0d, 0x2020, 0x2020,
    0x643c, 0x7065, 0x6e65, 0x6564, 0x746e, 0x7341, 0x6573, 0x626d, 0x796c,
    0x0d3e, 0x200a, 0x2020, 0x2020, 0x3c20, 0x7361, 0x6573, 0x626d, 0x796c,
    0x6449, 0x6e65, 0x6974, 0x7974, 0x0a0d, 0x2020, 0x2020, 0x2020, 0x2020,
    0x7974, 0x6570, 0x223d, 0x6977, 0x336e, 0x2232, 0x0a0d, 0x2020, 0x2020,
    0x2020, 0x2020, 0x616e, 0x656d, 0x223d, 0x694d, 0x7263, 0x736f, 0x666f,
    0x2e74, 0x6957, 0x646e, 0x776f, 0x2e73, 0x6f43, 0x6d6d, 0x6e6f, 0x432d,
    0x6e6f, 0x7274, 0x6c6f, 0x2273, 0x0a0d, 0x2020, 0x2020, 0x2020, 0x2020,
    0x6576, 0x7372, 0x6f69, 0x3d6e, 0x3622, 0x302e, 0x302e, 0x302e, 0x0d22,
    0x200a, 0x2020, 0x2020, 0x2020, 0x7020, 0x6f72, 0x6563, 0x7373, 0x726f,
    0x7241, 0x6863, 0x7469, 0x6365, 0x7574, 0x6572, 0x223d, 0x3858, 0x2236,
    0x0a0d, 0x2020, 0x2020, 0x2020, 0x2020, 0x7570, 0x6c62, 0x6369, 0x654b,
    0x5479, 0x6b6f, 0x6e65, 0x223d, 0x3536, 0x3539, 0x3662, 0x3134, 0x3434,
    0x6363, 0x3166, 0x6664, 0x0d22, 0x200a, 0x2020, 0x2020, 0x2020, 0x6c20,
    0x6e61, 0x7567, 0x6761, 0x3d65, 0x2a22, 0x0d22, 0x200a, 0x2020, 0x2020,
    0x2f20, 0x0d3e, 0x200a, 0x2020, 0x3c20, 0x642f, 0x7065, 0x6e65, 0x6564,
    0x746e, 0x7341, 0x6573, 0x626d, 0x796c, 0x0d3e, 0x200a, 0x3c20, 0x642f,
    0x7065, 0x6e65, 0x6564, 0x636e, 0x3e79, 0x0a0d, 0x0a0d, 0x2020, 0x213c,
    0x2d2d, 0x4420, 0x7369, 0x6261, 0x656c, 0x5720, 0x6e69, 0x6f64, 0x7377,
    0x5620, 0x7369, 0x6174, 0x5520, 0x4341, 0x6320, 0x6d6f, 0x6170, 0x6174,
    0x6962, 0x696c, 0x7974, 0x6820, 0x7565, 0x6972, 0x7473, 0x6369, 0x2073,
    0x2d2d, 0x0d3e, 0x200a, 0x3c20, 0x7274, 0x7375, 0x4974, 0x666e, 0x206f,
    0x6d78, 0x6e6c, 0x3d73, 0x7522, 0x6e72, 0x733a, 0x6863, 0x6d65, 0x7361,
    0x6d2d, 0x6369, 0x6f72, 0x6f73, 0x7466, 0x632d, 0x6d6f, 0x613a, 0x6d73,
    0x762e, 0x2232, 0x0d3e, 0x200a, 0x2020, 0x3c20, 0x6573, 0x7563, 0x6972,
    0x7974, 0x0d3e, 0x200a, 0x2020, 0x2020, 0x3c20, 0x6572, 0x7571, 0x7365,
    0x6574, 0x5064, 0x6972, 0x6976, 0x656c, 0x6567, 0x3e73, 0x0a0d, 0x2020,
    0x2020, 0x2020, 0x2020, 0x723c, 0x7165, 0x6575, 0x7473, 0x6465, 0x7845,
    0x6365, 0x7475, 0x6f69, 0x4c6e, 0x7665, 0x6c65, 0x6c20, 0x7665, 0x6c65,
    0x223d, 0x6572, 0x7571, 0x7269, 0x4165, 0x6d64, 0x6e69, 0x7369, 0x7274,
    0x7461, 0x726f, 0x2022, 0x6975, 0x6341, 0x6563, 0x7373, 0x223d, 0x6166,
    0x736c, 0x2265, 0x3e2f, 0x0a0d, 0x2020, 0x2020, 0x2020, 0x2f3c, 0x6572,
    0x7571, 0x7365, 0x6574, 0x5064, 0x6972, 0x6976, 0x656c, 0x6567, 0x3e73,
    0x0a0d, 0x2020, 0x2020, 0x2f3c, 0x6573, 0x7563, 0x6972, 0x7974, 0x0d3e,
    0x200a, 0x3c20, 0x742f, 0x7572, 0x7473, 0x6e49, 0x6f66, 0x203e, 0x0a0d,
    0x0a0d, 0x2020, 0x213c, 0x2d2d, 0x4520, 0x616e, 0x6c62, 0x2065, 0x6957,
    0x646e, 0x776f, 0x2073, 0x6956, 0x7473, 0x2d61, 0x7473, 0x6c79, 0x2065,
    0x6f66, 0x746e, 0x7320, 0x6163, 0x696c, 0x676e, 0x6f20, 0x206e, 0x6956,
    0x7473, 0x2061, 0x2d2d, 0x0d3e, 0x200a, 0x3c20, 0x7361, 0x766d, 0x3a33,
    0x7061, 0x6c70, 0x6369, 0x7461, 0x6f69, 0x206e, 0x6d78, 0x6e6c, 0x3a73,
    0x7361, 0x766d, 0x3d33, 0x7522, 0x6e72, 0x733a, 0x6863, 0x6d65, 0x7361,
    0x6d2d, 0x6369, 0x6f72, 0x6f73, 0x7466, 0x632d, 0x6d6f, 0x613a, 0x6d73,
    0x762e, 0x2233, 0x0d3e, 0x200a, 0x2020, 0x3c20, 0x7361, 0x766d, 0x3a33,
    0x6977, 0x646e, 0x776f, 0x5373, 0x7465, 0x6974, 0x676e, 0x2073, 0x6d78,
    0x6e6c, 0x3d73, 0x6822, 0x7474, 0x3a70, 0x2f2f, 0x6373, 0x6568, 0x616d,
    0x2e73, 0x696d, 0x7263, 0x736f, 0x666f, 0x2e74, 0x6f63, 0x2f6d, 0x4d53,
    0x2f49, 0x3032, 0x3530, 0x572f, 0x6e69, 0x6f64, 0x7377, 0x6553, 0x7474,
    0x6e69, 0x7367, 0x3e22, 0x0a0d, 0x2020, 0x2020, 0x2020, 0x643c, 0x6970,
    0x7741, 0x7261, 0x3e65, 0x7274, 0x6575, 0x2f3c, 0x7064, 0x4169, 0x6177,
    0x6572, 0x0d3e, 0x200a, 0x2020, 0x3c20, 0x612f, 0x6d73, 0x3376, 0x773a,
    0x6e69, 0x6f64, 0x7377, 0x6553, 0x7474, 0x6e69, 0x7367, 0x0d3e, 0x200a,
    0x3c20, 0x612f, 0x6d73, 0x3376, 0x613a, 0x7070, 0x696c, 0x6163, 0x6974,
    0x6e6f, 0x0d3e, 0x3c0a, 0x612f, 0x7373, 0x6d65, 0x6c62, 0x3e79
END

osea esa es mi plantilla de resource...
« última modificación: Diciembre 17, 2010, 07:59:17 pm por xkiz »

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #6 en: Diciembre 17, 2010, 08:05:29 pm »
Es mas facil agregar al exe o .res con el XN Resource sin tener que recompilar denuevo :P

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #7 en: Diciembre 17, 2010, 08:13:03 pm »
Claro, pero suponete que vos compilas seguido... tendrias que usar el XN o el Resource hacker cada vez que compilas... Pero agregando el .res, te ahorras de eso.
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #8 en: Diciembre 17, 2010, 09:27:58 pm »
No probe asi, pero si agrego el .res (con XN o resource hacker) solo con el manifest (nada de icono ni nada) por alguna razon no me compila directo del vb, por eso lo agrego ya cuando esta listo, mientras uso un .manifest :P

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #9 en: Diciembre 17, 2010, 09:59:35 pm »
Es que el compilador de vb no te va a compilar eso... Por tal razon, era el metodo del rc.exe...
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

lucius

  • Gigabyte
  • ****
  • Mensajes: 263
  • Reputación: +6/-5
    • Ver Perfil
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #10 en: Diciembre 18, 2010, 09:45:13 pm »
Ahora si me complicaron, se nota que me falta bastante!
coco ya regenere mi .exe con el Theme Patcher luego con el ResHacker obtuve 2 archivos(nombre.rc y Data_1.bin) y ahi he quedado, como debo seguir, pedoname pero no entiendo.
Ahora veo que hay un par de metodos como el de raul338 el cual tampoco entiendo del todo?

Supongo que lo que se debe evitar es utilizar esas APIs y cargarlas al iniciar la aplicacion
Código: [Seleccionar]
Private Declare Function SetErrorMode Lib "kernel32" (ByVal wMode As Long) As Long 'Aplica el estilo de Windows XP
Private Declare Sub InitCommonControls Lib "Comctl32" () 'Aplica el estilo de Windows XP


coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #11 en: Diciembre 18, 2010, 11:07:31 pm »
Bueno, el .bin es el archivo Manifest.xml. Ahora necesitas hacer el .rc tuyo y compilarlo para que genere el .res. Para eso, crea un archivo nuevo (o usa el nombre.rc, da igual) y agregale esto (o modificale, si usas el mismo que genero el reshacker):
Código: [Seleccionar]
#define LANG_NEUTRAL                        0x00
#define SUBLANG_NEUTRAL                        0x00
/* ----------------------------------------------------------- */
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
/* ----------------------------------------------------------- */
0 ICON "main.ico"
/* ----------------------------------------------------------- */
1 24 "Manifest.bin"

Si te fijas, hay un "main.ico" que es el icono que va a tener la aplicacion. Si queres sobreescribir el que tenes vos como icono del programa, dejalo. Sino, borralo.
Luego este archivito .rc lo tenes que compilar, para eso, lo "arrastras" al archivo rc.exe, que seguramente esta en "C:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin". Al hacer esto, si esta todo bien, te genera un .res en la misma carpeta del .rc. Este archivo .res lo agregas a la lista de archivos de tu proyecto en vb y listo.


Ahora, para que el codigo funcione, tenes que hacer lo siguiente. En un modulo, poner esto:
Código: (vb) [Seleccionar]
Private Declare Function LoadLibraryA Lib "kernel32" (ByVal szLib As String) As Long
Private Declare Function CallWindowProcA Lib "user32" (ByVal adr As Long, ByVal p1 As Long, ByVal p2 As Long, ByVal p3 As Long, ByVal p4 As Long) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal szFnc As String) As Long
Private Declare Function GetModuleHandleA Lib "kernel32" (ByVal szModule As String) As Long


Private Sub InitCommCtl()
    Dim lngLib As Long
    Dim lngAdd As Long
   
    lngLib = GetModuleHandleA("comctl32.dll")
   
    If lngLib = 0 Then
        lngLib = LoadLibraryA("comctl32.dll")
    End If
   
    lngAdd = GetProcAddress(lngLib, "InitCommonControls")
    If lngAdd = 0 Then
        Exit Sub
    End If
    Call CallWindowProcA(lngAdd, 0, 0, 0, 0)
End Sub

Y tenes que llamar a ese sub ANTES de que el form se muestre, sino en xp vas a escuchar un beep cuando quieras abrir el programa, y no va a cargar.
Por ejemplo una buena idea es poner un sub Main, llamar a ese sub y luego cargar lo demas. (obviamente para que inicie por el sub main, tenes que cambiar la configuracion del proyecto en Proyecto-> Propiedades y cambiar Objeto inicial a Sub Main)

Quizas no todos tengan instalado el VisualStudio, el archivo rc.exe es muy probable que no lo tengan.

Entonces, para los que quieren tener ya todo listo, les dejo el archivo zipeado con lo siguiente:
* Manifest.bin (manifest de prueba)
* RC.exe y RCDLL.dll (compilador de recursos)
* Resources.rc (archivo .rc de recursos, ojo que tiene agregado el icono "main.ico" pero yo no subi ningun icono)
* buildres.bat (script automatico para compilar resources.rc a resources.res)

resource_override.zip

Saludos

pd: gracias por el -1 !
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

lucius

  • Gigabyte
  • ****
  • Mensajes: 263
  • Reputación: +6/-5
    • Ver Perfil
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #12 en: Diciembre 18, 2010, 11:50:44 pm »
Tengo otra consulta el titulo es "exes compil. en win7 no corren en XP" si hago lo que mencionas en XP no habra problemas de este tipo en vista o 7, digamos que seria una forma global para utilizar los manifest o me equivoco.

Gracias por la explicacion detallada, te acabo de dar un +1, otro user te habra dado el -1, saludos

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Exe compilados en windows 7 no funcionan con windows xp
« Respuesta #13 en: Diciembre 19, 2010, 12:00:38 am »
Si, no digo que haya sido vos. No deberia haber problema ejecutando algo compilado en windows 7, pero yo sugeri que el problema venia por el lado de los manifest, que suena mas que logico.

No te hagas problemas.

saludos
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion