我的问题:
我创建了两个合并模块。让我们称它们为 A 和 B。合并模块 B 依赖于 A。A 将 aaa.dll 并排安装到 Windows。B 包含 bbb.dll,它在安装过程中注册并依赖于 aaa.dll。作为旁注,合并模块 A 是在 Install shield 2012 中创建的,合并模块 B 是使用 Visual Studio 2010 向导创建的。
我有一个安装屏蔽项目,它安装了两个合并模块。我进入 Application Data-> Redistributables 并将 B 添加到安装中。这会自动检查 A。如果我转到 Organization->Setup Design 并展开包含 B 的功能,然后单击 B。它会显示有关 B 的信息的窗口。其中有一个正确列出 A 的 Dependencies 标题。
我构建项目并尝试将其安装在干净的 VM 上。在安装过程中我收到一条错误消息,说 bbb.dll 注册失败我想忽略,取消。此时我在机器上查看了winsxs,并注意到aaa.dll 不存在于它的正确文件夹中。相反,它存在于 winsxs\InstallTemp\ 子文件夹中。然后,如果我在错误弹出窗口上单击忽略,安装将继续,不会出现更多错误。然后完成后我可以手动注册 bbb.dll 就好了,并且 aaa.dll 存在于正确的 winsxs 子文件夹中。
我的问题是如何让合并模块 A 完全完成并将 aaa.dll 放置在正确的位置,以便一切都能正确安装?
我尝试过的事情:
- 我尝试在组织->设置设计下的安装盾项目中制作多个功能。所以我创建了 3 个功能。顶部的特征 1 仅包含 A。特征 2 包含 A 然后 B。最后特征 3 再次包含 A。我完成了所有 3 个必需的功能。我希望这意味着整个功能将完成安装并将 aaa.dll 放置在正确的并排位置。然而,没有这样的运气。(我创建了 3 个功能,以防万一我有倒序之类的东西)
- 我相当确定问题在于 aaa.dll 没有及时安装或安装在正确的位置。为了测试这一点,我首先尝试使用刚刚安装合并模块 A 的 install shield 安装程序安装 aaa.dll。然后我运行我的主安装程序,一切正常。
很抱歉文字墙和任何不正确的语法\拼写。如果我自己弄清楚这个问题,我会发布,以防其他人最终遇到这个问题,因为这真的很令人沮丧。