View Full Version : Quickpatch works only one time, a second newer quick patch is not installed

01-10-2003, 04:35 AM
I have created a Quick Patch and applied this quick patch (.msp) to the installation. I now create a new quick patch which includes some modified files that differ from the ones that where delivered in the previous quick patch.

When I run the second quick patch none of the files that are on the target system are updated. They remain the same files that where upgraded when I applied the first quick patch.

I do not understand why this is happening, the files have different checksums, file sizes, etc. What we want to create is create quick patches and use them as a sort of service packs. So, apply service pack 1, and as soon as service pack 2 is out you can apply this on either service pack 1 or on the initial product installation.

Hope someone knows how I can get this to work.


David van Heusden

01-10-2003, 10:00 AM
What you are trying to do is very possible and I have tried it myself so I know it works :).

Is this the approach you are taking?

1. Create a your base setup (Setup1) that lays the framework
2. Create a QuickPatch (Patch1) off the build or msi from previous step
3. Build Patch1
4. While Patch1 is open in Express, go to "Tools->Create a QuickPatch".
5. This will create a QuickPatch for Patch1. Let's call this Patch2

Now if you go to the files view, the upper middle pane should contain the changes Patch1 made. Configure as before and build. To make Patch3, while Patch2 is open go to "Tools->Create a QuickPatch".

01-13-2003, 04:54 AM
Thanks for the quick response. It still doesn't work though. Here is what I do:

1 - Create patch 1 that is based on the original msi package. I include some new files and update some others.

2 - I apply this patch, by doubleclicking the msp file, to my system and the new files are inserted and the others updated. Good.

3 - From the patch 1 I select "Tools->Create a QuickPatch" and name it patch 2. I use the same version number 4.50.0000 (which is the original msi version, and I used this version also for patch 1). The history shows the original msi package with version 4.50.0000, then the patch 1 msi package with version 4.50.0000, and then patch 2 with version 4.50.0000 but without msi package off course. In the files section I want to update 2 files from that patch 1 project that where newly inserted by patch 1. That's all.

4 - I build the project which succeeds without errors or warnings and when I look in the upgraded image folder all patched files from patch 1 are there and the two files that have to be updated by patch 2 are also updated with the correct new file. Good.

5 - I then doubleclick the QuickPatch.msp file from the Patch folder of the Patch 2 project, and this finishes fast. But when I then look at the folder where the updated files should be in, they are still the Patch 1 files, so nothing has happened. :(

6 - In order to check if Patch 2 is working standalone I deinstall the product, reinstall it and apply Patch 2. All files that where in patch 1 are installed, and the updated files from patch 2 are now also installed, so Patch 2 is working correctly standalone, but not as an update to Patch 1. Why? :confused:

Hope you can clarify this Chandima. Kind regards,

David van Heusden...

Note. I think that msi is overcomplicated for these simple tasks. I cannot understand why you would be able to just create patch after patch, without the need to have the previous version available. I wonder how any company is able to produce daily builds from a source control system the way Windows Installer works currently. At this moment if we want to patch a build, we have to add the build to source control because we need the msi file when creating a new patch. This is not well designed at all to my opionion. Off course it is good that you want to have version control and checks in your Installer package, but you should not be required if you do not want to. Maybe I have to let Microsoft know that they are overcomplicating the installation of software.

01-13-2003, 02:46 PM
Your scenario is a valid scenario but unfortunately is a bug/limitation in the current QuickPatch functionality. This was documented in the "known issues" KB article when Express 4.0 was released.


I'm afraid there is no workaround for this issue as yet. We will be making a fix for this in the next service pack.

01-14-2003, 02:46 AM
Hi Chandima,
first of all sorry that I didn't check the current known problem list, I am an engineer and not a support dude, so I am not used to going through the known problem list :)

Second, are there ways to get around the issue? I have done the following, and this seems to work, although at the expense of the patch size:
1 - create the patch 1, including the new files
2 - create the patch 2, and instead of patching the files from patch 1, inserting the new files the same way as in patch 1.

This results in warnings when building the project, but the outcome is positive, the patch is installable standalone and on patch 1, and both times patches and installs the correct files. The file size of the path is however twice the size of the first patch, my guess is that the patch now contains each new file twice which would explain this.

Do you know if this should not be done, and if there are any drawbacks? Uninstall worked in both scenario's.

Is there maybe another way to get around this problem, for instance by manipulating the .msp file using Orca? Or have the updated files not been included in the new patch at all?

Do you know if it is possible to change the history list for a patch? What we would like to be able to do is perhaps change previous patches in de list, like the GUID of the patch, the location, etc.

Thanks for your help, regards,

David van Heusden...

PS. Is it possible to escalate a certain problem in order to receive a hotfix for instance? Or do you only work with service packs. We have a platinum corporate support contract with Installshield.

01-14-2003, 11:17 AM
Now that is indeed a good workaround. As you mentioned the size is the downside of it. This is because when you patch the file, the patch actually contains the difference in binary bits instead of the whole file. This works because you have the whole file, at runtime it realizes that it's a newer file or newer version and overwrites the existing file. As long as the uninstall works properly it's a sign that Windows Installer likes the approach. Just for kicks try installing Patch2 on top of Patch1 and then do a "Repair" from ARP. See if this causes any errors.

Unfortunately manipulating patches are not as easy as manipulating an msi. The msp cannot be opened in ORCA so you really can't tamper with it. However you can tamper with the pcp file (can open it in ORCA). But since you have Express this won't do you any good (because the pcp is generated when you build the patch).

The only way to change the History stuff would be to edit the QuickPatch project tables using ORCA. I have no idea what this would do t the patch though. Could you give me a scenario of what (and why) you are trying to do?

I think you should be able to escalate issues through support but I'm not sure of this. For this particular issue you will have to wait for the Service Pack though because the QuickPatch functionality is going through some major code changes.