From 0872e8cc87d753e6bdda9fad510a6b71cf96565f Mon Sep 17 00:00:00 2001 From: Mike Kaganski Date: Mon, 10 Aug 2020 13:58:57 +0300 Subject: tdf#135579: Don't uninstall vc_redist: make it permanent Redist is a system component, that includes a varying set of DLLs, and those DLLs are ref-counted. Installing a newer redist - i.e. updating and increasing refcount of existing DLLs - may add new DLLs (with initial refcount 1) in addition to the updated old DLLs that start depending on the newly added ones; at uninstall, the newly added DLLs may get removed because their refcount gets 0, while other redist DLLs are kept at the updated levels - so their dependencies now are not met, and redist gets broken. Just mark the redist components permanent, which, according to [1], "registers an extra system client for the component in the Windows Installer registry settings". A downside is that uninstall doesn't restore the original system state ideally. [1] https://docs.microsoft.com/en-us/windows/win32/msi/component-table Change-Id: I3fe82bcb5844f826f5b1df622273b4e3a1e3c436 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100426 Tested-by: Mike Kaganski Reviewed-by: Mike Kaganski --- scp2/source/ooo/vc_redist.scp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'scp2/source/ooo/vc_redist.scp') diff --git a/scp2/source/ooo/vc_redist.scp b/scp2/source/ooo/vc_redist.scp index d32758312766..75ccf2b8d09d 100644 --- a/scp2/source/ooo/vc_redist.scp +++ b/scp2/source/ooo/vc_redist.scp @@ -32,22 +32,26 @@ #if defined(WINDOWS_X86_MERGEMODULE) +/* Attributes: msidbComponentAttributesPermanent = 0x10 */ MergeModule WINDOWS_X86_MERGEMODULE Feature = gm_Root; Name = WINDOWS_X86_MERGEMODULE_FILE; RootDir = "TARGETDIR"; ComponentCondition = "VC_REDIST=1"; + Attributes_Add = "0x10"; End #endif #if defined(WINDOWS_X64) && defined(WINDOWS_X64_MERGEMODULE) +/* Attributes: msidbComponentAttributesPermanent = 0x10 */ MergeModule WINDOWS_X64_MERGEMODULE Feature = gm_Root; Name = WINDOWS_X64_MERGEMODULE_FILE; RootDir = "TARGETDIR"; ComponentCondition = "VC_REDIST=1"; + Attributes_Add = "0x10"; End #endif -- cgit