Jump to content

[dcs-tools.com] DyMOD: modern mods manager


galevsky06
 Share

Recommended Posts

DyMOD - modern mods manager



 

DyMOD-001.png

DyMOD-001.png

1. Easy to install:

Dedicated installer !

 

DyMOD-002.pngDyMOD-002.png

 

2. Unique Mods Library

 

DyMOD-003.pngDyMOD-003.png

 

Organize your mods into folders under the Mods Libray root one. You can also move mods inside the library whenenever you want (event for installed mods), with no bad impact. A mod is identified by a SHA1 (kind of hash-key on the file content), not by its name or path). Each mod should appear once into the library, and can be deployed to as many applications as required (let's say 2: Dcs World and DCS World Beta ;)).

 

 

3. Manage as many applications as you want

 

DyMOD-004.pngDyMOD-004.png

 

You can manage mods for all your apps and switch from one to another in one click.

 

 

4. Smart mods installation/unintallation

One button to install or re-install, another one to uninstall

 

Installation will backup original content, if exists. Uninstallation will restore back-up in a smart way: only if the content is the one that has been deployed by the mod.

 

 

5. Easy status report

 

DyMOD-005.pngDyMOD-005.png

 

Each refresh of the Mods tree checks the status for each mod regarding the current application. It can be:

 

 

  • uninstalled
  • installed (each file is identical to the one that have been installed by the mod = same SHA1)
  • repairable (some mods files have changed *BUT* they are identical to the ones that were before the mod installation => It is safe to install again)
  • broken (some mods files have changed and they differ from the original ones. It is NOT safe to install again, I mean it may not work as it did before)

 

 

6. Easy to create mods

DyMOD mods (.dmz files) are just zip files, containing component to be deployed to some root path.

 

Components can be:

 

  • additional (empty) folder
  • additional file (the file doesn't exists in the application)
  • replacing file (the file will replace the original one to bring some changes)

 

There is also a .metadata folder containing 3 files:

  • info.txt
  • description.txt
  • changelog.txt

The 2 latter are free-text displayed into the corresponding tabs.

The info.txt is JSON with that structure:

 

 {
"Author": "galevsky",
"Organization": "dcs-tools.com",
"Name": "DummyMod",
"Version": "1.0",
"Application": "For DummyApplication root folder (default is C:\\Program Files\\DummyApplication)",
"UpdateUrl": null
}

All of them must use UTF-8 encoding.

 

 

7. JSGME compatible

DyMOD is compatible with any .zip file containing stuff to be dropped into an application folder.

 

 

8. Easy to dig

Each component of the mods has its own status, to allow you to look at the right files and check things quickly by hand if you want.

 

 

9. Anti-Collisions detection

The first step of any new installation is checking that the mod will not impact files already modified by previous installations.

 

DyMOD-006.pngDyMOD-006.png

 

Feature into the next release: a new feature will allow you to create a unique MERGED mod, and automatically uninstall the ones in conflict.

 

 

10. Website module

Want to host your mods online ? A very small PHP application will be available to let you host you mods. It will build the URL to check for the latest version, and display mod information online for each version.

 

 

11. ABOVE ALL: SAFE !!!!

Since the uninstallation is safe (means it removes only files that it puts itself), it makes the following scenario safe:

 

Let's talk about ModOne, a mod designed for DCS World 1.2.10

ModOne have been installed. Then, an automated update of DCS happens -let's say v1.2.11-, impacting some files of the mod.

 

Thus, the status of ModOne will be set to either repairable or broken.

 

If repairable, just launch re-installation (if you still want to use ModOne), or remove it.

 

If broken, DyMOD will point at files that have been modified by DCS Update and that differ from the v1.2.10. Here again you have the choice, both are safe:

 

  • uninstallation => the "corrupted" files will remain in v1.2.11 since the restore of v1.2.10 files will be skipped thanks to the smart process. You have a fuly operational v1.2.11 without you rmod.
  • re-installation, => the v1.2.11 files will be backed-up by the installation process, therefore you will be able to uninstall successfully in a second time.
     
    Broken just means "Hey dude, pay attention to that mod if you re-install, it may not work as before".

 

 

After this short presentation, the aim of this thread is to ask for testers !

 

 

 

I would like to get it tested before the first public release in October/November.

 

 

Thank you

 

:)

 

 

Galevsky


Edited by galevsky06
  • Like 1
Link to comment
Share on other sites

Interesting. I will have to give this a closer look.

ASUS ROG Maximus VIII Hero, i7-6700K, Noctua NH-D14 Cooler, Crucial 32GB DDR4 2133, Samsung 950 Pro NVMe 256GB, Samsung EVO 250GB & 500GB SSD, 2TB Caviar Black, Zotac GTX 1080 AMP! Extreme 8GB, Corsair HX1000i, Phillips BDM4065UC 40" 4k monitor, VX2258 TouchScreen, TIR 5 w/ProClip, TM Warthog, VKB Gladiator Pro, Saitek X56, et. al., MFG Crosswind Pedals #1199, VolairSim Pit, Rift CV1 :thumbup:

Link to comment
Share on other sites

Nice! :thumbup:

Hardware: Intel i5 4670K | Zalman NPS9900MAX | GeIL 16GB @1333MHz | Asrock Z97 Pro4 | Sapphire Radeon R9 380X Nitro | Samsung SSDs 840 series 120GB & 250 GB | Samsung HD204UI 2TB | be quiet! Pure Power 530W | Aerocool RS-9 Devil Red | Samsung SyncMaster SA350 24" + ASUS VE198S 19" | Saitek X52 | TrackIR 5 | Thrustmaster MFD Cougar | Speedlink Darksky LED | Razor Diamondback | Razor X-Mat Control | SoundBlaster Tactic 3D Rage ### Software: Windows 10 Pro 64Bit

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

This is similar to the old standbys from years past. I can see that you have probably done a new version and I like the fact that you have brought in json structure.

 

The best thing you have done is add some specific checks such as 'broken" and "repairable"

 

Looks good and a new way of giving us use of adding and subtracting mods.

 

Just one question. I can't seem to follow exactly how --- If one has a mod installed and unwittingly runs an update,, how exactly do you get back to a pure updated file? I think I'm reading that one can end up with updated file, but don't understand how it is accomplished. This of course, would be the best part of your program.

 

Are you implying that this program tracks updates?

 

Then again, I may not be asking the right question.

Win 10 64 bit

Intel I-7 7700K

32GB Ram

Nvidia Geforce GTX 1060 6gig

Link to comment
Share on other sites

Just one question. I can't seem to follow exactly how --- If one has a mod installed and unwittingly runs an update,, how exactly do you get back to a pure updated file? I think I'm reading that one can end up with updated file, but don't understand how it is accomplished. This of course, would be the best part of your program.

 

Are you implying that this program tracks updates?

Not directly. The idea is: installation is smart (does back-up), easy :D, but uninstallation also:

 

- For additional content (file or folder), the removal is done only if the file matches the one extracted from the mod archive. If not, I prefer to let it, that means that something external (DSC Update for example :D) decided to replace it and that file or folder does not belong only to the mod anymore.

 

- For replacing files, same thing: I remove the file only if it matches the one from the mod. If an newer version was created since the mod installation, I cannot remove it. If I can remove, I replace it by the back-up file.

 

This way, I remove properly the mods: no break !

 

If it is secured to uninstall, it is secure to install. But it was not sufficient, I mean, when I do some changes into a .lua script file, I strongly dislike to see my modifications scratched by DCS Update. So, I wanted to know what to do in that situation, and that is why these 2 statuses exist:

 

- repairable: DyMOD soft is telling me that files were rolled back to the state it was before the mod first installation => I can re-install the mod directly.

 

- broken: I want to know which file has changed, in order to fix my mod and make it compatible with the new version. I can try to reinstall with no special care, but I prefer to compare files and do it the right way. (You can use WinMerge or any dedicated software for further investigation)

 

Another interesting feature that I missed....

 

Components can be:

 

  • additional (empty) folder
  • additional file (the file doesn't exists in the application)
  • replacing file (the file will replace the original one to bring some changes)

It lacks another one, the best one in fact: the regexp-replacer.

Instead of providing the whole file that will scratch an original one, it is more powerful to describe what needs to be changed.

 

In *nix environement, I would write it this way:

 

sed -i -e 's/some_regexp_to_replace/the_replacing_text/g' theFileToModify

So I am coding another type of file in the archive that will be:

 

some_path/someFileName.extension.DyRep

 

The extra .DyRep extension means 'do not scratch the file with this one but apply regexp replacement instead'. Let's see an example:

 

 

Scripts\net\events.lua.DyRep which content will be sort of (I am not fixed to the grammar):

 

##DyRep_REPLACE##
local report = function(msg, ...)
   net.recv_chat(string.format(msg, ...))
end
##DyRep_WITH##
local report = function(msg, ...)
   --net.recv_chat(string.format(msg, ...))
end
##DyRep_DONE##

I am sure that you have understood the meaning.

 

Thus, the collision risks with another module about the same file is smaller (I have to check that the impacted text differs), It is more robust to new DCS versions, because even if the new version does modifications on other lines, I consider it as repairable if I still find the searched text. With a whole text replacement, the status would be "broken".

 

My first motivation was the lack of features in JSGME.


Edited by galevsky06
Link to comment
Share on other sites

Interesting project!

 

... and right away a feature request: what about a "create mod" function? What I mean with this is, let the user change any file in the installation directory directly. Then your tool detects the changes and creates a .ZIP with all changed files - ready to be used as a mod in a different installation.

 

Ideally the function would somehow support even cases where the installation already contains other installed mods. But I am atm unsure of how to deal with that, tbh. Maybe just show the conflicting files ("xyz.lua is already used by mod ABC"? Or something more intelligent ... like a 3 side diff to determine if the changed lines of the installed mod conflict with the to-be-created mod?

 

Anyhow, such a function would greatly help with creating mods. One would not need to keep track of the changed files, create/maintain the mod folder structure, keep the turn around times down, etc.

Link to comment
Share on other sites

Okay, I did sort of understand, but I was looking at it backwards.

 

If you install a mod, and run update without remembering to remove the mod first. Then DyMOD will definitely let you know whether or not you can reinstall it after the update? Then if you are the author of mod then he or she just has to compare the files for offending lines.

 

It will be of benefit to end users of mods, (if adding mods with your program) then they can more readily ask mod authors for updates. LOL.

 

All kidding aside, it sounds excellent

Win 10 64 bit

Intel I-7 7700K

32GB Ram

Nvidia Geforce GTX 1060 6gig

Link to comment
Share on other sites

Interesting project!

 

... and right away a feature request: what about a "create mod" function? What I mean with this is, let the user change any file in the installation directory directly. Then your tool detects the changes and creates a .ZIP with all changed files - ready to be used as a mod in a different installation.

 

Ideally the function would somehow support even cases where the installation already contains other installed mods. But I am atm unsure of how to deal with that, tbh. Maybe just show the conflicting files ("xyz.lua is already used by mod ABC"? Or something more intelligent ... like a 3 side diff to determine if the changed lines of the installed mod conflict with the to-be-created mod?

 

Anyhow, such a function would greatly help with creating mods. One would not need to keep track of the changed files, create/maintain the mod folder structure, keep the turn around times down, etc.

 

 

There is two different people in my mind:

 

- mods users that should live safe with DyMOD + avoid to touch/modify/put hands on applications files (they could do things that would be considered as trustable as DCS Update changes). Trust DyMOD, trust mods author, and if you regret... let's uninstall via DyMOD !

 

- mods makers that should not ignore how to put relative files paths into a folder then zip it and rename the extension. I don't want to cope with the mess of what I can trust or not from external modifications. It is out of DyMOD soft scope. If you deal with applications files, it may impact mods statuses, so you do that at your own risk. Well, the whole application may be broken...

 

I hope that you understand my point :)


Edited by galevsky06
Link to comment
Share on other sites

If you install a mod, and run update without remembering to remove the mod first.

For sure you don't have to care about it... this is the very first feature I wanted into DyMOD ! Who remember to disable mods before clicking YES on the DCS Update pop-up ??!? :D

 

Then DyMOD will definitely let you know whether or not you can reinstall it after the update?
You will ALWAYS be able to either install a not "installed" mod, or uninstalled a mod which status is not "uninstalled".

 

Then if you are the author of mod then he or she just has to compare the files for offending lines.

It will be of benefit to end users of mods, (if adding mods with your program) then they can more readily ask mod authors for updates. LOL.

Yep, fix it in your own if you can, and encourage the mods author to publish a new version. If not... let's fork !

 

If the guy wanted his mod to be private, he would have shared it within his closed circle only....

 

All kidding aside, it sounds excellent
:)
Edited by galevsky06
Link to comment
Share on other sites

My statuses:

 

  1. into the back-log
    || once planned
    V

  2. designed
    || once all tech. details are cleared in mind
    V

  3. implemented
    || once all unit tests are OK + manual testing like a short QA campaign
    V

  4. beta released
    || once no more issues detected in a reasonable time slot
    V

  5. stable released

 

The current version has been implemented, and will be beta-released (to testers only) in less than a month. It includes:

 

  • Everything said done in post#1 (smart install/uninstall of JGSME + DyMOD .dmz mods in as many applications as user want, flexible Mods Library, dynamic-computation of statuses, anti-collision check at installation stage, automated application updates check..)
  • Mods Ownership tool
  • Mod Creation wizard (based on a ready-to-zip folder to select and .metadata generation)

What is currently implemented (more unit testing/improvement required):

 

  • php5 application to host DyMOD files
  • The .DyRep format that applies changes instead of replacing files.

You will get these two features AFTER the beta release above.

 

 

Other questions ? :)


Edited by galevsky06
Link to comment
Share on other sites

Do you need one more tester? Here I am too if needed.

Romanian Community for DCS World

HW Specs: i7-8700K@5GHz,ASUS Maximus X Hero, 32GB RAM 3000MHz, MSI Nvidia GTX 1080TI watercooled, Creative SoundBlaster Z, Intel/Samsung M.2 , VKB MCG Pro + Virpil Throttle + Leo Bodnar BU0836(A and X), MFG Crosswind, Logitech G13, TrackIR 5, Oculus Rift S, Stream Deck

Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...