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

发布于 2024-08-14 04:49:17 字数 812 浏览 4 评论 0原文

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

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

  • MSI 版本 1.0
    • 包含要安装到 GAC 的 .NET 程序集 foo.dll
    • foo.dll 在 MSI 文件系统 gui 中属于“Assembly”类型(而不是“Output”)。
  • 微星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(和其他程序集)那里。

任何想法为什么 foo.dll 在升级过程中被删除?提前致谢!

-Ken

更新 经过一些刷新/重建后,它现在似乎可以工作了。但是,现在当我卸载 MSI 时,即使其属性“Permanent”设置为 false,它也不会删除 foo.dll。问题不大,但很高兴知道发生了什么。

I'm experiencing some weirdness related to an MSI installation upgrade, perhaps someone out there can help me:

I have two MSIs, an original and an upgrade:

  • MSI version 1.0
    • Contains a .NET assembly, foo.dll, to be installed to the GAC
    • foo.dll is of type "Assembly" (not "Output") within the MSI file system gui.
  • MSI version 2.0
    • Also contains foo.dll (same version), plus a bunch additional assemblies.
    • I would like MSI 2.0 to totally replace 1.0, so I set RemovePerviousVersion to False.

Now the two installation scenarios:

  1. I run MSI 1.0. Foo.dll is installed to the GAC properly. I then run MSI 2.0 and Foo.dll seems to be removed from the GAC, but the additional assemblies are there. I have no idea way. However, if I go to Add/Remove programs and click "Repair," Foo.dll gets put in.

  2. MSI 1.0 is never installed and I run MSI 2.0. Foo.dll (and the additional assemblies) is there, as expected.

Any ideas why the foo.dll gets removed during the upgrade?? Thanks in advance!

-Ken

UPDATE After some refreshing/rebuilding, it seems to work now. However, now it does not remove foo.dll when I uninstall the MSI, even though its property "Permanent" is set to false. Not as big of a problem, but it would be nice to know what was going on.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

单挑你×的.吻 2024-08-21 04:49:17

为了纠正这个奇怪的现象,我最终执行了以下操作:

  1. 安装 Orca.exe,它是 Windows SDK 的一部分。
  2. 通过 Orca 在构建后将 REINSTALLMODE=amus 添加到 Propery 表中。

这解决了我眼前的问题并纠正了我遇到的安装/卸载问题。唯一的问题是这是一个手动过程。下一步,以某种方式使其成为自动构建后事件的一部分。

To correct the weirdness, I ended up doing the following:

  1. Installed Orca.exe, part of the Windows SDK.
  2. Added REINSTALLMODE=amus to the Propery table via Orca, post build.

This solved my immediate problem and corrected the install/uninstall issues I was experiencing. The only problem is that this is a manual process. Next step, make this a part of an automatic post-build event somehow.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文