我对使用sqlite的应用程序有一个卸载问题:在安装过程中,在[CommonAppData] \ MyApp \ mydb.sqlite中创建了一个空白的sqlite数据库,例如: C:\ Documents and Settings \ All Users \ Application Data \ MyApp \ mydb.sqlite。当我卸载我的应用程序时,它无法删除sqlite数据库,尽管它删除了连接到它的应用程序。使用进程资源管理器,我可以看到它是在MyApp文件夹上锁定的explorer.exe(不在sqlite文件上)。
我之前没见过这种事。是否可能是由于应用程序未正确关闭/处置连接而导致的?据我所知,在某种程度上,Windows可以管理几个线程&进程正在访问我的db文件,它处理锁定。是否有可能,如果我的应用程序没有正确关闭连接等,那么Windows会对文件是否被锁定感到困惑?
或者这是不可能的,我的MSI一定是错的?
感谢任何建议!
更新:我不仅不能删除文件夹或文件,如果我在该文件夹中创建新文件(例如新的txt文档),我就不能删除该文件!所以这个文件夹上有些古怪的锁定....
更新:实际上......它可能只是该文件夹的权限!在我的msi中我设置了该文件夹的权限,我认为我没有给予删除权限所以当我卸载时我无权删除它: - /
答案 0 :(得分:1)
使用SysInternals集合中的handle.exe查找该文件的剩余句柄。
它也可能是你的MSI,所以检查你是否按照正确的顺序做事; msiexec / u mymsi.msi / lv * mylog.txt