none
WPF 桌面程序能够启动win8.1的metro程序吗?怎么实现启动Win8.1的metro应用程序 RRS feed

  • 问题

  • WPF 桌面程序能够启动win8.1的metro程序吗?

    怎么实现启动Win8.1的metro应用程序?

    就是在WPF程序中有一个按钮,点击这个按钮就可以打开相应的metro程序

    2014年1月26日 9:28

答案

全部回复

  • 2014年1月26日 11:22
  • 我下载了尝试,可是运行有错。

    private void BuildAppsList()
            {
                string itemValue = GlobalDataAccessor.GetItemValue("ProgramInventoryLocation", "PRE_PROCESS");
    
                XmlNodeList list = null;
                var reportDoc = new XmlDocument();
                reportDoc.Load(itemValue);
                ProductList = new ObservableCollection<ProductInfo>();
    
                list = reportDoc.GetElementsByTagName("Program");
                if (list.Count < 1)
                {
                    throw new XmlException();
                }
                foreach (XmlNode node in list)
                {
                    ProductInfo item = new ProductInfo(node);
                    ProductList.Add(item);
                }
    
                dbTable.ItemsSource = ProductList;
            }
     reportDoc.Load(itemValue);这句出错,说itemValue不能为空

    就是获取不到他说的文件"Microsoft\\AppCertKit\\programinventory_e25bb752-e7cf-4fb2-8194-874ba9b91c7b.xml"

    2014年1月27日 2:01
  • 我电脑中确实不存在所说的AppCertKit\\programinventory_e25bb752-e7cf-4fb2-8194-874ba9b91c7b.xml"文件

    AppCertKit目录下为空的,是怎么回事??

    2014年1月27日 2:54
  • 在Administrator下面是没有那个文件,可在内置管理员账号下酒可以运行但是,点击Launch按钮后,没有反应,根本没有启动应用程序,是缺少什么吗,环境有什么要求吗?
    2014年1月27日 3:26
  • 经过几番尝试,最终是找不到文件,就是所说的programinventory_e25bb752-e7cf-4fb2-8194-874ba9b91c7b.xml文件不存在,

    另外内置管理员账号下这个文件是以前的文件,其数据Launch之后打开APP的路径也是不存在的,,,,怎么更新这些文件呢

    2014年1月27日 5:57
  •  private void Button_Click_2(object sender, RoutedEventArgs e)
            {
             
               // string PackageFullName = @"WindowsApps\Microsoft.BingNews_3.0.1.174_x86__8wekyb3d8bbwe";
               // var appUserModelId = Helpers.GetAppUserModelId(PackageFullName);
                var appUserModelId = @"Microsoft.BingNews_8wekyb3d8bbwe!AppexNews";         
                var exec = @"C:\Program Files\Windows Kits\8.0\App Certification Kit\microsoft.windows.softwarelogo.appxlauncher.exe";
                if (!File.Exists(exec))
                {
                    System.Windows.MessageBox.Show("Please install Windows App Certification Kit for Windows RT");
                }
                var processInfo = new ProcessStartInfo()
                {
                    Arguments = appUserModelId,
                    UseShellExecute = false,
                    CreateNoWindow = true,
                    FileName = exec
                };
    
                Process.Start(processInfo);
                
            }
    我现在知道只需要metro程序在注册表的AppUserModelId就可以在桌面启动metro程序,我看了一下,有些AppUserModelId不是固定的,怎么获取metro程序AppUserModelId呢?
    2014年1月27日 7:57
  • Hi heller,

    可以,请先把Store App程序关联一个文件类型,通过文件类型来打开Store App程序。请参考: http://msdn.microsoft.com/zh-cn/library/windows/apps/hh779670.aspx

    比如说我把某个Store App关联成为 alsdk://,然后你可以使用alsdk://来启动这个App。

    另外@lapheal所给的链接是让Windows Store App运行在桌面环境下,官方不支持这种做法。不过也是一种很好的思路

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.


    2014年1月27日 8:19
    版主
  • 不懂你的意思,我要的就是WPF程序能够启动WIN8.1metro的应用程序。。。你能否给个例子:

    创建一个WPF程序,WPF程序中有一个Button,点击此Button即可打开一个指定的metro应用程序

    2014年1月27日 9:06
  • 举个简单的例子,比如说你要打开 Windows Music这个App,那你可以在浏览器里面输入: microsoftmusic:/// 后按回车,你对应的Windows Music应用会被打开这就是我说的URI 启动。

    这个办法的前提是应用需要注册Protocal,如果商店应用程序是你自己开发的话会很容易实现你要的功能。

    如果商店应用程序不是你写的,并且也不是系统自带的,那不好意思官方没有一个可用的启动办法,因为商店应用运行在沙盒模型中,要想调用就必须Hack沙盒。

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.


    2014年1月27日 9:55
    版主
  • 我要打开的商店应用程序是自己写的,怎么实现注册Protocal呢?
    2014年1月28日 3:15
  • Hi Heller

    在编写商店应用程序的时候后需要在里面添加Protocol,可能您需要稍微修改一下您的程序。

    请参考我上一个回复中包含的链接:http://msdn.microsoft.com/zh-cn/library/windows/apps/hh779670.aspx

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    2014年1月28日 4:36
    版主
  • Hi,Jamles

    看了下,添加Protoclo之后,商店应用程序打开URi默认应用是使用

    LaunchUriAsync(uri)

    可是我的是WPF桌面程序,用什么来打开URI这个默认应用呢??

    2014年2月10日 3:27
  • Hi heller,

    就跟普通打开http链接一下,http也是一个协议。

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    • 已标记为答案 heller灬 2014年2月17日 7:45
    2014年2月10日 8:45
    版主