Windows.Management.Deployment.PackageManager - 在桌面应用程序中返回 ComObject
Windows.Management.Deployment.PackageManager - returning ComObject in desktop application
我有一个 NetCore3.1 WPF 应用程序(Windows 10,VS2019)。我可以将它打包为 MSIX 应用程序(使用 official documentation)。
在 .appxmanifest
文件中我添加了:
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability Name="runFullTrust" />
<rescap:Capability Name="packageQuery" />
</Capabilities>
我可以毫无问题地安装和使用我的应用程序。问题是我尝试在我的应用程序中使用 ,如下所示:
var pkgManager = new Windows.Management.Deployment.PackageManager();
IEnumerable<Windows.ApplicationModel.Package> packages = pkgManager.FindPackagesForUser("");
我在使用它时没有遇到任何异常,但 packages
变量值为 System.__ComObject
。
我不明白那到底是什么,为什么我没有得到想要的结果 - 用户所有已安装的 msix 包的列表。
我设法(某种程度上)解决了我的问题。
我仍然不知道为什么我的 packages 变量 System.__ObjectCom 以及 [ 到底是什么=25=] 但似乎如果有人将此对象视为假定的对象(在我的例子中 IEnumerable )它好的
所以基本上,以下产生了一些东西(令我惊讶的是):
IEnumerable<Windows.ApplicationModel.Package> packages = pkgManager.FindPackagesForUser("");
List<string> installedAppsDisplayNAme = new List<string>();
foreach (var package in packages)
{
installedAppsDisplayNAme.Add(package.DisplayName);
}
我有一个 NetCore3.1 WPF 应用程序(Windows 10,VS2019)。我可以将它打包为 MSIX 应用程序(使用 official documentation)。
在 .appxmanifest
文件中我添加了:
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability Name="runFullTrust" />
<rescap:Capability Name="packageQuery" />
</Capabilities>
我可以毫无问题地安装和使用我的应用程序。问题是我尝试在我的应用程序中使用
var pkgManager = new Windows.Management.Deployment.PackageManager();
IEnumerable<Windows.ApplicationModel.Package> packages = pkgManager.FindPackagesForUser("");
我在使用它时没有遇到任何异常,但 packages
变量值为 System.__ComObject
。
我不明白那到底是什么,为什么我没有得到想要的结果 - 用户所有已安装的 msix 包的列表。
我设法(某种程度上)解决了我的问题。
我仍然不知道为什么我的 packages 变量 System.__ObjectCom 以及 [ 到底是什么=25=] 但似乎如果有人将此对象视为假定的对象(在我的例子中 IEnumerable
所以基本上,以下产生了一些东西(令我惊讶的是):
IEnumerable<Windows.ApplicationModel.Package> packages = pkgManager.FindPackagesForUser("");
List<string> installedAppsDisplayNAme = new List<string>();
foreach (var package in packages)
{
installedAppsDisplayNAme.Add(package.DisplayName);
}