Csharp/C#教程:如何在第一次运行ClickOnce部署的应用程序时检测到?分享


如何在第一次运行ClickOnce部署的应用程序时检测到?

我有一个ClickOnce部署的应用程序,我正在使用它来检测第一次运行新部署时:

if (ApplicationDeployment.IsNetworkDeployed && ApplicationDeployment.CurrentDeployment.IsFirstRun) { // Display release notes so user knows what's new } 

在ClickOnce执行自动更新后,它似乎按预期工作。

但是当用户在安装站点上发布publish.htm并手动安装新版本时,它根本不起作用。 有没有办法可靠地检测这两种情况?

编辑:我正在尝试解决的情况:有时用户会听到已发布更新并手动转到publish.htm以获取新版本,而不是启动应用程序并让ClickOnce处理升级。 对于ClickOnce,这显然与首次安装无法区分。 真的吗?

解决方案代码 :我最终使用以下关键部分创建了一个ClickOnce帮助程序类:

  public static bool IsFirstRun { get { if (!IsNetworkDeployed) return false; // not applicable == bool default value if (!File.Exists(VersionFileName)) return true; return (GetLastRunVersion() != Version.ToString()); } } public static void StoreCurrentVersion() { File.WriteAllText(VersionFileName, Version.ToString()); } public static string GetLastRunVersion() { using (var stream = File.OpenText(VersionFileName)) { return stream.ReadToEnd(); } } public static string VersionFileName { get { StringBuilder filename = new StringBuilder(Files.LocalFilesPath); if (!filename.ToString().EndsWith(@"")) filename.Append(@""); filename.Append(@"versioninfo.dat"); return filename.ToString(); } } 

在ClickOnce安装中添加一个名为justInstalled.txt(或其他)的额外文件。 应用程序启动时该文件的Chedk。 如果您发现它将其删除并运行任何代码,以便首次运行该部署。 在下次部署/升级之前,该文件将保持丢失状态。

是的,为每个程序版本重置IsFirstRun …

这是微软的除外:

只要用户从一个版本升级到下一个版本,就会重置此属性的值。 如果只想在第一次运行任何版本的应用程序时执行操作,则需要执行其他测试,例如检查第一次创建的文件是否存在,或者使用Application存储标志设置。

或多或少的答案你质疑…

上述就是C#学习教程:如何在第一次运行ClickOnce部署的应用程序时检测到?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/957425.html

(0)
上一篇 2021年11月21日
下一篇 2021年11月21日

精彩推荐