首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET核心WPF桌面桥-桌面快捷键/任务栏快捷方式检查更新

.NET核心WPF桌面桥-桌面快捷键/任务栏快捷方式检查更新
EN

Stack Overflow用户
提问于 2019-10-11 17:18:02
回答 3查看 787关注 0票数 3

我工作的地方之一,我们的应用程序是一个.NET核心WPF应用程序,我们切换到使用桌面桥最近。我们注意到,如果用户使用“开始”菜单中的“瓷砖”创建桌面快捷方式或任务栏快捷方式,然后从所述快捷方式启动应用程序,则应用程序将跳过检查更新(即使指定它检查.appinstaller文件中的更新)。这款应用程序打开后似乎也不会在后台查看更新,因为在用户重新启动后,它仍然保持在相同的版本上。

注意:该应用程序确实会更新,并在从“开始”菜单启动应用程序时,通过“活”块或“开始”菜单条目显示提示。我们已经证实,所有的用户和我们的开发机器都在使用Windows 10版本1903。

以下是appinstaller的模板文件的示例:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller Uri="{AppInstallerUri}"
              Version="{Version}"
              xmlns="http://schemas.microsoft.com/appx/appinstaller/2018">

  <MainBundle Name="{Name}"
              Version="{Version}"
              Publisher="{Publisher}"
              Uri="{MainPackageUri}"/>

  <UpdateSettings>
    <OnLaunch HoursBetweenUpdateChecks="0" ShowPrompt="true" UpdateBlocksActivation="true"/>
    <AutomaticBackgroundTask/>
    <ForceUpdateFromAnyVersion>true</ForceUpdateFromAnyVersion>
  </UpdateSettings>

</AppInstaller>

我在微软的MSIX GitHub回购上问过这个问题,但他们没有回应。在这一点上,我们想知道这里是否还有其他人遇到过这个问题,他们是否能够找到解决办法或解决方法?我们是否需要在.appxmanifest文件中添加一些内容,或者在.appinstaller文件中遗漏了什么?

编辑 同样的问题也出现在MSIX论坛上,最有可能的是MSFT会在那里回答。

编辑2

我们还收到了微软对此的回应,内容涉及Github和VS Developer社区。他们说他们会调查的。如果他们有更多的信息,我会再更新一次,或者发布他们的回复。

https://github.com/MicrosoftDocs/msix-docs/issues/59

https://developercommunity.visualstudio.com/content/problem/776276/published-msixappx-does-not-check-for-updates-when.html?childToView=776800#comment-776800

EN

回答 3

Stack Overflow用户

发布于 2019-10-16 03:13:10

微软能够对我们的门票做出回应,他们告诉我们,目前Windows 10 (1903年)不支持从传统快捷方式(桌面/任务栏)启动应用程序时运行更新程序。建议的解决方法是从“开始”菜单或活瓷砖启动:

https://techcommunity.microsoft.com/t5/MSIX-Deployment/Update-process-not-started-lauching-the-program-by-shortcut-or/m-p/902430

https://github.com/MicrosoftDocs/msix-docs/issues/59

https://developercommunity.visualstudio.com/content/problem/776276/published-msixappx-does-not-check-for-updates-when.html?childToView=776800#comment-776800

更新:

Tanaka Jimha / Huios为我们提供了一项关于使用Windows10API之一的工作:https://github.com/MicrosoftDocs/msix-docs/issues/59#issuecomment-542927336

要使用它,您必须引用通常的Windows 10程序集,您可以手动或通过NuGet完成这些操作。您可以在这里找到如何做到这一点的文档:https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/desktop-to-uwp-enhance

注意:如果您正在使用Rider或Resharper,我建议您将它们更新到2019.2.3,如果您打算在与XAML视图相同的项目中使用这些程序集。早期版本的.NET Core3.0WPF应用程序有一个bug,其中UWP库中的名称空间和类会导致奇怪的bug,比如XAML智能感知,比如网格、用户控制、窗口、堆栈面板等等。

在添加了它们之后,可以继续使用Windows.Management.Deployment命名空间中的API。下面是一些快速而肮脏的代码,向您展示如何使用它,但是您当然可以尝试和/或参考上面链接中的Tanaka示例:

  • 要检查更新,可以执行以下操作: 公共静态异步任务CheckForUpdates() { var currentPackage = Package.Current;var status =等待status.Availability返回status.Availability == PackageUpdateAvailability.Required status.Availability status.Availability == PackageUpdateAvailability.Available;}

这将使用当前安装的应用程序包中的URI来查看是否有任何新版本的URI保存在安装程序中。我可能应该指出,为了保持一切正常,您应该确保包的名称保持一致。

这样做有很多不同的方法,但我找到了一种简单的方法来处理,那就是为应用程序安装程序项目使用项目文件中的AppPackageName元素,以确保每次发布后文件夹的名称是相同的。

其次,要真正获得更新并下载并安装它,您可以这样做:

代码语言:javascript
复制
public static async Task<bool> GetUpdates(string uriToUse)
{
    try
    {

        var packageManager = new PackageManager();
        var uri = new Uri(uriToUse);
        await packageManager.UpdatePackageAsync(uri, null, DeploymentOptions.ForceApplicationShutdown);
        return true;

    }
    catch (Exception e)
    {
        //Log the exception, or do something else, up to you
        return false;
    }
}

上面的尝试追赶是存在的,因为如果有什么东西阻止UpdatePackageAsync下载更新,它就会抛出一个异常。这可能是由许多因素造成的(例如,已经安装了更新,证书错误等等)。这就是为什么您可能希望在运行更新之前先在当前包上使用CheckUpdateAvailabilityAsync()。

不管怎么说,希望这将证明这对其他人有用,而微软还没有发布涵盖传统应用快捷方式的Windows更新。

票数 2
EN

Stack Overflow用户

发布于 2019-10-14 08:12:36

关于属性ShowPromptForceUpdateFromAnyVersion,您需要指向xaml中的模式- xmlns="http://schemas.microsoft.com/appx/appinstaller/2018"。它们在1903年的版本上有售。因此,如果您的版本不是1903年,您可以删除这两个属性。

票数 0
EN

Stack Overflow用户

发布于 2022-07-25 16:40:59

是否有办法将http://schemas.microsoft.com/appx/appinstaller/2017/2更改为http://schemas.microsoft.com/appx/appinstaller/2018?我知道这有点离谱,但我不知道如何“更新”这个版本。我有自动构建系统,我已经将所有引用的包和项目的目标版本更新为强制版本(最小目标: win 10版本1903)。.appinstaller文件将自动生成。然后是一个签名操作并发布到azure。虚拟环境是windows-2022。.appinstaller名称空间总是2017/2,我真的不知道为什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58345859

复制
相关文章

相似问题

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