无法安装相同版本的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.)更改产品代码。
但没有找到结果。
提前感谢
当您在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引导程序,该程序检测当前版本是否已安装,并在启动新程序包之前将其卸载。