Où mettre un fichier de sauvegarde

Résolu
Zermelo - 11 nov. 2012 à 15:01
 Zermelo - 12 nov. 2012 à 11:04
Bonjour à tous.

Je voudrais savoir où mettre le fichier de sauvegarde d'une application programmée en VB 2010.

Merci à qui voudra bien me le dire.


Étant illettré, je signe d'une croix : ×

12 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 nov. 2012 à 19:36
Bonjour,
Je ne sais pas si ma réponse trouve ou non son origine dans le traumatisme (séquelles toujours présentes) qu'a provoqué il y a bientôt vingt ans l'absence de précautions en matière de sauvegardes, mais ma réponse est aujourd'hui sans la moindre hésitation : sur un support distinct du disque dur.
Maintenant : je n'ai peut-être pas vraiment compris ce passage :
le fichier de sauvegarde d'une application programmée en VB 2010

S'il s'agit de l'application elle-même, la nécessité d'une sauvegarde n'est présente que si l'application est elle-même modifiée. On préfère alors généralement distinguer le développement (sur une machine distincte à laquelle n'ont accès que les développeurs du projet) de celle de l'installation (après "grattage" et qualification) de chaque nouvelle version de l'appli, cette dernière (machine) étant réservée aux utilisateurs.
Il y a alors (sur 4 supports distincts) :
- deux sauvegardes sur la machine de développement à chaque modif du projet
- deux sauvegardes de ce qui est installé (à chaque nouvelle installation)
Voilà ma réponse prudente, s'il s'agit bien de sauvegarder l'application, hein ...
Elle serait bien évidemment quelque peu différente, s'il ne s'agissait finalement pas de sauvegarde de l'appli, mais de celle des données qu'elle modifie à l'utilisation.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 nov. 2012 à 21:53
Il ne s'agit donc pas de sauvegarder l'appli, mais les données qu'elle traite.
Si tu veux être rigoureux (réellement te prémunir contre toute forme d'accident), le principe d'une sauvegarde sur un support distinct du disque dur reste toutefois le même. C'est le seul qui te protègera vraiment, notamment des pertes de données résultant d'un "crash" de ton disque.
Reste qu'alors cette partie de ton exposé demeure quelque peu obscure :
À la prochaine ouverture du programme, cet utilisateur veut évidemment retrouver les informations telles qu'il les a laissées. D'où un fichier de sauvegarde.

Là, j'ai du mal à te suivre !
Où sont donc exactement les données que l'utilisateur modifie ? Dans une base de données ? ou ailleurs, et dans quoi et sous quelle forme ?
Sois s'il te plait très précis en ce qui concerne cet aspect fondamental.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 nov. 2012 à 07:47
D'où l'importance de la terminologie.
Il ne s'agit alors pas de "sauvegarde", mais d'enregistrement de données.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 nov. 2012 à 09:49
Bon.
Si je comprends bien, il ne s'agit que d'un fichier texte que tu exploites en lecture/écriture depuis ton appli.
Le plus simple me parait alors de la mettre tout bêtement dans un sous-dossier du répertoire d'installation de ton appli (un chemin relatif, donc). De cette manière, son chemin sera toujours le même, quel que soit le répertoire de ton appli.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3

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

Posez votre question
NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 159
11 nov. 2012 à 16:22
Bonjour,

Quel sauvegarde ?
- Préférence utilisateur : %appdata%
- Données utilisateur (documents, ...) : Mes documents
- Préférence/Données pour tout le monde : Application avec droits d'administrateur, et stockage dans AllUser.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Bonjour NHenry.

Votre réponse, dont je vous remercie, m'amène à préciser le type d'application que j'ai en vue. Elle contient des informations que l'utilisateur peut modifier grâce à des commandes appropriées. À la prochaine ouverture du programme, cet utilisateur veut évidemment retrouver les informations telles qu'il les a laissées. D'où un fichier de sauvegarde. Jusqu'à présent, j'utilisais un artifice
Public Function DossierProjet() As String
        Dim Dos As String
        Dos Application.StartupPath : Dos GetDirectoryName(Dos) : Dos = GetDirectoryName(Dos)
        Return Dos
    End Function

qui comme son nom l'indique renvoie le chemin d'accès du dossier du projet, tout en étant défini par rapport à l'application elle-même. Il m'était alors facile de donner au fichier de sauvegarde un chemin d'accès du type
DossierProjet & "\Machin.bin"

Mais on m'a dit récemment que cela n'était pas une bonne pratique, et qu'il est impératif de mettre les données (parmi lesquelles, je suppose, le fichier de sauvegarde)
dans le dossier Debug. La variété de vos réponses semble montrer qu'il n'en est rien.
J'ajoute que dans certains cas, je compte mettre ce fichier à la disposition de l'utilisateur.

Pouvez-vous m'éclairer là dessus ? Merci.


Étant illettré, je signe d'une croix : ×
0
NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 159
11 nov. 2012 à 18:46
Bonjour,

Pour mettre le fichier à disposition de l'utilisateur, le mieux reste de le mettre dans le dossier mes documents, si ce n'est pas pour que l'utilisateur accèdes directement au fichier, le dossier Application Data (%appdata%) est plutôt conseillé.

D'autre part, le fait de mettre le fichier de config directement dans le dossier du projet (et donc pas dans Bin/Release/Debug), est déconseillé.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Soit, mais mon code doit accéder en permanence au fichier de sauvegarde, dont je dois par conséquent connaître le chemin d'accès. Alors, la détermination du chemin d'accès au dossier Debug
Public Function DossierDebug() As String
        Dim Dos As String
        Dos Application.StartupPath : Dos GetDirectoryName(Dos) & "\Debug"
        Return Dos
    End Function

vous paraît-elle acceptable pour y mettre par code le fichier de sauvegarde ?


Étant illettré, je signe d'une croix : ×
0
Bonsoir ucfoutu.

Tu as raison, j'ai été bien trop elliptique. Il s'agit en effet des données que l'application modifie à l'utilisation. C'est ce que j'appelle le fichier de sauvegarde. Je veux bien le mettre où l'on voudra, pourvu qu'on me donne de quoi l'attraper, c'est-à dire un chemin d'accès.
Ceci constitue le premier niveau de sauvegarde. Le second niveau consiste à fournir le fichier en question dans le déploiement pour que l'utilisateur puisse le sauvegarder sur un support externe. Et tout ça dans le même paquet cadeau. Je l'ai déjà fait en VB6. Il doit donc être possible de le faire en VB 2010, scrogneugneu.

Amicales salutations.


Étant illettré, je signe d'une croix : ×
0
Je suis tout à fait d'accord avec toi quant à la sauvegarde sur support externe. Je sauvegarde ainsi mes principales applications une fois par semaine.
En ce qui concerne la partie de l'exposé que tu trouve obscure, je te prie de t'accrocher à tout ce que tu as sous la main.
C'est mon fichier de sauvegarde qui me sert de base de données. Je le conserve dans l'application, mais le rends accessible en entrée-sortie pour sauvegarde sur support externe.

.........................................
Voila voila voila. Je viens de me rendre compte que je suis un programmeur iconoclaste.

Je crois que ta réponse va être gratinée.





Étant illettré, je signe d'une croix : ×
0
Eh bien un grand merci ucfoutu. Je vais pouvoir reformuler ma question. Car il demeure que j'ai besoin d'un chemin d'accès pour le "fichier d'enregistrement de données", et que l'aide des experts en VB.NET me sera fort utile pour cela.


Étant illettré, je signe d'une croix : ×
0
Il s'agit en réalité d'un fichier binaire obtenu par sérialisation, selon un procédé propre à VB.NET. Mais peu importe. J'ai deux problèmes à résoudre.

Dans le projet.
J'ai besoin d'un chemin d'accès à ce fichier pour l'exploiter en lecture/écriture. Pour cela, j'utilise le chemin d'accès du projet, mais calculé à partir de l'application, de sorte que le chemin relatif soit invariant. (Je faisais déjà cela en VB6, à l'aide de App.Path). Cela fonctionne fort bien, mais j'aimerais valider mon mode de calcul, auprès des experts de VB.NET, pour savoir s'il s'applique dans tous les cas de figure.

Dans le répertoire d'installation.
Mettre le fichier dans un sous-dossier du répertoire me paraît la bonne méthode. (Cela aussi, je le faisais déjà en VB6).





Étant illettré, je signe d'une croix : ×
0
Rejoignez-nous