C++ 如何在Windows Phone 8中获取软件包名称

C++ 如何在Windows Phone 8中获取软件包名称,c++,visual-c++,windows-runtime,windows-phone-8,C++,Visual C++,Windows Runtime,Windows Phone 8,我遇到了一个小问题。我需要打开WP8包名(使用c++),但当我使用函数时,我只会得到未实现的异常 Windows::ApplicationModel::Package^ package = Windows::ApplicationModel::Package::Current; Windows::ApplicationModel::PackageId^ packageId = package->Id; Platform::String^ output = "Name: \"" + pack

我遇到了一个小问题。我需要打开WP8包名(使用c++),但当我使用函数时,我只会得到未实现的异常

Windows::ApplicationModel::Package^ package = Windows::ApplicationModel::Package::Current;
Windows::ApplicationModel::PackageId^ packageId = package->Id;
Platform::String^ output = "Name: \"" + packageId->Name + "\"\n"
这应该可以工作,但是属性包->Id在WP8中不可用,尽管支持的最低电话是Windows phone 8。例如,fullName属性有一个备注,说明这不是在WP8API中实现的

你能帮我吗? 多谢各位


PS此功能在Windows应用商店应用程序解决方案中运行良好

并非所有属性都如文档所述在WP8上实现,而且您已经找到了。在MSDN上有点混乱,因为在某些情况下,表中说API是可用的,但上面的注释说它没有在WP8上实现


看起来
FullName
不可用,但
Name
可用。还有一个仅限Windows Phone的属性
ProductId
,如果需要,您可以使用它来唯一地标识应用程序。

并非所有属性都如文档所述在WP8上实现,而且您已经找到了。在MSDN上有点混乱,因为在某些情况下,表中说API是可用的,但上面的注释说它没有在WP8上实现


看起来
FullName
不可用,但
Name
可用。还有一个仅限Windows Phone的属性
ProductId
,如果需要,您可以使用它来唯一地标识应用程序。

您可以使用以下代码尝试在C++中获取PackageId

Windows::ApplicationModel::PackageId^ packageId = Windows::Phone::Management::Deployment::InstallationManager::FindPackagesForCurrentPublisher()->First()->Current->Id;
Platform::String^ output = "Name: \"" + packageId->Name + "\"\n"
C#


返回的包似乎已经实现了
Current->Id

您可以尝试使用以下代码在C++中获取PackageId

Windows::ApplicationModel::PackageId^ packageId = Windows::Phone::Management::Deployment::InstallationManager::FindPackagesForCurrentPublisher()->First()->Current->Id;
Platform::String^ output = "Name: \"" + packageId->Name + "\"\n"
C#


返回的包似乎已实现
当前->Id

是否仍有解决方法。。。我被这个异常困扰了一段时间,它总是抛出这个异常。直到在JSON.NET序列化对象函数中使用它,我才注意到这一点。我无法序列化for循环中的对象,因为它在第一次遇到此异常时就从循环中断。。有什么解决办法吗?@alfah听起来这是一个稍微不同的问题。但基本上,如果你点击了
NotImplementedException
,你就不需要调用那个东西了。有没有解决办法。。。我被这个异常困扰了一段时间,它总是抛出这个异常。直到在JSON.NET序列化对象函数中使用它,我才注意到这一点。我无法序列化for循环中的对象,因为它在第一次遇到此异常时就从循环中断。。有什么解决办法吗?@alfah听起来这是一个稍微不同的问题。但是基本上如果你点击了
NotImplementedException
你就不需要调用它了。这不是获取当前包,而是获取包的第一个。最好按id搜索:var applicationId=string.Format(“{{{0}}}”,Windows.ApplicationModel.Store.CurrentApp.AppId.ToString().ToUpper());var package=InstallationManager.FindPackagesForCurrentPublisher().First(i=>i.Id.ProductId==applicationId);这不是获取当前包,而是获取包的第一个包。最好按id搜索:var applicationId=string.Format(“{{{0}}}”,Windows.ApplicationModel.Store.CurrentApp.AppId.ToString().ToUpper());var package=InstallationManager.FindPackagesForCurrentPublisher().First(i=>i.Id.ProductId==applicationId);