C# uwp 启动应用程序

标签 c# windows-store-apps uwp launching-application

使用下面的代码:

await Windows.System.Launcher.LaunchUriAsync(new Uri(@"ms-windows-store://review/?ProductId=9wzdncrfj2wl"));

我正在 Microsoft Store 中打开 Facebook 应用。该页面上有一个启动按钮。用户使用它运行应用程序。

如何使用产品 ID 运行应用程序?

我成功地用这段代码打开了应用:

await Windows.System.Launcher.LaunchUriAsync(new Uri("fb:post?text=foo"));

但是我想用ID打开。

我找到了这段代码,但它不起作用:

await Windows.System.Launcher.LaunchUriAsync(new Uri(@"ms-windows-store://pdp/?ProductId=9wzdncrfj2wl"));

如何使用ID打开已安装的应用程序?或者,如果有另一种方法可以检查应用程序是否已安装,如果已安装则启动它,如果未安装则在商店中显示,以便用户可以手动安装。我正在开发的应用程序是 Windows 10 UWP...

我的情况是没有应用程序的 URI,所以我必须通过它的 ProductID 或 ProductFamily 打开它...

因此,这是打开该应用程序的快捷方式目标: C:\Windows\explorer.exe shell:AppsFolder\A88BB54F.N1info_gvc78jvcn5cg0!App

我是否有机会在 UWP 应用程序中使用它来启动应用程序?

有没有人从 Windows 应用商店的 LAUNCH 按钮得到链接?所以,我会把它放在 URI 中,就像来自 GET 按钮的链接一样:

ms-windows-store:PDP?PFN=A88BB54F.N1info_gvc78jvcn5cg0&referrer=unistoreweb&webig=39694073-f9af-436f-a82b-abb9d9f644f0&muid=097C7AA3CA2C6EE22D237359CE2C689A&websession=c9916902dd014ec2b5a9e0390a28c26d

我是这样使用它的:

await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-windows-store:PDP?PFN=A88BB54F.N1info_gvc78jvcn5cg0&referrer=unistoreweb&webig=39694073-f9af-436f-a82b-abb9d9f644f0&muid=097C7AA3CA2C6EE22D237359CE2C689A&websession=c9916902dd014ec2b5a9e0390a28c26d"));

它正在商店中展示应用。

谢谢。

最佳答案

可以使用包管理器:

using Windows.Management.Deployment;

var app = await GetAppByPackageFamilyNameAsync("Microsoft.WindowsCalculator_8wekyb3d8bbwe");

if(app != null)
{
  await app.LaunchAsync();
}    

static async Task<AppListEntry> GetAppByPackageFamilyNameAsync(string packageFamilyName)
{
    var pkgManager = new PackageManager();
    var pkg = pkgManager.FindPackagesForUser("", packageFamilyName).FirstOrDefault();

    if (pkg == null) return null;

    var apps = await pkg.GetAppListEntriesAsync();
    var firstApp = apps.FirstOrDefault();
    return firstApp;
}

并向 Package.appxmanifest 添加一项功能:

<?xml version="1.0" encoding="utf-8"?>    
<Package xmlns:...
         xmlns:rescap = "http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" 
         IgnorableNamespaces="... rescap">
  ...
  <Capabilities>
    ...
    <rescap:Capability Name="packageQuery" />
  </Capabilities>
</Package>

了解有关受限功能的更多信息:https://learn.microsoft.com/en-us/windows/uwp/packaging/app-capability-declarations#restricted-capabilities

关于C# uwp 启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41979131/

相关文章:

c# - 为什么文本框点击事件不触发

c# - Override get, set 在 Entity Framework Database First

c# - 无法访问的代码检测到返回值

windows-store-apps - 在 Windows 8.1 中生成应用程序包有什么作用?

c# - .NET Windows Store Apps 和 System.Type - 相当于运算符 ==?

c# - 从 UWP 中的 BitmapImage 或流获取 IntPtr 值

c# - UWP C# : The name xxx cannot be found in namespace yyy

c# - 在不指定 T 的情况下模拟 Moq 中的泛型方法

windows-store-apps - 使用 VS 2015 运行在 Windows 10 上构建的 Windows 8.1 应用程序

c# - 如何在不使用设置应用程序的情况下在 Windows 10 平板电脑应用程序中发现未配对的蓝牙设备