Toujours les OCX,VB,Setup!

Résolu/Fermé
armiou Messages postés 7 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 3 avril 2009 - 28 déc. 2008 à 19:44
armiou Messages postés 7 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 3 avril 2009 - 3 avril 2009 à 16:48
Bonjour,
J'ai créé un setup de mon programme en VB mais quand je l'installe sur une autre machine, il affiche l'erreur :"Run time error '339' Component 'Rey_Xpbasics.ocx' or one of its dependencies not correctly registered : a file is missing or invalid"
Vous aller me dire d'installer l'ocx dans c:\windows\system32 n'est-ce pas?
Mais dans mon cas cela ne résoud pas le problème car mon disque local est E donc l'ocx se trouve dans e:\windows\system32
Que dois-je faire pour qu'il trouve l'ocx dans c:\windows\system32 d'1 autre machine?
Merci d'avance
A voir également:

8 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
29 déc. 2008 à 09:33
Bonjour,
Si tu a créer ton setup avec l'empaquetage de VB l'erreur n'est pas là, à moins que tu ai modifié les répertoirs, il faut laisser les répertoir windows et system32 comme renseigné, le setup les mettra au bon endroit.
D'après le message renvoyer ton problème vient de l'enrégistrement de l'ocx dans la base de régistre. (sous vista)
Pour y remédier Voir ce lien
Suivre le mode d'emploi, sauf pour appeller cmd, il faut ouvrir en tant qu'admin,
>> Démarrer >> Taper CMD >> NE PAS VALIDER >> Dans le haut du menu cliquer droit sur l'icone >> Ouvrir en tant qu'administrateur et ensuite suivre les indications du lien.

A+
EDIT:
pour le rendre automatique (je connaissai pas) Le code donner par jean-yvon devra probablement être activer lui aussi en tant qu'administrateur.
1
jean-yvon Messages postés 108 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 5 juillet 2009 10
29 déc. 2008 à 07:48
Salut,
Il faut enregistrer l'ocx ou la dll sur le système d'accueil.
Ci joint un petit prog
qui permet de le faire

Private Declare Sub SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

Private Sub Form_Load()
   SetWindowPos Me.hwnd, -1, (Screen.Width - Me.Width) / Screen.TwipsPerPixelX / 2, (Screen.Height - Me.Height) / Screen.TwipsPerPixelY / 2, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY, 0
End Sub

Private Sub Label2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
   AllonsY Data.Files(1), True
End Sub

Private Sub Label3_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
   AllonsY Data.Files(1), False
End Sub

Private Sub picDesenr_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
   AllonsY Data.Files(1), False
End Sub

Private Sub picEnr_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
   AllonsY Data.Files(1), True
End Sub

Private Sub AllonsY(sFichier As String, bEnreg As Boolean)

   Dim sChemin As String
   Dim lRet As Long
   
   sChemin = String(256, 0)
   lRet = GetShortPathName(sFichier, sChemin, 255)
   sFichier = Left(sChemin, lRet)
   
   If bEnreg Then
      Shell "regsvr32 " & sFichier, vbNormalFocus
   Else
      Shell "regsvr32 /u " & sFichier, vbNormalFocus
   End If
   
End Sub

@+
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
29 déc. 2008 à 09:49
En y réfléchissant, je pense qu'il y a moyen d'y remédier sans aucune manipulation.
Avec un setup fait sur XP l'installation sur vista ne pose aucun problème, donc je pense que créer le setup en étant loggué en tant qu'admin devrait créer un setup valide.
Pour ça ne pas appeler l'assistant à partir de l'IDE mais à partir du menu Démarrer et ouvrir l'assistant en tant qu'admin. (clic droit)

A+
0
armiou Messages postés 7 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 3 avril 2009
10 janv. 2009 à 11:45
Merci à tous pour les réponses!
J'ai créé le setup avec innosetup
Et je ne l'installe pas sur vista au fait mais sur un autre pc xp.
Je voudrais ajouter quej'ai essayé de lancer le programme exe(compilé seulement) sur certains pc de mes amis l'erreur ne s'affiche pas et le programme fonctionne bien et sur d'autres ça ne marche pas alors je comprends pa du tout.

Et ce programme jean-yvon est à placer où? svp?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jean-yvon Messages postés 108 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 5 juillet 2009 10
10 janv. 2009 à 14:14
Bonjour,

"Et ce programme jean-Yvon est à placer où? svp?"
C'est un truc qui tourne tout seul en drag'n drop. Tu glisses la DLL à enregistrer dans la case "enregistrement" et le programme se charge de tout! Pour désinstaller c'est pareil un glisser-déplacer et c'est fait!
@+
JY
0
armiou Messages postés 7 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 3 avril 2009
12 janv. 2009 à 16:57
Jean Yvon, je comprends pas!!
Mais je crois que j'ai résolu le problème, j'ai inclu tous les ocx utilisés dans innosetup et j'ai choisi de les faire mettre dans system de windowsde la machine accueillante. L'erreur mentionné ci-dessus n'apparait plus mais c'est l'erreur 91 object variable or with block....qui s'affiche maintenant.
0
jean-yvon Messages postés 108 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 5 juillet 2009 10
13 janv. 2009 à 07:29
Salut,
Je ne connais pas innosetup. Je fais tous mes empaquetages avec VB. Je n'ai jamais rencontré de gros problèmes! Je ne sais pas répondre à ta question!
@+
JY
0
Bonjour,

Je ne sais pas si le problème est toujours d'actualité mais le premier message d'erreur que tu as eu (problème d'enregistrement d'OCX) vient sûrement du fait que tu as omis d'inclure le fichier Rey_SubClasser.dll dans ton installation. J'utilise également l'OCX Rey_XPBasics et cet OCX dépend de Rey_SubClasser.dll d'où ton message d'erreur de dépendance lors de l'enregistrement de l'OCX.
Pour ton deuxième message d'erreur, tu as forcément un objet pas ou mal déclaré mais lequel...A toi de voir (attention avec le databasename des bases de données. S'il est erroné le recordsource ne passe pas et tu as ce message d'erreur par exemple).
En espérant que ça ais pu te servir ou que ça puisse servir à d'autres.

Fab.
0
armiou Messages postés 7 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 3 avril 2009
3 avril 2009 à 16:48
bonjour,

Au fait ce sujet est résolu, mais merci à Fab quand-même!

Je l'ai résolu en utilisant tout simplement l'outil d'empaquetage de VB et je l'ai ensuite importé dans innosetup en utilisant istool.
0