2012-09-11 35 views
0

我有一個MSI包,它安裝了許多用戶可以選擇安裝在他的計算機中的功能。我還有一個MSP補丁包,用於更新某些組件並修復應用程序中的一些錯誤。我注意到在補丁安裝期間,ADDLOCAL屬性會自動設置爲包含所有功能的列表(在CostFinalize操作期間)。在PATCH期間獲取ADDLOCAL屬性

我想知道爲什麼「CostFinalize」操作是設置ADDLOCAL屬性,爲什麼它將它設置爲所有「缺席」功能。

我的問題是該補丁正在安裝一切。 我真的找不到解釋,所以任何幫助將不勝感激。

編輯: 鏈接到同一個問題:here

回答

1

你已經嘗試過解決this problem。那個時候,你發現REINSTALL屬性保存了用戶安裝的功能。

然後分配這個值來ADDLOCAL簡單的技巧應該有所幫助:

<CustomAction Id="CopyReinstallToADDLOCAL" 
     Property="ADDLOCAL" Value="[REINSTALL]" 
/> 
<InstallExecuteSequence> 
    <Custom Action="RCopyReinstallToADDLOCAL" Before="CostFinalize"> 
     <![CDATA[PATCH]]> 
    </Custom> 
</InstallExecuteSequence> 
+0

的問題是相似但不相同的。此修復此時不起作用,因爲CostFinalize操作是通過自己的方式設置ADDLOCAL屬性。我無法在這裏更改ADDLOCAL屬性,因爲無論我做什麼,CostFinalize操作都會將其設置爲所需的值。必須解釋爲什麼該補丁嘗試安裝所有內容,但我似乎無法找到它。我添加了一個與具有相同問題的人的鏈接。 – Herno

+0

在[鏈接示例](http://us.generation-nt.com/patching-new-component-causes-addlocal-get-set-help-37009292.html)中:修補程序添加了一個新組件安裝的功能和未安裝的功能。這可能是「CostFinalize」認爲它必須安裝這兩個功能的原因。 –

+0

在我看到Alexey的回答之前,我打算使用Type 1自定義操作。他的方法很好。它適用於後續補丁。 – Petronius