我們有一個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>
我打算同意。你將需要WinRT。 – mydogisbox
做了一些運行和依賴walker驗證,它仍然需要3個dll:vccorlib110.dll,msvcp110.dll和msvcr110.dll,並且默認情況下,它不安裝在Windows 8上。所以看起來像我們必須redist這些dll儘管我真的不想這樣做。 – windfly2006