Newsgroup: it.comp.lang.visual-basic
Titolo: [VB6]Eseguibile in cd con griglia

Ho creato un eseguibile che legge un file di testo ed espone i dati su 
textbox.
L'eseguibile deve girare solo su cdrom e fin qui nessun problema.
Ora mi hanno chiesto di visualizzare i dati anche in una griglia. Ho 
inserito una MSFlexgrid (anche se non mi piace, ma non c'è di meglio), ma a 
questo punto devo registrare l'ocx.
So che questo MSFLXGRD.OCX è indispensabile, questo FLXGDIT.DLL non lo so.
Anche perchè ho provato senza la DLL e funziona ugualmente.
Quando l'eseguibile parte dall'autorun controlla se nella cartella di 
sistema c'è MSFLXGRD.OCX se presente non effettua la registrazione.
Questo sistema non mi piace, perchè se un programma ha installato l'ocx è in 
una cartella differente poi non lo trova più.
Dopo questo giro di parole volevo sapere se:
Come faccio a sapere se un ocx o dll è già registrato?
Carmelo

 Come faccio a sapere se un ocx o dll è già registrato?
Se il programmino è semplice ti direi quasi di farlo in .NET per levarti
tutte le beghe di registrazione componenti.
Certo ci vuole il fwk installato, ma quando hai quello ti basta di norma
includere le DLL nel path dell'exe.


Se l'OS target ï¿½ da XP in su non serve registrare DLL e/o OCX, basta che 
siano nella cartella dell'exe su CD.
http://msdn.microsoft.com/en-us/library/ms973913.aspx
Bye
Raf
 


Dimenticavo, per creare i file manifest c'è un apposito tool, se ne parla 
qui:
http://www.tech-archive.net/Archive/VB/microsoft.public.vb.general.discussion/2009-01/msg00896.html
http://mmm4vb6.atom5.com/hello-europe-mmm-0-7-3344.html
Ciao
Raf 

 
http://msdn.microsoft.com/en-us/library/ms973913.aspx
Mi pare si debba essere Amministratore del PC comunque, non ho letto il
link, ma di solito si.

"Andrea [Work]" <andrea.isw...@gmail.invalid> ha scritto nel 
messaggio news:b585xd7mvvlv$.yvg6792cp9ai$.dlg@40tude.net...

La tecnica descritta nell'articolo prevede l'utilizzo di un file manifest, 
senza il quale effettivamente occorrono i privilegi elevati.
Ciao
Raf 


Il SO su cui deve girare l'eseguibile � Xp.
Ho gi� provato, se metto eseguibile e ocx nella root del cd, si auto 
registra, se invece come serve a me, metto eseguibile e ocx in una cartella 
(nel mio caso "Lettera unit�:\Componenti" non funziona. mi chiede la 
registrazione.
Per quanto riguarda il link non ho capito molto. a cosa servirebbe il file 
manifest
Carmelo

 manifest
Ad eliminare la registrazione dei componenti COM, cosï¿½ ad esempio se
l'utente non ha i privilegi elevati l'applicazione funzionerï¿½ ugualmente.
Se non lo metti, Windows tenterï¿½ di registrare automaticamente gli ocx e le
dll al primo lancio dell'applicazione, ma se l'utente non ha i diritti per
farlo, il tutto fallirï¿½ (come fatto notare da Andrea).
Inoltre il manifest consente di specificare il nome di una cartella
(relativa all'exe) che contiene un dato componente: basta indicarla nel tag
"file name" relativo.
Ad esempio:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <!-- Make My Manifest 0.7.300 -->
  <assemblyIdentity name="MioEseguibile" processorArchitecture="X86"
type="win32" version="1.0.0.0" />
  <file name="Componenti\MSFLXGRD.OCX">
    <typelib tlbid="{5E9E78A0-531B-11CF-91F6-C2863C385E30}" version="1.0"
flags="control" helpdir="" />
    <comClass clsid="{6262D3A0-531B-11CF-91F6-C2863C385E30}"
tlbid="{5E9E78A0-531B-11CF-91F6-C2863C385E30}" threadingModel="Apartment"
progid="MSFlexGridLib.MSFlexGrid.1" description="Microsoft FlexGrid Control
6.0 (SP6)" />
  </file>
</assembly>
(Manifest generato con MakeMyManifest)
Ciao
Raf 

 Raf
Questo file manifest che hai inserito funziona o devo fare delle modifiche?
E infine dove devo metterlo nella root del cd o nella cartella 
dell'eseguibile?
Carmelo 

 Carmelo
Ciao
Raf
 

>> </assembly>
Ho cambiato il nome mioEseguibile con "Genera"
Ho chiamato il file Genera.exe.manifest e inserito nella cartella componenti 
insieme all'eseguibile e all'ocx
Quando parte l'autorun mi dice "Errore di Run Time 7 memoria esaurita".
Non č che funziona solo con .net?
Carmelo

 Carmelo
No, è che quel manifest che ti ho mostrato si aspetta, come avevi chiesto, 
di trovare l'ocx in una sottocartella denominata "Componenti".
Se tu mi metti TUTTO (exe e manifest) dentro quella sottocartella non andrà 
niente, ovviamente...
In definitiva:
- EXE e MANIFEST nella cartella principale
- MSFLXGRD.OCX nella sottocartella "Componenti"
Se invece hai cambiato idea e vuoi mettere ogni cosa nella stessa cartella 
basta che modifichi il manifest:
<file name="Componenti\MSFLXGRD.OCX">
in
<file name="MSFLXGRD.OCX">
Chiaro ora?
Ciao
Raf
 

 Raf
Cosi funziona, solo che io avevo inserito un manifest.res nei documenti 
correlati, per lo stile xp, e quest'ultimo appena creato elimina quello 
dello stile.
Forse devo inserire delle righe in uno dei due.
Carmelo 

 Raf
Appena lo lancio mi da errore runtime 7 memoria esaurita.
Quqlche dritta?
greg 


Non ho capito bene, l'errore esce appena lanci il tool MMM o il tuo 
programma con íl manifest generato da MMM?
Ciao
Raf 

 programma con �l manifest generato da MMM?
Scusa, quando lancio il MMM
greg 


Allora non saprei, prova a guardare nei commenti al blog all'indirizzo che 
ho postato, e al limite ad aggiungerne uno tuo in cui riporti l'errore.
Ciao
Raf