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

本文关键字:msi 文件 版本 安装 | 更新日期: 2023-09-27 18:27:56

我有一个msi版本1.0.2

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

我尝试安装更新的版本。它给出的错误类似于"无法安装,因为已经安装了此产品的较新版本"

我只需要发布1.0.2的最新版本。

请让我知道如何解决这个问题。

我已经用过这个技巧:

1.)将DetectNewerInstalledVersion设置为true。

2.)将RemovePreviousVersions设置为true。

3.)更改产品代码。

但没有找到结果。

提前感谢

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

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

但是,当更改应用程序安装项目的版本号时,你会注意到EXE文件在大多数情况下都不会更新,为了确保EXE文件将被重新安装,你必须向MSI文件添加一个名为REINSTALLMODE的属性,并给它一个值"amus",我知道目前这对你来说没有意义,所以我将对此问题进行更多解释。

REINSTALLMODE属性是通过使用名为orca的软件编辑MSI文件添加到MSI文件中的属性(只需在谷歌上搜索"下载用于MSI的orca"),该属性具有许多值和许多选项。

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

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

您会注意到在标题Tables的左侧添加了一组记录,向下滚动记录,直到找到一个名为"Property"的记录。单击它,然后它的属性将在右侧面板中打开,右键单击,然后单击添加行:在Property字段中写REINSTALLMODE,在value字段中添加amus,然后单击OK并保存MSI文件。

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

Small note amus代表:

  • a–强制重新安装所有文件,无论版本如何
  • m–重写所有进入HKEY_LOCAL_MACHINE或HKEY_CLASSES_ROOT
  • u–重写所有进入HKEY_CURRENT_USER或HKEY_USERS
  • s–重新安装快捷方式和图标

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

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

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