Problème de déploiement d'un fichier cab

Résolu
jbrasselet Messages postés 7 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 22 mars 2006 - 21 mars 2006 à 16:43
jbrasselet Messages postés 7 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 22 mars 2006 - 22 mars 2006 à 17:02
A l'aide de l'assistant Empaquetage & déploiement de VB6, nous générons le fichier PrjControlePIMT.CAB contenant les éléments suivants :



- ASYCFILT.DLL



- COMCAT.DLL
- MSPRPFR.DLL


- MSSTKPRP.DLL


- MSVBVM60.DLL


- msxml2.dll


- msxml3.dll


-OLEAUT32.DLL



- OLEPRO32.DLL


- Pimt.dll


- PrjControlePIMT.INF


- PrjControlePIMT.ocx


- STDOLE2.TLB


- VB6FR.DLL





Une page ASP de l'application contient la balise HTML suivante :







<OBJECT id= "ctrlPIMT" style="VISIBILITY: hidden" codeBase="PrjControlePIMT.CAB#version=2,0,0,13" classid="CLSID:17BCCC78-9180-4A55-B77A-0F95415F890A" VIEWASTEXT>






L.ors du premier appel de cette page par le client, on confirme la demande IE6.0 pour l'installation du CAB.





Anomalie détectée :





- les fichiers ne sont pas copiés dans c:\windows\system32


- l'utilisation ultérieure d'une méthode de l'objet provoque donc une erreur





Environnement Technique :





- Serveur IIS 6.0


- Poste Client : Windows XP SP1 (sans hot fix)

Appel de la méthode qui sort en erreur :
var objLOCX =document.getElementById('ctrlPIMT');
objLOCX.ImprimerTest('Bleu');

13 réponses

jbrasselet Messages postés 7 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 22 mars 2006
22 mars 2006 à 17:02
Après moult recherche sur les dlls de mon poste client et comparaison avec les dlls de mon cab j'ai remarqué que certaines étaient déjà installées de base sur XP SP1.
J'ai donc laissé dans mon cab les autres dll ainsi que mon ocx.

Depuis, plus aucun problème. Problème résolu donc.
Merci rvblog<SUP>n
</SUP>
J'analyserais demain le pourquoi de la chose et te tiendrais au courant si je trouve une raison à tout cela
J'irais jeter un coup d'oeil au toto également demain matin.
3
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
21 mars 2006 à 17:27
Salut jbrasselet,

ne manque-t-il pas, dans le codebase de

<OBJECT id= "ctrlPIMT" style="VISIBILITY: hidden" codeBase="PrjControlePIMT.CAB#version=2,0,0,13" classid ="CLSID:17BCCC78-9180-4A55-B77A-0F95415F890A" VIEWASTEXT>

l'URL complète du serveur qui hébèrge le Cabinet, genre :

<OBJECT id= "ctrlPIMT" style="VISIBILITY: hidden" codeBase="http://www.parlabas.com/PrjControlePIMT.CAB#version=2,0,0,13" classid ="CLSID:17BCCC78-9180-4A55-B77A-0F95415F890A" VIEWASTEXT>

pour que le download réussisse?

Es-tu sûr de la syntaxe de :
var objLOCX=document.getElementById('ctrlPIMT'); //double-quote?

Es-tu sûr du contenu de "PrjControlePIMT.INF"?
Le client a-t-il les droits nécessaires pour installer le package?

Sinon, le résultat de tes recherches m'intéresse, je n'ai pas encore déployé d'AX VB sur le framework.

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
jbrasselet Messages postés 7 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 22 mars 2006
21 mars 2006 à 17:50
Merci de ta réponse rapide.

J'ai testé mon fichier en mettant l'adresse complète du site mais la même erreur se produit. Mon chemin est en relatif (/Application étant ma racine). L'ajout de l'adresse n'apporte donc rien. De plus c'est ainsi qu'est généré le fichier HTML via l'assistant de déploiement.

Le fichier .INF est également généré par l'assistant de déploiement.

La syntaxe du getElementById est correcte. En fait il s'agit d'un bout de code js dans une page ASP donc mic-mac ' et ".

Un autre test a été de le faire sur un poste XP SP2. Cela a fonctionné.
J'ai donc comparé les droits des groupes sur le répertoire system32. Ce sont les mêmes entre SP1 et SP2.


Administrateurs et SYSTEM : controle total


Créateur propriétaire : aucun droit


Utilisateurs : Lecture et execution / Lecture / Affichage contenu


Utilisateurs avec pouvoir : Modification / Lecture et execution / Lecture / Ecriture / Affichage contenu

Je n'ai pas trouvé par contre à quel groupe appartient IE (qui installe les dll et ocx il me semble)
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
21 mars 2006 à 18:05
Et les réglages de sécurité de l'utilisateur? tu y as peut-être déjà pensé?
je n'ai pas bien compris l'histoire du bout de code js dans une page ASP. La méthode getElementById appartient bien au framework, non? et elle s'exécute bien sur le client, non?
Concernant les droits IE, je ne sais pas (sur le serveur c'est une casquette IWEB), sur le client c'est plus flou pour moi. Mais peut-être quelqu'un d'autre, ici, la communauté est grande.

Pour la suite, tu étais super précis dans ta description du contexte, dans celle du problème, un peu moins (je trouve). Est-ce que le download échoue? que dis le log du serveur? et du côté client, y-a-t-il des traces d'échec (base de registres incomplète ou autres)?

à+

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0

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

Posez votre question
jbrasselet Messages postés 7 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 22 mars 2006
22 mars 2006 à 09:44
Au niveau du problème :
Lorsque j'affiche la page contenant le CAB, IE me demande bien de l'installer. J'accepte.

Il travaille un peu et ensuite me met une erreur js sur le ImprimerTest : Cet objet ne gère pas cette propriété ou cette méthode

Lorsque je regarde alors dans system32, je vois qu'aucune des dlls du cab n'a été installées comme décrit dans le fichier .INF.

J'ai fait un test hier avec Filemon. Le CAB est décortiqué pour l'installation mais il me met de temps à autre une erreur du style "Range Not Found" (aucune idée de ce que ce peut être) sur le fichier .INF
Je n'en sais pas beaucoup plus.
Néanmoins cette erreur intervient aussi sur d'autres composants windows hors IE et installation de mon CAB.

Au niveau des logs :
Je n'ai rien sur le log serveur puisqu'au final tout cela se fait sur le poste client. Le GetElementById est bien executé sur le client et c'est une commande js.
Niveau client, de quels logs parles-tu?
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
22 mars 2006 à 10:21
Salut jbrasselet,

"Il travaille un peu et ensuite me met une erreur js sur le ImprimerTest ", je suis surpris que ce ne soit pas la ligne du getElementByID qui renvoie une erreur (si l'objet n'est pas installé), mais je suis facilement surprenable :).

Côté client, je ne pensais pas à un log, mais plutôt à chercher les traces d'une installation incomplète. Par exemple, cherches dans la base de registres la chaine ID, ou même le ClassID de ton composant, et vérifies que la registration comporte le nécessaire à le faire fonctionner (compares la à ce qui se trouve dans le .inf).

Un autre point potentiellement névralgique est peut-être le fonctionnement du composant :


"PrjControlePIMT.ocx" utilise-t-il la dll "Pimt.dll"? Est-elle correctement registrée? Est-ce un composant qui s'exécute sur le client, ou serveur à distance (fichier .vbr)? Lorsque l'ocx est instancié, a-t-il les droits néccessaire à la liaison avec la dll (instancies-le d'un quelquonque moyen, et vérifies qu'il a bien chargé la dll)?

Si toujours non, je te propose de t'occuper de faire l'installation, côté client, à la main, de registrer chaque composant, et d'afficher la page client contenant le cab.

à+

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
jbrasselet Messages postés 7 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 22 mars 2006
22 mars 2006 à 14:32
Bonjour,

merci de ton acharnement ;o)
Après recherches sur le poste client et dans la base de registre, je n'y ai rien trouvé ayant trait à la dll, l'ocx ou leur ClassID.

L'ocx fait en effet appel à la dll; et avec un programme de test, le tout fonctionne parfaitement. Il est à noter que le téléchargement du CAB n'enregistre ni l'ocx ni la dll sur le disque du poste client.

Lorsque l'ocx et la dll sont enregistrées à la main sur le poste client, le passage par la page d'appel de l'ocx fonctionne parfaitement. Il trouve en effet la dll et donc sa méthode ImprimerTest.

Le problème est réellement pourquoi l'ocx et la dll ne sont pas créées sur le client (et en conséquence registrées)

J'ai jeté un oeil sur le fichier .INF mais il me semble correct.

Je vais testé avec un CAB contenant seulement l'ocx et un contenant seulement la dll pour voir si cela vient d'un des deux objets.

Merci encore
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
22 mars 2006 à 14:43
De rien, trop de tout, sinon pas de plaisir,

sinon, tentes toujours de nous afficher le fichier INF, en cachant le confidentiel s'il y en a (tu dois savoir, comme moi, que la majeur partie des solutions des problèmes se trouve là où le détenteur du problème est sûr qu'elle n'est pas, sinon, il est devenu compétent, et il tarde à changer de métier).

PS: en plus, je pensais vraimment que le GetElementByID sentait le pâté, et maintenant je suis sûr du contraire!


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
jbrasselet Messages postés 7 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 22 mars 2006
22 mars 2006 à 15:22
Voici un essai un peu plus concluant:
j'ai créé mon CAB avec seulement l'ocx et la dll. Après avoir mise à jour le tout sur le serveur (CAB et CLSID de ma page HTML), j'ai lancé ma page coté client.

J'ai eu la même erreur mais la dll est dans le répertoire system32 ainsi que dans le registre et l'ocx est dans le répertoire Downloaded Program Files de windows, le .INF dans LastGoof\Downloaded Program Files et le tout répertorié dans le registre

J'aurais donc tendance à dire que le CAB est ok ainsi que le .INF non?

Reste l'erreur js...
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
22 mars 2006 à 15:58
PS: ce PS est un test pour PCPT, mais que le PS, alors, PCPT, n'effaces pas le message, s'il te plaît (mais tu l'auras compris)

Je n'avais pas prêté une attention particulière aux autres dll présentes dans le cab.
Mais, maintenant que tu en parles, elles étaient effectivement, peut-être sources d'ennui.

Cependant, pour en être sûr, tu devrais :
- vérifier qu'elles sont effectivement déjà présentes sur ton client, et même verrouillées par des process les utilisant (ce qui ouvre une piste sur les raisons de l'échec du cab).
- que celles de ton client sont de même version (COM n'est pas le .NET) que celles que tu tentais de déployer, et de même langue (pour celles qui ont l'air d'être localisées).
- que tous tes clients sont de même facture que celui-ci (si VB les a mises dans le cab, c'est qu'elles sont des dépendances de tes composants), un autre type de plate-forme pourrait lui en avoir grand besoin.

Au risque de paraître méchant, ôtes-moi d'un doute, les dll dont que je parle ci-dessus, tu ne les as pas enlevées avant de refaire ton test de cab? donc, on ne sais pas encore si le cab (et son inf) sont bons ! :)

L'erreur JS :

Est-ce ton composant qui remonte une erreur interne non traitée, ou est-ce le script qui prévient de l'erreur?
-Si Erreur script :
Problème de casse? le VIEWASTEXT, il faut l'enlever non?Peux tu lire une propriété pour vérifier l'instance?
-Si Erreur interne :
Y-a-t-il une imprimante installée sur le client? Est-ce l'imprimante par défaut que ton composant cherche à utiliser ou une imprimante nommée?Reconnaît-il la valeur "Bleu" dans son contexte d'exécution (pb de langue)?

PS: ce PS est un test pour PCPT, mais que le PS, alors, PCPT, n'effaces pas le message, s'il te plaît (mais tu l'auras compris)


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
jbrasselet Messages postés 7 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 22 mars 2006
22 mars 2006 à 15:58
Ce qui est étrange, suite à un nouveau test, c'est que cela fonctionne parfaitement en SP2. Aurais-tu connaissance de patch SP1 qui arrangerait des problèmes?

Je viens également de remarquer que les versions d'IE ne sont pas les mêmes. 6.0.2800 pour SP1 et 6.0.2900 pour SP2.

Creusons ;o)
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
22 mars 2006 à 16:13
Bon, un patch pour SP1, qui arrangerait des problèmes?
tic,tac,tic,tac,
"SP2" !
non, je plaisante, par manque de connaissance dans ce domaine (je suis fumeur, et moi, les patchs, ça me rebute).

Par contre, je ne suis pas surpris que les patchs en questions appliquent des changements de version à l'IE. S'il y avait que lui en plus.


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 mars 2006 à 16:56
Rvblog -> ok.

JBrasselet -> je n'ai pas tout lu mais jète un oeil sur le tuto n°238 de Zlub & DarkSidious.

++
0
Rejoignez-nous