我正在创建一个小的c#winforms应用程序。它使用sqlite数据库来存储数据,我被要求在这个应用程序中添加更新功能,这样用户就可以更新sqlite文件以及任何其他文件,而无需重新安装应用程序。
问题是,当我进行更新时,它看起来好像一切正常,没有错误等等。但是当我查看应用程序安装目录时,一些下载的文件丢失了(通常是pdf文件),一旦更新已经下载它创建一个Updates.txt文件来跟踪它所做的更新。如果我然后卸载并重新安装应用程序,它就好像它已经完成了更新,即使Updates.txt文件丢失了。
奇怪的是,如果我在Visual Studio中运行并进行更新,它在100%的时间内都没有任何问题,它只是在我构建安装项目并安装导致问题的时候。也许安装项目中有一个设置导致文件被复制到其他地方?我完全不知道。
请帮忙。感谢。
编辑:这就是我下载文件的方式
String filename = "//test.pdf";
WebClient client = new WebClient();
client.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
client.DownloadFileAsync(new Uri(dlFile), System.IO.Directory.GetCurrentDirectory() + filename);
更新:这是一个权限问题,要修复它forced the app to run as administrator。
答案 0 :(得分:1)
如果您在Program Files中安装应用程序,那么您可能没有写文件的权限。您需要以管理员身份运行应用程序,或者通过代码提升应用程序。
答案 1 :(得分:1)
如果不是权限问题,我会感到惊讶。让相应的用户读/写您正在写入的文件夹,看看是否无法解决问题。它在visual studio中工作的原因是visual studio(很可能)以管理员身份运行,因此它的子任务也是如此。如果这不起作用,请引入一些调试语句以查看出现问题的地方。