您当前的位置: 首页 >  ui

君子居易

暂无认证

  • 0浏览

    0关注

    210博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

WPF 使用Squirrel自动更新应用

君子居易 发布时间:2022-09-03 20:13:21 ,浏览量:0

前言

本文简单的介绍了如何使用 Squirrel 来为 WPF 客户端 进行自动检查更新。

Squirrel git 地址 :http:// https://github.com/Squirrel/Squirrel.Windows

本文使用了 Visual Studio 2022 进行演示讲解。

参考英文博客: https://intellitect.com/deploying-app-squirrel/

开始第一步: 新建一个项目 打开VS2022,新建wpf项目,取名为 WpfApp2.

右键项目 WpfApp2>点击管理NuGet程序包

 

 搜索squirrel.windows>点击安装

安装完成后,打开MainWindow.xaml,编辑Grid段代码如下:

 主要显示当前版本和最新版本信息


    
        
            
                当前版本:
            

            
            
            
                最新版本:
            
            
                       
        
    

打开MainWindow.xaml.cs,添加Squirrel引用,

using Squirrel;

并添加MainWindow的OnLoaded事件:

  /// 
    /// MainWindow.xaml 的交互逻辑
    /// 
    public partial class MainWindow : Window
    {   

        public MainWindow()
        {
            InitializeComponent();

            Loaded += MainWindow_Loaded;
        }

        private void MainWindow_Closed(object sender, EventArgs e)
        {
            MessageBox.Show("关闭");
        }

        private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                using (var updateManager = new UpdateManager(@"F:\SquirrelReleases"))
                {
                    CurrentVersionTextBox.Text = $"{updateManager.CurrentlyInstalledVersion()}";
                    var releaseEntry = await updateManager.UpdateApp();
                    UpdateVersionTextBox.Text = $"{releaseEntry?.Version.ToString() ?? "No update"}";
                    if (releaseEntry != null)
                    {
                        var r = MessageBox.Show("检测到新版本,是否重启更新?");
                        if (r == MessageBoxResult.OK)
                        {
                            UpdateManager.RestartApp();
                        }
                    }
                }
               
            }
            catch (System.Exception ex)
            {

             MessageBox.Show(ex.Message);
            }         
           
        }
       
    }

测试项目准备完成。接下来我们需要进行打包以及版本更新的测试。

step.2 打包应用程序 首先需要下载 nuget.exe recommended latest:

https://www.nuget.org/downloads

将下载到的nuget.exe复制到项目根目录下。

接下来在项目中添加一个 ReleaseSpec.nuspec ,编辑内容为下面内容:



  
    ApplicationWPF
    0.0.0
    Title
    Author
    false
    MIT
    http://project_url_here_or_delete_this_line/
    http://icon_url_here_or_delete_this_line/
    Description
    Summary of changes made in this release of the package.
    $copyright$
    Tag1 Tag2
  
  
  
    
  

切换到release,并生成项目:

使用管理员身份运行cmd,并切换到项目根目录,运行下面命令:

nuget pack SquirrelTest.nuspec 

这条命令将会在项目根目录生成一个 SquirrelTest.0.0.0.nupkg 的文件。

 在D盘根目录下新建 SquirrelReleases 文件夹。

切换到VS的程序包管理界面控制台,输入下面命令:

先打开程序包管理器控制台

Squirrel --releasify SquirrelTest.0.0.0.nupkg --releaseDir "F:\SquirrelReleases"

这里F:\SquirrelReleases地址也可以放在远程服务器上 

执行完后的界面显示如下:  ​​​​​​​

  

此时到F盘下的 SquirrelReleases 文件夹查看,可以发现生成了下面的文件。

双击Setup.exe,程序将会自动安装到 %AppData% 目录下,创建桌面快捷方式,并运行。

 打开桌面快捷方式,展开如下

 step.3 应用程序的自动更新 在MainWindow的Loaded事件中已经有新版本检测并更新的代码了。下面我们只需要发布新版本,在程序启动时将会自动提示更新。

打开ReleaseSpec.nuspec文件,修改version为1.0.1。重新生成项目。

再次以管理员身份运行cmd,切换到项目目录,执行 nuget pack 命令。此时生成的文件为 SquirrelTest.1.0.1.nupkg .

切换到vs的程序包管理器命令行,输入下面命令:

Squirrel --releasify SquirrelTest.1.0.1.nupkg --releaseDir "F:\SquirrelReleases" 执行完毕后,双击桌面的SquirrelTest快捷方式,将会收到新版本提示:

点击弹窗的确定按钮后,应用将会以新版本重启:

 本文引用了以下文章:

https://blog.csdn.net/wf824284257/article/details/89164525

Application Deployment Made Easy - IntelliTect

https://www.youtube.com/watch?v=UlNwQ6WqCMw

 

关注
打赏
1660814979
查看更多评论
立即登录/注册

微信扫码登录

0.0362s