簡體   English   中英

永久注冊表項-Orca-MSI GUID

[英]permanent registry keys - orca - msi guid

使用.msi程序包,如果它們不存在,我想創建一些注冊表項,如果它們存在,則將其保留,如果刪除程序,則不要刪除它們。 通過使用以下msi表中的條目來完成此操作(使用Orca):組件,FeatureComponents,注冊表和LockPermissions。 我的問題是,對於這些鍵,我應該如何處理Component表的ComponentID中使用的GUID? 似乎有3個選擇。

1)分配一次,並在msi的未來版本中保留它們

2)每次產生新版本時分配新的

3)使用NULL(根據http://msdn.microsoft.com/zh-cn/library/aa368007(VS.85).aspx ),我還沒有嘗試過。

其中之一比另一個更受青睞嗎? 彼此之間有任何后果嗎? (如果刪除了程序,我寧願留下盡可能少的東西)。

我也很想知道以下有關永久屬性位(16)的注釋的含義。

如果設置此位,則安裝程序在卸載期間不會刪除組件。 安裝程序會在Windows Installer注冊表設置中為該組件注冊一個額外的系統客戶端。

在哪里可以找到這些條目?

從Windows Installer MSDN主題將應用程序組織到組件中

切勿創建兩個在相同名稱和目標位置下安裝資源的組件。 如果必須在多個組件中復制資源,請更改其名稱或每個組件中的目標位置。 此規則應適用於應用程序,產品,產品版本和公司。

每次發布新版本時,選項(2)都會為相同的注冊表項有效地創建一個新組件,這違反了引用的規則。

通過將組件GUID設置為Guid=""可以用wix完成選項(3)。 這將使Windows Installer安裝組件資源,然后“忘記”該組件。 從某種意義上說,這可能會做您想做的事情,即不會刪除已安裝的資源。 但是,這也意味着如果丟失注冊表項,“修復”將無法還原。

因此,您應該選擇具有固定GUID的選項(1) ,並設置Permanent屬性以將組件的引用計數保持為非零。 Windows安裝程序如何在內部執行此操作是您無需關心的實現細節,因此我看不到尋找這些Windows安裝程序注冊表設置的意義

暫無
暫無

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

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