Deployment 在旧版本上安装部署项目的新版本

Deployment 在旧版本上安装部署项目的新版本,deployment,windows-installer,deployment-project,Deployment,Windows Installer,Deployment Project,我有一个部署项目,它不允许我在旧版本上安装。msi文件说明首先从“添加/删除程序”卸载程序。这不是一个好的用户体验。如何才能让安装程序先删除软件,然后再安装新版本?这很棘手,您必须执行以下步骤 将“删除以前的安装”设置为True 将检测新版本设置为True 您的C程序的版本必须随着每次部署而增加 您应该将安装程序的版本更改为更高的版本,它会要求您更改产品代码,请选择“是”。 不要更改升级代码,让它保持不变。 如果您没有正确执行第3步,安装程序仍将安装并保留旧文件,如果您更改了内容,则每个文件的文

我有一个部署项目,它不允许我在旧版本上安装。msi文件说明首先从“添加/删除程序”卸载程序。这不是一个好的用户体验。如何才能让安装程序先删除软件,然后再安装新版本?

这很棘手,您必须执行以下步骤

将“删除以前的安装”设置为True 将检测新版本设置为True 您的C程序的版本必须随着每次部署而增加 您应该将安装程序的版本更改为更高的版本,它会要求您更改产品代码,请选择“是”。 不要更改升级代码,让它保持不变。
如果您没有正确执行第3步,安装程序仍将安装并保留旧文件,如果您更改了内容,则每个文件的文件版本都必须是新的。

将安装程序项目属性RemovePreviousVersions设置为True


但是您必须在两个安装应用程序中使用相同的升级代码

我尝试了一些方案,也许这会帮助某人节省一些时间

如果程序集版本更改,项目安装程序版本更改,同时ProductCode Guid也更改 ->应用程序安装在现有应用程序之上 ->DLL和exe版本得到更新 ->如果安装到的路径不同,则会从安装位置删除最初安装的现有项目文件。从那以后制作的文件仍然存在

如果程序集版本更改,项目安装程序版本更改,而ProductCode Guid未更改 ->要求用户手动删除应用程序 ->如果他们先从控制面板中删除,然后就可以安装应用程序,DLL和EXE将更新到新版本

如果仅程序集版本更改,或仅项目安装程序版本更改而不更改ProductCode Guid ->要求用户手动删除应用程序 ->如果他们先从控制面板中删除,然后就可以安装应用程序,DLL和EXE将更新到新版本

如果只有项目安装程序版本更改,并且ProductCode Guid也更改 ->MSI经过安装过程,但DLL和exe不会更改版本-它们与程序集版本一致,并替换为相同程序集生成版本的文件 ->如果安装到的路径不同,则会从安装位置删除最初安装的现有项目文件。此后制作的任何文件都将保留

如果项目安装程序版本随ProductCode Guid的更改而更改,并且程序集版本低于安装的版本
->当最终用户被告知旧版本安装失败时,将开始安装

您有时可以在安装新版本后执行此操作,旧产品将保持不变

您需要更改RemoveExistingProducts的序列号,它必须在 安装验证操作和安装初始化。你可以用虎鲸来做

对于Ex-InstallValidate=1400 InstallInitialize=1500


如果您使用的是visual studio 2012或更高版本,请删除ExistingProducts=1450

如果解决方案文件夹下已经有安装程序文件夹,只需打开安装程序下的Project assistant并双击即可。
2.打开Project assistant后,您会看到应用程序信息,您可以在此处输入要更改的版本。

这与C编程语言有什么关系?我认为“远程以前的安装”是指“删除以前的版本”如何在不更改ProductCode guid的情况下实现这一点?C程序版本的次要更新必须随着每次部署而增加—您指的是每次接触的程序集,不是吗?@mbx,我不知道您在问什么,但我的意思是AssemblyVersion属性必须更改,或应设置为1.0。*如果修改文件,则必须更改其程序集版本,无论是哪个文件,您的项目或任何包含的第三方库。每个专业图书馆都会更改文件版本。