如何在wpf中添加软件更新程序,而无需单击一次和任何其他第三方工具

本文关键字:单击 一次 工具 第三方 其他 任何 wpf 添加 软件 程序 更新 | 更新日期: 2023-09-27 18:35:16

我在 wpf 中创建了一个应用程序,当更新可用时需要更新。正在比较驻留在包含软件版本的服务器上的 xml 文件的更新。我在YouTube链接Sharp Updater的C#上找到了SharpUpdater视频系列的参考。它适用于Windows表单应用程序,因为我已经下载并尝试了我的应用程序,但是当涉及到在wpf应用程序上实现相同的逻辑时,它会在某处失败,因为此应用程序中使用的api具有仅适用于wform应用程序的引用。我已经为WPF应用程序使用了自动更新简单自动更新,自动补丁的另一个参考,没有更新程序块,这似乎也不适合我的需要。我只是想知道当存在如此多的限制时,如何将我们下载的.exe放在程序文件中。对于更新,我使用了上一个.exe以下代码片段

private void UpdateApplication(string tempFilePath, string currentPath, string newPath, string launchArgs)
    {
        string argument = "/C choice /C Y /N /D Y /T 4 & Del /F /Q '"{0}'" & choice /C Y /N /D Y /T 2 & Move /Y '"{1}'" '"{2}'" & Start '"'" /D '"{3}'" '"{4}'" {5}";
        ProcessStartInfo Info = new ProcessStartInfo();
        Info.Arguments = String.Format(argument, currentPath, tempFilePath, newPath, Path.GetDirectoryName(newPath), Path.GetFileName(newPath), launchArgs);
        Info.WindowStyle = ProcessWindowStyle.Hidden;
        Info.CreateNoWindow = true;
        Info.FileName = "cmd.exe";
        Process.Start(Info);
    }

但它限制我将下载的文件放在程序文件中的文件夹中。感谢你的恩典。

如何在wpf中添加软件更新程序,而无需单击一次和任何其他第三方工具

我鼓励你不要重新发明轮子,而要采用现有的、经过验证的解决方案。虽然自动更新客户端起初看起来很简单,但如果您从一开始就没有涵盖各种场景,它很容易变得困难和混乱。

点击一次

ClickOnce 在 Visual Studio、.NET 和 Windows 中具有良好的内置支持,但您也可能遇到安全性和部署问题,尤其是在使用自签名证书时。虽然我没有遇到任何大问题,但很多人对 ClickOnce 感觉很糟糕(但无论如何我不知道列表,因为我读到的内容通常不会有特定的技术细节)。

我认为 ClickOnce 对于内部或小型项目是可以接受的,但对于更广泛的版本来说是不可管理的,尤其是在多个客户中。

松鼠

Squirrel 是一个免费的开源安装和更新解决方案。

如果你尝试过Visual Studio Code,那么你已经体验过Squirrel安装和更新是什么样的。

它是部署到用户的本地应用数据文件夹的一键式安装,因此不需要管理权限/UAC。您可以使用其默认值让它工作,或使用他们的 API 来更好地控制更新过程。如果你不喜欢它的某些部分,你可以随时分叉它并根据自己的需要改变它。

wyBuild AutomaticUpdater 控件

AutomaticUpdater 控件包含在 wyBuild 中,并且可以免费包含在您的应用程序中。它适用于 Visual Studio 2005、2008、2010、2012 和 .NET 2.0、3.0、3.5、4.0 和 4.5。它适用于所有.NET语言(C#,VB.NET 等)。

自动更新