[Tool] FGCBA - A tool to help pack makers v0.897

Discuss & post Update Pack addons here.
User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

[Tool] FGCBA - A tool to help pack makers v0.897

Post by n7Epsilon » Sun Feb 19, 2006 1:54 am

Hello once more,
Since the SysInternals Licensing issue (and removal of SysInternals tools packs :( , and the plethora of updates made sometimes to fix simple typos and errors in entries.ini, I was inspired to develop a tool to assist with this.

I have called it FGCBA (File Gatherer and Cab Builder for AddOns) for now, it is coded in 100% C# (including the INI parser) and runs completely using RegExp !! :shock: :D

This is my first ever program to be released to public.

Last beta: 0.897
Main Link:
http://epsilon.nlitened.org/fgcba/FGCBA_0897.zip
md5: 76348B5128BBCF4E3F34F42672E15704
Changelog: http://siginet.ryanvm.net/forum/viewtopic.php?p=135#135

Detailed Information: http://epsilon.nlitened.org/fgcba/

Features:
+ Create complete AddOn file from entries.ini and dependant file(s) with autorenaming of filenames according to the INI (and INF) entries.
+ Enhanced error checking with 2 levels of warnings (fatal and non-fatal) including checking for errors in external INF file.
+ Checking of [DefaultInstall] and [Optional Components] directives to make sure there are no orphaned entries.
+ Testing of AddOn CABs.

Changelog: (0.86):
- Native support for Switchless installer addon packs.
- No more unnecessary warnings in switchless installer addon packs and packs that to do not have a CopyFiles directive in their external INF.
- Tiny fix to make sure that extra whitespace isn't considered when reading [dosnet_files] / [txtsetup_files] or any other sections.
- Small enhancement to the logger.
- Now checks both [SourceDisksNames] and [SourceDisksNames.x86] for CAB assignments (WARNING: Overlapping CAB numbers are NOT allowed and will cause a fatal error.)

Changelog: (0.851):
fixed: Fixed regression from LargeListDictionary using obsolete method to do a case-insensitive compare resulting in case-sensitive section matches.
enhancement: Variables in AddReg / DelReg are checked if they are environment variables to prevent unnecessary warnings (eg: Unassigned Variable: %SystemRoot%, Check Whatever.inf)

Changelog: (0.85):
fixed: CabArc.exe detection was not working (typo)
fixed: Do not strip extra \r\n's from comments before 1st section in INF / INI file.
fixed: No longer messing up of section ordering if INI/INF contained more than 10 sections (.NET HybridDictionary behaviour).
fixed: i386 folder is now correctly added recursively into the AddOn CAB including any subfolders. (However, I can't get CabArc.exe to add Empty folders into the CAB no matter what I do...)
updated: Reg2Inf engine to 0.25 (without experimental /RepVars support)

Changelog: (0.811):
Fixed: Logger was not working even when /log was specified with first parameter as the External INF
Fixed: Stupid bug in a new reverse non-copy file section long name lookup feature, 2 liner fix.

Changelog: (0.81):
Fixed: Could not match section if any whitespace was present on same line as [SectionName]
Fixed: SimpleINIEditor would sometimes stop parsing a section's data if it reached a comment.
Fixed: Bug in ArrayList.BinarySearch caused reference mismatches.

Changelog: (0.80):
COMPLETE: Complete rewrite of SimpleINIEditor.cs (v3)
COMPLETE: Syntax checks for AddReg / DelReg
COMPLETE: Syntax checks for ExtraFileEdits (check no. of poles) and make sure a number value is specified at the end of the line.
COMPLETE: Fixed a bug where in some cases special characters in section name would confuse SimpleINIEditor (fixed while rewriting)
COMPLETE: Support for launch with External INF as 1st parameter for pre-processing.
COMPLETE: Proper return of errorlevel values
COMPLETE: Complete switch to using only CabArc.exe (replace MakeCab.exe & Extract.exe) - Now only needs EXPAND.EXE and CABArc.exe, better code for checking their existence too !
COMPLETE: Code cleanup, Enhancements to logger.
COMPLETE: Check unassigned variables
FIXED BUG: In case of double-directives (double AddReg= statement (eg: RVMUpPck.inf)), only the 1st instance is processed. - implement ref counts inside SimpleINIEditor
FIXED BUG: Fixed uncompressing compressed External INF was broken (Regex One Liner Fix) (, RegexOptions.IgnoreCase).
FIXED BUG: DestDirs - referenced section does not check RenameDictionary for possible renaming operations if the section contains a file previously referenced and has a rename operation set (situation occurs in uninstallable INFs)
FIXED BUG: You could specify a non-existant section in the CopyFiles directive and FGCBA would not regard this as an error.
FIXED BUG: FGCBA was not detecting invalid syntax in [dosnet_files] section.


Credits to:
- RyanVM for his awesome work.
- odyn1982 for testing and suggesting new features which led me to learn INF files.
- Aserone/Foxy for reporting bugs.
- Xable for kindly hosting FGCBA.
- Siginet for the nice forum
Last edited by n7Epsilon on Thu Sep 04, 2008 6:16 pm, edited 137 times in total.

User avatar
RyanVM
Site Admin
Posts: 5178
Joined: Tue Nov 23, 2004 6:03 pm
Location: Pennsylvania
Contact:

Post by RyanVM » Sun Feb 19, 2006 2:16 am

Great start :). I've taken the liberty of mirroring it for you on ryanvm.net :)
Get up to $200 off on hosting from the same people who host this website!
http://www.ryanvm.net/forum/viewtopic.php?t=2357

visaversa
Posts: 13
Joined: Sun Oct 30, 2005 1:58 am

Post by visaversa » Sun Feb 19, 2006 2:24 am

Great il give it a try :D

Xable
Posts: 981
Joined: Tue May 03, 2005 6:38 pm
Contact:

Post by Xable » Sun Feb 19, 2006 9:46 am

Nice, when this is done you will no longer require a brain to make addons :lol:

Looking forward to seing more of this ;)

User avatar
dgelwin
Posts: 1152
Joined: Wed Aug 10, 2005 1:33 am
Location: Tegucigalpa, Honduras

Post by dgelwin » Sun Feb 19, 2006 10:11 am

@xable still require someone to create the ini though.
@n7epsilon do you have plans for it to gather the files required by the installation inf and cab them as well?
Don't sweat petty things....or pet sweaty things

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Sun Feb 19, 2006 11:57 am

@dgelwin
Yes, you still need to write the INi though... but this should help you check that the INI is correctly written and the proper entries are being added to txtsetup.sif before integrating the addon itself...

- Level 2 addons in which entries.ini references to "Addon.inf" and AddOn.inf references other files in a CAB are not yet implemented (but working on it)

And yes, I will put an option to specify a search path to gather files for the addon and cab them....

User avatar
Siginet
Site Admin
Posts: 2894
Joined: Fri May 27, 2005 1:07 pm
Location: Planet Earth
Contact:

Post by Siginet » Sun Feb 19, 2006 12:04 pm

Very cool... we all know how many stupid bugs I have released just because of a simple typo in my entry files. :P
Image
--Siginet--

Techware
Your Virtual Technician
Computer Management Software

Xable
Posts: 981
Joined: Tue May 03, 2005 6:38 pm
Contact:

Post by Xable » Sun Feb 19, 2006 1:47 pm

@xable still require someone to create the ini though.
Ya i was joking.. hence the lol emotion.
Very cool... we all know how many stupid bugs I have released just because of a simple typo in my entry files.
Your not alone there but you are king of that domain :P
And yes, I will put an option to specify a search path to gather files for the addon and cab them....
Might be worth noteing if you havn`t already not all files need to be cabbed like when they replace an origional which isn`t cabbed.

leelamb
Posts: 26
Joined: Thu Aug 18, 2005 3:18 pm
Location: Connecticut

Post by leelamb » Sun Feb 19, 2006 7:21 pm

Your plan is music to my ears.
Lee Lamb

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Mon Feb 20, 2006 3:49 am

Progress report... here's what this program does so far:

1. Read Entries.ini file and locate txtsetup_entries and dosnet_entries sections (and warns if any of them is not present)
2. Check that txtsetup_entries and dosnet_entries point correctly to the same files (including any external INFs) and are the same length (and warns if not so)
3. Remember required filenames and add them to a list
4. Read sysoc section (if it exists)
5. Read and start parsing external INF (which is to be referenced in sysoc.inf by the integrator) looking for [DefaultInstall] section and warning if it doesn't exist...

Found 1st bug:
- It will find sections (and entries) even if they are commented out !! (overzealous RegExp matching...) - FIXED

more to come...
The next test will still not gather the files but should be able to validate the INF and list files required by those too...

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Mon Feb 20, 2006 7:35 am

Updated first post, new test still doesn't gather files, this will be added when INF parsing is complete.

User avatar
RyanVM
Site Admin
Posts: 5178
Joined: Tue Nov 23, 2004 6:03 pm
Location: Pennsylvania
Contact:

Post by RyanVM » Mon Feb 20, 2006 8:01 am

Mirror's up in the same folder as last time
Get up to $200 off on hosting from the same people who host this website!
http://www.ryanvm.net/forum/viewtopic.php?t=2357

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Mon Feb 20, 2006 8:17 am

I already removed the previous url from the post, could you please post the URL ? and thank you for the mirror...

Edit: Yet another update, RegExp is more robust and correctly drops commented lines, more warnings, a bit more verbose output and now parses the [Optional Components], [SourceDisksNames.x86] and [SourceDisksFiles] section of the externally referenced INF file...

(I'm almost spamming the thread now... :D )

User avatar
RyanVM
Site Admin
Posts: 5178
Joined: Tue Nov 23, 2004 6:03 pm
Location: Pennsylvania
Contact:

Post by RyanVM » Mon Feb 20, 2006 1:07 pm

I'm away from home at the moment right now so I can't update my mirror to the latest version, but you should be able to figure out the URL scheme given that I use the same one for every other addon I host.
Get up to $200 off on hosting from the same people who host this website!
http://www.ryanvm.net/forum/viewtopic.php?t=2357

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Mon Feb 20, 2006 2:30 pm

Another update:
Fixed a bug where if there was a comment below a section, the comment would be included as part of the previous section and incorrectly parsed as a required file... (changed Regular Expressions)...

CMan
Posts: 7
Joined: Mon Feb 20, 2006 4:33 pm
Location: Toronto, Canada

Post by CMan » Mon Feb 20, 2006 5:05 pm

Bloody hell, I was just asking for this in another thread...

Would it be possible for this to allow you to combine a couple addons into one? Essentially allow home users to make custom packs.

My main reason for this is that it would allow me to choose the specific nirsoft or sysinternals apps I want to install instead of packs that include many I don't need or understand. Obviously just one example of the power of being able to load multiple entries.ini files.

Then it would just be a matter of convincing people to create an entries.ini for each app :rolleyes:


Go n7Epsilon Go


Perfect solution that I'm sure everyone will appreciate. I can't wait till this gives me AutoRuns back :D

king_niral
Posts: 24
Joined: Mon Jan 16, 2006 2:54 pm
Location: Jabalpur,India

Post by king_niral » Mon Feb 20, 2006 6:14 pm

Man ur really fast i just pm'ed Xable about this kind of thing and ur already on version 0.21 cooool

Ur doing great and u saved me the time of going through all those tutorials LOL

I hate reading long stuff , This is gonna make life eeeeaasy.

Keep going !!
Asus K8N-E Deluxe(30 deg MAX)
Athlon64 2800+(41 deg Celcius Max Temp)
Transcend 512 MB DDR 400 3-3-3-8
Samsung 80GB with 8MB Buffer (Sata)(10 degrees Maximum Temperature)
Geforce FX 5700le 128MB

Trying More Freezing Techz. Before OCing !!!

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Tue Feb 21, 2006 1:17 pm

Another update: Reads [svcpack_catalog] section of entries.ini

User avatar
Siginet
Site Admin
Posts: 2894
Joined: Fri May 27, 2005 1:07 pm
Location: Planet Earth
Contact:

Post by Siginet » Tue Feb 21, 2006 1:51 pm

May have found a small bug... or just something that should be pointed out. A lot of times I compress my inf file. So it is .in_. Or in the end your tool will probably be the one that compresses the .inf file anyways? ;)
Image
--Siginet--

Techware
Your Virtual Technician
Computer Management Software

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Tue Feb 21, 2006 2:27 pm

Thank you for pointing this out... Next version of FGCBA (will rename this later when it is more stable) will check for both .IN_ and .INF and uncompress the IN_ before reading it...

Before my tool gains the ability to compress files, I want to be sure it can actually identify them correctly... (offtopic: btw, what do you think about my new avatar ?)
Thank you for the bug report... :)

What I want this program to initially do is read entries.ini and all dependancies, look in a certain search path and then create the final addon.cab..., I will allow the .IN_ for the INF file, but the required files are expected to be found in an uncompressed state... (at least initially)...

Then I plan to add /cab:<addon.cab> which will pre-process the CAB and check that it is correctly formatted, all files exist...etc. and that will have more robust handling of compressed files...

EDIT: Updated program to support compressed IN_ files...
EDIT #2: Fixed incorrect variable substitution when looking for the external INF (wow! spamming this thread each time I update is a whole lot of fun !!)

Important Note: If both compressed and uncompressed files exist in the same folder, the program will read the compressed file (and overwrite the uncompressed one)

EDIT: Next version (0.30) has CAB building enabled, fixed a bug when processing duplicate sections, now duplicate sections (if present are merged in memory and processed as one like what nLite does)

DONE!!

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Fri Feb 24, 2006 7:10 am

v0.30 is up, please test and report...

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Fri Feb 24, 2006 2:55 pm

Not one post? Either my program has zero bugs :) or no one is testing.... :(

Edit: For next version: Ability to combine AddOn packs...

Xable
Posts: 981
Joined: Tue May 03, 2005 6:38 pm
Contact:

Post by Xable » Sat Feb 25, 2006 11:03 am

Tested with my sysinternals pack and it failed.
www.addons.xable.net/temp/FGCBA_LOG.txt

Personaly i would like this tool just to be able to check for filename integrity, which would be usefull with large packs. Definatly would of saved me a lot of time with the winrar theme addons i did.

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Sat Feb 25, 2006 11:17 am

Thank you for the feedback...

FCGBA launches Cabarc.exe then checks to see if the cab specified on the command line exists in the expected folder, so this is probably a minor glitch... Will fix it asap...

Do you mean by filename integrity check for invalid characters in filename (like: / \ ...etc.) ?

EDIT: FIXED - Ridiculous oversight by me (0.30 took 7 hours straight and I was tired while coding..) - Wasn't wrapping path sent to CABARC with quotes... (and not for MAKCAB too..)

PM sent to Xable

Xable
Posts: 981
Joined: Tue May 03, 2005 6:38 pm
Contact:

Post by Xable » Sat Feb 25, 2006 11:46 am

Working without spaces.

Filename integrity, i mean check that the files names match their referances in the ini or inf.

Ah yes i`ve been victim of those silly errors before, since learnt to have a break and check again with fresh eyes.

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Sat Feb 25, 2006 11:50 am

I do actually check that they match :D - Try intentionally misnaming one of the files and you'll see what I mean...

I check the following:
1. Entries in DOSNET.INF and TXTSETUP.SIF point to the same files and that they are the same no.
2. When opting to create the CAB, I specifically look for each file (either the long-name version or the shortened version - if specified in txt [txtsetup_files] section) to see if it exists and aborts if not...
3. in External INF, I look for [SourceDisksNames.x86] and read the CAB name, then I look for files that point at this CAB... (and I also check that they exists when choosing to create the CAB)

Xable
Posts: 981
Joined: Tue May 03, 2005 6:38 pm
Contact:

Post by Xable » Sat Feb 25, 2006 11:57 am

OK that`s clearer now.

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Thu Mar 09, 2006 12:27 pm

Version 0.33 is up:
- Fixed a problem when extracting compressed external INF file for further processing when in a path that contains spaces... (burned by that again :( :evil: :evil: , I need to test better before making so many releases and before updating the code so often ...)
- Fixed a problem when processing [SourceDisksFiles] and [SourceDisksNames.x86] in external INF.

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Fri Mar 10, 2006 12:58 pm

Version 0.331 is up:
As you know, my program is able to detect renaming via TXTSETUP.SIF (from short name to long name)...

There was a problem with the long name if it had quotes (and spaces) :evil: :evil:
I fixed this now once and for all (by removing the quotes from the long name during processing if found)....
:wink: :)

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Sat Mar 11, 2006 9:16 am

Version 0.332a is up:
- Fixed a freeze in MakeCab.exe if I don't use ShellExecute to launch it by forcing the use of ShellEx....

- Added more error checking during compression of files, now checks MakeCab.exe and CabArc.exe Exit Code and exits if that is bigger than 0 (which means an error occured)...

- CabArc.exe now outputs to same window for diagnostic output.

- FGCBA now checks existance of MakeCab.exe and CabArc.exe before creating any compressed files and prompts user to download MS CAB SDK if any of them doesn't exist...
(I even provide a tinyurl link to the direct download)...

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Mon Mar 13, 2006 12:07 pm

Version 0.35 is finally (after 8 hours of coding and testing) up:
- Changed Regular Expressions to better match external INF strings and not match comments.

Major enhancement:
- Program now reads DestinationDirs, then reads each section referenced by DestinationDirs to find out the short names and long names of the needed files,

Then FGCBA makes sure that all files in all DestinationDirs-referenced sections match those in [SourceDisksFiles],

Then FGCBA, (when option to create CAB is specified) checks for BOTH the long name and short name and automatically renames the long-name if found before creating the external CAB and the final AddOn CAB...

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Tue Mar 14, 2006 4:27 pm

Version 0.36 is out:

New Feature:
1. Support for uninstallable INFs (that specify the INF name itself in [SourceDisksFiles] and in [Copy] sections but are not actually put inside the external CAB.
- This is achieved by dropping the INF name itself from the list of files to add in the external CAB (and changing the PNF file to INF so that the 2 control lists match up and pass the error-detection traps).

2. Support INFs that create shortcuts (by dropping any .LNK files read when processing the [DestinationDirs] section...)
- IMPORTANT NOTE: FGCBA does NOT process the ProfileItems before reading the [DestinationDirs] section... The reason for this is that I assume that any reasonable person will not include any .LNK files as literal files inside the external CAB...

3. Fixed an issue where MakeCab.exe was not finding the temporarily created CAB DDF (directives) file when the TEMP variable returned a path that contained spaces.
- I have to say that I don't have this on my machine as %TEMP% returns a short path.... but I incorporated the fix anyway.

TechnoHunter
Posts: 506
Joined: Sun Feb 26, 2006 4:13 am

Post by TechnoHunter » Tue Mar 14, 2006 6:40 pm

hiya :) thanks for making this tool btw.. much obliged..

with that said i do have one niggling little suggestion for you.. when you have this file, the mouseover tooltip that pops up contains a file name and version number.. which always seems to say 1.0.0.0

any way to make it match your version number? :) that would make keeping track of what version you have installed on your local machine (your being us users) easier..

thanks again

TechnoHunter

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Wed Mar 15, 2006 12:29 am

Sorry about that... (was forgetting to set the assembly version parameters...)

Fixed. Silently re-released.

User avatar
ENU_user
Posts: 1253
Joined: Wed Jan 25, 2006 1:42 pm

Post by ENU_user » Fri Mar 17, 2006 3:01 am

can we ask FG to act as a repair util too , so it can build the addon_pack accordingly to what it can do even if thier are errors
it can help to understand what basic conditions it looks for when making a pack so this can b used as a good reference when looking at the errors
and the pack build
fe'w i find it hard to explain LoL
hope u know what i mean now ;)

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Fri Mar 17, 2006 8:51 am

Version 0.40 is now uploaded (phew... took quite a lot of head banging to accomplish)

- Changelog:
- 85% rewrite of external INF file parser to move to almost pure Object Oriented design (External CABs are now separate objects)
- Full support of multiple CAB INFs and entries.ini that have more than one INF file in their [sysoc] sections.
- Check for orphaned entries in [SourceDisksFiles] (that specify a non-existant CAB in [SourceDisksNames.x86]) and file cross-referencing across multiple INFs (ie: 2 INFs specify one file in different external CABs)...
- Entries.ini is now re-written to disk (in a nLite-optimized) fashion by INI parser before creation of addon.

--- Much of this functionality is needed to support merging AddOns which will be implemented in a future version...

--- (phew... :wink: )

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Fri Mar 17, 2006 8:58 am

@ENU_user
There are some errors that can be recovered from (which are indicated in Warnings)...

But there are other errors that cannot be recovered from.. (ie: FGCBA will not know how to proceed because of it or it will lead to a non-working addon)...

I try as hard as I can (and spend hours doing so) to check for as much as possible and provide error messages that are as descriptive as possible to help you fix the problem...

- You should read the sticky for creating AddOns which explains the correct syntax of entries.ini and the INFs (which FGCBA adheres to btw...)

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Mon Mar 20, 2006 9:28 am

Version 0.45 is up...

Changelog:
- Major rewrite of entries.ini parser:
- Syntax checking of txtsetup.sif entries, dosnet.inf and sysoc.inf entries (finer level of checking)
- Improvements to RegEx match expressions.
- Support case where the external INF itself is renamed via Txtsetup.sif (but this is not recommended)
- Moved to dictionary approach for entries.ini parser and external inf parser renaming routines.

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Mon Mar 27, 2006 1:36 pm

Version 0.49 is up...

Changelog:
- Fix issues with case-sensitivity when matching sections and looking for keys, now I use RegEx instead of the basic .NET Framework ArrayList.Contains method (which is case-insensitive)...
- Now, only shortcuts that are defined with ProfileItems will be dropped if found in any CopyFiles sections (for support with uninstallable INFs), I actually search for them first...
- Some enhancements in INF parser for better support of comments...
- Now can re-create Kel's Uber Pack correctly (without the files that directly overwrite those in i386 folder)...
Hurrah! and I even found 2 bugs in the process that helped me enhance FGCBA functionality... (now fixed in Kel's Uber Pack 6.7 :wink: )

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Sat Apr 01, 2006 1:56 pm

Version 0.50 is up...

- This version is more friendly to addon developers since orphaned entries are now identified by name (and in some cases section) instead of the vague "Entries in SourceDisksFiles != Entries in CopyFiles sections"...
It will still fallback to that if it (for some unknown cosmic reason) fails...

- This is accomplished using a RefCount table that tracks how many times each SourceDisksFiles entry is referenced...

- Referencing a file specified by [SourceDisksFiles] more than once in different CopyFiles section will trigger a warning (but not a fatal one and FGCBA will continue)

- FGCBA will now pause if non-fatal warnings happen to allow the user to evaluate the warnings first... (They are already displayed again after the creation of an AddOn CAB)...

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Mon Apr 03, 2006 3:48 pm

Version 0.51 is up (phew...) took me a very long time to debug... (and test on Kel's Uber Pack v7)...

- Error checking mechanism enhanced...
-- FGCBA now operates like this:
- Entries.ini:
- Read [txtsetup_files] and note how many times if each file is listed... (based on ShortName which should be unique for each file)...
- Check the list and add Errors if any file is listed more than one time...
- Repeat same thing for [dosnet_files]

- Check that each file in [txtsetup_files] is at least referenced once by [dosnet_files] (else add error)
- Check that each file in [dosnet_files] is at least referenced once by [txtsetup_files] (else add error)

- ExternalINF is checked in exactly the same way...

- Fixed a bug with FGCBA dropping a .LNK file from processing if a shortcut with the same name was being defined by ProfileItems and the real .LNK file is actually (explicitly) referenced by [SourceDisksFiles]... (This was the reason for the #2 bug reported by odyn1982 in Kel's Uber Pack v7)

-- I really hope this gets tested extensively... and receive some feedback...

--- I plan to add optional processing of the [DefaultInstall] section in the next version (blinded by exhaustion now...)

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Mon Apr 10, 2006 2:43 pm

Version 0.521 is up...

1. Support for blind addition of files into the AddOn CAB...
Just go to the folder containing the "entries.ini" file and create a subfolder "i386" and put everything there...
(FGCBA does recursive file copy from i386 subfolder to the "AddOnFiles" folder, so you could add a SVCPACK subfolder and place switchless installers in there)

- Directory Structure:

Code: Select all

 
    + Folder    <--- Contains entries.ini file
       |+ i386  <--- Files that directly overwrite in i386 folder here
         |_ SVCPACK  <--- Switchless installers
2. Modified argument parser to directly "entries.ini" as input without "/ini:" prefix... to allow dropping of entries.ini file on FGCBA for quick preprocessing...

EDIT: Fixed a few minor cosmetic bugs and a tiny argument parser bug...
- Re-released as 0.521

User avatar
Aserone
Posts: 306
Joined: Sat Mar 11, 2006 8:46 pm
Location: Opioid dependent head.

Post by Aserone » Tue Apr 11, 2006 3:46 am

Thank you for this wonderful tool! It's as nessesary as ryans integrator to have. :wink:

Haven't found any bug yet (been using from when you released).

The only thing have been the ability to include files not specified in ini/inf. But now it can do any type of addon. Making them silly easy to create!

Really minimizes the aspect of human error. Thanks again.
//Aserone-Foxy | EULA: Everything I say/post is a lie and/or forwarded from swim.

User avatar
Aserone
Posts: 306
Joined: Sat Mar 11, 2006 8:46 pm
Location: Opioid dependent head.

Post by Aserone » Tue Apr 11, 2006 11:57 am

Ok, found a little "bug" in the new version. If I try to do a swichless addon cab with:

Code: Select all

[general]
builddate	=2006/04/11
description	=******
language	=English
title		=*******
version		=*******
website		=http://www.RyanVM.net

[EditFile]
I386\SVCPACK.INF,SetupHotfixesToRun,AddProgram

[AddProgram]
********.exe
I get 2 Errors couldn't find [dosnet_files] and [txtsetup_files] in .ini file. But it works to just put empty *_files]:

Code: Select all

[general]
builddate	=2006/04/11
description	=******
language	=English
title		=*******
version		=*******
website		=http://www.RyanVM.net

[EditFile]
I386\SVCPACK.INF,SetupHotfixesToRun,AddProgram

[AddProgram]
********.exe

[dosnet_files]

[txtsetup_files]
Maybe not a bug but a "feature request" to not need those in silent addon cabbing.

Thanks.
//Aserone-Foxy | EULA: Everything I say/post is a lie and/or forwarded from swim.

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Tue Apr 11, 2006 3:37 pm

Thank you for your feedback (that's been very scarce) :) Actually, this is not a bug...

I implemented this by design, FGCBA will not allow creating an addon without at least a [txtsetup_sif]...

If I reduce the level of error of not finding [dosnet_files] and [txtsetup_files] to just a "Warning" then non-switchless installer addons that don't have these sections will go through... (and lead to a broken addon)

And I cannot look for "SetupHotfixesToRun" and if I find it, I ignore the absence of these 2 sections...
What if an addon adds an entry to "SetupHotfixesToRun" AND Add files in DOSNET.INF and TXTSETUP.SIF ...

In that case, FGCBA error checking would be reduced...

So, the solution is to add these empty sections... (they will not do any harm anyway...)

EDIT: I decided to do it this way because most addons include these sections (even if empty) ...

EDIT #2: In the next version, I will add a command-line option that (if specified) will ignore the non-presence of [dosnet_files] and/or [txtsetup_entries] ...

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Wed Apr 12, 2006 8:46 am

Version 0.53 is up...

- Better checking of [sysoc] section, where now the line is matched if the 1st parameter is explicitly (ocgen.dll), anything else = syntax error.

- Added /SImode switch to ignore absence of [dosnet_files] and [txtsetup_entries]. This caused the addition of additional backup reference checking to make sure that the External INF is referenced in those 2 sections... (to make sure that FGCBA will not allow anyone to accidentally leave a [sysoc] section without [txtsetup_entries] and [dosnet_files] and use the /SImode to bypass the error)...

- Allowed the /cab parameter to accept a full path to the CAB file...
- Doing this will result in FGCBA creating the result CAB there instead of in the "Output" subfolder, so now FGCBA is more flexible..., if full path is not specified (ie: /cab:"New.Cab"), old behaviour is used.

- FGCBA now processes AddReg / DelReg / CopyFiles / DelFiles directives in [Optional Components]-referenced section or in [DefaultInstall] to make sure that all referenced sections by them exist... (as a remedy for RyanVM's typographical errors in AddReg directive in "RVMUPPck.inf" in previous releases :) )

User avatar
Aserone
Posts: 306
Joined: Sat Mar 11, 2006 8:46 pm
Location: Opioid dependent head.

Post by Aserone » Wed Apr 12, 2006 9:45 am

n7Epsilon wrote:Thank you for your feedback (that's been very scarce) :)
I can't believe it. This tool should be mandatory. Hate all the bugs in many packs that could easily be detected by running this little app.

I guess you just need to give people some time to adapt to using new things. Anyway been trying out "/SImode" now (thanks for implementing, although it was a minor thing) and no problem to report. Maybe thats the reason: no bugs! :wink:
//Aserone-Foxy | EULA: Everything I say/post is a lie and/or forwarded from swim.

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Wed Apr 12, 2006 2:02 pm

I can't believe it. This tool should be mandatory. Hate all the bugs in many packs that could easily be detected by running this little app.
I wish it would be adapted too... It would help a lot in releasing bug-free packs...

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Thu Apr 13, 2006 4:28 am

Version 0.54 is up :wink:

- External INFs that uninstall themselves using Rundll32 reference their PNF in CopyFiles and themselves in [SourceDisksFiles], which is not needed by FGCBA. New RefCount mechanism did not take this into account causing "Orphaned" file errors, these have been fixed (by modifying the RefCount to ignore the PNF and the INF of the External INF)

- Note that this means that if the external INF is renamed, these entries need to be renamed too or FGCBA will treat them as normal files (which is what Windows Setup would do too)

- Fixed a bug in path handling where MAKECAB always assumed that it was in the correct folder, so doing this: "FGCBA "SubFolder\entries_whatever.ini" /CAB:NEW.CAB, caused MakeCAB to complain about missing files... (because it was looking in the Current Folder of execution, not the INI folder...)

User avatar
n7Epsilon
Moderator
Posts: 624
Joined: Thu Feb 17, 2005 1:37 am
Location: Cairo, Egypt

Post by n7Epsilon » Thu Apr 20, 2006 6:44 pm

Version 0.60 is up... :wink: (was delayed because of practical exams)

- Checking for 8.3 filename compliance for files specified in entries.ini and [svcpack_catalogs].
Note that checking is not done for the files inside the External CAB but the External CAB itself is checked for 8.3 compliance too.

- New behaviour: Drop a CAB file on FGCBA and it will be unpacked to a temporary folder, then it will look for the 1st entries.ini file, process it, uncompress (*.??_) and (*.cab) and try to re-create the AddOn CAB again to make sure that syntax is correct in the INF and INI and that all files in the package are present.
(I hope this helps for better testing and more feedback)

- Fixed a bug where an Addreg directive was correctly found but not correctly processed due to the processing engine (SimpleINIEditor) being incorrectly case-sensitive when processing keys.

Post Reply