Newsgroup: it.comp.lang.visual-basic
Titolo: Creazione di un .exe da un .exe

E possibile generare da un 
applicazione fatta in VB
quindi con estensione .exe
(e che richiede, mettiamo, msvbvm50.dll)
un altro .exe (che per girare, poi,
dovrà richiedere la presenza 
di msvbvm50.exe anche esso, siamo d'accordo ... ) ?
Proprio come nelle ricevitorie di totocalcio,
dove il gestore,
dal suo programma, 
genera e mi regala 
una programma per fare schedine,
con appunto estensione .exe ?
Attenzione non è una copia
del programma del gestore;
è un programma che è "partorito" 
dal programma del gestore.
O come certi programmi 
di slideshow di immagini 
che creano un eseguibile con 
tutte le immagini dentro,
che può essere eseguito su un qualsiasi altro computer,
senza la presenza cioè del programma madre.
Un programma come quest'ultimo, per esempio,
lo si puo' fare con VB,
ammettendo la presenza del 
file di runtime necesario 
(sia esso msvbvm50.dll o msvbvm60.dll ...) ?

 (sia esso msvbvm50.dll o msvbvm60.dll ...) ?
Sì, è possibile.
E se ci pensi è anche una banalità.
Non credere che i programmi generati che hai descritti vengano fuoi dal
nulla o da chissà quale complicatissimo algoritmo di genetica.
Il mio primo programma di questo tipo (e forse l'unico) era un .exe in
pascal che "giuntato" a un qualsiasi file di testo tramite un banale copy /b
trasformava il txt in un auto-visualizzabile (unico problema era che il
McAfee si accorgeva che andavo a leggere oltre la fine dell'exe originale
interpretandolo come un jump di un virus :P).
Ormai dovresti aver capito come funziona.
Ti fai un programma che fa da intestazione ai tuoi dati, giunti i due in un
file solo e l'exe va a leggersi i dati oltre la sua taglia originale.
(ovviamente devi usare la prima compilazione per sapere qual è la taglia
corretta dell'exe.
Ciao
--
Math Parser, VB.Framework : 
http://www.neodatatype.net
Sito Comune               : 
http://www.it-lang-vb.net


wrote:
Sì, hai ragione,
qualcosina di simile avevo anche fatto un tempo...
Adesso ci provo;
prevedo delle difficoltà     ;-)
eventualmente ribusso
(diciamo un mesetto... ho da fare anche altre cose)
al newsgroup scrivendo un messaggio con più
o meno lo stesso titolo
o ti contatto in privato se l'indirizzo che vedo funziona.

...


 leonello
oddio sto come ogni sabayo sera ubriaco pero' mi ricordo che il programma
che FONDEVA gli exe si chaima FUSION qualcosa, in pratica una volta che crei
il tuo exe , il tuo setup e raccimoli le dll e ocx che ti servi metti tiutti
dento a fusion e lui ti crea una ece , lo lanci e lui ti crea i file
temporanei e esegue tutto ciao' !
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 che FONDEVA gli exe si chaima FUSION
tom cerca di fare qualcosa come winzip che crea degli exe che in realtà sono
degli archivi autoestraenti.


 realtà sono degli archivi autoestraenti.
la stessa cosa che fa Fusion :p


Sì esatto,
e dovrà essere l'utente che potrà generare 
tanti exe chiamati "B" dal mio programma chiamato "A"
ed all'utete non dovrà assolutamente ricorre
la necessità di avere il programma Fusion o altro.
Facile a dirsi !!!

 Facile a dirsi !!!
E' una cosa che si fa in mezz'ora.
Come fare te l'ho detto.
Cosa *vuoi* fare è un'altro discorso (anche perchè non ce l'hai detto).


 ha scritto nel messaggio
news:3KRXa.36097$cl3.1...@news2.tin.it...


 Fusion crea un unico eseguibile ed include tutte le varie dll ed ocx ecc
ecc
[snip]
1) Prima di continuare a postare leggi qualche documento sul quoting
2) Fusion non c'entra assolutamente niente con quello chiesto da tom.
3) Non ho capito assolutamente niente di quello che ti dovrei spiegare.
Credo di essere stato abbastanza chiaro nel mio primo post di risposta, se
si è capito cosa voleva tom.


Cosa *vuoi* fare è un'altro discorso (anche perchè non ce l'hai detto).
Dunque quello che voglio (vorrei) fare
è generare da un prog A un prog B.
Il prog B a questo punto può essere eseguito 
su ogni macchina, indipendentemente
dalla presenza del prg A.
Il prog B, quando cliccato,
espande il suo Form1 a tutto schermo e 
visualizza in sequenza, intervallati di 1 secondo,
5 bmp sopra di esso (al 5° il Form1 si autochiude).
In fase di autochiusura, B pulirà
i 5 file che si è autoestratto e che 
momentaneamente aveva posizionato sull' hard disk.
I 5 bmp dovevano essere già dentro B
(pescati dall'hard disk e appunto "inseriti" dentro il prog B
dal prog A , che fatte queste due cose, poi, non si
interrelazionarerà più con B).
nota:
si assume che nelle macchine dove vengono
eseguiti A ed i vari B 
ci siano già i file di runtime di VisualBasic (msvbvm50.dll ...)
--------------------------------
Credo che ci siano già programmi simili, degli "slideshow"
ed appunto, io proprio questo intendo fare.
Ci sono anche gli archivi zip  terminanti in .exe
che si autoscompattano e fanno una cosa simile 
(avendo inseriti dentro di loro un visualizzatore 
e le immagini da visualizzare),  ma gli archivi zip possono essere
aperti e i file al loro interno cambiati,
mentre io vorrei creare un file B in cui non si puo' accedere 
ai file dentro.
---------------
Ora:
il progr B può essere già nella cartella accanto al prog A ,
oviamente vuoto (privo delle immagini); esempio:
generatriceA.exe
e
figlioB.exe
ed il prog B verrà riempito e rinominato da A
oppure
 il figlioB.exe vuoto se ne sta
dentro il file generatriceA.exe, 
pronto per essere "tirato fuori" 
(ma una copia dentro generatriceA.exe 
ne rimane sempre, ovviamente) 
e poi, una volta estratto e posizionato
sull hard disk, andrà ad essere riempito
con i file bmp da visualizzare e
infine rinominato da A.
-----------------------------
La due cose complicate sono
inserire i .bmp dentro figlioB.exe
e poi estrarli.
Zanna dice (e io ci aggiungo qualcosa, 
... devo pure sfogare il cadlo adosso con qualche sparata ...)
di leggere in esadecimile
i punti di giuntura dei file, per immagazzinarli (i punti di 
giuntura) dentro ogni figlioB.exe, magari scritti su
un semplice file di testo da estrarsi ovviamente prima
di estrarre i bmp in fase di slideshow). 
Esempio:
- figlioB.exe ancora vuoto termina a Hex: CCFF55
- alla posizioneappena un byte sopra, Hex: CCFF56,  
  va attaccato il primo bmp
- questo primo bmp era grande Hex: AAB212
- il secondo bmp dovrà essere attacato alla
   posizione Hex: CCFF56 + Hex: AAB212 + Hex 1
- e  così per tutti i bmp
- poi all' ultimo, attacco anche un file di testo dove avrò riportato
  tutti questi indirizzi Hex che corrispondono ai punti di giuntura;
  questo file lo dovrò estrarre e leggere quando vado ad estrarre
  i bmp
- MI MANCA UN PASSAGGIO: COME FACCIO A SAPERE IL PUNTO
  DI GIUNTURA DEL FILE DI TESTO STESSO, PER POTERLO ESTRARRE
  (POI TUTTE LE ALTRE GIUNTURE LE LEGGO SU TALE FILE, MA LA
  SUA GIUNTURA) ?
--------------------------------------------------------------------------------------
Ecco bisogna fare questo attacca e stacca
(se ho capito bene:  i conti in Esadecimale, le attaccature e le
staccature in binario).
Al 75 %,  ehm ... 60 %, ehm  ....  31 % ...
credo che sia così.

 di estrarre i bmp in fase di slideshow).
Meglio ancora, lavora "all'indietro" :-).
incolla in coda al programma le varie bitmap, mettendo in coda
al tutto le relative lunghezze, in questo modo, per esempio:
programmaprogrammaprogrammaprogrammaprogrammaprogramma
programmaprogrammaprogrammaprogrammaprogrammaprogramma
programmaprogrammaprogrammaprogrammaprogrammaprogramma
programmaprogrammaprogrammaprogrammaprogrammaprogramma
bitmap1bitmap1bitmap1bitmap1bitmap1bitmap1bitmap1bitmap1bitmap1
bitmap1bitmap1bitmap1bitmap1bitmap1bitmap1bitmap1bitmap1bitmap1
bitmap1bitmap1bitmap1bitmap1bitmap1bitmap1bitmap2bitmap2bitmap2
bitmap2bitmap2bitmap2bitmap2bitmap2bitmap2bitmap2bitmap2bitmap2
bitmap2bitmap2bitmap2bitmap3bitmap3bitmap3bitmap3bitmap3bitmap3
bitmap3bitmap3bitmap3bitmap3bitmap3bitmap3bitmap3bitmap3bitmap3
bitmap3bitmap3bitmap3bitmap3
stop
lunghezza bitmap1[cr]
lunghezza bitmap2[cr]
lunghezza bitmap3[cr]
All'avvio, il programma deve aprire se stesso come file, e leggere
 diciamo l'ultimo KB, cercando con una InstrRev le varie righe
(segnalate dal [cr]) e lo "stop" che è l'indicatore della fine delle bitmap.
***********************
Il problema che vedo io è un'altro, invece: quando dici "Il prog B a questo
punto può essere eseguito  su ogni macchina" devi vedere se è vero... :-)
fare un programma in VB di solito significa portarsi dietro almeno la DLL
di runtime e spesso è necessario installare un bel po' di roba.
Certo se il prog è proprio minimale, magari gira con la sola MSVBVM50
o MSVBVM60.DLL; quelle ormai sono quasi dappertutto, ma è quel
"quasi" che ti frega... e di quella NON PUOI fare a meno.
Se devi mettere il tutto in un CD per esempio, puoi metterla insieme
al programma, nella stessa cartella, se non vado errato, anche senza
installarla.
Bye, G.

> se ci pensi è anche una banalità.
 fai un piccolo esempio con qualche riga di codice
problema:
durante l'esecuzione di un programma VB6 scrivere un  pippo.exe su disco
rigido
leonello

 rigido
Ancora non hai capito???
Codice:
FileCopy ilfileesistegià.exe, pippo.exe
Open "pippo.exe" for binary as #1
Put #1, seek(#1) + 1, BytesDelFileBitmap()
Close #1


FileCopy ilfileesistegią.exe, pippo.exe
leonello
ps:
da come scrivo hai certamente capito che sono in pivello nel quoting (forse
anche in VB) suggeriscimi un file dove posso quotare correttamente,grazie