msiexec重新安装和正常安装之间的区别

时间:2014-11-28 10:54:44

标签: windows-installer msiexec

如果我的系统上安装了产品,那么与正常安装(msiexec / i)不同的产品重新安装(msiexec / i REINSTALLMODE = vamus REINSTALL = ALL)如何? 基本上我想知道,如果我使用" msiexec / i"当产品已安装在系统上时。

其次,如果msiFile有更新的版本号(即次要升级),产品和升级代码相同,会有什么行为?

谢谢, KUNAL

3 个答案:

答案 0 :(得分:3)

REINSTALLMODE不一定是vamus,也可以是vomus或pmcs或任何其他数量的组合。 bevarior会有所不同。自定义操作可能会也可能不会触发,具体取决于您创建条件的方式。例如,如果您使用了未安装的条件,则不会触发。如果您使用了像NOT REMOVE =“ALL”这样的条件,他们会。此外,如果组件未标记为可传递,则不会重新评估原始条件。

答案 1 :(得分:3)

加入克里斯'解释:plain / I用于首次安装产品​​。当您使用新版本更新产品并增加版本号时,具有REINSTALLMODE =和REINSTALL =的命令用于次要更新。无论如何,vamus是一个坏主意,特别是如果你有任何第三方组件,如微软合并模块 - 你可能最终通过降级他们的修补程序Dlls从客户端系统删除安全修复程序。

答案 2 :(得分:3)

我不确定,您真正了解哪些细节,哪些不是。就像PhilDW提到的那样," a "在" v a mus"对于REINSTALLMODE来说,它是一个非常危险,大​​多数是错误的选择,它比标准命令行更适合专家使用。确切的原因是,特别是对于版本化文件,您将覆盖msi中具有潜在较小版本的现有较高版本文件(例如2.0.0.0),例如与fileversion(s)1.0.0.0相同的文件。通常情况下,这不是你想要的,可以推荐什么。

您可以在设置中执行比此更严重且更恶劣的错误。例如。你可以打破任何第三方共享组件,这些东西需要在整个Windows窗口中重新安装给一些客户!!

使用例如" v e mus"对于类似修复的重新安装,特别是fileversion 1.0.0.0将覆盖1.0.0.0(它不会用于REINSTALLMODE =" vomus")。

Christoph提到,一切都取决于你的特殊用例。我的变体只包含两个最重要的变体," vemus"和" vomus"。

- 第二,MSI版本号或不同的更新类型与REINSTALLMODE参数并不真正相关,第一个与整个msi设置有关,但REINSTALLMODE在逐个文件的情况下更深入地工作了几个级别( reg entry)level。

- 第三,因为该文件级别,REINSTALLMODE对于首次安装具有重要的,几乎相同的效果,只会始终放弃" v"首次安装(例如msiexec /i mysetup.msi REINSTALLMODE="emus")。 这个故事,正好用于" v"如果不是,那就是另一个,所以这两个主要案例就足够了。

Subsummed,REINSTALLMODE在文件级别上工作,除了" v"之外,与安装方案没什么关系。 重新安装完全不同。正如PhilDW所说,它被用于"小/小"更新/ -grade类型(也用于修复,这使得它可能有点令人困惑。事实上,修复和小/小升级技术在文件级别上大致相同)。

如果您确切知道自己在做什么,这些小/小类型有一些陷阱,只能使用它。对于初学者到中级设置,作者 Major Upgrades 可能更容易使用。或者在"更新"之前总是卸载,然后您只有一个要掌握的场景:首先安装。

要修复或重新安装相同的 MSI文件,以下是一个很好的默认行:

msiexec /i "c:\mysrc\mysetup.msi" REINSTALL=ALL REINSTALLMODE="vemus"

(此处省略了记录参数) HT详细信息帮助。