2010-02-25 3 views
0

J'ai un problème de désinstallation avec une application qui utilise sqlite: lors de l'installation, un sqlite db vide est créé dans [CommonAppData] \ MyApp \ mydb.sqlite, par exemple. C: \ Documents and Settings \ Tous les utilisateurs \ Application Data \ MyApp \ mydb.sqlite. Lorsque je désinstalle mon application, il ne peut pas supprimer le sqlite db, malgré la suppression des applications qui s'y connectent. En utilisant l'explorateur de processus, je peux voir que c'est explorer.exe qui a un verrou sur le dossier MyApp (pas sur le fichier sqlite).Dossier avec sqlite db verrouillé par explorer.exe après la désinstallation du logiciel

Je n'ai jamais vu ce genre de chose auparavant. Est-il possible que cela soit causé par le fait que l'application ne ferme pas correctement/ne dispose pas de connexions? Je comprends que, à un certain niveau, Windows gère le fait que plusieurs processus & threads accèdent à mon fichier db, et il gère le verrouillage. Est-il possible que si mon application ne ferme pas correctement les connexions, alors Windows devient confus quant à savoir si le fichier est verrouillé ou non?

Ou est-ce que ce n'est pas possible et il doit simplement y avoir quelque chose de mal avec mon MSI?

merci pour vos suggestions! MISE À JOUR: non seulement je ne peux pas supprimer le dossier ou le fichier, si je crée un nouveau fichier dans ce dossier (par exemple un nouveau document txt), je ne peux pas supprimer ce fichier! Donc, c'est un verrou farfelu sur le dossier ....

MISE À JOUR: en fait ... il pourrait s'agir simplement d'autorisations sur ce dossier! Dans mon msi je mettais des autorisations sur ce dossier, et je pense que je n'ai pas donné de droits de suppression alors quand j'ai désinstallé je n'ai pas eu accès pour le supprimer: -/

Répondre

1

Utilisez handle.exe de la collection SysInternals pour savoir ce qui a le handle restant dans le fichier.

Cela pourrait aussi être votre MSI, alors vérifiez que vous faites les choses dans le bon ordre en faisant; msiexec/u mymsi.msi/lv * mylog.txt

+0

Oui, handle.exe fait la même chose que l'explorateur de processus, et dans ce cas montre que le handle est maintenu par explorer.exe. Je ne suis pas sûr si cela indique que le verrouillage de fichier pour sqlite s'est mal passé, ou le msi s'est mal passé. – Rory

+0

Il me semble qu'une invite de commande cachée de cmd est ouverte dans ce dossier ou vous avez une vue de dossier toujours ouverte. J'imagine que vous avez vérifié pour ceux-ci, mais je ne peux pas voir que ce soit autre chose. –

+0

non, ça doit être autre chose. Même le redémarrage de ma machine n'a pas fonctionné, jusqu'à ce que j'ai redémarré en mode sans échec. – Rory

Questions connexes