我想要以編程方式查找基於MSI的安裝的安裝位置。該應用程序不會在註冊表中的卸載密鑰中輸入「安裝位置」。應用程序不會填充ARPINSTALLLOCATION屬性。 (這與「添加/刪除程序」引用的值相同,並存儲在「卸載」鍵中)。不過,卸載仍然可以找到它的位置,並可以卸載它。這些信息存儲在哪裏? Windows使用緩存的MSI安裝程序來卸載應用程序,但安裝位置是在安裝時第一次確定的,因此此信息不是安裝程序包的一部分。如何以編程方式在Windows中查找安裝的應用程序的安裝位置
3
A
回答
2
我假設你說「安裝位置」時,你的意思是「應用程序EXE位於什麼目錄?」否則,這個問題是不明確的,因爲MSI不一定需要安裝「應用程序」。它可以安裝沒有EXE的組件。它可以在多個目錄中安裝...
但是,這可能會工作:
呼叫MsiGetProductInfo得到ARPINSTALLLOCATION。您需要知道安裝的「產品名稱」。作爲第一參數。呼叫MsiEnumProducts如果需要
2
下面是一個使用了WindowsInstaller.Installer
COM接口一個VBScript版本枚舉所有已安裝的「產品」:
Dim installer
Set installer = CreateObject("WindowsInstaller.Installer")
Dim productCode, productName
For Each productCode In installer.Products
WScript.Echo "ProductCode: " & productCode
WScript.Echo "ProductName: " & installer.ProductInfo(productCode, "ProductName")
WScript.Echo "InstallLocation: " & installer.ProductInfo(productCode, "InstallLocation")
WScript.Echo "LocalPackage: " & installer.ProductInfo(productCode, "LocalPackage")
Next
瞭解更多關於http://msdn.microsoft.com/en-us/library/windows/desktop/aa369432(v=vs.85).aspx#methods
相關問題
- 1. 如何在UWP中以編程方式安裝Windows商店應用程序?
- 2. 如何以編程方式安裝iOS應用程序?
- 3. 以編程方式安裝Windows服務
- 4. 以編程方式安裝Windows服務
- 5. 以編程方式在IOS中安裝企業應用程序
- 6. 如何以編程方式檢查應用程序是否安裝在Android中?
- 7. 安卓應用程序安裝位置
- 8. 以編程方式安裝應用程序快捷方式
- 9. Python:查找註冊表以查找程序的安裝位置
- 10. 如何以編程方式查詢iphone應用程序的安裝信息?
- 11. 以編程方式安裝Windows NDIS中級(IM)驅動程序
- 12. Windows安裝程序安裝
- 13. 以編程方式從內存中安裝應用程序
- 14. Android在後臺以編程方式安裝應用程序
- 15. 如何以編程方式安裝.ipa
- 16. 以編程方式在應用程序中安裝mdm證書的方式
- 17. 在C#安裝程序中安裝第三方應用程序
- 18. 程序中的錯誤以編程方式在Android上安裝應用程序
- 19. 如何檢查QQ(tencent)應用程序是否安裝在Android上或不是以編程方式安裝?
- 20. 查找Silverlight OOB應用程序的安裝位置
- 21. 以編程方式安裝在棉花糖上的APK安裝
- 22. iOS:以編程方式檢測iOS應用程序安裝源(安裝的應用程序內)
- 23. 如何以編程方式檢查是否安裝了應用程序?
- 24. 如何以編程方式從已安裝的應用程序獲取方案?
- 25. 以編程方式從Windows上安裝iPhone上的應用程序
- 26. 以編程方式從C#應用程序安裝Apk文件
- 27. 以編程方式安裝RIM平板電腦應用程序
- 28. 安裝後設置windows應用程序
- 29. 如何在android中查找已安裝的應用程序?
- 30. 如何在Windows 10上找到已安裝的應用程序
與此相關的安裝程序對象,當你知道它是一個.msi並且可以在其中找到一個組件時,你可以使用MsiGetComponentPath(或MsiLocateComponent)來定位它的keypath。這可能是正確組件的exe。 –
@邁克爾,這是最終爲我工作的。 –