Rechercher : dans
Par :

Toujours les OCX,VB,Setup!

Dernière réponse le 3 avr 2009 à 16:48:06 armiou, le 28 déc 2008 à 19:44:44 
 Signaler ce message aux modérateurs

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

Configuration: Windows Vista
Internet Explorer 7.0

1

jean-yvon, le 29 déc 2008 à 07:48:28

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

@+

Répondre à jean-yvon

2

lermite222, le 29 déc 2008 à 09:33:15
  • +1

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. L'expérience instruit plus sûrement que le conseil. (André Gide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

3

lermite222, le 29 déc 2008 à 09:49:09

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+ L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

4

armiou, le 10 jan 2009 à 11:45:32

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?

Répondre à armiou

5

jean-yvon, le 10 jan 2009 à 14:14:58

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

Répondre à jean-yvon

6

armiou, le 12 jan 2009 à 16:57:02

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.

Répondre à armiou

7

jean-yvon, le 13 jan 2009 à 07:29:05

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

Répondre à jean-yvon

8

VBDev, le 2 avr 2009 à 14:16:13

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.

Répondre à VBDev

9

 armiou, le 3 avr 2009 à 16:48:06
  • +1

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.

Répondre à armiou
Collection CommentÇaMarche.net