Installer un fichier

Résolu
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
-
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
-
Salut à tous !

J'ai supprimé l'extension d'un fichier .msi
Dans mon appli VB6 j'ai ceci :
Private 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

Private Sub Bt_Setup_Click()
Call Shell(App.Path & "/installation", vbNormalFocus)
End Sub


Installation était installation.msi et maintenant il n'a plus d'extension.

Comment puis-je lancer l'exécution de ce fichier pour qu'il s'installe sur la machine de mon client svp ?

Avec le code ci-dessus j'ai un message d'erreur :
Erreur d'exécution '5':
Argument ou appel de procédure incorrect

Pouvez-vous svp me filer un coup de main ?
Merci

----------
OS : Windows XP SP3 et Vista 32
Platforme : VB 6.0 + SP6
Ok VB6.0 c'est pas net !

13 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Ca, c'est parce que je t'ai donné un exemple et que tu l'as recopié tel quel

Ce sont tes options, qu'il te faut mettre.
L'option f est pour réparer, par exemple.
A toi de mettre les options que tu veux !
Pour t'y aider :
Lis donc ceci. Elles y sont expliquées.

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

C'est réglé ^^ Il installe ENFIN mon msi sans problème ^^

Voici donc le code final :
Private Sub Bt_Setup_Click()
Chemin = App.Path & "\installation.msi"
Shell App.Path & "\msiexec.exe /a """ & Chemin & """"
End Sub

Je te remercie pour ton aide ucfoutu ! Tu as été génial dans ta pédagogie et surtout dans ta patience avec moi.
Merci infiniment !

Bonsoir,

La question est : pourquoi avoir supprimé cette extension ?

Sinon tu peux toujours renommer "installation" en "installation.msi" juste avant de l'exécuter.

Bonne nuit.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,

Je suis étonné que tu nous montres ici à la fois la déclaration d'une fonction de l'Api de Windows (au demeurant non utilisable directement pour un fichier sans extension) et/mais l'utilisation de la fonction Shell de VB.
Si tu veux utiliser Shell avec un fichier sans extension, tu le peux en précisant le chemin complet de l'outil capable d'ouvrir ton fichier en exécution.
Assure-toi par ailleurs de ce que ton fichier se trouve bien dans le dossier dans lequel se trouve ton appli (puisque tu utilises App.path)
D'une manière générale :
Shell saura exécuter tout fichier que tu pourrais exécuter en ligne de commande (Démarrer==>>Exécuter) et avec la même syntaxe. Commence vdonc par vérifier, avec ce geste-là.

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Salut,
Ben c'est vérifié en fait. J'ai essayé de poser à la fois mon exe et mon msi (avec ou sans extension) directement sur le C:\ ou encore mon lecteur CD (D:\) mais j'ai la même erreur.

Private Sub Bt_Setup_Click()
Call Shell(App.Path & "\installation.msi", vbNormalFocus)
End Sub


J'ai supprimé l'extension exprès pour ne pas que mon client sache quels sont les fichiers utilisés pour son projet.
Les pdf, les docx et là c'est au tour du msi. Ils sont tous appelé dans l'exe avec l'extension qui l’apparient.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Fait un :
Msgbox App.Path & "\installation.msi"

Copie fidèlement ce qui s'affiche
Va en ligne de commande
mets-y ce qui s'est affiché (tel quel) ===>> exécute
Que se passe-t-il alors ? succès ou insuccès ?

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Pour en revenir à ce que j'exposais plus haut :
Pour mémoire :
Si tu veux utiliser Shell avec un fichier sans extension, tu le peux en précisant le chemin complet de l'outil capable d'ouvrir ton fichier en exécution.

voilà l'aspect que devrait revêtir la chose ( si msiexec.exe est dans system32. Si ailleurs : chemin complet de là où il est) :
Shell "C:\WINDOWS\system32\msiexec.exe /fa ""chemin_complet_de_ton_fichier_a_executer""" 


Reste que tu parles d'un fichier d'installation sur une machine-client.
Une telle instruction est bien évidemment subordonnée à la présente de msi chez ton client !
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Une telle instruction est bien évidemment subordonnée à la présente de msi chez ton client !

Lire plus exactement :
"Une telle instruction est bien évidemment subordonnée à la présente de msi chez ton client et avec ce chemin-là ! "
Je commencerais personnellement à en vérifier l'existence, en utilisant la variable Environ pour remplacer C:\WINDOWS


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Merci ucfoutu pour toute cette aide !
Alors le msgbox me renvois exactement le chemin du fichier.msi tel qu'il est.

Lorsque je met le code :
Private Sub Bt_Setup_Click()
Chemin = App.Path & "\installation.msi"
MsgBox Chemin
Shell "C:\WINDOWS\system32\msiexec.exe /fa ""Chemin"""
End Sub

Voici l'erreur rencontrée :


J'ai cependant créé un fichier installation.txt pour voir, j'ai le même problème.

Pour le chemin du fichier chez mon client je penses pouvoir contourner ce problème en incluant le fichier d'installation msiexec.exe dans mon appli, il le prendra cependant de la racine ^^
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Message clair :
Etr donc :
1) vérifier que tu as bien ces droits d'accession.
Sur certaines versions de Windows, cette commande devra peut-être lancée "en tant qu'administrateur" (que tu la lances ou non depuis un compte administrateur)
et (si tu les as) :
2) vérifier que cet exe n'est pas corrompu !
A lire : Cette discussion
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Eh !
et ce devrait être :
shell "C:\WINDOWS\system32\msiexec.exe /fa """ & Chemin & """"
sinon tu vas avoir "chemin" dans ta commande !


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Alors voilà, comme expliqué dans le lien, j'ai copié dans mon app.path les fichiers :
- msi.dll
- msiexec.exe
- msihnd.dll

Ensuite j'ai édité le code comme suite :
Private Sub Bt_Setup_Click()
Chemin = App.Path & "\installation.msi"
Shell App.Path & "\msiexec.exe /fa ""Chemin"""
End Sub

Les permissions d'utilisateur (sous Seven) sont à "ne jamais m'avertir"
Lorsque je lance l'.msi sans passer par VB je n'ai pas de problème. Java et patati-patata sont bien installés, je n'ai aucun problème système.
Dois-je comprendre que je dois autoriser VB6 à lancer l'.msi en mode administrateur même si j'y suis déjà ?
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

lol, tu as raison, il lisais Chemin au lieu du chemin à suivre.
Par contre là j'ai ceci :

Je n'ai pas saisi sa demande... tu saurais de quoi il s'agit ?