当前位置: 首页 > news >正文

潞城建设局网站国内永久免费的云服务器

潞城建设局网站,国内永久免费的云服务器,微信开放社区,海南房地产网站建设文章目录 前言运行环境ClickOnce(Visual Studio 程序发布)IIS新建文件夹C# 控制台测试安装测试更新测试卸载 AutoUpdaterDotNET实现原理简单使用新建一个WPF项目 代码封装自动更新代码封装简单使用 总结 前言 虽然写的大部分都是不联网项目,…

文章目录

  • 前言
  • 运行环境
  • ClickOnce(Visual Studio 程序发布)
  • IIS新建文件夹
  • C# 控制台测试
  • 安装测试
    • 更新测试
    • 卸载
  • AutoUpdaterDotNET
    • 实现原理
    • 简单使用
      • 新建一个WPF项目
    • 代码封装
      • 自动更新代码封装
      • 简单使用
  • 总结

前言

虽然写的大部分都是不联网项目,上位机的项目一般写好了就不动了。但是说不定以后就需要自动更新呢。桌面程序不像网页,联网就能用。而是要进行版本号判断进行更新的。

运行环境

  • Visual Studio 2022
  • .net core 8.0
  • IIS

ClickOnce(Visual Studio 程序发布)

毕竟是微软官方的部署方式,应该是挺简单的

ClickOnce 安全性和部署

快速创建软件安装包-ClickOnce

在这里插入图片描述
在这里插入图片描述

IIS新建文件夹

在这里插入图片描述

C# 控制台测试

新建一个简单的控制台程序进行测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

安装测试

在这里插入图片描述

这里报错是因为没有签名。

在这里插入图片描述

在这里插入图片描述
安装成功,但是默认路径是C盘,有点尬尴

Choose install path for ClickOnce application during setup

在这里插入图片描述

更新测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

卸载

直接卸载即可

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

AutoUpdaterDotNET

AutoUpdater.NET github 仓库地址

AutoUpdater.NET 使用简介

在这里插入图片描述

在这里插入图片描述

实现原理

IIS
Update.html:更新日志详细信息的内容
AutoUpdateStarter.xml:版本号信息
Update.zip:程序压缩包,覆盖式安装

简单使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新建一个WPF项目

<Window x:Class="WpfApp1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfApp1"mc:Ignorable="d"Title="MainWindow"Height="450"Width="800"><Grid><StackPanel><TextBlock Text="版本1.0.1"FontSize="50"Name="LabelVersion" /><Button Content="按钮"  FontSize="30" Click="Button_Click"/></StackPanel></Grid>
</Window>
    /// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();AutoUpdateTest();}public void AutoUpdateTest(){Assembly assembly = Assembly.GetEntryAssembly();LabelVersion.Text = $"Current Version : {assembly.GetName().Version}";//显示版本号AutoUpdater.AppTitle = "升级更新";Thread.CurrentThread.CurrentCulture =Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("zh");AutoUpdater.LetUserSelectRemindLater = true;AutoUpdater.RemindLaterTimeSpan = RemindLaterFormat.Minutes;AutoUpdater.RemindLaterAt = 1;AutoUpdater.ReportErrors = true;DispatcherTimer timer = new DispatcherTimer { Interval = TimeSpan.FromMinutes(2) };//定时去检测更新根据自己业务需求timer.Tick += delegate { AutoUpdater.Start("http://localhost:10911/Updates/AutoUpdaterStarter.xml"); };timer.Start();}private void Button_Click(object sender, RoutedEventArgs e){AutoUpdater.Start("http://localhost:10911/Updates/AutoUpdaterStarter.xml");}}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

代码封装

这里用到了之前的代码

C# 自定义配置文件序列化生成+文件格式错误自动回档

   public class MyXmlConfigHelper<T>{public T Setting { get; set; }public string FileName { get; set; } = "MyConfig.xml";public string DirectoryPath{get{var regex = new Regex(@"\\(\w+)\.(\w+)$");return regex.Split(FullPath)[0];}}public string DebugPath { get => Directory.GetCurrentDirectory(); }public string FullPath { get => DebugPath + "\\" + FileName; }public bool IsFileExist { get => File.Exists(FullPath); }public bool IsDirectoryExist { get => Directory.Exists(DirectoryPath); }public Action<string> ShowMsg { get; set; } = (msg)=>Console.WriteLine(msg);public MyXmlConfigHelper(){}public MyXmlConfigHelper(string filename){FileName = filename;if (!IsDirectoryExist){DirectoryInfo directoryInfo = new DirectoryInfo(DirectoryPath);directoryInfo.Create();}}public MyXmlConfigHelper(T setting ,string filename):this(filename){Setting = setting;}/// <summary>/// 创建文件/// </summary>public void Init(){if(IsFileExist){try{Read();}catch (Exception ex){ShowMsg(ex.ToString());throw new Exception("文件读取失败!请确认是否配置文件格式是否正确");}}else{Write();}}/// <summary>/// 覆盖文件/// </summary>public void ReInit(){ShowMsg("正在覆盖配置文件:" + FullPath);Write();}/// <summary>/// 写入配置类/// </summary>private void Write(){ShowMsg("正在生成配置文件:" + FullPath);var xmlHelper = new XmlSerializer(typeof(T));using (StreamWriter xmlWriter = new StreamWriter(FullPath)){//去掉烦人的命名空间XmlSerializerNamespaces ns = new XmlSerializerNamespaces();ns.Add("", "");xmlHelper.Serialize(xmlWriter, Setting, ns);xmlWriter.Close();}}/// <summary>/// 读取配置类/// </summary>private void Read(){ShowMsg("正在读取配置文件:"+FullPath);var xmlHelper = new XmlSerializer(typeof(T));using (StreamReader xmlReader = new StreamReader(FullPath)){Setting = (T)xmlHelper.Deserialize(xmlReader);xmlReader.Close();}}}

自动更新代码封装

/// <summary>/// 自动更新帮助类/// </summary>public class AutoUpdateHelper{/// <summary>/// 更新地址/// </summary>public string UpdateLogUrl { get => BaseUrl + "Updates/UpdateLog.html"; }/// <summary>/// 网路基本路径/// </summary>public string BaseUrl { get; set; } = "http://localhost:10911/";/// <summary>/// Xml配置地址/// </summary>public string AutoXmlUrl { get => BaseUrl + "Updates/AutoUpdaterStarter.xml"; }/// <summary>/// 文件下载地址/// </summary>public string DownLoadUrl { get => BaseUrl + "DownLoads/Update.zip"; }/// <summary>/// Xml配置生成类/// </summary>public MyXmlConfigHelper<AutoUpdaterXmlEntity> MyXmlConfigHelper { get; set; } = new MyXmlConfigHelper<AutoUpdaterXmlEntity>(@"AutoUpdater\AutoUpdaterStarter.xml");/// <summary>/// 版本号/// </summary>public string VersionNo{get{Assembly assembly = Assembly.GetExecutingAssembly();return assembly.GetName().Version.ToString();}}/// <summary>/// 自动更新默认配置,Updates放配置文件,DownLoads放zip/// </summary>public AutoUpdateHelper(){AutoUpdater.AppTitle = $"升级更新";AutoUpdater.LetUserSelectRemindLater = true;AutoUpdater.RemindLaterTimeSpan = RemindLaterFormat.Minutes;AutoUpdater.RemindLaterAt = 1;AutoUpdater.ReportErrors = true;}/// <summary>/// 修改IIS网络地址,Updates放配置文件,DownLoads放zip/// </summary>/// <param name="url"></param>public AutoUpdateHelper(string url):this(){this.BaseUrl = url;}/// <summary>/// 自动更新程序/// </summary>public void Update(){AutoUpdater.Start(AutoXmlUrl);}/// <summary>/// 创建AutoXml文件/// </summary>public void CreateAutoXmlFile(){AutoUpdaterXmlEntity autoUpdaterXmlEntity = new AutoUpdaterXmlEntity(){Version = VersionNo,DownLoadUrl = DownLoadUrl,UpdateLogUrl = UpdateLogUrl};MyXmlConfigHelper.Setting = autoUpdaterXmlEntity;MyXmlConfigHelper.ReInit();}}/// <summary>/// 配置文件对应实体/// </summary>[XmlRoot("item")]public class AutoUpdaterXmlEntity{[XmlElement("version")]public string Version { get; set; }[XmlElement("url")]public string DownLoadUrl { get; set; }[XmlElement("changelog")]public string UpdateLogUrl { get; set; }[XmlElement("mandatory")]public string Mandatory { get; set; } = "false";}

简单使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

总结

还是AutoHelper好使,简单好用。AutoHelper的UpdateLog.html就自己加描述了,就是简单的html语言。

http://www.hkea.cn/news/812677/

相关文章:

  • 一流的龙岗网站建设目前最靠谱的推广平台
  • 企业营销型网站费用短视频推广引流
  • 化妆品可做的团购网站有哪些seo研究中心南宁线下
  • 网站空间域名是什么做电商必备的几个软件
  • 软件公司运营是做什么的seo公司运营
  • 专业云南做网站福州短视频seo服务
  • 网站开发技术期中试题电商培训机构排名
  • 网站设计连接数据库怎么做如何进行百度推广
  • 日本网站图片做淘宝代购网络营销促销方案
  • 网站开发导航栏网站制作的费用
  • 盐城网站设计网站流量统计工具
  • 网站上如何做相关推荐郑州建网站的公司
  • 漂亮大气的装潢室内设计网站模板 单页式html5网页模板包前端优化
  • 论坛网站开发开题报告青岛百度推广多少钱
  • 文山做网站如何优化百度seo排名
  • 上海展陈设计公司有哪些成都网站seo性价比高
  • 小韩网站源码360广告投放平台
  • 网站地图的重要性短信广告投放软件
  • 搭建直播网站需要怎么做教育培训机构平台
  • 濮阳网站网站建设网络营销策划是什么
  • 做新闻网站需要什么手续河北软文搜索引擎推广公司
  • 广州网站建设联系电话seo推广的公司
  • 一起做网店一样的网站关键词歌曲免费听
  • 负责网站建设推广本周热点新闻事件
  • 快速做网站优化谷歌在线浏览入口
  • 苏州企业网站建设开发与制作2023年6月份又封城了
  • 用java做网站可以吗吉林seo刷关键词排名优化
  • 网站建设面试google广告投放技巧
  • 整形网站整站源码如何让关键词排名靠前
  • php网站后台搭建外贸网站大全