C# 无法安装具有相同版本的msi文件

C# 无法安装具有相同版本的msi文件,c#,winforms,windows-installer,C#,Winforms,Windows Installer,我有一个msi版本1.0.2 现在,我修改了一些文件,并用相同的版本1.0.2创建了msi 我试图安装更新的版本。它给出的错误类似于“无法安装,因为已安装此产品的较新版本”。 我必须只发布最新版本的1.0.2 请让我知道如何解决这个问题 我已经使用了以下提示: 1.)设置DetectNewRinstalledVersion=true 2.)设置RemovePreviousVersions=true 3.)更改产品代码 但没有发现结果 提前感谢当您处理windows应用程序并不时部署解决方案时,您

我有一个msi版本1.0.2

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

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

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

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

我已经使用了以下提示:

1.)设置DetectNewRinstalledVersion=true

2.)设置RemovePreviousVersions=true

3.)更改产品代码

但没有发现结果


提前感谢

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

但在更改应用程序安装项目版本号时,您会注意到EXE文件在大多数情况下都不会更新,为确保重新安装EXE文件,您必须向MSI文件添加一个名为“重新安装模式”的属性,并为其指定一个值“amus”,我知道现在这对你们来说毫无意义,所以我会再解释一下这个问题

REINSTALLMODE属性是通过使用名为orca的软件编辑MSI文件而添加到MSI文件中的属性(只需谷歌“为MSI下载orca”),此属性具有许多值和许多选项

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

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

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

这样,将删除您的EXE文件以及从安装程序安装但未使用自定义安装的所有文件

小音符amus代表:

  • a–强制重新安装所有文件,无论版本如何
  • m–重写所有进入HKEY_LOCAL_机器的注册表项或 HKEY_类_根
  • u–重写所有转到HKEY_当前用户或 香港大学用户
  • s–重新安装快捷方式和图标

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

但在更改应用程序安装项目版本号时,您会注意到EXE文件在大多数情况下都不会更新,为确保重新安装EXE文件,您必须向MSI文件添加一个名为“重新安装模式”的属性,并为其指定一个值“amus”,我知道现在这对你们来说毫无意义,所以我会再解释一下这个问题

REINSTALLMODE属性是通过使用名为orca的软件编辑MSI文件而添加到MSI文件中的属性(只需谷歌“为MSI下载orca”),此属性具有许多值和许多选项

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

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

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

这样,将删除您的EXE文件以及从安装程序安装但未使用自定义安装的所有文件

小音符amus代表:

  • a–强制重新安装所有文件,无论版本如何
  • m–重写所有进入HKEY_LOCAL_机器的注册表项或 HKEY_类_根
  • u–重写所有转到HKEY_当前用户或 香港大学用户
  • s–重新安装快捷方式和图标

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

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


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

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

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


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

这听起来像是当您更改安装程序的版本时,产品id已更新,因此新安装程序无法删除以前的版本。只需手动删除当前版本。另一种选择是更改有关安装程序的所有内容,但不要更改仅由Windows使用的安装程序的版本。Ramhound@此处我不更改安装程序的版本。我在文件中做了一些更改,然后使用新产品代码(手动)构建相同的安装程序。我同意@Ramhound。尝试之前,请手动卸载旧版本的msi