summaryrefslogtreecommitdiff
path: root/src/burn/engine/registration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/registration.cpp')
-rw-r--r--src/burn/engine/registration.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/burn/engine/registration.cpp b/src/burn/engine/registration.cpp
index 7b6aa6bb..961e86bc 100644
--- a/src/burn/engine/registration.cpp
+++ b/src/burn/engine/registration.cpp
@@ -169,10 +169,6 @@ extern "C" HRESULT RegistrationParseFromXml(
169 169
170 if (fFoundXml) 170 if (fFoundXml)
171 { 171 {
172 // @Register
173 hr = XmlGetYesNoAttribute(pixnArpNode, L"Register", &pRegistration->fRegisterArp);
174 ExitOnRequiredXmlQueryFailure(hr, "Failed to get @Register.");
175
176 // @DisplayName 172 // @DisplayName
177 hr = XmlGetAttributeEx(pixnArpNode, L"DisplayName", &pRegistration->sczDisplayName); 173 hr = XmlGetAttributeEx(pixnArpNode, L"DisplayName", &pRegistration->sczDisplayName);
178 ExitOnOptionalXmlQueryFailure(hr, fFoundXml, "Failed to get @DisplayName."); 174 ExitOnOptionalXmlQueryFailure(hr, fFoundXml, "Failed to get @DisplayName.");
@@ -247,7 +243,12 @@ extern "C" HRESULT RegistrationParseFromXml(
247 243
248 // @DisableRemove 244 // @DisableRemove
249 hr = XmlGetYesNoAttribute(pixnArpNode, L"DisableRemove", &pRegistration->fNoRemove); 245 hr = XmlGetYesNoAttribute(pixnArpNode, L"DisableRemove", &pRegistration->fNoRemove);
250 ExitOnOptionalXmlQueryFailure(hr, pRegistration->fNoRemoveDefined, "Failed to get @DisableRemove."); 246 ExitOnOptionalXmlQueryFailure(hr, fFoundXml, "Failed to get @DisableRemove.");
247 }
248
249 if (pRegistration->fNoRemove && BURN_REGISTRATION_MODIFY_ENABLED != pRegistration->modify)
250 {
251 pRegistration->fForceSystemComponent = TRUE;
251 } 252 }
252 253
253 hr = ParseSoftwareTagsFromXml(pixnRegistrationNode, &pRegistration->softwareTags.rgSoftwareTags, &pRegistration->softwareTags.cSoftwareTags); 254 hr = ParseSoftwareTagsFromXml(pixnRegistrationNode, &pRegistration->softwareTags.rgSoftwareTags, &pRegistration->softwareTags.cSoftwareTags);
@@ -759,14 +760,14 @@ extern "C" HRESULT RegistrationSessionBegin(
759 } 760 }
760 761
761 // NoRemove: should this be allowed? 762 // NoRemove: should this be allowed?
762 if (pRegistration->fNoRemoveDefined) 763 if (pRegistration->fNoRemove)
763 { 764 {
764 hr = RegWriteNumber(hkRegistration, REGISTRY_BUNDLE_NO_REMOVE, (DWORD)pRegistration->fNoRemove); 765 hr = RegWriteNumber(hkRegistration, REGISTRY_BUNDLE_NO_REMOVE, 1);
765 ExitOnFailure(hr, "Failed to write %ls value.", REGISTRY_BUNDLE_NO_REMOVE); 766 ExitOnFailure(hr, "Failed to write %ls value.", REGISTRY_BUNDLE_NO_REMOVE);
766 } 767 }
767 768
768 // Conditionally hide the ARP entry. 769 // Conditionally hide the ARP entry.
769 if (!pRegistration->fRegisterArp) 770 if (pRegistration->fForceSystemComponent)
770 { 771 {
771 hr = RegWriteNumber(hkRegistration, REGISTRY_BUNDLE_SYSTEM_COMPONENT, 1); 772 hr = RegWriteNumber(hkRegistration, REGISTRY_BUNDLE_SYSTEM_COMPONENT, 1);
772 ExitOnFailure(hr, "Failed to write %ls value.", REGISTRY_BUNDLE_SYSTEM_COMPONENT); 773 ExitOnFailure(hr, "Failed to write %ls value.", REGISTRY_BUNDLE_SYSTEM_COMPONENT);