Newsgroup: it.comp.lang.visual-basic
Titolo: Mannaggia... Registrazione OCX vari su windows vista.

In un progetto VB6, sto utilizzando 3 ocx di mamma microsoft, nello 
specifico
mscomm32 comdlg32 e msflxgrd (porta seriale, common dialog, flex grid).
Il progetto originale non e' mio, ma di uno zappatore che si era mentalmente
arenato a vb4, ma tanto zappatore che alla mia obiezione "mettici almeno
un doevents nei cicli piu' pesanti" ha sgranato gli occhi con "e che cos'e' 
doevents?")
... vi lascio immaginare.
NON posso riscrivere o rivoluzionare il progetto corrente, in futuro 
armatomi
di pazienza e tempo lo riscrivero' da zero in vb2008, ma ora il "prodotto"
deve funzionare anche se raffazzonato (migliorato e' una parola grossa: 
porcheria
e' e purtroppo rimane).
Il problema e' che NON posso usare installer esterni in quanto la logica
perversa con cui il programma funziona e viene periodicamente aggiornato:
il genialoide preferiva ricompilare pezzi di codice anziche' distribuire un 
file .ini
o similari contenente gli aggionamenti dei parametri.. imho non ne era 
capace.
Fattosta' che non mi riesce di far digerire la registrazione dei succitati 
componenti
in fase di setup... lo stralcio di programma che esegue la registrazione e':
   Shell "regsvr32 /s" & Chr(34) & ProgramFiles & "\COMDLG32.OCX" & Chr(34)
   Shell "regsvr32 /s" & Chr(34) & ProgramFiles & "\MSCOMM32.OCX" & Chr(34)
   Shell "regsvr32 /s" & Chr(34) & ProgramFiles & "\MSFLXGRD.OCX" & Chr(34)
Ma nonostante che il programma di installazione, chiamandosi "setup.exe" 
invochi
l'UAC, la registrazione pare funzionare, ma di fatto non registra i 
componenti, nemmeno
copiandoli in \system32, nulla ha sortito nemmeno il metodo alternativo:
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" 
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, 
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As 
Long) As Long
ShellExecute 0&, "OPEN", "regsvr32 " & ProgramFiles & "\COMDLG32.OCX", 
vbNullString, "C:\", 1
ShellExecute 0&, "OPEN", "regsvr32 " & ProgramFiles & "\MSCOMM32.OCX", 
vbNullString, "C:\", 1
ShellExecute 0&, "OPEN", "regsvr32 " & ProgramFiles & "\MSFLXGRD.OCX", 
vbNullString, "C:\", 1
Il risultato e' che alla fine dell'installazione, l'exe lamenta la mancanza 
dei componenti, devo obbligare
l'utente a fare a mano, lanciando il prompt come amministratore ed 
effettuando i vari regsvr32.
ho tentato la via del .manifest, ma probabilmente non ci ho capito una fava, 
dato che anche cosi'
non funziona/non fa quello che mi aspetto.
Qualche dritta/consiglio/rito woodoo ?
grazie anticipate.

 grazie anticipate.
Hai provato ad avviare il setup.exe con "esegui come amministratore"?
in alternativa ...
http://community.visual-basic.it/alessandro/archive/2007/04/22/19104.aspx
ciao
stefano

 capace.
Non ho capito, tu fai un installer esterno che registra le librerie, e
metti una gestione errori (o remmi) la parte di registrazione con Shell.
Tanto gli ocx mica gli aggiorni ogni volta.


Sarebbe bello, ma purtroppo il tutto gira su macchine "proprietarie" che
prevedono la brasatura periodica dell'OS, per chiarirci: sono "totem"
che vengono usati in contesto fieristico, a esposizione finita, passa 
l'ometto
che usando un CD immagine (sul quale non posso intervenire)
ripristina il totem allo stato "vergine", poi passa il cliente che
tramite chiavetta USB installa il "mio" applicativo, in media accade 1 volta
alla settimana (e' assurdo ma questa CAGATA non dipende da me/noi).

 
http://community.visual-basic.it/alessandro/archive/2007/04/22/19104.aspx
ci do un'occhiata... grazie anticipate.


In alternativa... posso riferirmi a quei componenti senza registrarli??? mi 
risolverei
un sacco di problemi....

 un sacco di problemi....
Per caso funzionano se gli lasci in App.path?

 alla settimana (e' assurdo ma questa CAGATA non dipende da me/noi).
Dal tuo programma puoi fare la shell di un setup fatto con inno setup in
modalit� silent (si dovrebbe fare).
Cos� non si accorge di niente.


su XP si, ma vista/seven mancopeggnente :(
adderittura se da codice impongo la registrazione dell' OCX
tramite api, si comporta come se avesse fatto (nessun errore)
tranne che poi non funziona.
Maledetta sia la virtualizzazione e chi l'ha inventata :(