簡體   English   中英

在Windows 7中使用MSI安裝時,注冊表中會發生什么情況?

[英]what happens in the registry when installing with an MSI in Windows 7?

在帶有MSI的Windows 7中安裝程序時(所有Windows版本都知道...但是Windows 7現在就足夠了)...

-在安裝時對注冊表進行哪些更改?在哪里?所有這些更改如何相互關聯?

-如何找到我需要的與給定安裝有關的所有數據,我是否必須通過注冊表來獲取此數據,或者是否有另一種更有效或更合適的方法來訪問這些數據?

使用MSI API,例如MsiGetProductInfoEx函數 正如Hans所提到的,注冊表數據大多是未記錄的,因為它是一個實現細節。

我一直在玩注冊表和安裝程序,以了解我能提供些什么。 如果有人可以進一步闡述我的答案或做出任何更正,將不勝感激,因為該答案僅來自觀察,而不來自任何官方來源。 我制作了一些表格,描述了我在下圖中看到的內容。 另外,為了訪問所需的信息(IE,MSI的ProductName或ProductCode屬性),我遇到了WIX( http://wixtoolset.org/ ),並且正在使用Micrsoft.Deployment.Installer.dll以及其他庫包含在WIX中,因為它們非常漂亮。

我不知道我在這里引用的所有鍵和代碼的正式術語……因此,如果我似乎因為它們的名稱而對它們進行了編造,也不要感到驚訝,因為我這樣做了。

更新:我只是在MSI文檔中找到了一些更有用的信息,在這里可能會對此有所贊賞: http : //msdn.microsoft.com/zh-cn/library/windows/desktop/aa372105(v=vs.85).aspx

針對MSI執行的Windows 7注冊表分析

建議使用MsiGetProductInfoEx(可能還使用MsiEnumProductsEx)來獲取有關已安裝產品的信息的編程方法。 然后,使用這種方法,您可以比較對ProductCode,ProductVersion和程序包代碼(即修訂號摘要屬性)值的更改。 但是,對該應用程序進行小的更新可能會使ProductCode和ProductVersion保持不變。 典型的小更新僅更改一個或兩個文件或注冊表項,在這種情況下,還應更改程序包代碼。 但是,附帶語言轉換的產品可能與沒有轉換的產品具有相同的包裝代碼。

如果要開發自己的Windows Installer程序包,需要確定用戶是否已經安裝了該應用程序的版本,則可以在應用程序的安裝過程中使用Windows Installer服務搜索特定的文件或目錄。 這種方法需要在Windows安裝程序數據庫中填充適當的表,並且msi應該運行AppSearch Action。 在此發布的Microsoft的Windows Installer文檔中描述了此方法:

搜索現有的應用程序,文件,注冊表項或.ini文件條目

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM