Configuring InstallShield LE to remove previous versions built using Visual Studio Setup Projects

限于喜欢 提交于 2019-11-26 16:17:59

问题


Using Visual Studio 2010, I would like to switch over to using InstallShield LE instead of the Visual Studio Setup Project.

In the Setup Project, an option RemovePreviousVersions existed which was great for making an installer that would essentially do an in-place upgrade when a new version is released.

Now with InstallShield LE, I've updated the version and generated a new ProductCode, but after running the installer, the previous version is still present.

What do I need to do so that the InstallShield-built project can remove the previous version which was built with the VS Setup Project?


回答1:


You can try this:

  • open your old MSI with Orca and get its UpgradeCode from Property table
  • in your InstallShield LE project go to "General Information" in solution explorer
  • make sure that the "Upgrade Code" field is set to your old MSI UpgradeCode

You should also make sure that ALLUSERS property has the same value for both versions (it's the same approach). You can read more about upgrades here: http://msdn.microsoft.com/en-us/library/aa369786(VS.85).aspx




回答2:


This drove me crazy when I first started with a project in Visual 2012. I kept getting duplicate copies in the add/remove programs, and the old version wasn't updated. Here's what I found I needed to do.

Under The Upgrade Paths, create a new path. Leave the min version blank (unless you need it), include min version yes, Max version should be set to the version YOU ARE INSTALLING NOW. Include max version to yes.

Each time you are installing an update, advance the Product version in the General Information section. Click on a new Product Code in the General Information Section DO NOT CHANGE the upgrade code

Go back to the upgrade path, and set the Max version to the same version you are deploying now. This was key to getting this working for me.

This process uninstalls previous version, and installs the latest. No duplicates in add/remove programs.

Hope this helps.




回答3:


user2321103's answer is excellent, creating the new upgrade entry in Upgrade Paths is the key thing. It is unfortunate that this option is hidden away as it is required in order to produce what most people would naturally expect to be the normal default behaviour for a setup program.

The reason for this new answer is that I found that I could set the Max Version in the Upgrade Entry to a higher number rather than the current version. This means I won't have to remember to update this for every new release. My current version is 2.1.8 so I set Max Version to 2.1.9999. In the unlikely event that I might want different behaviour in some future release I can up my version to 2.2.x

The Microsoft Setup Project would automatically update the Product Code whenever you altered the version number, but Installshield LE doesn't, so will need to remember to do this every time.

As the other answers state, it is important that the Upgrade Entry uses the Upgrade code from the previous installed versions. I haven't tried this, but presumably if for some reason you have more than one previous version with different upgrade codes, then you can create a separate upgrade entry for each.

I don't understand why you can't just set both Include Min Version and Include Max Version to No, but this doesn't seem to work. I have not tried every combination of these different parameters but as stated in the other answer the following settings seem to do the trick:

  • Min Version: blank
  • Include Min Version: Yes
  • Max Version: >= current version
  • Include Max Version: Yes

It also seems to be important not to change Lang Search Criterion to Exclude. I have also set Ignore remove failure to Yes. I have Migrate Feature States set to No, but I don't think this is relevant for the LE edition anyway.




回答4:


If I can throw one more answer in the hat, I was able to make an upgrade path that does not require setting/updating a specific Upgrade Code, Min or Max Version based on the generic ISPreventDowngrade upgrade path. According to the cautionary note in the Max Version description, You must specify a value for at least one of the version settings: Min Version, Max Version, or both. So I set the Max version to a generic placeholder. This done, I am not required to set a Max Version. So my configuration is as follows:

  • Upgrade Code: {00000000-0000-0000-0000-000000000000} (generic placeholder that will be replaced with current installer's upgrade code)
  • Min Version: blank
  • Include Min Version: No
  • Max Version: ***ALL_VERSIONS*** (version placeholder)
  • Include Max Version: Yes

All other fields I left unchanged. See http://helpnet.flexerasoftware.com/installshield23helplib/helplibrary/PreventingDowngrades.htm for more information, but beware the typos. Both the placeholders above are mistyped; I obtained them from the data used in the ISPreventDowngrade upgrade path.



来源:https://stackoverflow.com/questions/6447404/configuring-installshield-le-to-remove-previous-versions-built-using-visual-stud

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!