buenas,, mi duda es si es posible empaketar un programa creado en visual basic,, de tal manera ke sea portable y no nesecite ser instalado en una maquina,, asi lo puedo copiar en cualquier pc para utilizar y no instalarlo y funcione de maravilla,,,
buenas,, mi duda es si es posible empaketar un programa creado en visual basic,, de tal manera ke sea portable y no nesecite ser instalado en una maquina,, asi lo puedo copiar en cualquier pc para utilizar y no instalarlo y funcione de maravilla,,,
Situ programa solo tiene controles estandar, con crear el ejecutable es suficiente.
SALU2 D DESSA
no.
eso depende. todo programa de VB6 SIEMPRE necesita de la máquina virtual -msvbvm60.dll- así como todo programa de java -.jar- necesita una máquina virtual. la cosa es que si esa dll no esta en el equipo, el programa se vuelve bruto y no sabe ni donde iniciar ni como finalizar.
Hola Nestor, te comento que windows Me, windows 2000, windows 2003 y windows xp instalan en forma automática msvbvm60.dll (cuando instalás el sistema operativa ) , por ejemplo podes revisar el Win_13.cab del disco de intalación de Windows Mileniun o en la carpeta i386\Msvbvm60.dl_ del disco de intalación de windows 2000 o XP PRO,
En este momento termino de reponer en una de las particiones primarias de mi disco rígido una imágen de un windows Me recien instalado y ejecuté una aplicación de VB6 que utiliza los siguintes controles estandar : 3 Formularios, 5 Frames, 20 Label, 20 Shapes, 15 Timer (escalonados de uno a la vez) y 15 command. Tambien utiliza las siguientes APIs ShellExecute, ShowWindow, FindWindow, FindWindowEx, SendMessage, PostMessage, GetSystemMenu, RemoveMenu, SetWindowPos, RegOpenKeyEx, RegCloseKey, RegCreateKeyEx, RegDeleteKey, RegQueryValueEx, RegSetValueEx y RegDeleteValue.
La aplicación está corriendo perfectamente, sin errores, te reitero que simplemente copié y ejecuté esta aplicación sin ningin tipo de intalación de VB. en un windows recien intalado.
Nota: en windows 98 Full o 98 SE solo contas con msvbvm50.dll, cuando estos S.O. estan recien instalados.
SALU2 D DESSA
Si vas a ejecutar el programa en versiones de Windows como 2000, XP, 2003 Server o Vista y usas los controles basicos de Visual Basic 6.0 o algunos de los componentes oficiales que instala Visual Basic 6.0 como el MSHFlexGrid o Microsoft Windows Common Controls por ejemplo (esto a partir de XP si no recuerdo mal) podrias distribuir en principio tu programa sin instalacion.
Si tienes intencion de que se ejecute en entornos Windows 98 o Millenium no te queda otra que hacer instalacion ya que ni vienen instalados de serie la runtime ni los componentes oficiales, eso o usar la version profesional de esta herramientas para inyectar y virtualizar las dependencias en tu ejecutable.
Salu2...
P.D.: Segun acabo de leer el mensaje de Dessa me viene a la cabeza que no logre ejecutar algunos proyectos propios que usaban los controles basicos de VB 6.0 en Millenium, pero tampoco puedo asegurarlo ya que hace como 3 años de esto. De seguro si puedo asegurar la existencia de la runtime a partir de Windows 2000 en adelante.
Edited by: [EX3]
Cada vez que se alinean los planetas me paso de visita por el foro
dx_lib32: Programa juegos en Visual Basic 6.0 y Visual Basic .NET con la potencia de DirectX 8.1
Version 2.2.0 final publicada
y por eso mismo lo decia, que dependia... asi que no queda de otra sino averiguar como hace molebox para "pegar" las dll y ocx en el ejecutable.
Molebox usa una tecnologia de virtualizacion similar al de las maquinas virtuales como VirtualPC o VMware que nosotros no seriamos capaces de hacer ni estudiando la carrera de informatica y mucho menos en un lenguaje como Visual Basic.
Explicado un poco mas, MoleBox lo que hace es simular un entorno real en memoria ajustado al propio contexto del ejecutable y alrededor de todos los recursos que le hemos inyectado: librerias y archivos de datos. En el caso de las dependencias simplemente hace un registro virtual en la simulacion del sistema, razon por la que no interfiere con las dependencias del sistema real. La ventaja es que dicho ejecutable tambien puede interactuar con las dependencias reales del sistema asi como con archivos de datos.
Salu2...
Cada vez que se alinean los planetas me paso de visita por el foro
dx_lib32: Programa juegos en Visual Basic 6.0 y Visual Basic .NET con la potencia de DirectX 8.1
Version 2.2.0 final publicada
"que nosotros no seriamos capaces de hacer ni estudiando la carrera de informatica y mucho menos en un lenguaje como Visual Basic "
------------
Un amigo, hizo una especie de Virtual pc, programado en vba.
Está muy bueno , despúes te lo paso por si lo querés ojear
( chiste malo)
Sobre el Virtual pc.
Hace mucho mucho que no instalo y pruebo un programa de estos. La única y última ves fue hace como 5 años en un P3 con 256 o 512 de ram, ya no me acuerdo, y era bastante lento
como anda la cosa ahora por estos tiempos ?? ¿ mejoró este tema de la velocidad ??
salu2Edited by: Luciano
A mi en mi AMD Athlon XP +1800 (1533 mhz) con 1 GB de RAM el VMware, asignando de 384 a 512 MB de RAM a cada maquina virtual, me mueve sin problemas un Windows 98 o un Windows XP. El Windows Vista ya se resiente un poco al no poder aprovechar la aceleracion por hardware, pero se puede trastear un minimo con el. Una distro de Linux supongo que ira inclusive mejor, no lo he probado aun.
Salu2...
P.D.: Por supuesto, corriendo solo una maquina y no corriendo varias maquinas simultaneamente, que si no ya ni el propio sistema real se puede trabajar
Cada vez que se alinean los planetas me paso de visita por el foro
dx_lib32: Programa juegos en Visual Basic 6.0 y Visual Basic .NET con la potencia de DirectX 8.1
Version 2.2.0 final publicada
queria contradecir desde hacia raaaatttoooo esto. y si, finalmente tengo con que hacerlo. mediante una maquina virtual, la Inno VirtualBox instale Win98. y por esas cosas cree una aplicación, la típica "hola mundo" en VB6 con SP6, compilada a Código Nativo.Iniciado por [EX3
pues bien, lo mas que hice fue crear una especie de imagen para CD agregando el ejecutable y la msvbvm60.dll no mas; despues busque si el 98 tenia algun componente de los que se instala al usar el asistonto para empaquetado y distribucion y no tenia ninguno, asi que procedi a ejecutar el programita y.... adivinen que... corre..... corre y sin ningún problema. y solo fue tener la maquina virtual justo al lado del ejecutable. bueno, aclaro que solo es el tipico "hola mundo". falta ver si se pueden correr programas mas complejos.
Nestor, el único que dijo que no corria fuiste vos (Posted: 30/3/2007 at 15:12) y tal parece que no leiste el Posted: del 30/3/2007 at 18:01 by Dessa
SALU2
Como ya he dicho en mas de un post en este y otros foros. Lo minimo para correr un ejecutable compilado con Visual Basic 6.0 es la msvbvm60.dll y su dependencia oleaut32.dll (no os confieis si veis que no hay fallos al no instalar la oleaut32, segun que objetos useis la msvbvm60 lo echara en falta). Sin estas librerias en el sistema no correria ningun programa jamas en ninguna version de Windows anterior a 2000 o Me. La cosa cambia si usa algun componente, sea o no parte de la coleccion que instala Visual Basic 6.0 en la maquina, ya que estos a veces dependen de otras librerias (un par de ejemplos son los frameworks de Crystal Reports o ADO) lo que toca instalar mediante su propio paquete distribuible.
La gran mayoria de esas librerias solo las usa el propio asistente de instalacion de Visual Basic 6.0 (aun contradiciendo el articulo de la MSDN 6.0) por lo que es normal que tu "hola mundo" no las reclamara.Iniciado por Néstor Acevedo"
Por cierto, tener cuidado en XP y posiblemente en 2000 (en Vista no lo he comprobado todavia) aunque estos traen de serie instalados varios componentes habituales de Visual Basic 6.0, como el RichTextBox (que fue el que me dio lata) estos parecen no estar correctamente registrados, ya me he llevado mas de un susto en el trabajo al ver que la libreria estaba en el equipo pero el programa no la localizaba, nada que no solucionara regsvr32.
Salu2...
Cada vez que se alinean los planetas me paso de visita por el foro
dx_lib32: Programa juegos en Visual Basic 6.0 y Visual Basic .NET con la potencia de DirectX 8.1
Version 2.2.0 final publicada
De hecho, lo que dije fue que era necesario tener la maquina virtual, aunque en principio dije que tenia que estar en el equipo, vi que no es necesario. solo con tener la msvbvm60.dll junto al ejecutable mas la comctl32.dll era suficiente.
el error que usted habia dicho era que si el equipo tenia los controles estandar era mas que suficiente. pero resulta que pueda que tenga la comctl32.dll, todos los ocx habidos y por haber pero si no cuenta con la maquina virtual, sencillamente no funciona el ejecutable.
Esto fue lo que dije:
Creo quedaba suficientemente claro, si estan los controles basicos de Visual Basic a la fuerza tiene que estar la runtime (o maquina virtual como tu la llamas) de Visual Basic dado que dichos controles no funcionan sin ella, es como querer vender un coche sin ruedas, no se si me explico, por lo tanto no cometi ningun error en lo que dije, si estan los controles basicos instalados (y con basico me refiero a los controles base que incluye la runtime: Label, TextBox, CommandButton... no hablo de ningun componente de los que instala Visual Basic como el RichTextBox o similares) tu programa funcionara, y eso es asi.Iniciado por [EX3]
Salu2...
Cada vez que se alinean los planetas me paso de visita por el foro
dx_lib32: Programa juegos en Visual Basic 6.0 y Visual Basic .NET con la potencia de DirectX 8.1
Version 2.2.0 final publicada
ah no si... es que la respuesta era para Dessa. pero igual creo que si los controles estandar estan instalados, no siempre va a estar la runtime de Vb, pueda que depronto sea la de C++ la que haya instalado esos controles. y corrijo: Dessa habia dicho que si el proyecto contenia controles estandar, que con crear el .EXE era suficiente, pero se sabe que eso no es cierto. pero en fin.
ahora, lo que se me ha ocurrido es que como no es necesario tener la msvbvm60.dll en el equipo, se podria crear un "lanzador" que llame el archivo regsvr32.exe y registre las ocx que se deban registrar, y una vez se cierre la aplicacion se vuelva a llamar para "desinstalarlas" con el mismo archivo. incluso, por lo que lei en la msdn, se podria incluir un archivo llamado editbin.exe para crear una especie de swap del archivo ejecutable en si, para que no use demasiado la memoria usb. ¿que opinan de esa idea?
Iniciado por Dessa
sip. lo que yo hice fue borrar esa libreria del mi Win98, y el programa corrio teniendo la msvbvm60.dll al lado. lo mas que vi fue la stdole2.tlb de resto no vi nada mas instalado.
y el post al que yo me referia era al anterior al que puso despues, ese que esta justo encima de este.Edited by: Néstor Acevedo
Descansa tranquilo que Visual C++ (y mucho menos cualquier otro compilador de C++) no te va a instalar ningun componente comun de Visual Basic 6.0 ya que no los usa. En C++ se accede por otra via a los controles de Windows a los que nosotros accedemos a traves de dichos OCX en Visual Basic. Por ende si en la maquina estan los componentes comunes de Visual Basic 6.0 la runtime estara tambien.Iniciado por Néstor Acevedo
Esto no es correcto.Iniciado por Néstor Acevedo
Esto si lo es. La explicacion es sencilla, la runtime no precisa de registro por que no es un componente si no una API, por lo tanto estando en el mismo directorio del ejecutable este la detecta, pero si el programa realiza llamadas que tengan que ver con automatizaciones y la oleaut32.dll no esta instalada en el sistema, y esta si precisa registro (y segun version de Windows esta libreria cambia de version), el programa no funcionara.Iniciado por Néstor Acevedo
Que das por sentado que todo el mundo trabaja con privilegios de administrador, cosa que no es asi (y menos aun en Windows Vista) por lo que no podrias registrar componentes en tiempo de ejecucion. Luego otro peligro de usar esta tecnica, muchos componentes los usan la mayoria de los programas que corren en la maquina. Si eliminas el registro de alguno de estos ya estas haciendo que dejen de funcionar todos esos programas, a parte de que al estar en uso ni podrias registrar ni eliminar del registro. Esta tecnica no es nada recomendable.Iniciado por Néstor Acevedo
En serio, no os monteis peliculas extrañas para evitaros instalaciones de la runtime o de los componentes que vuestros programas vayan a usar por que solo os encontrareis con problemas. Si quereis evitar instalaciones virtualizais las dependencias con MoleBox o alguna herramienta similar, si no hacer una instalacion como toda la vida ya que este metodo previene de sobreescribir componentes ya instalados o de eliminar componentes que sigan en uso a parte de gestionar mejor el registro de los mismos.
Salu2...
Cada vez que se alinean los planetas me paso de visita por el foro
dx_lib32: Programa juegos en Visual Basic 6.0 y Visual Basic .NET con la potencia de DirectX 8.1
Version 2.2.0 final publicada
no pude escribir antes, pero se me ocurre modificar el proyecto setup1 q' viene incluido con VB6 y de esa manera hacer una "instalación" para correr luego el programa
No entendi bien. Modificar el Setup1.exe del proyecto de instalacion para hacer una instalacion al correr siempre el programa? Recuerda que si el usuario no tiene privilegios estariamos en la misma situacion, no podria instalar las dependencias, o si existe ya una version del componente lo sobreescribirias provocando posiblemente incompatibilidades con algun programa ya instalado, que esto seria en casos concretos.
Salu2...
Cada vez que se alinean los planetas me paso de visita por el foro
dx_lib32: Programa juegos en Visual Basic 6.0 y Visual Basic .NET con la potencia de DirectX 8.1
Version 2.2.0 final publicada
Hola,ya que revivieron este post,lo empeze a leer y al final el que escribio la pregunta no respondio mas diciendo si le sirvio la super-discucion que tuvieron ustedes.les comento que estoy haciendo un conversor de unidades super completo y pensaba hacerlo asi como lo llaman ahora "portable",o sea solo el .exe y que funcione con cualquier maquina.sin dependencia de ocx externos ,salvo las que mencionan ustedes, la famosa runtime,pero en resumen es un programa que funcionaria en cualquier maquina al ejecutarlo y listo se acabo la historia.suponganse que el programa funciona perfecto en cualquier lado,el problema que puede pasar es ,fuera de las dependencias que use el mismo,usar una api o funcion api que no este incluida en algun sistema aperativo,corrijanme si me equivoco pero me parece que en distintos sitemas operativos se fueron agregando funciones api.pero estoy seguro que mi programa funcionara bien en distintas maquinas,porqeu no use cosas de otro mundo,solo muchisimos calculos y nada mas.yo a Nestor le entiendo como que quiere ejecutar ese setup para instalar todos los ocx y dependencias en una maquina por las dudas que esta no los tenga y asi asegurarse que ese ejecutable funcione bien.pero como bien dice [EX3] podes dañar los archivos que ya tenes instalados o sobreescribir versiones de archivos y quedar pero que antes,no me gustaria hacer eso y no creo que se haga eso para hacer que un bendito programa funcione en todas las maquinas.para mi hay que usar lo basico y asi si te va a andar.
saludos.
Edited by: seba123neo
Todos somos ignorantes;lo que pasa es que no todos ignoramos las mismas cosas - Albert Einstein
bueno, lo q' planteaba era una pseudo instalación, por las apis q' vi en el proyecto setup1.vbp, se verifica la version a instalar con la q' exista en el equipo y asi se determina si se copia o no.
además, cuando se usan los instaladores ¿q' nose supone q' hacen eso? y buen, pues a EX3 le doy la razon, si se esta con una cuenta limitada si no serviria y no habria mas q' crearlas por controls.add... o algo asi es lo q' dice el codigo.