1

I have a Visual studio 2010 project A and a setup project SetupProject.

I would like to have a solution of patching/upgrading the installation on one machine by updating several dll, namely a.dll (primary output of A) and b.dll (some other dlls that A depends on).

Following this patching guide using Orca and msimsp, I am able to create a patch solution for my installer.

The problem is msimsp needs a target for comparing with the newer installer, meaning I have to say specifically "this is a patch from 1.0.1 to 1.0.2" and this patch requires that the current installed version is 1.0.1. I cannot use that for patching a 1.0.0 installation.

In other words, the patches have to be applied in sequence, one after another.

My question are :

  1. How can I use Patch_101_To_102 to upgrade any version 1.0.x to a 1.0.2 installation, without the need to go through 1.0.1 patch ?

  2. Would you suggest another solution other than this patching solution ? The problem with this solution is that it calculates the delta difference between two version, so I think that's why it requires the patches to be applied sequentially. It would be great to have a solution saying "overwrite these specific dlls only"

Kenny
  • 1,902
  • 6
  • 32
  • 61

1 Answers1

1

Strictly speaking Visual Stusio suports only the RemovePreviousVersions upgrade, so most people in your position might choose another tool that has a bit more support for patching.

Anyway, why are you creating a patch for 1.0.1 to 1.0.2? Most people build an accumulating patch. Just keep the 1.0.0 build around for as long as you need it, and build all your patches against an MSI that keeps accumulating fixes. Youd increment your MSI version, create a new patch guid, and in the PCP file say that this new patch superseded the previous ones, in ListOfPatchGUIDsToReplace.

PhilDW
  • 20,260
  • 1
  • 18
  • 28
  • Thanks for your reply. I need patch 101_To_102 because if they have installed the patch 100_To_101, my program is now at 101 and will not accept patch 100_To_102. – Kenny Nov 18 '15 at 18:42
  • I don't think you do, that is the point of my answer. Just build the 1.0.0 to 1.0.2 patch and say that it supersdes the 1,0.1 patch. – PhilDW Nov 18 '15 at 19:03