【问题标题】:How to get msiexec to install and/or reinstall as necessary如何让 msiexec 根据需要安装和/或重新安装
【发布时间】:2016-01-18 19:59:18
【问题描述】:

我在网络驱动器上放置了一个内部 MSI,我想编写一个登录脚本,以便我们网络上的任何人都可以将 MSI 安装到他们的计算机上,或者在 MSI 出现时自动重新安装它更新(经常发生)。

如果我使用msiexec.exe /i REINSTALL=ALL,如果 MSI 尚未安装在该计算机上,它将不会执行任何操作。如果我省略了REINSTALL=ALL,那么它将进行全新安装,但不会进行更新/重新安装。

如果还没有安装软件包,我应该选择什么参数让它进行全新安装,如果软件包已经安装,我应该选择什么参数来完全重新安装?

先运行msiexec /i,然后重新安装可能会起作用,但如果可能的话,我想避免这种情况。

编辑:需要/famus 的原因是这些是开发人员机器,有人可能会手动更新注册表或注册一组不同的dll。该脚本的目的是即使 MSI 没有任何更改,开发人员也可以运行该脚本轻松恢复到“官方”环境。

【问题讨论】:

    标签: windows-installer


    【解决方案1】:

    试试怎么样:
    msiexec /i <path to msi> ADDLOCAL=<top level feature name>

    您可以通过在 Orca.exe 中打开包并查看功能表来获得顶级功能。

    【讨论】:

      【解决方案2】:

      我最后用一个先运行 msiexec /famus 的批处理文件解决了这个问题,如果退出代码是 1605,它将运行 msiexec /i。

      【讨论】:

        【解决方案3】:

        在某一时刻支持小升级的一种常见做法是在包中创建REINSTALL=ALL,然后在您的产品为NOT Installed 时添加type 51 (set property) custom action REINSTALL={} 以清除属性。我不确定这是否正是您正在寻找的,但这可能是一个开始。如果您没有创建此包,则可以通过转换添加属性和清除操作:msiexec.exe /i [...] TRANSFORMS="[...]\reinstall.mst"

        【讨论】:

          【解决方案4】:

          我会使用主要升级而不是次要升级。对于重大升级,命令行始终相同 - 无需根据升级或全新安装使用不同的命令行。

          主要升级实际上是完全独立的设置,由升级表中指定的逻辑链接,告诉 Windows 安装程序应该如何执行“升级”。升级根本不是升级,而是卸载现有产品并安装新产品。

          升级表有一个学习曲线,有时有点希腊化,但它在指定升级行为方面提供了很大的灵活性。一些样本:

          • 您可以卸载旧产品并安装新产品
          • 您可以禁止在新产品之上安装旧产品
          • 您可以允许在运行较旧的安装时降级较新的安装(例如,以确保您在登录脚本中获得的版本是目标系统上的版本)

          重大升级还涉及一些额外的挑战,这些挑战可能会让事情变得混乱。特别是重大升级允许在卸载旧版本之前安装新版本!这种情况需要正确完成组件引用的无错误设置。然而,最常见的方法是完全卸载旧版本,然后再安装新版本。这种方法更宽容,即使设置中的组件引用被弄乱了,通常也能正常工作。

          就我个人而言,除了对公开发布的软件进行小幅调整外,我从不使用小幅升级。我发现这些升级非常容易出错,部署繁琐,调试和 QA 耗时且通常不必要的复杂性。我也会在由于前一个包的卸载逻辑错误而导致重大升级失败的情况下使用它们。换句话说,当我需要修复错误的安装才能正确卸载时。

          【讨论】:

          • 是的,我们也在使用主要升级作为内部“官方”使用。我刚刚在问题中添加了一个编辑,提到需要修复/famus 才能将机器恢复到官方设置,因此即使没有升级到 MSI,它也必须工作。
          猜你喜欢
          • 1970-01-01
          • 2016-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-24
          • 1970-01-01
          • 2023-03-22
          相关资源
          最近更新 更多