Où mettre un fichier de sauvegarde [Résolu]

- - Dernière réponse :  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 : ×
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
14570
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 octobre 2019
136
0
Merci
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
Commenter la réponse de NHenry
0
Merci
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 : ×
Commenter la réponse de Zermelo
Messages postés
14570
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 octobre 2019
136
0
Merci
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
Commenter la réponse de NHenry
0
Merci
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 : ×
Commenter la réponse de Zermelo
0
Merci
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 : ×
Commenter la réponse de Zermelo
0
Merci
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 : ×
Commenter la réponse de Zermelo
0
Merci
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 : ×
Commenter la réponse de Zermelo
0
Merci
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 : ×
Commenter la réponse de Zermelo