windows-installer - msiexec 重装和正常安装的区别

标签 windows-installer

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

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

谢谢, 库纳尔

最佳答案

我不确定,您真正了解哪些细节,哪些不了解。就像 PhilDW 提到的,"vamus"中的 "a"是一个非常危险,大​​部分是错误的,REINSTALLMODE 的选择,它更适合专家的特殊用法,而不是标准命令行。确切的原因是,特别是对于版本化文件,您将在您的 msi 中用潜在的较小版本覆盖现有的更高版本化文件(例如 2.0.0.0),例如文件版本为 1.0.0.0 的相同文件)。通常,这不是您想要的,也可以推荐。

在设置中,很少有比这更严重、更令人讨厌的错误了。例如。您可能会破坏任何第三方共享组件,这些组件最终需要为某些客户重新安装整个 Windows !!

例如使用“vemus”进行类似修复的重新安装,尤其是文件版本 1.0.0.0 将覆盖 1.0.0.0(对于 REINSTALLMODE="vomus",它不会)。

正如 Christoph 所提到的,一切都取决于您的特殊用例。我的变体只包含两个最重要的变体,“vemus”和“vomus”。

-- 其次,MSI 版本号或不同的更新类型与 REINSTALLMODE 参数并没有真正相关,第一个与整个 msi 设置有关,但 REINSTALLMODE 在逐个文件的更深层次上工作(注册条目)级别。

-- 第三,由于该文件级别,REINSTALLMODE 对首次安装具有重要的、几乎相同的效果,只在首次安装时总是放弃“v” (例如 msiexec/i mysetup.msi REINSTALLMODE="emus")。 这个故事,什么时候使用“v”,什么时候不使用,是另一个故事,所以这两个主要情况在这里应该足够了。

总而言之,REINSTALLMODE 在文件级别起作用,除了“v”之外与安装方案没有太大关系。 REINSTALL 则完全不同。正如 PhilDW 所提到的,它用于“小/次要”更新/等级类型(也用于维修,这可能有点令人困惑。事实上,维修和小/次要升级在技术上在文件上基本相同等级)。

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

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

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

(此处省略日志参数) HT 的详细信息有帮助。

关于windows-installer - msiexec 重装和正常安装的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27187149/

相关文章:

c# - 通过自定义 msi 安装程序修改 app.config

wix - Windows安装程序会在产品升级期间删除版本化文件,而不是降级文件

.net - 从 Powershell 构建 MSI 包

c++ - IntelliSense 引擎无法正常运行的错误太多

ruby - 将我的 Ruby 程序作为一体化安装程序提供

WiX:我可以更改标准对话框中控件的大小或位置吗?

wix - 如何在使用 WiX 卸载时终止进程

php - 转换 LAMP 应用程序以作为 Windows MSI 分发

windows - 在没有 GUI 或 msi 安装程序的情况下手动创建 msix 包

visual-studio - Web 安装项目不工作