|
|
#1 (permalink) |
|
Guest
Posts: n/a
|
Can anyone give me ideas on how to deal with this installation scenario? I’m
not sure how to do it. I have two components, A and B. Component A depends on component B, so B must be installed and be present for A to work. Component B is just a DLL actually. But B requires a license and I only want to distribute it on CD. The problem is, what if I find a bug in component A and I want to provide an upgrade to fix it---say by web page download---but I don’t want to include component B in the update because then any user who doesn’t have the CD could get B for free. I’d like an upgrade that updates component A, but which will not include or install component B. But it seems to me that any such update would have the effect of removing component B from a user’s system that already has it, which is not what I want to happen. I had thought of just making a separate MSI installer for each component. Then I would include both on the CD but offer updates for only component A by web download. But the disadvantage with this idea is that A and B are really meant to be one product, and if the user uninstalls component A, I want component B to be uninstalled with it. And I don’t want component B to show up in Add/Remove Programs---it’s meant to be invisible to the user. How do I deal with this scenario? We have not shipped the initial CD yet so I still have a little time to make sure the first version is right. By the way, I’m using WiX to build MSIs. Thanks. |
|
|
|
#2 (permalink) |
|
Guest
Posts: n/a
|
"minorguy" <minorguy@discussions.microsoft.com> wrote in message
news:E70DF380-F8EC-4EEA-8180-F30C7A8A58D8@microsoft.com... > Can anyone give me ideas on how to deal with this installation scenario? > I'm not sure how to do it. > I have two components, A and B. Component A depends on component B, so B > must be installed and be present for A to work. Component B is just a DLL > actually. But B requires a license and I only want to distribute it on > CD. The problem is, what if I find a bug in component A and I want to > provide an upgrade to fix it---say by web page download---but I don't > want to include component B in the update because then any user who > doesn't have the CD could get B for free. I'd like an upgrade that > updates component A, but which will not include or install component B. > But it seems to me that any such update would have the effect of > removing component B from a user's system that already has it, which is > not what I want to happen. > I had thought of just making a separate MSI installer for each component. > Then I would include both on the CD but offer updates for only component > A by web download. But the disadvantage with this idea is that A and B > are really meant to be one product, and if the user uninstalls > component A, I want component B to be uninstalled with it. And I don't > want component B to show up in Add/Remove Programs---it's meant to be > invisible to the user. > How do I deal with this scenario? We have not shipped the initial CD yet > so I still have a little time to make sure the first version is right. > By the way, I'm using WiX to build MSIs. > Thanks. First - you do not need to include changes for component B at all in your main patch of the product. When you make your patch you will provide an upgraded MSI admin image with which the differences will be examined and placed into your patch package. If you do not updated component B in the upgraded image then no changes will be made to it. If you do need to upgrade component B then you should make use of a new PatchFamily identifier in the MsiPatchSequence table in a new PCP file. In this way you'll end up with two independent patch streams for the same product. You'll make a second independent set of upgraded admin images to produce this new patch stream in which you would update only component B (and maybe custom actions related to the same component). Doing this both the main patch and the secondary patch can be applied to the same product at the same time and each can be upgraded independently from one another which is likely what you are looking for. For further information you should download and read the patch sequencing whitepaper (several times probably ![]() http://www.microsoft.com/downloads/d...displaylang=en Sincerely, Adrian Accinelli |
|
|
|
#3 (permalink) |
|
Guest
Posts: n/a
|
Hi Adrian,
Thanks for your advice. So it looks like a patch is what I would need. I have not gotten familiar with patches yet, so I’ll need to read up on it. There are just a couple of things I’m wary about. In the past, I’ve used a major upgrade as a fallback for tougher situations since it uninstalls the previous version automatically. (As an example, I ran into trouble when trying to install a minor upgrade from CD onto a system where the previous version had been installed from a file on hard disk. Windows Installer gave me an error in that case and wouldn’t upgrade it.) Now I wouldn’t be able to do that. But perhaps we can just give out an upgrade CD that does a major upgrade when absolutely necessary. This product is a driver and software associated with a device, not a pure software product. Another small issue is that I’ve always only depended on having Windows Installer 2.0 since I know that will be on Windows 2000 and later. I noticed the patch sequencing requires 3.0; but I guess I can deal with that later. Yes, you are right though, it would be ideal to upgrade each component independently---to upgrade A without including B at all in the patch. So the patch sequence table looks like the most promising thing so far. |
|