Comments (7)
All works in my case. What do you think about tracking the idea to somehow handle "auto-installed" with a particular "provides" choice in another issue?
from ckan.
The .ckan file stores a CkanModule
, with the mod list as relationships rather than InstalledModule
s, and this property lives in InstalledModule.auto_installed
. There's no place to put this info in the data model.
One alternative would be to recalculate the auto_installed
properties after installing by checking dependencies, but that is likely to run into difficulties with circular dependencies (both mods would think they're auto-installed because of the other depending mod, but if we marked both as such, then they'd be auto uninstalled).
from ckan.
Another option is to exclude auto-installed mods from the .ckan file entirely. They'll have to be pulled in as dependencies anyway, and that would cause them to be marked as auto-installed the normal way. I think the reason we didn't do this was because it would be confusing and inconsistent if one of those relationships caused the user to be prompted to choose a provides
mod and they made a different choice than the original modpack creator made. (And even for the same-user case, documenting such choices is a key part of making these files as reproducible as possible.)
from ckan.
Well, isn't it the case then that the data model doesn't serve its purpose here?
A mod (or mod-pack in this case) may need an indirect dependency but still require one specific choice from that possible provides
list.
The simplest option I see is extending RelationshipDescriptor
with an Indirect
field.
Also had a more future-proof idea, but it left my head as fast as it appeared... Oh well.
And if it comes to this, I suggest changes to the export menu:
- Auto-installed mods (or at least those with no
provides
alternatives at the moment) be initially put inIgnored
rather thanDepends
. Ifprovides
alternatives appear later, the mod-pack author can just install their own mod-pack, make the choices, and re-export it; - Add checkmark column
Indirect
with values initially copied from theAuto-installed
column.
from ckan.
Well, isn't it the case then that the data model doesn't serve its purpose here?
No, not really. But that's not the point, either. The point was to explain why it is the way it is, that it's not a simple oversight or error but a structural limitation. Understanding that is the foundation for changing how a feature works.
The simplest option I see is extending
RelationshipDescriptor
with anIndirect
field. Also had a more future-proof idea, but it left my head as fast as it appeared... Oh well.
I don't quite understand what you're going for there. There's nothing "indirect" about these relationships...? And it's not at all clear what that field would mean.
- Auto-installed mods (or at least those with no
provides
alternatives at the moment) be initially put inIgnored
rather thanDepends
. Ifprovides
alternatives appear later, the mod-pack author can just install their own mod-pack, make the choices, and re-export it;
Yeah, that's probably how we would do the second option I mentioned, rather than just omitting them completely. This still has the same complications, though.
- Add checkmark column
Indirect
with values initially copied from theAuto-installed
column.
Any particular reason to call it that, rather than using the same existing familiar name for the same info from the mod list?
from ckan.
I meant "indirect" as in "indirectly depends". In other words, a dependency that is required for another dependency, but not directly for the original mod/mod-pack.
Any particular reason to call it that, rather than using the same existing familiar name for the same info from the mod list?
Alright, I agree my naming sense is not very good, but "auto-installed" in this case would be even less meaningful, as the whole point of exporting a .ckan
file is to install multiple mods in one move, automatically without manually re-iterating them every time.
from ckan.
@SunSerega, if you'd like to test this out, there's a test build here under the Artifacts dropdown:
from ckan.
Related Issues (20)
- Adding new instances doesn't check for duplicates HOT 1
- Adding a new KSP1 instance should allow for selecting the ksp_x64 exe to reduce confusion HOT 5
- [Bug]: Access to the path CdFileMgr denied during repo update HOT 4
- Trying to run CKAN as an administrator too HOT 5
- Certificate error updating a repository HOT 6
- [Bug]: Unable to update mods HOT 2
- [Bug]: Very recently updated mods fail to install with corrupted download message in eastern hemisphere HOT 15
- "Max Game Version" column has some strange behavior HOT 2
- [Bug]: Trying to install XXXXXXX, but it's not downloaded or download is corrupted HOT 3
- Certificate errors on Debian (Ssl error:0900006e:PEM routines:OPENSSL_internal:NO_START_LINE) HOT 1
- [Bug]: Failed downloads popup doesn't appear when downloads time out HOT 5
- [Bug]: CKAN closes when starting says I am trying to run as Admin HOT 6
- [Bug]: "Audit recommendations" not working HOT 1
- [Feature] Get game version from DLLs with Mono.Cecil HOT 4
- [Bug]: CKAN refuses to open without "--asroot" command line operator when the user *is* the "Administrator" HOT 2
- [Feature]: Show a warning when CKAN detects CKAN files for an identifier selected or being downloaded as a dependency that have a newer spec than the CKAN version HOT 2
- (macOS) mono: bad cpu type HOT 1
- After downloading and installing a mod for the first time, the "Contents" tab is not refreshed properly HOT 1
- [Bug]: NRE, Repository update failed HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ckan.