我有一个msi版本1.0.2
现在,我修改了一些文件并使用相同的1.0.2版本创建了msi
我试着安装更新版本 . 这是错误的 " Unable to install because newer version of this product is already installed".
我必须发布最新版本的1.0.2 .
请让我知道如何解决这个问题 .
我已经使用过这个提示:
1.)设置DetectNewerInstalledVersion = true .
2.)设置RemovePreviousVersions = true .
3.)更改产品代码 .
但没有找到结果 .
提前致谢
2 回答
当您正在处理Windows应用程序并不时地部署解决方案时,您应该注意不要删除重新安装时的所有文件,例如数据库文件和用户生成的某些文件 .
但是在更改应用程序安装项目版本号时,您会注意到EXE文件在大多数情况下都不会更新,为了确保重新安装EXE文件,您必须向名为REINSTALLMODE的MSI文件添加属性并给出它是一个值“amus”,我知道现在这对你没有任何意义所以我会更多地解释这个问题 .
REINSTALLMODE属性是通过使用名为orca的软件(只是谷歌“下载orca for MSI”)编辑添加到MSI文件的属性,此属性有许多值和许多选项可以给它 .
这里重要的一个值是amus,那么什么是amus以及如何添加所有REINSTALLMODE属性:
安装orca后,打开它并在构建解决方案之后拖动msi文件 .
您会注意到 Headers 表左侧添加了一组记录,向下滚动记录,直到找到名为“Property”的记录单击它,然后在右侧面板中打开其属性,右键单击然后单击添加行: ,在Property字段中写入REINSTALLMODE并在值字段add amus中,然后单击OK并保存您的MSI文件 .
通过这样做,您的EXE文件和从安装程序安装而不使用自定义安装的所有文件将被删除 .
小笔记amus代表:
a - 强制重新安装所有文件,无论版本如何 .
m - 重写所有转到HKEY_LOCAL_MACHINE或HKEY_CLASSES_ROOT的注册表项 .
u - 重写转到HKEY_CURRENT_USER或HKEY_USERS的所有注册表项 .
s - 重新安装快捷方式和图标 .
仅在增加版本时才会执行自动升级 . 如果您修改程序包并保留相同的版本,则无法自动删除具有相同版本的旧程序包 . 这是Windows Installer的限制 .
相反,您可以在安装修改后的软件包之前手动卸载旧软件包 .
另一种解决方案是创建一个自定义EXE引导程序,它可以检测当前版本是否已安装并在启动新程序包之前将其卸载 .