Windows installer VS 2010安装项目中的安装

Windows installer VS 2010安装项目中的安装,windows-installer,setup-project,Windows Installer,Setup Project,我正在尝试在安装较新的MSI期间自动卸载现有版本的MSI 我引用了N篇文章和博客,其中涉及升级代码、产品代码、安装项目的属性(如RemovePreviousVersions、DetectNewInstalledVersions、versions)、AssemblyInfo文件中DLL的版本(AssemblyFileVersion)等 利用这些信息,我有一个解决方案来完成上述任务。 但是,在这种情况下,维护是这种方法的一个问题 我在VisualStudio中还观察到一个操作,它执行相同的任务。 这

我正在尝试在安装较新的MSI期间自动卸载现有版本的MSI

我引用了N篇文章和博客,其中涉及升级代码、产品代码、安装项目的属性(如RemovePreviousVersions、DetectNewInstalledVersions、versions)、AssemblyInfo文件中DLL的版本(AssemblyFileVersion)等

利用这些信息,我有一个解决方案来完成上述任务。 但是,在这种情况下,维护是这种方法的一个问题

我在VisualStudio中还观察到一个操作,它执行相同的任务。 这正是我所需要的活动,为此,我提出了如下问题。请解释一下这个问题

“右键单击VS 2010中的安装项目进行‘安装’操作,卸载产品的旧版本(无论RemovePreviousVersions属性的值如何),然后继续安装最新版本。使用MSI安装时不会发生同样的情况(尽管RemovePreviousVersions属性设置为TRUE)。只是想知道在以前的安装过程中触发了哪些操作或命令,以便使用代码以某种方式应用这些操作或命令“

希望问题清楚明了。有什么意见请告诉我。。 提前感谢一百万

在启动当前安装程序之前,“安装”操作用于手动卸载旧版本。您不需要复制它,因为Windows Installer支持主要升级。如果自动升级对您不起作用,则在某个地方存在错误

使用检查两个MSI包,查看它们是否具有相同的升级代码。此外,ALLUSERS属性在两者中的值应该相同。最后,尝试创建并搜索FindRelatedProductRemoveExistingProducts操作,以查看旧版本的情况。

在启动当前安装程序之前,“安装”操作用于手动卸载旧版本。您不需要复制它,因为Windows Installer支持主要升级。如果自动升级对您不起作用,则在某个地方存在错误


使用检查两个MSI包,查看它们是否具有相同的升级代码。此外,ALLUSERS属性在两者中的值应该相同。最后,尝试创建并搜索FindRelatedProductRemoveExistingProducts操作,以查看旧版本的情况。

我用于执行上述活动的另一个选项如下:1)将RemovePreviousVersion和DetectNewInstalledVersion属性设置为TRUE。2) 保留与已安装MSI相同的升级代码,但更改产品代码以及新MSI的版本。3) 还要更改每个项目的AssemblyFileVersion值。这些设置和更改将有助于替换所有PE文件。此活动实际上并不卸载和安装MSI,而只是更新使用不同版本找到的所有PE。因此,维护在这种情况下是一个问题。我用于执行上述活动的另一个选项如下:1)将RemovePreviousVersion和DetectNewInstalledVersion属性设置为TRUE。2) 保留与已安装MSI相同的升级代码,但更改产品代码以及新MSI的版本。3) 还要更改每个项目的AssemblyFileVersion值。这些设置和更改将有助于替换所有PE文件。此活动实际上并不卸载和安装MSI,而只是更新使用不同版本找到的所有PE。因此,在这种情况下,维护是一个问题Hi Cosmin,感谢您对此的快速响应。。在我的情况下,你上面指定的条件是可以的。我尝试创建详细日志,我将为您提到的关键字共享日志部分。对于关键字FindRelatedProduct,以下是日志的一部分:MSI(AC:3C)[16:19:25:862]:执行操作:FindRelatedProducts操作结束16:19:25:AppSearch。返回值1。操作开始16:19:25:查找最新的产品。MSI(AC:3C)[16:19:25:862]:属性更改:添加PREVIOUSVERSIONSINSTALLED属性。其值为“{24CDE93B-713B-4636-9318-FCEB125E38D8}”。MSI(s)(AC:3C)[16:19:25:862]:跳过操作:ERRCA_cancelnewervision(条件为false)MSI(s)(AC:3C)[16:19:25:862]:执行操作:VSDCA_VsdLaunchConditions操作结束16:19:25:FindRelatedProducts.Return value 1。对于关键字删除现有产品,我观察到两个条目:一个返回值为1,另一个返回值为0。其内容如下:_MSI(AC:C4)[16:19:29:390]:执行操作:InstallFinalize操作结束于16:19:29:删除现有产品。返回值0。MSI(AC:C4)[16:19:29:390]:属性更改:删除UpdateStarted属性。其当前值为“1”。其他部分是属性(N):INSTALLLEVEL=1 MSI(AC:3C)[16:19:29:437]:注意:1:2262 2:错误3:-2147287038 MSI(AC:3C)[16:19:29:437]:执行操作:InstallFinalize操作结束16:19:29:移除现有产品。返回值1。请让我知道你是否能从中推断出任何东西并帮助我。我对这个日志感到困惑。提前感谢:)嗨,科斯敏,谢谢你对此的快速回复。。在我的情况下,你上面指定的条件是可以的。我尝试创建详细日志,我将为您提到的关键字共享日志部分。对于关键字FindRelatedProduct,以下是日志的一部分:MSI(AC:3C)[16:19:25:862]:执行操作:FindRelatedProducts操作结束16:19:25:AppSearch。返回值1。操作开始16:19:25:查找最新的产品。MSI(AC:3C)[16:19:25:862]:属性更改:添加PREVIOUSVERSIONSINSTALLED属性。其值为“{24CDE93B-713B-4636-9318-FCEB125E38D8}”。MSI(s)(AC:3C)[16:19:25:862]:跳过操作:ERRCA_cancelnewervision(条件为false)MSI(s)(AC:3C)[16:19:25:862]:Do