2012-03-16 101 views
0

我有一个MSI版本1.0.2无法安装MSI文件与相同版本

现在,我修改了一些文件,并创建了微星与相同版本1.0.2

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

我只能用最新版本的1.0.2发布。

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

我已经使用这个技巧:

1)设置DetectNewerInstalledVersion =真。

2.)设置RemovePreviousVersions = true。

3.)更改产品代码。

但没有找到结果。

在此先感谢

+2

听起来像当您更改安装程序的版本时,产品ID已更新,因此您的新安装程序不能删除以前的版本。只需手动删除当前版本。另一种方法是更改​​有关安装的所有内容,但不要更改安装程序的版本,这只适用于Windows。 – 2012-03-16 11:49:05

+0

Ramhound @在这里我不会更改setup.I的版本,我在文件中做了一些更改,然后使用新产品代码(手动)构建相同的设置。 – Sunny 2012-03-16 11:53:08

+1

我同意@Ramhound。在尝试安装新版本之前,手动卸载旧版本的msi。通过添加 - 删除程序执行此操作,因为这将会在安装先前版本时创建缓存的msi数据库。我不会建议手动删除以前版本安装的工件。 – 2012-03-16 11:56:24

回答

1

当您正在使用的Windows应用程序和每一个现在部署您的解决方案,然后,你应该知道在不删除就重新安装像数据库文件中的所有文件和用户生成的一些文件。

但是,当更改您的应用程序安装项目版本号时,您会注意到EXE文件在大多数时间不会被更新,以确保EXE文件将被重新安装,您将不得不添加属性到MSI文件称为REINSTALLMODE并给它一个值“amus”,我现在知道这对你来说没有意义,所以我会解释一下这个问题。

REINSTALLMODE属性是一个属性添加到MSI文件,通过编辑它使用称为orca的软件(只是谷歌它“下载为MSI的orca”),该属性有很多值和许多选项,可以给它。

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

安装ORCA后,打开它,并构建解决方案脱轨后拖动MSI文件。

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

通过这样做,您的EXE文件和从安装程序安装而不使用自定义安装的所有文件都将被删除。

小记amus表示:

  • 一个 - 强制所有文件重新安装,不管版本。
  • m - 重写所有转到HKEY_LOCAL_MACHINE或 HKEY_CLASSES_ROOT的注册表项。
  • u - 重写所有到HKEY_CURRENT_USER或 HKEY_USERS的注册表项。
  • s - 重新安装快捷方式和图标。
+0

'amus'的'a'是不安全的。首选'omus',或者换句话说'emus',这样就不会破坏依赖更高版本共享文件的应用程序。 – 2012-03-17 00:57:33

+0

我使用ORCA添加了REINSTALLMODE(= amus)和DetectNewerInstalledVersion(= False),甚至重新排序了RemoveExistingProducts操作(在CostFinalize之前)(请参阅:http://stackoverflow.com/questions/4227456/windows-installer-deletes-versioned-file - 产品 - 升级 - 而不是 - 下),但我仍然得到消息,存在一个更新的版本! – 2015-08-06 15:51:05

1

仅当您增加版本时才会执行自动升级。如果修改软件包并保持相同版本,则不能自动删除具有相同版本的旧软件包。这是Windows Installer的限制。

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

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