.rfcmp CLI tooling

Discussion in 'Component and Mod Packaging' started by BigBl4ckW0lf, Oct 9, 2020.

  1. BigBl4ckW0lf

    BigBl4ckW0lf Registered

    Joined:
    Sep 30, 2020
    Messages:
    11
    Likes Received:
    11
    With the newest GT3 cars and some still existing issues with the skin syncing process I am facing a problem for our league.

    We want to create "a" league mod to eliminate possible issues and make skins "preloadable" via the workshop.
    For our league it means that we have to click through the single component for each single car update S397 releases.

    If there would be a filled IMSA league this could mean 1 LMP, 5 GTE, 13 GT3 == 19 Times clicking through the process.

    Since I am a software engineer myself and the GUI for the .rfcmp creation is not much more than text inputs, I would like to see a tool which is controllable via a CLI. The "ModMgr.exe" can only modify MAS files as far as I can tell and it would be nice to ease the process of a league mod creation.

    My idea is to do it somewhat the same way as the rfmod creation works: load a ".dat" (or however you want to call it) with the informations and then create the rfcmp file.

    As far as I can tell the informations to give would be:
    • Package name
    • Version
    • Ugrade from
    • Minimum Build
    • a list of MAS files
    It would be nice to get feedback from any developer and if such a tool is not going to be created I would like to know why.


    EDIT: Since I am now trying to get the icons for the new UI working I am also facing the issue that with it activated I am unable to package, install and uninstall the rfcmp file with the "Create Single Component" GUI.|

    EDIT2(IMPORTANT NOTE): The cmppack.exe is NOT working for official car skinpacks since it cannot handle the "BaseVersion" (in the MAS Utility GUI it is called "Update from")
     
    Last edited: Oct 16, 2020
    Audere est facere likes this.
  2. dazzer

    dazzer Registered

    Joined:
    Feb 3, 2018
    Messages:
    518
    Likes Received:
    1,697
    MAS2 also creates the rfcmp
    aaaaaaaa.jpg
     
  3. BigBl4ckW0lf

    BigBl4ckW0lf Registered

    Joined:
    Sep 30, 2020
    Messages:
    11
    Likes Received:
    11
    That's the MAS Utility not the ModMgr and this is the exact problem.

    The problem is that the current workflow needs you to manually click and type through the process. Which would be necessary every time any car which receives a patch or a skin is updated.
    If there is a BOP update the worst case would be to go through this process 13 Times (every GT3).

    That's the reason I want to be able to run a script to generate the updated .rfcmp file.
     
  4. BigBl4ckW0lf

    BigBl4ckW0lf Registered

    Joined:
    Sep 30, 2020
    Messages:
    11
    Likes Received:
    11
    To find the `ModMgr.exe` which is not helping and a broken link to the tool I want?

    More importantly it would be nice to have official tooling.
    Mostly to ensure that there is an instant update if the rfcmp format ever changes.

    IMPORTANT NOTE: The cmppack.exe is NOT working for official car skinpacks since it cannot handle a "BaseVersion" (in the MAS Utility GUI it is called "Update from")
     
    Last edited: Oct 16, 2020
    gagipro likes this.
  5. dazzer

    dazzer Registered

    Joined:
    Feb 3, 2018
    Messages:
    518
    Likes Received:
    1,697
    I'm sorry but nobody will answer this, unfortunately it is not necessary, we all use the current system and nobody complains, so I doubt that they will receive the answer they want.
     
  6. TheMenace

    TheMenace Registered

    Joined:
    Dec 27, 2019
    Messages:
    20
    Likes Received:
    27
    Here's the output from a call to "ModMgr.exe -h":
    [​IMG]
    The "-b" option lets you build a rfcmp from a .dat file. A .dat file can have multiple entries, that is sections starting with " [Package]" or "[Component]", and thats what the "index" is for. You might have a file called "pkginfo.dat" in your "%appdata%" directory which can be used as reference, an easy way to access that directory is to type "explorer %appdata%" at the command line.

    For some reason the "-b" option has been left out in the documentation("Support/CLI.txt").

    Welcome to rFracture 2!
     
    Last edited: Oct 16, 2020
  7. BigBl4ckW0lf

    BigBl4ckW0lf Registered

    Joined:
    Sep 30, 2020
    Messages:
    11
    Likes Received:
    11
    I have seen this option but it did not seem to work.

    My created .dat file is:
    Code:
    [Component]
    Name=Ferrari_488_GT3_2020
    Type=2
    Version=1.21_DAR_0.2
    BaseVersion=61d0f9965a3db062a07a92196aa94704bdea2d78ad5ae73953981e2378389e6f
    MinVersion=
    Author=Mod Team
    Date=132245047195920000
    ID=AAA9999
    URL=www.YourModSite.com
    Desc=Your new mod.
    Category=3
    Origin=0
    Flags=0
    CurLocation=0
    NumLocations=1
    Location=C:\ModMgrTest\Ferrari_488_GT3_2020_1.21_DAR_0.2.rfcmp
    NumMASFiles=1
    MASFile=C:\ModMgrTest\F488_TEAMS.mas
    rFmFile=
    IconFile=
    SmallIconFile=
    
    
    I am running it with:
    Code:
    Bin32/ModMgr.exe -b"C:\ModMgrTest\pkginfo.dat" 0
    It is creating the rfcmp but it is not setting the "BaseSignature" in the .mft file which makes it not suitable for official cars.
    It does not matter if I set the BaseVersion to the version number or the resulting BaseSignature.

    When trying to edit in the BaseSignature manually by modifying the rfcmp with an hex editor, the resulting .mft file after an extraction is cut off (only showing "MASFile=F48").

    EDIT: I tried to add a placeholder mas file to the rfcmp and then replacing it with spaces and not having anything useful cut off.

    The extract worked and the .mft is good but the launcher gives a verification error on installing the component.
    If I just add the BaseSignature without any other workarounds it causes the rF2 Launcher to crash immediately.
     
    Last edited: Oct 17, 2020
  8. McFlex

    McFlex Registered

    Joined:
    Feb 23, 2012
    Messages:
    1,031
    Likes Received:
    317
    A few days ago i saw your thread. I already had managed to do the .mas packing progress with a batch file. Now inspired by your thread i tried to pack the .rfcmp files via a batch and it worked like a charm, also with the S397 cars and the update function for league skins. I don't know where your problem is. This is my cmpinfo.dat

    Code:
    [Component]
    Name=AstonMartin_Vantage_GT3_2019
    Type=2
    Version=rFLN201
    BaseVersion=1.74
    MinVersion=
    Author=
    Date=0
    ID=
    URL=
    Desc=
    Category=0
    Origin=0
    Flags=1
    CurLocation=0
    NumLocations=1
    Location=F:\.....\.....\rFLN Saison III\Workshop\Content\rF2LN_K1_AstonMartin_Vantage_GT3_2019_Teams.rfcmp
    NumMASFiles=1
    MASFile=F:\.....\.....\rFLN Saison III\Workshop\Mas Files\rF2LN_K1_AstonMartin_Vantage_GT3_2019\rF2LN_K1_AstonMartin_Vantage_GT3_2019_Teams.mas
    rFmFile=
    IconFile=
    SmallIconFile=
     
    BigBl4ckW0lf likes this.
  9. BigBl4ckW0lf

    BigBl4ckW0lf Registered

    Joined:
    Sep 30, 2020
    Messages:
    11
    Likes Received:
    11
    Ok ..
    Code:
    Flags=1
    fixed it.
     
    McFlex likes this.
  10. McFlex

    McFlex Registered

    Joined:
    Feb 23, 2012
    Messages:
    1,031
    Likes Received:
    317
    Happy i could help and happy that you inspired me to test the batch packing. Saves at least some time :)
     
  11. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    I'm currently stuck with the message "Error creating package file.", even with your mentioned example dat contents. Did you add something except the mentioned commandline? Thanks!
     
  12. McFlex

    McFlex Registered

    Joined:
    Feb 23, 2012
    Messages:
    1,031
    Likes Received:
    317
    Can you show us your command line and pkg file?
     
  13. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    I've just your example and commandline, just with different paths and another MAS file, of course.

    Short context:

    The .dat files I've used before for testing are part of my orchestration toolkit, but I have to invoke the package/ mod building currently using the GUI of MAS2, which is flaky and not robust. But if not interrupted, this process works. Thats confusing me a bit, help would be greatly appreciated. This would improve that build process a lot, I guess.
     
    Last edited: Oct 29, 2020
  14. McFlex

    McFlex Registered

    Joined:
    Feb 23, 2012
    Messages:
    1,031
    Likes Received:
    317
    Ok i just asked because i had a similar issue. I tried to execute the batch from another directory than the root and that gave me this error message too. This is how i call the modmgr.exe

    Code:
    pushd D:\Steam\steamapps\common\rFactor 2 DX11
    
    Bin32\ModMgr.exe -b"D:\Steam\steamapps\common\rFactor 2 DX11\ModDev\cmpinfo.dat" 0
    
    pause
     
    guenther likes this.
  15. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    For the protocol - pushd did the trick :) Thank you
     
    McFlex likes this.
  16. Sachmo

    Sachmo Registered

    Joined:
    Apr 30, 2016
    Messages:
    39
    Likes Received:
    7
    This is partially working for me. It works for me for [Components] but if I go to build a [Package] it fails with the same message - "Error creating package file."

    Has anyone got this working with Packages?

    I change the directory to the rFactor 2 directory, and run the below command, but get the above error. Any help is appreciated, cheers!

    Bin64\ModMgr.exe -b"D:\pkginfo.dat"

    My pkginfo.dat is a direct copy and paste of a package I created through MAS Utility (GUI), which had the desired tracks and cars in it. Straight after I copied the pkginfo.dat, uninstalled the Mod and deleted it using ModMgr, and attempted to recreate from the command line. But the error occurs.
     
  17. BigBl4ckW0lf

    BigBl4ckW0lf Registered

    Joined:
    Sep 30, 2020
    Messages:
    11
    Likes Received:
    11
    Does it work if you execute it with an additional "0" at the end of the command?
    Code:
    Bin64\ModMgr.exe -b"D:\pkginfo.dat" 0
     
  18. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    for my tests, I always had do overwrite the current working directory aswell. Use -c"path" as first flag.

    in case you are using paid content, make sure your server keys are present.
     
  19. Sachmo

    Sachmo Registered

    Joined:
    Apr 30, 2016
    Messages:
    39
    Likes Received:
    7
    Oh, big apologies, I have indeed been running it with a 0 at the end. Sorry for misrepresenting my code earlier. Eagle-eyed pickup there, but yes I have been doing that, sorry... Bin64\ModMgr.exe -b"D:\pkginfo.dat" 0

    In relation to the -c"path", I'll give it a go. I have been in the practice of setting the command line directory (CD C:\etc....) as a separate upfront line in the batch file, which I assumed was doing the same thing. But never assume! I will try as you suggested and advise. Thank you.
     
  20. BigBl4ckW0lf

    BigBl4ckW0lf Registered

    Joined:
    Sep 30, 2020
    Messages:
    11
    Likes Received:
    11
    It is working for me with the following .dat file:
    Code:
    [Package]
    Name=Test Series
    Type=0
    Version=1.0
    BaseVersion=
    MinVersion=
    Author=Mod Team
    Date=132570058370670000
    ID=AAA9999
    URL=www.YourModSite.com
    Desc=Your new mod.
    Category=0
    Origin=0
    Flags=0
    CurLocation=0
    NumLocations=1
    Location=D:\rf2test\generated\\Test_Series_v1.0.rfmod
    CurRFM=0
    NumRFM=1
    RFM=D:\rf2test\Test_Series.mas
    NumTrackFiles=1
    Track="Virginia18_2018 v1.03,0" "VIR Full Course,1" "VIR Grand Course,0" "VIR North Course,0" "VIR Patriot Course,0" "VIR South Course,0"
    NumVehicleFiles=10
    Vehicle="AstonMartin_Vantage_GTE_2019 v1.65,0" "Aston Martin Vantage GTE #05,1" "Aston Martin Vantage GTE #07,0" "Aston Martin Vantage GTE #28,0" "Aston Martin Vantage GTE #29,0" "Aston Martin Vantage GTE #54,0" "Aston Martin Vantage GTE #55,1" "Aston Martin Vantage GTE #67,0" "Aston Martin Vantage GTE #95,0" "Aston Martin Vantage GTE #97,0" "Aston Martin Vantage GTE #98,0"
    Vehicle="BMW_M8_GTE_2018 v2.19,0" "BMW M8 GTE #01,1" "BMW M8 GTE #18,0" "BMW M8 GTE #24,0" "BMW M8 GTE #25,0" "BMW M8 GTE #27,0" "BMW M8 GTE #33,1" "BMW M8 GTE #52,0" "BMW M8 GTE #72,0" "BMW M8 GTE #77,0" "BMW M8 GTE #96,0" "BMW M8 GTE #99,0"
    Vehicle="Cadillac_DPi_2020 v1.01,0" "Cadillac DPi #01,1" "Cadillac DPi #05,0" "Cadillac DPi #06,0" "Cadillac DPi #08,1" "Cadillac DPi #15,0" "Cadillac DPi #33,1" "Cadillac DPi #85,1"
    Vehicle="Corvette_C8R_GTE_2020 v1.07,0" "Corvette C8.R GTE #03,1" "Corvette C8.R GTE #04,0" "Corvette C8.R GTE #20,0" "Corvette C8.R GTE #21,0" "Corvette C8.R GTE #22,1" "Corvette C8.R GTE #23,0"
    Vehicle="Ferrari_488_GTE_2020 v1.91,0" "Ferrari 488 GTE #51,1" "Ferrari 488 GTE #52,0" "Ferrari 488 GTE #54,0" "Ferrari 488 GTE #64,0" "Ferrari 488 GTE #65,0" "Ferrari 488 GTE #66,0" "Ferrari 488 GTE #67,1" "Ferrari 488 GTE #71,0"
    Vehicle="Ligier_JSP217_2020 v1.05,0" "Ligier JS P217 #23,0" "Ligier JS P217 #32,0" "Ligier JS P217 #34,1" "Ligier JS P217 #35,0" "Ligier JS P217 #39,0" "Ligier JS P217 #50,1"
    Vehicle="Norma_M30-LMP3_2017 v1.79,0" "Norma M30 LMP3 #02,1" "Norma M30 LMP3 #07,1" "Norma M30 LMP3 #10,1" "Norma M30 LMP3 #21,1" "Norma M30 LMP3 #53,1"
    Vehicle="Oreca_07_LMP2_2017 v2.19,0" "Oreca 07 #01,1" "Oreca 07 #02,0" "Oreca 07 #03,1" "Oreca 07 #04,0" "Oreca 07 #07,0" "Oreca 07 #08,0" "Oreca 07 #09,0" "Oreca 07 #10,0" "Oreca 07 #12,0" "Oreca 07 #13,0" "Oreca 07 #14,0" "Oreca 07 #15,0" "Oreca 07 #16,0" "Oreca 07 #17,0" "Oreca 07 #18,0" "Oreca 07 #20,0" "Oreca 07 #21,0" "Oreca 07 #22,0" "Oreca 07 #23,0" "Oreca 07 #24,0" "Oreca 07 #30,0" "Oreca 07 #31,0" "Oreca 07 #33,0" "Oreca 07 #36,0" "Oreca 07 #37,0" "Oreca 07 #38,0" "Oreca 07 #42,0" "Oreca 07 #46,0" "Oreca 07 #50,0" "Oreca 07 #54,0" "Oreca 07 #85,0" "Oreca 07 #99,0"
    Vehicle="Porsche_991RSR_GTE_2017 v2.55,0" "Porsche 991RSR GTE #36,0" "Porsche 991RSR GTE #52,0" "Porsche 991RSR GTE #57,1" "Porsche 991RSR GTE #78,1" "Porsche 991RSR GTE #86,0" "Porsche 991RSR GTE #88,0" "Porsche 991RSR GTE #88a,0" "Porsche 991RSR GTE #91,0" "Porsche 991RSR GTE #911,0" "Porsche 991RSR GTE #912,0" "Porsche 991RSR GTE #92,0" "Porsche 991RSR GTE #93,0" "Porsche 991RSR GTE #94,0"
    NumOtherFiles=0
    rFmFile=D:\rf2test\default.rfm
    IconFile=D:\rf2test\icon.dds
    SmallIconFile=D:\rf2test\smicon.dds
    My folder structure is the following:
    rf2_folder_structure.PNG

    And I am executing:
    rf2_command.PNG


    As allways with rF2 it is important to check all the fields and to have every referenced component (car/track) installed.

    I got a failure when trying to create the mod package for the old GT3 versions which I don't have installed anymore.



    If all this does not help it would be good if you could provide your specific .dat file.
     

Share This Page