Since multiple progids can refer to 1 class we need to check if that
class is isntalled instead of just relying on having it set the
InstallMe variable.
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index 1fa1d23..3dcf63a 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -5690,6 +5690,9 @@
WCHAR clsid[0x1000];
/* check if this progid is to be installed */
+ package->progids[i].InstallMe = ((package->progids[i].InstallMe) ||
+ (package->progids[i].ClassIndex >= 0 &&
+ package->classes[package->progids[i].ClassIndex].Installed));
if (!package->progids[i].InstallMe)
{