gpt4 book ai didi

c# - 需要 Squirrel.Windows Update Manager.GitHub Update Manager Assistant

转载 作者:太空狗 更新时间:2023-10-29 14:44:30 51 4
gpt4 key购买 nike

我正在尝试将 Squirrel.Windows 与我的应用程序一起使用,以从它的 GitHub 存储库进行安装和自动更新。跟随

中的示例

https://github.com/Squirrel/Squirrel.Windows/blob/master/docs/getting-started/1-integrating.md

我能够成功完成所有步骤。我测试了安装,应用程序打开没有问题。我更新并“发布”了它,本地安装的应用程序按预期更新。

因此,如果我从本地目录执行此操作,我知道 Squirrel 可以正常工作,但是,我需要从 GitHub 执行此操作。我在关注 directions here

据此,我将 App.xaml.cs 中的代码更新为以下内容

public partial class App : Application
{
protected override async void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MessageBox.Show(typeof(App).Assembly.GetName().Version.ToString());

// Check for application updates
using (var mgr = UpdateManager.GitHubUpdateManager("https://github.com/Dartvalince/DiscerningEye"))
{
await mgr.Result.UpdateApp();
}
}

接下来我将执行与之前相同的过程,创建 nupkg,并使用 Squirrel 执行 releasify 命令。没问题,很好。

完成所有这些之后,我执行了一个 git commit 和 git push 将源代码上传到 GitHub。 GitHub 上的所有内容都更新为最新的提交。这里不错

接下来,我在 GitHub 页面上创建了一个新版本。用于发布的标签与创建的 .nupkg 中使用的程序集版本相同。对于要附加到版本的文件,我从通过 Squirrel 创建的 Release 文件夹中拖放所有文件。

好的,现在一切都在 GitHub 上了。然后我开始对此进行测试,以确保当用户下载所有文件,然后运行 ​​Setup.exe 时,它​​会正确安装并打开。当我这样做时,我将每个文件下载到桌面上的一个文件夹中,然后单击 Setup.exe。当我这样做时,我从应用程序中得到预期的 MessageBox.Show(typeof(App).Assembly.GetName().Version.ToString()); MessageBox pop 窗口,显示正确的程序集版本号,但后来什么都没有。就像此时,它卡在了代码的更新部分,永远不会过去。我可以把它放在那里过夜,什么也没有。我什至可以在任务管理器中看到进程在内存中运行,所以我知道它没有出错和关闭,但它处于 0% CPU 使用率和 0% 网络使用率。

任何帮助将不胜感激。

最佳答案

我想通了,并想为可能达到这一点并遇到相同问题的任何其他人发布答案。都是用户错误。

首先,App.xaml.cs OnStartup 方法中的 UpdateManager 导致代码执行在 处停止await 直到更新完成。我将更新检查移至 MainWindowViewModel 中的一个方法。

从那里开始,我将更新代码包装在 try/catch 中,并使用 MessageBox 来显示异常消息。是“找不到资源:错误 404”
我仔细检查了用于 GitHubManager 源的 URL,它是正确的存储库页面的地址。
但是,问题是 URL 末尾的 /。我把它从

https://github.com/dartvalince/DiscerningEye/

https://github.com/dartvalince/DiscerningEye

并测试了所有内容,现在可以正常工作了。这是 MainWindowViewModel

中的 CheckForUpdate 函数
private async void CheckForUpdate()
{
try
{
using (var mgr = await UpdateManager.GitHubUpdateManager("https://github.com/dartvalince/DiscerningEye"))
{
updateManager = mgr;
var release = await mgr.UpdateApp();
}
}
catch (Exception ex)
{
string message = ex.Message + Environment.NewLine;
if (ex.InnerException != null)
message += ex.InnerException.Message;
MessageBox.Show(message);
}
}

关于c# - 需要 Squirrel.Windows Update Manager.GitHub Update Manager Assistant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36211181/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com