使用Visual Studio 2010,我想切换到使用InstallShield LE而不是Visual Studio安装项目。
在安装项目中,存在一个选项RemovePreviousVersions
,这对于制作一个安装程序非常有用,该安装程序在发布新版本时基本上会进行就地升级。
现在使用InstallShield LE,我已经更新了版本并生成了一个新的ProductCode,但是在运行安装程序之后,以前的版本仍然存在。
我需要做什么才能使InstallShield构建的项目删除以前使用VS Setup Project构建的版本?
答案 0 :(得分:41)
当我第一次开始使用Visual 2012中的项目时,这让我很生气。我一直在添加/删除程序中获取重复副本,旧版本没有更新。这是我发现我需要做的事情。
在“升级路径”下,创建新路径。将最小版本留空(除非您需要),包括最小版本是,最大版本应设置为您现在安装的版本。包括最大版本为是。
每次安装更新时,请在“常规信息”部分中推进产品版本。 单击“常规信息”部分中的新产品代码 请勿更改升级代码
返回升级路径,并将Max版本设置为您现在部署的版本。这对我来说很有用。
此过程卸载以前的版本,并安装最新版本。添加/删除程序时没有重复。
希望这有帮助。
答案 1 :(得分:8)
你可以试试这个:
您还应该确保两个版本的ALLUSERS属性具有相同的值(这是相同的方法)。您可以在此处详细了解升级:http://msdn.microsoft.com/en-us/library/aa369786(VS.85).aspx
答案 2 :(得分:4)
user2321103的答案非常好,在升级路径中创建新的升级条目是关键。遗憾的是,这个选项被隐藏起来,因为它需要产生大多数人自然希望成为安装程序的正常默认行为。
这个新答案的原因是我发现我可以将升级条目中的最大版本设置为更高的数字而不是当前版本。这意味着我不必记得为每个新版本更新此内容。我当前的版本是2.1.8所以我将Max Version设置为2.1.9999。万一我可能希望在将来的某个版本中出现不同的行为,我可以将我的版本升级到2.2.x
每当您更改版本号时,Microsoft安装项目都会自动更新产品代码,但Installshield LE不会更新,因此每次都需要记住这样做。
正如其他答案所述,升级条目使用以前安装的版本中的升级代码非常重要。我没有试过这个,但是如果由于某种原因你有多个以前的版本有不同的升级代码,那么你可以为每个版本创建一个单独的升级条目。
我不明白为什么你不能将Include Min Version和Include Max Version都设置为No,但这似乎不起作用。我没有尝试过这些不同参数的所有组合,但正如在另一个答案中所述,以下设置似乎可以解决这个问题:
将Lang Search Criterion更改为Exclude似乎也很重要。 我还将Ignore remove failure设置为Yes。 我将迁移功能状态设置为否,但我认为这与LE版本无关。
答案 3 :(得分:0)
如果我可以再说一个答案,我就可以创建一个升级路径,不需要根据通用ISPreventDowngrade
升级路径设置/更新特定的升级代码,最小版本或最大版本。根据Max版本说明中的注意事项,You must specify a value for at least one of the version settings: Min Version, Max Version, or both.
因此我将Max版本设置为通用占位符。完成后,我不需要设置最大版本。所以我的配置如下:
{00000000-0000-0000-0000-000000000000}
(将替换为当前安装程序升级代码的通用占位符)***ALL_VERSIONS***
(版本占位符)我保持不变的所有其他字段。有关详细信息,请参阅http://helpnet.flexerasoftware.com/installshield23helplib/helplibrary/PreventingDowngrades.htm,但请注意拼写错误。上面的占位符都是错误的;我是从ISPreventDowngrade
升级路径中使用的数据中获取的。