1

I have an application which has a couple of extensions that it can open. Each instance of a file has a compatible range of application versions that it can be opened with (here => means can be opened with):

sample.abc => 1.0, 2.0, 3.0
sample2.abc => 3.0, 4.0, 5.0
sample3.def => 2.0, 3.0
sample4.def => 4.0, 5.0

If you select a version that is greater than the "compatible versions", the file may be upgraded. For example, if you were to open the first .abc file with 5.0, 5.0 would attempt to upgrade the file and ask the user if they would like to continue.

I would like to write an application which associates itself with the file extensions and provides the user with a choice of applications versions which can be used to open the file (inspecting a file, determining supported versions for the file, and finding installed versions of the application is solved).

This behaves a lot like how Visual Studio's version selector works. I haven't found any other examples of people doing this kind of compatibility checking and launching. What I am trying to figure out:

  1. How do you distribute and version such an application bundled with your primary application?
  2. If you install a newer version of the application, do you unregister the old version selector and register the new one?
  3. If you uninstall the new version selector, how do you recover if you have another version of the application with a version selector?
  4. Do you let the main application maintain logic to make sure that the newest version selector is always maintained when running? It leaves a bit of a gap if you uninstall the new version without running an older version and you lose file association in the meantime.
  5. Do you maintain the associated selector via an installer or application code?

There are many, many registry keys used to manage file association in Windows 7+ which makes this even harder to manage. Has anyone else ever built this successfully?

Community
  • 1
  • 1
Ian Davis
  • 3,848
  • 1
  • 24
  • 30

0 Answers0