如何使用ClickOnce提供更新说明?
我们有一个应用程序,我编写了很多年,现在我通过ClickOnce推送更新。 该应用程序位于我们的主文件服务器上。 但每当我推出更新时,我都会被问到我改变了什么! 有没有办法用ClickOnce提供个性化的更新说明,这将是用户友好的? 例如,当用户启动他们的应用程序时,ClickOnce会询问“新版本是否可用。您要更新吗?”,在下面我可以描述我已更新的内容? 或者ClickOnce是不可能的?
我就是这样做的。 我在我的启动代码中以Release模式调用此方法:
using System.Deployment.Application; ... private void DisplayChangeLog() { if (!ApplicationDeployment.IsNetworkDeployed) return; if (!ApplicationDeployment.CurrentDeployment.IsFirstRun) return; ThreadPool.QueueUserWorkItem(state => Execute.OnUIThread(() => )); }
我知道这不是你想要的,因为它显示用户第一次运行应用程序但是在他们已经安装了更新之后。 在我们的环境中,用户无论是否更新都无法选择,因此没有什么区别。
ClickOnce不可能作为标准。 如果要向用户显示有关更改的消息,则需要自己实现。 一种方法是禁用自动更新,然后以编程方式检查更新 。 然后,您可以使用该版本从XML文件或类似文件中获取更改并将其显示给用户。
或者,您可以提供HTML格式的更改日志或可能更简单的更新日志 。
例如,请参阅Stack Overflow问题寻找recomendation以在ClickOnce应用程序中显示发行说明 。
无论哪种方式,一般来说如果有更新,为什么用户不想要它?
我最近花了相当多的时间研究并以编程方式操作在ClickOnce应用程序发布期间生成的清单文件,我没有看到添加自由表单描述的方法,如你想要的那样,以及当然没有办法通过Visual Studio提供的向导或UI来实现它。
(警告:我明天会在工作中仔细检查这一点,以确保完全没有办法 – 但你应该假设没有。)
只要您让ClickOnce自动检查更新,就无法更改ClickOnce的更新对话框。
要实现此目的,您必须使用ApplicationDeployment.CurrentDeployment
提供的方法在应用程序中以编程方式处理更新。 这允许您定义自己的更新对话框。 在这里查看官方的HowTo。 核心原则如下:
ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment; info = ad.CheckForDetailedUpdate(); if (info.UpdateAvailable) { // insert your update dialog here ad.Update(); }
但是,在调用ad.Update()
时,在那里描述的方法中存在一个错误,并且您在ClickOnce部署中有文件关联。 有关详细信息,请参阅论坛和错误报告 。 (我不知道这个bug是否已修复。)
作为解决方法,您可以通过以下行替换ad.Update()
:
上述就是C#学习教程:如何使用ClickOnce提供更新说明?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var application = ApplicationDeployment.CurrentDeployment.UpdatedApplicationFullName.Split('#')[0] + "?"; proc = new Process { StartInfo = { FileName = "iexplore.exe", Arguments = application, UseShellExecute = true } }; proc.Start(); Application.Current.Shutdown();
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/936513.html