我想安装 MSI 两次

Don*_*nce 6 windows-installer msi

我特别希望在一台机器上安装两次 msi。双重安装的目的是首先安装在 pre-production 文件夹下,在部署到生产文件夹之前在安全的环境中运行部署。

我们通常使用不同的机器来表示这些不同的环境,但在这种情况下,我需要使用同一个盒子。

我得到的两个场景如下:

  • 我已经安装了预生产,我很高兴,我想安装生产,我运行 msi,它询问我是要修复还是删除安装
  • 我已经安装了生产,我想安装新版本的 msi,它告诉我我已经安装了该产品的一个版本,我必须先卸载当前版本

第一种情况还不错,因为我们可以在生产文件夹下明智地卸载和重新安装,但第二种情况很痛苦,因为我们不想卸载实时生产部署。

我可以给 msiexec 一个设置来允许这样做吗?

我可以使用更合适的不同方法吗?

Cho*_*er3 15

虚拟化,认真


EBG*_*een 5

不可能两次安装完全相同的 MSI。您也许可以打开 MSI 并更改 GUID 以使其再次安装。请注意,这种方式有龙。除非你特别幸运或者安装/产品特别简单,我几乎可以保证你的第二次安装不仅不会工作,而且很可能你也会破坏第一次安装。我强烈建议您解决任何让您认为有必要使用一个盒子的问题。


小智 5

看看 Scott Willeke 的 Less Msiérables (LessMSI) 能为您做什么...

http://lessmsi.activescott.com/

使用它来提取和更改 MSI 的 guid 和/或内容,重新打包并执行您的“安装两次”需要。


Ste*_*mul 5

Windows Installer 有一个内置功能,应该允许你做你想做的事情:“实例转换”,但尽管我有所有的 MSI 经验,但我并没有经常使用它。它允许您通过 MSINEWINSTANCE 属性和命令行中的转换集多次安装相同的产品。

如果这是第三方应用程序,我会选择已经推荐的虚拟化方法。您应该知道,您可以使用Microsoft App-V 虚拟程序包来虚拟化程序包,也可以仅使用常规的VMWareVirtual PC实现(虚拟 PC 与虚拟程序包相对)。

与普通应用程序相比, Microsoft App-V 虚拟包和新的虚拟化技术允许一些新的东西:

  • 应用程序流 - 无需在机器上进行本地安装 - JIT
  • 在同一台电脑上使用两个不兼容的软件
  • 通过服务器更新
  • 控制许可 - 最大并发用户数或将软件绑定到组/用户。
  • 快速轻松地向用户展示应用程序
  • 更多微软营销在这里

如果这是一个内部应用程序,您可以在其中与开发团队进行对话,一个可行的解决方案是构建第二个开发 MSI,将预发布版本与生产版本并排安装。然后需要编写这些 MSI 文件,以便能够以文明的方式共存。这实际上非常复杂 - 并且涉及诸如不争夺相同的文件关联,不从不同位置注册系统范围的 COM 组件,不覆盖彼此的注册表项,不使用相同的快捷方式,不覆盖彼此的设置文件(文本、xml、ini 等)。有很多挑战。

最后,也是我们通常选择的方法,我们可以让 MSI 根据传递给它的参数安装不同的配置。因此,您可以使用名为CUSTOM_ENVIRONMENT = "DEV"的属性来安装应用程序的测试实例。这种方法依赖于能够以不同风格安装自己的单个 MSI - 但是 - 因此似乎与您的要求不符。

总而言之(按照我的主观偏好):

  1. 虚拟化- 我喜欢这种消除整个问题的事实。
  2. 并排安装:(多个 MSI PROD / DEV / UAT 能够并排共存(仅限内部应用程序
  3. 实例转换?(正如我所说,还没有使用它 - 但这是它应该提供的帮助)
  4. 环境感知 MSI(单个 MSI 能够安装为 PROD/DEV/UAT)(仅限内部应用程序

一些链接