Run code when addon is disabled through preferences but NOT when blender closes
Not sure this is the best answer, but you can check if the current space is the Preferences windows in unregister
def unregister():
    if isinstance(bpy.context.space_data, bpy.types.SpacePreferences):
        # your code here

This should run the code when the user disables the addon from the prefs windows and it should not run the code when Blender is closed. In other cases it may or may not run, so this only works if &quot;best effort disable-detection&quot; is okay for you (it sounds like it is).