我有一个应用程序,由两个不同的MSI安装程序 INSTALLER1 和 INSTALLER2 安装。 这样可以通过保持相同的 GUID 和 PATHs 来实现。 使用案例1.由 INSTALLER1 安装的应用程序,在 INSTALLER2 卸载一段时间后,是否会通知INSTALLER1它已被卸载? 2.由 INSTALLER1 安装的应用程序,经过 INSTALLER2 升级一段时间后,它会通知INSTALLER1吗? 或者确实需要检查其他内容,例如升级代码,包代码,组件ID应该相同(除了GUID)
任何指针都会有所帮助
答案 0 :(得分:0)
我发现了另一篇帖子,我认为这也是你的帖子。 Can a single component installed by two different installers, if we keep same GUIDs and Paths for files,services, registries, upgrade codes?
您使用的是“产品”一词'以一种令人困惑的方式。 在您的其他帖子中,您引用了合并模块,这些是组件中排列的文件集合。您的合并模块将由另一个安装包使用。合并模块没有升级代码,也没有包代码或产品代码。
如果我理解您的问题,如果您在合并模块中正确配置了组件,那么无论您的应用程序安装了多少产品,组件规则都将生效。没有'通知'需要的。
因此,我们假设您创建了合并模块,并将文件安装到C:\ Program Files \ MyGreatApp。 MSI_1和MSI_2使用您的合并模块1.0.0。 客户安装MSI_2,此时您的组件信息将写入注册表并指示MyGreatApp组件是版本1.0.0 稍后客户安装MSI_1,在安装时,它注意到MyGreatApp组件已经安装并且版本为1.0.0,此时组件将不会安装,因为它已经存在于系统上。 我们假设你发布了MyGreatApp v2.0.0,MSI_2使用了这个合并模块。 如果客户安装了MSI_1,则会安装MyGreatApp v1.0.0 如果客户稍后安装MSI_2,则安装会看到该组件已安装,但版本为1.0.0,因此根据组件规则,它具有更新的版本。
因此,从安装程序问题来看,这应该遵循组件规则。
您必须要问的问题是,当您的应用从v1.0.0升级到v2.0.0时,会导致代码中断。如果您的文件是与主MSI分开编译的,那么您应该全部设置,但是,如果您的文件在主应用程序中用作引用,并且这是一个使用强名称密钥文件的.NET程序集,您将获得依赖项未找到错误。