Папка с базой данных sqlite, заблокированной explorer.exe после удаления программного обеспечения - PullRequest
0 голосов
/ 25 февраля 2010

У меня проблема с удалением приложения, использующего sqlite: во время установки создается пустая база данных sqlite в [CommonAppData] \ MyApp \ mydb.sqlite, например. C: \ Documents and Settings \ Все пользователи \ Данные приложения \ MyApp \ mydb.sqlite. Когда я удаляю свое приложение, оно не может удалить базу данных sqlite, несмотря на то, что оно удаляет приложения, которые к нему подключаются. Используя Process Explorer, я вижу, что это explorer.exe, который заблокирован в папке MyApp (не в файле sqlite).

Я такого раньше не видел. Возможно, это вызвано тем, что приложение неправильно закрывает / удаляет соединения? Я понимаю, что на каком-то уровне windows управляет тем, что несколько потоков и процессов обращаются к моему файлу БД, и это обрабатывает блокировку. Возможно ли, что если мое приложение не закрывает соединения и т. Д. Правильно, Windows запутывается в том, заблокирован ли файл или нет?

Или это невозможно, и просто должно быть что-то не так с моим MSI?

спасибо за любые предложения!

ОБНОВЛЕНИЕ: я не только не могу удалить папку или файл, но если я создаю новый файл в этой папке (например, новый txt doc), я не могу удалить этот файл! Так что это какая-то дурацкая блокировка папки ....

ОБНОВЛЕНИЕ: на самом деле ... это могут быть только разрешения для этой папки! В моей MSI я устанавливал разрешения для этой папки, и я думаю, что я не дал права на удаление, поэтому, когда я удалил, у меня не было доступа, чтобы удалить его: - /

1 Ответ

1 голос
/ 25 февраля 2010

Используйте файл handle.exe из коллекции SysInternals, чтобы узнать, что осталось от дескриптора файла.

Это также может быть ваш MSI, поэтому проверяйте, делаете ли вы все в правильном порядке; msiexec / u mymsi.msi / lv * mylog.txt

...