无法安装相同版本的msi文件

时间:2012-03-16 11:46:26

标签: c# winforms windows-installer

我有一个msi版本1.0.2

现在,我修改了一些文件并使用相同的版本1.0.2创建了msi

我尝试安装更新版本。它出现错误,如“无法安装,因为已安装此产品的较新版本”。

我必须发布最新版本的1.0.2。

请告诉我如何解决此问题。

我已经使用过这个提示:

1.)设置DetectNewerInstalledVersion = true。

2.)设置RemovePreviousVersions = true。

3.)更改产品代码。

但没有找到结果。

提前致谢

2 个答案:

答案 0 :(得分:1)

当您正在处理Windows应用程序并不时地部署解决方案时,您应该注意不要删除重新安装时的所有文件,例如数据库文件和用户生成的一些文件。

但是在更改应用程序安装项目版本号时,您会注意到EXE文件在大多数情况下都不会更新,为了确保重新安装EXE文件,您必须向MSI文件中添加一个属性REINSTALLMODE并给它一个值“amus”,我知道现在这对你没有任何意义所以我会更多地解释这个问题。

REINSTALLMODE属性是通过使用名为orca的软件(只是谷歌“下载orca for MSI”)编辑添加到MSI文件的属性,此属性有许多值和许多选项可供给它。 / p>

这里重要的一个值是amus,那么什么是amus以及如何添加所有REINSTALLMODE属性:

在安装orca之后,打开它并在构建解决方案之后拖动你的msi文件。

您会注意到标题表左侧添加了一组记录,向下滚动记录,直到找到名为“Property”的记录点击它,然后在右侧面板中打开其属性,右键单击然后单击在Property字段中添加row:,编写REINSTALLMODE,在值字段add amus中,单击OK并保存MSI文件。

通过这样做,您的EXE文件和从安装程序安装而不使用自定义安装的所有文件都将被删除。

小笔记amus代表:

  • a - 强制重新安装所有文件,无论版本如何。
  • m - 重写转到HKEY_LOCAL_MACHINE或的所有注册表项 HKEY_CLASSES_ROOT。
  • u - 重写转到HKEY_CURRENT_USER或的所有注册表项 HKEY_USERS。
  • s - 重新安装快捷方式和图标。

答案 1 :(得分:1)

仅在增加版本时才执行自动升级。如果您修改程序包并保留相同的版本,则无法自动删除具有相同版本的旧程序包。这是Windows Installer的限制。

相反,您可以在安装修改后的软件包之前手动卸载旧软件包。

另一个解决方案是创建一个自定义EXE引导程序,它可以检测当前版本是否已安装,并在启动新程序包之前将其卸载。