2012-11-30 107 views
0

我们有一个win32桌面应用程序,它将收集机器上安装的应用程序列表。通常我们会去卸载配置单元来收集应用程序列表(类似于控制面板如何填充其添加/删除程序列表)。随着Windows 8商店应用程序,这是不工作了,因为商店应用程序不存储在桌面应用程序相同。我能找到这个源代码Enumerate app packages by user SID sample。我在Windows 8上测试过,效果很好。但有一个问题。如何在没有WinRT的情况下从桌面应用程序安装Windows 8商店应用程序

我想能够与windows CRT静态链接,所以我不需要将CRT与这个简单的exe一起发布(我不能假定所需的CRT将安装在客户的机器上,加上我们每晚的构建env仍然是VS2005,这只能在开发者机器上构建,因此,CRT版本可以作为VS更新或Windows更新的一部分进行更新,这会导致CRT版本高于客户机器)。我们目前的解决方案将发布CRT版本,我们的代码被构建为私有并排组装(在VS2005上)。然而,对于Windows 8上的WinRT,我无法再静态链接CRT库(旧的CLI/C++实际上具有相同的限制)。

示例代码在Windows 8(WinRT)上使用新的PackageManager。只是想知道没有WinRT是否有其他方法可以获得这些信息。我的直觉不会,但是问问题不会有什么不好。

顺便说,有一件事我做通知是建立在VS 2012的exe文件嵌入清单不具备dependentAssembly对CRT那里都像我建立在VS2005如下exe文件:

<dependentAssembly> 
    <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50727.6195" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
</dependentAssembly> 
+0

我打算同意。你将需要WinRT。 – mydogisbox

+0

做了一些运行和依赖walker验证,它仍然需要3个dll:vccorlib110.dll,msvcp110.dll和msvcr110.dll,并且默认情况下,它不安装在Windows 8上。所以看起来像我们必须redist这些dll尽管我真的不想这样做。 – windfly2006

回答

0

要访问Windows 8的新的Modern UI部分,您需要WinRT库。

相关问题