New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue4242 #15

Merged
merged 9 commits into from Apr 30, 2014

Conversation

Projects
None yet
4 participants
@heaths
Contributor

heaths commented Apr 10, 2014

Fixes a number of issues tracked in http://wixtoolset.org/issues/4242/ all related to related bundles and compatible packages (new - supports "reverse sticky patching" for handling upgrades and what not, the rest of the sticky patching stuff from wix37).

heaths and others added some commits Apr 9, 2014

Allow package downgrades for related bundles
Allow package downgrades for related bundles with proper ref-counting.
Make sure packages register their identities in the provider registry.
Slipstream changes
Pass original source location for embedded bundles so that embedded bundles can be slipstreamed and share package source with parent bundles.
Skip the repair of the related bundle if it has the same provider key
This is to fix this scenario
Install BundleAv1
Install PatchBundleV1 (applies to BundleA)
Install BundleAv2 (this bundle includes PatchBundleV2 as an embedded bundle)

Before fix, during install of BundleAv2, PatchBundleV1 would be repaired as a related bundle and both V1 and V2 of the PatchBundles would be on the machine.
This fix skips the repair of the related bundle if it has the same provider key as an embedded bundle that is being installed, so only V2 of the patch bundle is on the machine at the end.

Also add support for passing Ancestors to embedded burn bundles to help prevent recursion.
Add version check to delete correct update key
Update Registration key was being deleted during a bundle to bundle upgrade.
Added version check so that only if the version was the same would the key be deleted.
Fix issues with compatible packages for repair/uninstall
Don't fail uninstall when planned package was removed by related bundle
Don't repair dependent bundles when upgrading a patch or addon bundle
@@ -825,6 +843,15 @@ extern "C" HRESULT CoreRecreateCommandLine(
ExitOnFailure(hr, "Failed to append active parent command-line to command-line.");
}
if (wzAncestors)
{
hr = StrAllocFormatted(&scz, L" /%ls=%ls", BURN_COMMANDLINE_SWITCH_ANCESTORS, wzAncestors);

This comment has been minimized.

@barnson

barnson Apr 11, 2014

Member

Seems we should have a StrAllocFormattedConcat helper...

@barnson

barnson Apr 11, 2014

Member

Seems we should have a StrAllocFormattedConcat helper...

This comment has been minimized.

@heaths

heaths Apr 12, 2014

Contributor

Not sure I understand this comment. Are you saying I should add one? (StrAllocFormatted actually does it when passing the string to itself, but it's not obvious - I've used it elsewhere in older code successfully.)

@heaths

heaths Apr 12, 2014

Contributor

Not sure I understand this comment. Are you saying I should add one? (StrAllocFormatted actually does it when passing the string to itself, but it's not obvious - I've used it elsewhere in older code successfully.)

This comment has been minimized.

@barnson

barnson Apr 28, 2014

Member

Sorry, not requesting a change. It just seems a common requirement: format a string and append it to another.

@barnson

barnson Apr 28, 2014

Member

Sorry, not requesting a change. It just seems a common requirement: format a string and append it to another.

This comment has been minimized.

@heaths

heaths Apr 28, 2014

Contributor

Is this change good to go then?

@heaths

heaths Apr 28, 2014

Contributor

Is this change good to go then?

{
break;
}
__fallthrough;

This comment has been minimized.

@rseanhall

rseanhall Apr 13, 2014

Member

Why fallthrough for PRESENT/REPAIR, but not NONE?

@rseanhall

rseanhall Apr 13, 2014

Member

Why fallthrough for PRESENT/REPAIR, but not NONE?

This comment has been minimized.

@heaths

heaths Apr 13, 2014

Contributor

This block of code has evolved quite a bit since I originally designed and wrote the feature. While these could be condense now, I'm trying to get a fresh set of bug fixes and updates through our legal department that will condense these and work for more cases. It will be easier and safer to resolve the code changes then.

@heaths

heaths Apr 13, 2014

Contributor

This block of code has evolved quite a bit since I originally designed and wrote the feature. While these could be condense now, I'm trying to get a fresh set of bug fixes and updates through our legal department that will condense these and work for more cases. It will be easier and safer to resolve the code changes then.

const BURN_DEPENDENCY_PROVIDER* pProvider = pRelatedBundle->package.rgDependencyProviders + j;
if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, pProvider->sczKey, -1, pRegistration->sczProviderKey, -1))
{
fSkipBundle = FALSE;

This comment has been minimized.

@barnson

barnson Apr 28, 2014

Member

break?

@barnson

barnson Apr 28, 2014

Member

break?

__in_z LPCWSTR wzPackageId,
__in_z LPCWSTR wzCompatiblePackageId
) = 0;

This comment has been minimized.

@barnson

barnson Apr 28, 2014

Member

We can't take a breaking interface change in v3.x. This needs to be #ifdef'd out or added separately in v4.0.

@barnson

barnson Apr 28, 2014

Member

We can't take a breaking interface change in v3.x. This needs to be #ifdef'd out or added separately in v4.0.

This comment has been minimized.

@heaths

heaths Apr 28, 2014

Contributor

We did it all the time. Rob even did a bunch of changes to the interface right before declaring 3.7 RTM. When did this rule change? I updated MBA and WixStdBA as was the requirement before, so anybody building with those won't even notice.

@heaths

heaths Apr 28, 2014

Contributor

We did it all the time. Rob even did a bunch of changes to the interface right before declaring 3.7 RTM. When did this rule change? I updated MBA and WixStdBA as was the requirement before, so anybody building with those won't even notice.

This comment has been minimized.

@barnson

barnson Apr 28, 2014

Member

And it broke people. (It was mildly tolerable since v3.7 came out so soon after v3.6.) The rule was in place for v3.8.

@barnson

barnson Apr 28, 2014

Member

And it broke people. (It was mildly tolerable since v3.7 came out so soon after v3.6.) The rule was in place for v3.8.

This comment has been minimized.

@heaths

heaths Apr 28, 2014

Contributor

What about using versioned interfaces like the intended for COM? We could define them for each minor WiX release. This seems compatible for semantic versioning since we're introducing a new element.

@heaths

heaths Apr 28, 2014

Contributor

What about using versioned interfaces like the intended for COM? We could define them for each minor WiX release. This seems compatible for semantic versioning since we're introducing a new element.

This comment has been minimized.

@barnson

barnson Apr 28, 2014

Member

Yeah, that would work. A PITA, though. I'd want to collapse them for v4.0.

@barnson

barnson Apr 28, 2014

Member

Yeah, that would work. A PITA, though. I'd want to collapse them for v4.0.

This comment has been minimized.

@barnson

barnson Apr 28, 2014

Member

Yes, v4.0 is open. The compiler's changed a bit so that won't be a straight merge but the rest should come over easily.

@barnson

barnson Apr 28, 2014

Member

Yes, v4.0 is open. The compiler's changed a bit so that won't be a straight merge but the rest should come over easily.

@heaths

This comment has been minimized.

Show comment
Hide comment
@heaths

heaths Apr 28, 2014

Contributor

Whether I remove the method or add a new interface, for inclusion into wix4 is that branch open and accepting contributions so I can add the method "back" in at one time (so I don't forget later)?

Contributor

heaths commented Apr 28, 2014

Whether I remove the method or add a new interface, for inclusion into wix4 is that branch open and accepting contributions so I can add the method "back" in at one time (so I don't forget later)?

@barnson barnson merged commit a448a60 into wixtoolset:develop Apr 30, 2014

@heaths heaths deleted the heaths:issue4242 branch Jun 3, 2014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment