MSI在升级安装时删除所需的程序集,但在修复时替换它

时间:2009-12-11 17:04:11

标签: windows-installer orca vdproj

我遇到了一些与MSI安装升级相关的奇怪现象,也许有人可以帮助我:

我有两个MSI,一个原始版本和一个升级版本:

  • MSI版本1.0
    • 包含要安装到GAC的.NET程序集foo.dll
    • foo.dll在MSI文件系统gui中的类型为“Assembly”(不是“Output”)。
  • MSI版本2.0
    • 还包含foo.dll(相同版本),以及一堆额外的程序集。
    • 我希望MSI 2.0完全取代1.0,所以我将RemovePerviousVersion设置为False。

现在有两种安装方案:

  1. 我运行MSI 1.0。 Foo.dll已正确安装到GAC。然后我运行MSI 2.0并且 Foo.dll似乎已从GAC中删除,但其他程序集在​​那里。我不知道。但是,如果我转到添加/删除程序并单击“修复”,则会放入Foo.dll。

  2. 永远不会安装MSI 1.0,我运行的是MSI 2.0。正如预期的那样,Foo.dll(及其他程序集)

  3. 为什么foo.dll在升级过程中被删除了?提前谢谢!

    -Ken

    更新经过一些刷新/重建后,它似乎现在正常工作。但是,现在它在卸载MSI时不会删除foo.dll,即使其属性“Permanent”设置为false。没有那么大的问题,但知道发生了什么事情会很好。

1 个答案:

答案 0 :(得分:0)

为了纠正这种怪异,我最终做了以下事情:

  1. 已安装Orca.exe,Windows SDK的一部分。
  2. 在构建后通过Orca将REINSTALLMODE = amus添加到Propery表中。
  3. 这解决了我的直接问题并纠正了我遇到的安装/卸载问题。唯一的问题是这是一个手动过程。下一步,以某种方式将其作为自动构建后事件的一部分。