首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要Squirrel.Windows UpdateManager.GitHubUpdateManager援助

需要Squirrel.Windows UpdateManager.GitHubUpdateManager援助
EN

Stack Overflow用户
提问于 2016-03-24 22:39:32
回答 1查看 2.3K关注 0票数 4

我试图在我的应用程序中使用Squirrel.Windows从它的GitHub存储库安装和自动更新。下面是示例中的

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

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

因此,我知道如果我是在本地目录中执行此操作,那么松鼠就会正常工作,但是,我需要从GitHub中执行此操作。我在跟踪这里的方向

由此,我将我的App.xaml.cs中的代码更新为

代码语言:javascript
复制
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,并使用松鼠执行releasify命令。没问题,很好。

在所有这些之后,我执行git提交和git将源代码推送到GitHub。GitHub上的所有内容都用最新的提交更新。很好在这里

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

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

任何帮助都将是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2016-03-25 20:27:37

我想出了这个问题,并希望为其他可能达到这一点并有同样问题的人发布答案。都是用户错误。

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

从那里开始,我将更新代码包装在一个try/catch中,并使用一个MessageBox来显示异常消息。它是“资源找不到:错误404”。

我再次检查了用于GitHubManager源的URL,它是存储库页面的正确地址。

但是,问题在于URL末尾的/。我把它改了

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

https://github.com/dartvalince/DiscerningEye

测试了所有的东西,现在起作用了。这是CheckForUpdate函数在MainWindowViewModel

代码语言:javascript
复制
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);
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36211181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档