将多个程序与扩展相关联

Associating multiple programs with extension

我有一个软件,为了举例起见,将调用 A。A - 有不止一个版本:

所有这些版本都可以安装并共存——意味着高版本不是升级低版本。 文件扩展名 .aaa 与所有 3 个程序相关联,这意味着 A 程序将其文件保存在扩展名为 .aaa 的文件中,当双击扩展名为 .aaa 时,将触发最新安装的软件。

现在我面临以下问题:

A的可执行文件的组件ID和文件名不同,当然升级代码和程序ID也不一样。但是,为什么卸载低版本后会破坏关联,我该如何使它起作用?

注册表值的位置在 'A' 的两个版本之间是相同的,因此您应该为组件使用相同的 GUID。可以在以下位置找到一些需要遵循的良好规则:Change my component GUID in wix?

从A 1.1抓取文件扩展名入口组件的GUID,在A 2.0中使用。这应该允许扩展在删除 A 1.1 后保留。

旁注: 这可能会导致需要管理在安装多个版本时应该打开哪个应用程序版本。例如,如果您安装 A 2.0,然后安装 A 1.1,您的文件扩展名可能会在 A 1.1 中打开文件。