我在Windows窗体应用程序中有一个更新按钮。当用户单击更新按钮时,应用程序将使用从Web服务获取的服务器中可用的版本检查应用程序的当前版本。如果版本之间不匹配,应用程序将从Web服务获取的路径下载新版本。
我目前在同一个解决方案中使用两个项目
运行应用程序的主项目
更新项目 - 目的用于删除.exe文件并下载新的.exe文件。 (更新项目作为主项目的参考添加)
问题是当我尝试通过更新项目中的代码删除mainproject.exe时,它显示一个异常,说“未经授权的异常被捕获”。有谁知道为什么会这样?或者有没有人有更好的想法在应用程序中使用更新功能?
这是我用来删除文件的代码。
Unauthorized Exception in Windows Forms - C#
修改: -
当我正在调试应用程序时,我能够删除.exe文件。但是当我在桌面上安装后尝试删除应用程序时,再次将异常消息视为“访问被拒绝”。
答案 0 :(得分:4)
在更新按钮中,您启动另一个小应用程序作为单独的进程,在小应用程序中,您可以使用以下代码来终止您的进程,然后删除原始应用程序。
try
{
Process [] proc Process.GetProcessesByName("YourAppName");
proc[0].Kill();
}
答案 1 :(得分:2)
应用程序是否正在运行,这就是它无法删除可执行文件的原因?如果是这样,您可以重命名正在运行的可执行文件并将新版本放在其位置。然后,下次启动应用程序时将执行新版本。
答案 2 :(得分:2)
我找到了解决方案,为什么iam在我的应用程序中获得“访问被拒绝”异常。
由于iam通过代码删除应用程序内的文件,我需要拥有“管理员”的权限。
一种方法是让用户以管理员身份手动登录。但这不是更好的选择。
另一种方法是在项目中创建App Manifest文件,并将级别设置为“administartor”。
创建App Manifest - >右键单击项目 - >添加新项目 - >从右侧窗格中选择App Manifest选项 - >单击确定
打开清单文件并将级别更改为“requireAdministartor”。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
这将解决运行应用程序时的问题,它将提示用户以管理员身份运行。
希望这对将来有所帮助。 :)谢谢你们的支持。