msi: Don't publish components to the Installer key.
This commit is contained in:
parent
073d55e73b
commit
4aa3a997f8
|
@ -2822,15 +2822,11 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
|
||||||
WCHAR squished_cc[GUID_SIZE];
|
WCHAR squished_cc[GUID_SIZE];
|
||||||
UINT rc;
|
UINT rc;
|
||||||
MSICOMPONENT *comp;
|
MSICOMPONENT *comp;
|
||||||
HKEY hkey=0,hkey2=0;
|
HKEY hkey;
|
||||||
|
|
||||||
TRACE("\n");
|
TRACE("\n");
|
||||||
|
|
||||||
/* writes the Component and Features values to the registry */
|
/* writes the Component values to the registry */
|
||||||
|
|
||||||
rc = MSIREG_OpenComponents(&hkey);
|
|
||||||
if (rc != ERROR_SUCCESS)
|
|
||||||
return rc;
|
|
||||||
|
|
||||||
squash_guid(package->ProductCode,squished_pc);
|
squash_guid(package->ProductCode,squished_pc);
|
||||||
ui_progress(package,1,COMPONENT_PROGRESS_VALUE,1,0);
|
ui_progress(package,1,COMPONENT_PROGRESS_VALUE,1,0);
|
||||||
|
@ -2862,14 +2858,12 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
|
||||||
*/
|
*/
|
||||||
if (ACTION_VerifyComponentForAction( comp, INSTALLSTATE_LOCAL))
|
if (ACTION_VerifyComponentForAction( comp, INSTALLSTATE_LOCAL))
|
||||||
{
|
{
|
||||||
rc = RegCreateKeyW(hkey,squished_cc,&hkey2);
|
|
||||||
if (rc != ERROR_SUCCESS)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!comp->FullKeypath)
|
if (!comp->FullKeypath)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
msi_reg_set_val_str( hkey2, squished_pc, comp->FullKeypath );
|
rc = MSIREG_OpenUserDataComponentKey(comp->ComponentId, &hkey, TRUE);
|
||||||
|
if (rc != ERROR_SUCCESS)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (comp->Attributes & msidbComponentAttributesPermanent)
|
if (comp->Attributes & msidbComponentAttributesPermanent)
|
||||||
{
|
{
|
||||||
|
@ -2878,36 +2872,14 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
|
||||||
'0','0','0','0','0','0','0','0','0','0','0','0',
|
'0','0','0','0','0','0','0','0','0','0','0','0',
|
||||||
'0','0','0','0','0','0','0','0',0 };
|
'0','0','0','0','0','0','0','0',0 };
|
||||||
|
|
||||||
msi_reg_set_val_str( hkey2, szPermKey, comp->FullKeypath );
|
msi_reg_set_val_str(hkey, szPermKey, comp->FullKeypath);
|
||||||
}
|
}
|
||||||
|
|
||||||
RegCloseKey(hkey2);
|
msi_reg_set_val_str(hkey, squished_pc, comp->FullKeypath);
|
||||||
|
RegCloseKey(hkey);
|
||||||
rc = MSIREG_OpenUserDataComponentKey(comp->ComponentId, &hkey2, TRUE);
|
|
||||||
if (rc != ERROR_SUCCESS)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
msi_reg_set_val_str(hkey2, squished_pc, comp->FullKeypath);
|
|
||||||
RegCloseKey(hkey2);
|
|
||||||
}
|
}
|
||||||
else if (ACTION_VerifyComponentForAction( comp, INSTALLSTATE_ABSENT))
|
else if (ACTION_VerifyComponentForAction(comp, INSTALLSTATE_ABSENT))
|
||||||
{
|
|
||||||
DWORD res;
|
|
||||||
|
|
||||||
rc = RegOpenKeyW(hkey,squished_cc,&hkey2);
|
|
||||||
if (rc != ERROR_SUCCESS)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
RegDeleteValueW(hkey2,squished_pc);
|
|
||||||
|
|
||||||
/* if the key is empty delete it */
|
|
||||||
res = RegEnumKeyExW(hkey2,0,NULL,0,0,NULL,0,NULL);
|
|
||||||
RegCloseKey(hkey2);
|
|
||||||
if (res == ERROR_NO_MORE_ITEMS)
|
|
||||||
RegDeleteKeyW(hkey,squished_cc);
|
|
||||||
|
|
||||||
MSIREG_DeleteUserDataComponentKey(comp->ComponentId);
|
MSIREG_DeleteUserDataComponentKey(comp->ComponentId);
|
||||||
}
|
|
||||||
|
|
||||||
/* UI stuff */
|
/* UI stuff */
|
||||||
uirow = MSI_CreateRecord(3);
|
uirow = MSI_CreateRecord(3);
|
||||||
|
@ -2917,8 +2889,8 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
|
||||||
ui_actiondata(package,szProcessComponents,uirow);
|
ui_actiondata(package,szProcessComponents,uirow);
|
||||||
msiobj_release( &uirow->hdr );
|
msiobj_release( &uirow->hdr );
|
||||||
}
|
}
|
||||||
RegCloseKey(hkey);
|
|
||||||
return rc;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -767,7 +767,6 @@ extern UINT MSIREG_OpenUserProductsKey(LPCWSTR szProduct, HKEY* key, BOOL create
|
||||||
extern UINT MSIREG_OpenUserPatchesKey(LPCWSTR szPatch, HKEY* key, BOOL create);
|
extern UINT MSIREG_OpenUserPatchesKey(LPCWSTR szPatch, HKEY* key, BOOL create);
|
||||||
extern UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, HKEY* key, BOOL create);
|
extern UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, HKEY* key, BOOL create);
|
||||||
extern UINT MSIREG_OpenUserDataFeaturesKey(LPCWSTR szProduct, HKEY *key, BOOL create);
|
extern UINT MSIREG_OpenUserDataFeaturesKey(LPCWSTR szProduct, HKEY *key, BOOL create);
|
||||||
extern UINT MSIREG_OpenComponents(HKEY* key);
|
|
||||||
extern UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY* key, BOOL create);
|
extern UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY* key, BOOL create);
|
||||||
extern UINT MSIREG_OpenUserDataComponentKey(LPCWSTR szComponent, HKEY *key, BOOL create);
|
extern UINT MSIREG_OpenUserDataComponentKey(LPCWSTR szComponent, HKEY *key, BOOL create);
|
||||||
extern UINT MSIREG_OpenProductsKey(LPCWSTR szProduct, HKEY* key, BOOL create);
|
extern UINT MSIREG_OpenProductsKey(LPCWSTR szProduct, HKEY* key, BOOL create);
|
||||||
|
|
|
@ -645,11 +645,6 @@ UINT MSIREG_OpenUserDataFeaturesKey(LPCWSTR szProduct, HKEY *key, BOOL create)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT MSIREG_OpenComponents(HKEY* key)
|
|
||||||
{
|
|
||||||
return RegCreateKeyW(HKEY_LOCAL_MACHINE,szInstaller_Components,key);
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY* key, BOOL create)
|
UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY* key, BOOL create)
|
||||||
{
|
{
|
||||||
UINT rc;
|
UINT rc;
|
||||||
|
@ -1240,7 +1235,7 @@ UINT WINAPI MsiEnumComponentsW(DWORD index, LPWSTR lpguid)
|
||||||
|
|
||||||
TRACE("%d %p\n", index, lpguid);
|
TRACE("%d %p\n", index, lpguid);
|
||||||
|
|
||||||
r = MSIREG_OpenComponents(&hkeyComponents);
|
r = RegCreateKeyW(HKEY_LOCAL_MACHINE, szInstaller_Components, &hkeyComponents);
|
||||||
if( r != ERROR_SUCCESS )
|
if( r != ERROR_SUCCESS )
|
||||||
return ERROR_NO_MORE_ITEMS;
|
return ERROR_NO_MORE_ITEMS;
|
||||||
|
|
||||||
|
|
|
@ -2767,13 +2767,7 @@ static void test_publish_processcomponents(void)
|
||||||
"Expected \"%s\", got \"%s\"\n", "C:\\Program Files\\msitest\\maximus", val);
|
"Expected \"%s\", got \"%s\"\n", "C:\\Program Files\\msitest\\maximus", val);
|
||||||
|
|
||||||
res = RegOpenKeyA(HKEY_LOCAL_MACHINE, compkey, &hkey);
|
res = RegOpenKeyA(HKEY_LOCAL_MACHINE, compkey, &hkey);
|
||||||
todo_wine
|
ok(res == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %d\n", res);
|
||||||
{
|
|
||||||
ok(res == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %d\n", res);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (res == ERROR_SUCCESS)
|
|
||||||
RegCloseKey(hkey);
|
|
||||||
|
|
||||||
RegDeleteValueA(comp, "84A88FD7F6998CE40A22FB59F6B9C2BB");
|
RegDeleteValueA(comp, "84A88FD7F6998CE40A22FB59F6B9C2BB");
|
||||||
RegDeleteKeyA(comp, "");
|
RegDeleteKeyA(comp, "");
|
||||||
|
|
Loading…
Reference in New Issue