我有一个奇怪的愿望,想在一台机器上安装两次 msi。双重安装的目的是首先在预生产文件夹下安装,在安全环境中运行部署,然后在生产文件夹中部署。
我们通常使用单独的机器来表示这些不同的环境,但在这种情况下我需要使用同一个盒子。
我得到的两种情况如下:
- 我已经安装了预生产版,我很高兴,我想安装生产版,我运行 msi,它询问我是否要修复或删除安装
- 我已经安装了产品,我想安装新版本的 msi,它告诉我我已经安装了该产品的一个版本,我必须先卸载当前版本
第一种情况还不算太糟糕,因为我们可以在生产文件夹下明智地卸载并重新安装,但第二种情况很麻烦,因为我们不想卸载实时生产部署。
我可以为 msiexec 提供什么设置来实现这一点?
有没有更适合我使用的不同方法?
答案1
看看 Scott Willeke 的 Less Msiérables (LessMSI) 能为您做些什么......
http://lessmsi.activescott.com/
使用它来提取和更改 MSI 的 guid 和/或内容,重新打包并执行您的“两次安装”需求。
答案2
认真对待虚拟化
答案3
无法两次安装完全相同的 MSI。您可能能够打开 MSI 并更改 GUID 以使其再次安装。请注意,这样可能会出现问题。除非您非常幸运或安装/产品非常简单,否则我几乎可以保证您的第二次安装不仅无法工作,而且很可能还会破坏第一次安装。我强烈建议解决让您认为有必要使用一个盒子的任何问题。
答案4
阻止您安装两次的是 ProductCode Guid,如果您更改它,它将删除“此产品已安装”消息并允许您安装。这就是实例转换正在做的事情,但您可以通过在 Orca 中打开它并更改属性表中的产品代码来执行相同的操作。
显然,即使您确实对其进行了两次安装,您也要确保不会在相同的位置进行覆盖。