Windows installer 重新安装和正常安装之间的msiexec差异

Windows installer 重新安装和正常安装之间的msiexec差异,windows-installer,Windows Installer,如果我的系统上安装了产品,那么同一产品的重新安装(msiexec/I REINSTALLMODE=vamus REINSTALL=ALL)与正常安装(msiexec/I)有何不同? 基本上,我想知道,当产品已经安装在系统上时,如果我使用“msiexec/I”,会发生什么行为 其次,如果MSI文件有更新的版本号(即小升级),并且产品和升级代码相同,那么会发生什么行为 谢谢, Kunal模式不必是vamus,也可以是vomus或pmcs或任何其他数量的组合。贝伐利亚人会有所不同。自定义操作可能触发,

如果我的系统上安装了产品,那么同一产品的重新安装(msiexec/I REINSTALLMODE=vamus REINSTALL=ALL)与正常安装(msiexec/I)有何不同? 基本上,我想知道,当产品已经安装在系统上时,如果我使用“msiexec/I”,会发生什么行为

其次,如果MSI文件有更新的版本号(即小升级),并且产品和升级代码相同,那么会发生什么行为

谢谢,
Kunal模式不必是vamus,也可以是vomus或pmcs或任何其他数量的组合。贝伐利亚人会有所不同。自定义操作可能触发,也可能不触发,具体取决于您编写条件的方式。例如,如果您使用了“未安装”的条件,它将不会启动。如果您使用了诸如Not REMOVE=“ALL”之类的条件,它们将被删除。此外,如果组件未标记为可传递,则不会重新评估原始状态。

只是为了补充Chris的解释:普通/I用于产品的首次安装。当您使用新版本更新产品并增加版本号时,具有REPLAINSMODE=和REPLAINS=的命令用于次要更新。无论如何,vamus是个坏主意,尤其是如果您有任何第三方组件,如Microsoft merge Module,您可能会通过降低其修补程序DLL的级别,最终从客户端系统中删除安全修补程序

我不确定,您真正了解哪些细节,哪些不了解。正如PhilDW提到的,“vamus”中的“a”是一个非常危险的,大多数是错误的,重新安装模式的选择,它更多地是专家的特殊用途,而不是标准命令行。确切的原因是,特别是对于版本化文件,您将使用msi中可能的较小版本(例如,文件版本为1.0.0.0)覆盖现有的更高版本的文件(例如2.0.0)。通常,这不是你想要的,也不是你可以推荐的

在设置中,没有什么比这更严重、更恶劣的错误了。例如,你可以破坏任何第三方共享组件,而这些组件最终需要为某些客户重新安装整个windows

例如,将“vemus”用于重新安装之类的修复,尤其是文件版本1.0.0.0将覆盖1.0.0.0(对于重新安装模式=“vomus”,它不会覆盖1.0.0)

正如Christoph提到的,这一切都取决于您的特殊用例。我的变奏曲只有两个最重要的变奏曲,“维姆斯”和“沃姆斯”

-- 第二个,MSI版本号或不同的更新类型实际上与REINSTALLMODE参数无关,第一个与整个MSI设置有关,但REINSTALLMODE在一个文件一个文件(reg条目)级别上工作得更深一些

-- 第三个,由于该文件级别的原因,重新安装模式对于第一次安装具有重要的、几乎相同的效果,对于第一次安装,只会忽略“v”(例如
msiexec/i mysetup.msi REINSTALLMODE=“emus”
)。 故事是另一个故事,确切地说什么时候使用“v”,什么时候不使用“v”,所以这两个主要案例在这里就足够了

Subsummated、REINSTALLMODE在文件级工作,除了“v”之外,与安装场景没有太多关系。 重新安装完全不同。正如PhilDW提到的,它用于“小型/小型”更新/等级类型(也用于修复,这可能会让人有点困惑。事实上,修复和小型/小型升级在技术上在文件级别的工作基本相同)

这些小/次要类型有一些陷阱,只有在您确实知道自己在做什么的情况下才使用它。对于初学者到中级设置作者来说,主要的升级可能更容易使用。或者总是在“更新”之前卸载,那么您只有一个场景需要掌握:第一次安装

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

msiexec/i“c:\mysrc\mysetup.msi”REINSTALL=ALL-REINSTALLMODE=“vemus”

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

是+1不仅如此,尤其是“vamus是个坏主意。”是的,这里提到的条件是+1。FWIW,第一次安装时释放“v”并需要它进行维修的事实,加上您无法在MSI内部直接切换这些是原因之一(可能是无意中)为什么您还需要一个setup.exe或通常是一个“bootstrapper”设置来控制和启动具有正确参数的MSI。无法逃脱。我眼中的严重设计缺陷。选择安装语言是引导程序的另一个原因,但至少这有更好的技术解释。