我不想使用ClickOnce的默认行为,它提供了一个对话框窗口,用于检查更新,我想手动检查更新
在互联网上搜索后,我发现:
try
{
var deploy = ApplicationDeployment.CurrentDeployment;
if (deploy.CheckForUpdate())
MessageBox.Show("There is a new update");
else
MessageBox.Show("You using the latest version");
}
catch (Exception e2)
{
MessageBox.Show(e2.ToString());
}
当我安装应用程序并要检查更新时,出现错误:
system.deployment.application.trustnotgrantedexception:用户拒绝授予应用程序所需的权限
你能帮忙吗。
提前致谢。
最佳答案
右键单击您的项目。选择属性。然后去发布Tab。单击更新。然后取消选中“应用程序应检查更新”。
我不太确定为什么会收到该错误,但我也使用了相同的方法。手动检查更新。但是我的应用程序已部署在服务器上。我有一个计时器,它每15分钟检查一次新更新。
这是我的方法。
private void InstallUpdateSyncWithInfo()
{
if (!isNewUpdateMessageShown)
{
try
{
if (ApplicationDeployment.IsNetworkDeployed)
{
ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
ad.UpdateCompleted += new AsyncCompletedEventHandler(ad_UpdateCompleted);
//ad_UpdateCompleted is a private method which handles what happens after the update is done
UpdateCheckInfo info = ad.CheckForDetailedUpdate();
if (info.UpdateAvailable)
{
//You can create a dialog or message that prompts the user that there's an update. Make sure the user knows that your are updating the application.
ad.UpdateAsync();//Updates the application asynchronously
}
}
}
catch (Exception ex)
{
ex.Log();
}
}
}
void ad_UpdateCompleted(object sender, AsyncCompletedEventArgs e)
{
//Do something after the update. Maybe restart the application in order for the update to take effect.
}
编辑
我已经更新了答案。您可以复制并粘贴此代码,然后根据您的应用程序需求进行调整。
在我之前的回答中,我打开一个新窗口,告诉用户有更新,然后让用户选择是否要更新应用程序。