Asset store asset removal leave garbage around and causes error

Unity 2023.3.0a6

  • new, empty project
  • download and install an asset store (code) asset, for example: Odin Inspector
  • uninstall it (you may restart or play around with it, doesn’t make a difference

  • observe the errors in the console and the left garbage in the Plugins folder

I do not think this is specific to this asset, any asset which writes config or other data will leave them behind.


9366413--1309862--Capture.PNG

If the file is an actual asset file explicitly listed in the package, I can see “remove assets” working.

If the file is created by some scripts in the package, I don’t see how or why the editor is going to track that. Especially outside the Assets folder. Especially if the file is only created when you start to use the scripts in the package manually, instead of by some startup/import hooks.

There aren’t tight rules and restrictions what an asset script can create, so tracking it would need to diff your entire tree to try to pin blame and ownership on the asset package later.

This is kinda like the common complaint in the difference between “import the asset package” vs “import these three files from the asset package” and why you can’t mark an asset as having been installed (since it would require knowing if you later changed or deleted individual items).

Edit: your error messages point to some sort of Unity.Mathematics package, does Odin do something magical/nefarious with built-in packages in this regard?

Odin, after installation will install some extensions if you have certain packages. Those installed “extras” remain along with the config files.

Honestly, I don’t give a flying second thought who fixes what, this feature is broken because the .unitypackage format is long outdated and impossible to track properly.
But, I would expect if ANY packages write into their OWN folder, by uninstallation they would be gone without me deleting them.
No, no one should put private files in any of those folders, so it should be safe.
And if you end up putting private files in those folders, that’s your private problem to fix.

So, just to be clear:
I expect upon removal, all original files should be gone and all folders the installation creates for itself without consideration of their content.
Obviously known common folders are exempt (Plugins/Sirenix should be gone, Plugins shouldn’t, Gizmos/Dialogue System should be gone, Gizmos should not.)
I don’t think I expect rocket science here.

I don’t think unity will track any files that are created after installation, I think it is just doing a 1 to 1 check and delete the files existing in the unitypackage.

But in any case, deleting any additional files is not always a good idea. With my assets, I save some user preferences inside my publisher folder so those settings are persistent after updating.

What I would really like to see, is a Remove and Reimport option to perform a clean install. Most of the assets I use require deleting the folder before importing, including my own assets.

1 Like

Every 2 or 3 months, there’s somebody complaining that UNTIY DELETED MY GAME because they put their game project inside of Program Files/Unity/Hub/Editor/UnityVersion

There’s of course a question of to which degree we should let people not knowing how to use computers be their own problem.

Unity can’t do anything about this without disallowing users from moving around the stuff from asset store packages. That makes zero sense for eg. texture packs or whatever. So this is for sure an Odin problem, and Odin can solve it. Configuration files goes into a ScriptableSingleton that gets stored in ProjectSettings, not into a random ScriptableObject in the Assets folder. Files that add support for specific packages (like the MathematicDrawers) goes behind an #if that’s set up using conditional includes.

Sure, the same people with zero knowledge about Unity will be amused when they remove basically any code-contained asset and their console will be lighted like a Christmas tree with bright red code errors about missing assemblies and whatnot.

Sure… this “feature” in this form is not usable. It doesn’t make sense. If you want to use it ONLY for “art-only” assets, you need to define what are those and only allow using this feature on those. But I’m telling you, even the URP-BiRP-HDRP support usually done on this way: two or three .unitypackage (with the shaders and materials) inside the asset’s .unitypackage and either automatically or by hand you need to unzip them. So even many “art-only” asset don’t work with this “feature”.

Which means it is truly meaningless in this form, it can’t handle more than the most simplistic three-file assets which are the easiest to remove by hand too.

Oh and one more: the “let the publisher take care of this mess” is not an option in the era of basically abandonware asset store with even some of the prominent assets not updated since 2022.