Bonjour,
Mon appli est (enfin) prête à la distribution. Pour cela, j'ai utilisé l'assistant Package réalisé par Argyronet (qu'il en soit ici, une fois encore, remercié !)
Mais, je me suis heurté à un autre problème: Du fait que je vais distribuer mon application sous forme de démo (un peu style shareware), je ne saurai pas si mon client potentiel a sur son poste MS-Access ou non.
Plutôt que de (encore...) demander à Argyronet de nous concocter une solution, j'ai décidé de retrousser mes manches pour trouver une solution à cela... mais je ne suis pas sûr de mon coup, c'est la raison de mon post, j'ai besoin d'avis de personnes plus expérimentées que moi dans ce domaine !
Situation:
Dans le répertoire racine de mon support, j'ai créé deux répertoires:
- Un contenant un package avec le runtime,
- L'autre sans.
Pour savoir quel package utiliser, j'ai donc créé un fichier batch qui va tenter d'ouvrir une base "accdb" sur le poste du client.
a. Si la base s'ouvre, c'est que MS-Acces est installé (of course...) ainsi il va lancer l'installation sans runtime.
b. Si au contraire une erreur est détectée à l'ouverture de cette base, c'est la version avec runtime qui va être exécutée.
Voici donc le contenu et la structure du support de mes deux répertoires (les "..." étant la lettre du lecteur concerné):
1: ... Autorun.inf
2: ... Setup.bat
3: ... Base.accdb
4: ...\Acc\Setup.exe
5: ...\Acc\Files
6: ...\Rnt\Setup.exe
7: ...\Rnt\Files
Code pour Autorun.inf:Code pour Setup.bat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [autorun] open=Setup.bat /AUTORUNAprès quelques essais, je remarque que la condition du fichier batch n'est pas prise en compte... mais je ne suis (et de loin) pas spécialiste en ce domaine.. donc, si une bonne âme, connaissant ce type de commande voulais bien me suggérer une démarche.. :-)
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
26
27
28
29
30
31
32
33
34
35
36 @echo off REM Attribution du nom du disque courant (de la racine) à la variable "fold" (C:, D:, ou autre) setlocal @for %%n in (%0) do set fold=%%~dpn chcp 1252 REM Tentative d'ouvrir "base.accdb" (bdd vide) pour tester la présence ou non de MS-Access sur le poste du client Start /WAIT msaccess.exe %fold%\Base.accdb 2>/dev/null REM Interception de l'erreur: REM 1. S'il n'y a pas d'erreur on lance l'installation sans runtime REM 2. Si une erreur est interceptée, on installe avec le runtime if %ERRORLEVEL% NEQ 0 ( goto :batch2 ) else ( goto :batch1 ) REM Installation sans runtime :batch1 cls call %fold%\Acc\Setup.exe cls goto :fin REM Installation avec le runtime :batch2 cls call %fold%\Rnt\Setup.exe cls goto :fin :fin endlocal exit
Je suppose qu'il faudrait un batch qui teste l'installation d'access (ainsi que sa version) car, je doute un peu de la pertinence d'ouvrir une base accdb pour tester la présence de MS-Access...
Merci de vos avis et autres commentaires :-)
Partager