-
-
Notifications
You must be signed in to change notification settings - Fork 344
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Manually-installed ModName.Unity.dll detected as ModName's DLL #3506
Comments
Yeah, that's how the DLL detection works. Don't try to confuse it by using similar names, I guess. Here's the regex in question: CKAN/Core/Registry/Registry.cs Lines 838 to 846 in 068a8dd
The |
Hmm. It's a kind of loose assumption that the main module cannot have dots in the name. It's good when the name is under control of the modder, but it may not be the case always (e.g. if it's an external dependency). And it can break someone's other mod installation via CKAN. I was just lucky that this case raised on my machine, but it could easily be missed. If the version part of the module name needs to be omitted in the check, then it makes sense to explicitly check for the version piece. The following pattern should cover 99% of the cases: |
Trying to impose format limitations on mod version strings has not worked very well in the past. E.g., it's fairly common to have versions like Does renaming the DLL to |
But you are already imposing the format limitation (and yes, it never works well)! The question is how far you wish to go make it less error prone. In the current approach a good standing mod installation can be broken by another mod, which by itself is good standing too. It was a pure luck that I broke my own mod, but it could easily be some other's mod. And I won't be even noticing it.
Since it's owned by me, it's not be a big deal to change the name. But no, it doesn't solve the problem. Next time some one else may dare to use 'KIS." prefix in his mod, and it will break all users who are using "KIS". If scanning the alternative locations of the mod is vital for CKAN (not sure why, but I guess you have the reason), then at least it makes sense to limit this check to the |
Is it still saying this, yes or no?
|
Changing the name of the module turned out to be a great deal to Unity: it resets all the prefabs if you rename a dependency DLL (surprise-suprise). I don't think I'll be able to spend time to it in a timespan of the nearest 2-3 weeks. |
I've found a way to patch the Unity project to replace the dependency DLL. With name |
Another affected use case: If you manually install some older versions of JNSQ, they bundle |
Background
Have you made any manual changes to your GameData folder (i.e., not via CKAN)?
Yes. I've created a folder
KIS2
with some DLLs in it.These files are not anyhow related to KIS that is supposed to be installed by CKAN.
Problem
CKAN refuses to install KIS v1.28 because it believes this mod has already been installed into a different folder, which is not true.
Steps to reproduce
KIS2
folder created with the file mentioned above.I'm not sure if the issue can be reproduced by simply creating the files mentioned above. However, the error text implies that the checking is wrong. It complains about
KIS.Unity.dll
which is not anyhow similar toKIS.dll
. And I can confirm that the assembly names inside these DLLs are completely different.CKAN error code (if applicable):
The text was updated successfully, but these errors were encountered: