Bonjour, suite à une évolution d'un outil à l'origine prévue pour un tout petit nombre de personne, et maintenant déployé sur une trentaine de poste, je souhaite me simplifier la vie en automatisant le déploiement de mises à jours.
Ma base comporte un FrontEnd et un BackEnd, et je déploie le FrontEnd en local sur les machines des utilisateurs.
J'ai une table version dans chacun des 2 fichiers, et lorsque je décide de déployer une mise à jour, j'incrémente la version dans le BackEnd, et si le FrontEnd n'a pas la bonne version il refuse de s'ouvrir et demande une mise à jour.
Rien de bien transcendant. Là où je bloque, c'est que je souhaite donc qu'en cas de non correspondance, le programme d'installation situé sur le réseau (R:\) se lance automatiquement.
Celui ci a été réalisé avec l'extension développeur d'Access 2007 et comporte le runtime d'Access, la base FrontEnd et un fichier d'icône.
J'ai pensé avoir recours à la fonction SHELL() pour lancer automatiquement le programme d'installation, mais j'ai systématiquement l'erreur suivante :
Voici mon code :
Ce code est lancé à l'ouverture du formulaire d'accueil.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Private Sub Maj_appli() Dim RetVal RetVal = Shell("R:\Applications\6eme_jour\setup.exe") End Sub Private Sub Form_open(Cancel As Integer) Dim version_access version_access = Access.Version If version_access <> "12.0" Then MsgBox "Une mise à jour est nécessaire et va être réalisée" Maj_appli DoCmd.CloseDatabase Else If Form.Comparatif.Value = "Incompatible" Then MsgBox "Votre client n'est pas à jour, une mise à jour va être effectuée" Maj_appli DoCmd.CloseDatabase Else 'DoCmd.ShowToolbar "Ribbon", acToolbarNo End If End If End Sub
J'ai réalisé les tests suivants.
- En remplaçant le chemin de mon programme d'installation par le chemin de la calculatrice windows, le code fonctionne et lance la calculatrice.
- En déplaçant le programme de la calculatrice (calc.exe) dans le même dossier que mon programme d'installation, le code fonctionne et lance la calculatrice (pas de problème avec le fait que R:\ soit un lecteur réseau donc)
- En déplaçant le programme de la calculatrice dans le même dossier et en le renommant setup.exe, le code fonctionne et lance la calculatrice (le code va donc bien chercher le chemin complet et n'utilise pas de variable d'environnement ou autre)
Je suppose donc que c'est la nature de mon programme d'installation qui ne revient pas à la fonction SHELL(). Il est souvent fait mention en parallèle de la fonction SHELL() de SHELLEXECUTE(), ou SHELLEXEC(). A première vue ces dernières servent surtout à ouvrir un fichier sans connaître le nom du programme associé, je ne vois pas trop comment l'appliquer à mon problème.
De plus, ces 2 fonctions ne sont pas reconnues par VBA lorsque je tente de les utiliser.
Je bloque depuis 2 jours sur ce petit détail et je commence a sérieusement m'embourber et tourner en rond.
Merci d'avance pour votre aide.
Partager