安装MSP修补程序后,Windows安装程序决定安装在最初的MSI提供的所有功能。 如何防止MSP补丁无法安装所有可用的功能?
功能方面的需求表现出这样的:
Installed: Absent
Request: local
Action : local
为什么要求安装所有?
安装MSP修补程序后,Windows安装程序决定安装在最初的MSI提供的所有功能。 如何防止MSP补丁无法安装所有可用的功能?
功能方面的需求表现出这样的:
Installed: Absent
Request: local
Action : local
为什么要求安装所有?
我发现,在ADDLOCAL属性被设定为所有的卸载功能。 这引起了“请求:本地”的每一个。 我做了什么来解决这个问题是使用一个删除该物业的小型自定义操作。 它需要因为要安装的功能,需要采取行动之前定义CostFinalize之前去。 变量重新安装认为已安装的功能,和所有的人都要求为重新安装。 所以MSP补丁只有重新安装已安装的功能,并离开卸载功能不变。
<CustomAction Id="REMOVE_ADDLOCAL_PROPERTY"
Property="ADDLOCAL" Value="[NonExistentProperty]"
/>
<InstallExecuteSequence>
<Custom Action="REMOVE_ADDLOCAL_PROPERTY" Before="CostFinalize">
<![CDATA[PATCH]]>
</Custom>
</InstallExecuteSequence>
编辑:最后,该解决方案为我的修补程序之一,但失败了另一个。 所以,最终的解决方案,我到目前为止所实现的是重新安装=补丁期间的所有设置。 这个MSDN链接代表的是:
请注意,即使重新安装设置为ALL,只有那些以前已经安装的功能重新安装。 因此,如果重新安装设置为一个产品,是尚未安装,无需安装动作将发生在所有。
所以我觉得这是不是删除了一个更好的解决方案ADDLOCAL
属性。 而且它的工作两个补丁。
你要选择的要素保存在初始安装时,注册表ADDLOCAL
属性。 当安装了补丁,它必须从注册表中读取设置状态ADDLOCAL
相应属性。
否则,补丁运行,就好像默认选择,因此缺少的功能得到安装。
您链接到一个问题,要升级的情况下, MigrateFeatures
属性,它是指MigrateFeatureStates
行动 ,不会补丁的情况下工作。